Skip to main content
#P1503

POST /announcement/list/company

Route Info

Method Endpoint Controller Middleware Purpose
POST /api/v2/announcement/list/company V2CreditDebitController@listAnnouncementCompany authWithJwt لیست اعلان‌های مالی تجمیعی در سطح شرکت (تمام شعب)، با فیلتر DataTables و فیلتر پیشرفته برای گزارشات مدیریتی.

منطق عملکرد تابع

تابع listAnnouncementCompany مشابه تابع listAnnouncement عمل می‌کند اما دامنهٔ داده‌ها را به تمام شعب وابسته به شرکت (یا کل سازمان) گسترش می‌دهد. هدف، گزارش‌گیری یکپارچه از کلیه اعلان‌های مالی است. داده‌ها از جدول announcements بازیابی می‌شوند و با فیلترهای DataTables و جستجوی پیشرفته محدود می‌گردند. خروجی، شامل متادیتای DataTables (draw، تعداد کل، زمان درخواست) و آرایه‌ای از اعلان‌هاست.

ورودی‌ها

نام پارامتر نوع منبع الزامی توضیح
draw integer Body بله برای هم‌زمان‌سازی DataTables.
start integer Body بله نقطه شروع رکوردها.
length integer Body بله تعداد رکوردها در هر صفحه.
advanced object Body خیر فیلترهای ترکیبی مدیریت، از جمله نوع، تاریخ، وضعیت و شعبهٔ خاص.
company integer JWT/Header بله شناسه شرکت مادر برای واکشی اعلان‌های کل.

خروجی (Response)

{
  "status": true,
  "meta": {
    "draw": 1,
    "recordsTotal": 842,
    "recordsFiltered": 842,
    "timestamp": 1732287600
  },
  "data": [
    {
      "id": 1220,
      "type": "receive",
      "reference": "branch_3/pay/554",
      "branch": 3,
      "company": 1,
      "status": "done",
      "title": "دریافت وجه نقد از شعبه مرکزی",
      "created_at": "2025-10-09 09:44:31"
    }
  ]
}

نکات امنیتی

  • احراز JWT الزامی است.
  • کاربر باید به نقش سطح شرکت financial.company.announcement.view مجهز باشد.
  • فیلتر خودکار داده‌ها بر اساس company از توکن JWT انجام می‌شود تا از نشت اطلاعات بین شرکت‌ها جلوگیری گردد.

نکات عملکردی

  • بهینه‌سازی Query با ایندکس روی فیلدهای (company, type, created_at).
  • استفاده از کش Redis با TTL=300 s برای پاسخ‌های صفحه اول (draw=1).

وابستگی‌ها

  • use Illuminate\Support\Facades\DB;
  • use Illuminate\Support\Facades\Redis;
  • use App\Helpers\Functions;
  • use Carbon\Carbon;

کدهای خطا

کد شرح خطا منبع
400 ورودی ناقص یا نامعتبر DataTables. Validator
403 کاربر فاقد سطح دسترسی سازمانی. Auth Middleware
500 مشکل در واکشی داده‌ها یا کش Redis. Exception Handler

پیشنهادهای امنیتی

  • رمزنگاری کلید مرجع (reference) در پاسخ API.
  • ثبت IP و شناسه کاربری در جدول audit_logs برای هر درخواست لیست.

پیشنهادهای بهبود

  • افزودن پارامتر export برای خروجی CSV/Excel.
  • پیاده‌سازی Lazy Loading برای فیلدهای حجیم (description).
  • قابلیت گروه‌بندی بر اساس شعبه یا وضعیت.

ممیزی و لاگ‌ها

  • نوع ممیزی: ListAnnouncementCompany.
  • ثبت شامل company، filters، timestamp و user_id.
  • سطح حساسیت: Info.

جمع‌بندی

تابع listAnnouncementCompany ابزار اصلی مدیران مالی برای مشاهده اعلان‌های کلان بین‌شعبه‌ای است و با ساختار صفحه‌بندی‌شده و کش Redis، کارایی بالایی در محیط‌های چندشعبه‌ای دارد.