File "getDetailProject.ts"

Full Path: /var/www/html/gitep_front/src/entities/project/api/getDetailProject.ts
File size: 3.32 KB
MIME-type: text/x-java
Charset: utf-8

import { $modelStore } from '@shared/index';
import { axiosInstance } from "@shared/api";


export const getDetailProject = async ({
    projectId, 
    articleID, 
    articleGroupId, 
    projects, 
    accounts, 
    payments_made, 
    cash,
    date_from,
    date_to
}: any) => {
    try {
        const modelId = $modelStore.getState().model;
        if (!modelId) {
            throw new Error("modelId не задана");
        }

        const params: any = {
            articleID: articleID,
            articleGroupId: articleGroupId,
            payments_made,
            cash,
        };

        if (date_from) params.date_from = date_from;
        if (date_to) params.date_to = date_to;
        console.debug('[ProjectAPI.request]', {
            modelId,
            projectId,
            params: { articleID, articleGroupId, projects, accounts, payments_made, cash }
        });

        if (projects !== undefined && projects !== null && projects !== '') {
            const projectsValue = Array.isArray(projects)
                ? projects.join(',')
                : String(projects);
            if (projectsValue) {
                params['projects[]'] = projectsValue;
            }
        }

        if (accounts !== undefined && accounts !== null && accounts !== '') {
            const accountsValue = Array.isArray(accounts)
                ? accounts.join(',')
                : String(accounts);
            if (accountsValue) {
                params['accounts[]'] = accountsValue;
            }
        }

        const safeProjectId = (projectId && 
          String(projectId).toLowerCase() !== 'undefined' && 
          String(projectId).trim() !== '' && 
          String(projectId).toLowerCase() !== 'total')
          ? `/${projectId}`
          : '';
        const url = `cash-flow/project/${modelId}${safeProjectId}`;
        
        const queryParams: any = {};
        
        if (params.articleID) queryParams.articleID = params.articleID;
        if (params.articleGroupId) queryParams.articleGroupId = params.articleGroupId;
        
        if (params.date_from) queryParams.date_from = params.date_from;
        if (params.date_to) queryParams.date_to = params.date_to;
        
        if (params['projects[]']) {
          queryParams.projects = Array.isArray(params['projects[]']) 
            ? params['projects[]'] 
            : params['projects[]'].split(',');
        }
        
        if (params['accounts[]']) {
          queryParams.accounts = Array.isArray(params['accounts[]']) 
            ? params['accounts[]'] 
            : params['accounts[]'].split(',');
        }
        
        if (params.payments_made) {
          queryParams.payments_made = Array.isArray(params.payments_made) 
            ? params.payments_made 
            : params.payments_made.split(',');
        }
        
        if (params.cash) {
          queryParams.cash = Array.isArray(params.cash) 
            ? params.cash 
            : params.cash.split(',');
        }
                
        const result = await axiosInstance.get(url, { params: queryParams });
        return result
    } catch (error) {
        const err: any = error;
        console.error('[ProjectAPI.error]', {
            status: err?.response?.status,
            data: err?.response?.data,
            url: err?.config?.url
        });
        throw error;
    }
}