Skip to main content
#P1749

GET /v2/core/application_interface

O. List Application Interfaces (Core)

این اندپوینت برای دریافت لیست رابط‌های نرم‌افزاری (Application Interfaces) استفاده می‌شود. خروجی این سرویس لیستی از شعب (Offices) است که تنظیمات و دسترسی‌های مربوطه (مانند APIهای ایرلاین‌ها، دسترسی همکاران و...) به عنوان زیرمجموعه آن‌ها گروه‌بندی شده‌اند. همچنین امکان دریافت مانده حساب کیف پول هر شعبه نیز به صورت اختیاری وجود دارد.

Request Overview

URL: /v2/core/application_interface
Method: GET
Controller: CoreController@listApplicationInterface
Middleware: authWithJwt

Access Control

  • نیاز به توکن احراز هویت (JWT) دارد.
  • داده‌ها بر اساس رکوردهای موجود در جداول application_interface و offices تجمیع می‌شوند.

Query Parameters (Filters)

Field Type Description
branch integer (اختیاری) شناسه شعبه. در صورت ارسال، خروجی فقط شامل همین شعبه و تنظیمات مربوط به آن خواهد بود.
service string (اختیاری) نام سرویس (مثلاً nira). فقط رابط‌های مربوط به این سرویس بازگردانده می‌شوند.
type string (اختیاری) نوع رابط (مثلاً api).
status integer (اختیاری) وضعیت فعال/غیرفعال بودن رابط (1 یا 0).
balance boolean (اختیاری) اگر مقدار true یا 1 ارسال شود، سیستم مانده حساب کیف پول (Wallet) هر شعبه را محاسبه و در خروجی قرار می‌دهد.

Logic Details

فرآیند پردازش داده‌ها شامل مراحل زیر است:

  1. دریافت و فیلتر رابط‌ها: ابتدا داده‌ها از جدول application_interface بر اساس فیلترهای ورودی (branch, service, type, status) دریافت می‌شوند.
  2. غنی‌سازی داده‌ها (Data Mapping):
    • اگر object_type برابر با colleague باشد، اطلاعات همکار (نام، سریال، آفیس) از مدل Colleague استخراج و جایگزین فیلد object می‌شود.
    • فیلدهای رشته‌ای ساده (service, type, object_type) به ساختار استاندارد آرایه‌ای {id, title} تبدیل می‌شوند.
  3. گروه‌بندی: داده‌های پردازش شده بر اساس شناسه شعبه (branch) گروه‌بندی می‌شوند.
  4. تجمیع با شعب (Offices):
    • لیست شعب از جدول offices دریافت می‌شود (اگر فیلتر branch باشد، فقط همان شعبه).
    • برای هر شعبه، رابط‌های مربوطه از مرحله قبل در فیلد items قرار می‌گیرند.
  5. محاسبه مانده (Balance):
    • اگر پارامتر balance=true باشد، متد AccountingController::getBalanceWallet فراخوانی می‌شود.
    • این متد مجموع credit و debit را از جدول wallet برای آن شعبه (با شرط operator_type='erp') محاسبه می‌کند.
    • وضعیت حساب (diagnosis) به صورت creditor (بستانکار)، debtor (بدهکار) یا neutral تعیین می‌شود.

Response Structure

نمونه پاسخ موفق (JSON)

{
    "items": [
        {
            "id": 1,
            "title_fa": "دفتر مرکزی",
            "title_en": "Headquarters",
            "brand_fa": "برند نمونه",
            "items": [
                {
                    "id": 105,
                    "branch": 1,
                    "service": { "id": "nira", "title": "nira" },
                    "type": { "id": "api", "title": "api" },
                    "object_type": { "id": "colleague", "title": "colleague" },
                    "object": {
                        "id": 50,
                        "first_name": "Ali",
                        "last_name": "Rezaei",
                        "serial": "12345"
                    },
                    "status": 1
                }
            ],
            "balance": {
                "credit": 1000000,
                "debit": 200000,
                "balance": 800000,
                "diagnosis": "creditor"
            }
        }
    ],
    "meta": {
        "timestamp": 1733745000
    }
}

Flowchart

Start Request (GET)
Fetch application_interface (Apply Filters)
Map Data Loop:
1. Expand 'colleague' object
2. Format fields to {id, title}
Group Data by 'branch'
Fetch Offices (DB)
Need Balance?
↙ (Yes)
Calc Wallet (Credit - Debit)
↘ (No)
Skip
Return Merged JSON