You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							134 lines
						
					
					
						
							3.8 KiB
						
					
					
				
			
		
		
	
	
							134 lines
						
					
					
						
							3.8 KiB
						
					
					
				import { TCard, TStat, TStatTeam } from "../../types/Statistic/TStat";
 | 
						|
import instance from "../api";
 | 
						|
 | 
						|
export type TStatGetParams = {
 | 
						|
  search?: string;
 | 
						|
  team?: string;
 | 
						|
  start_date?: string;
 | 
						|
  end_date?: string;
 | 
						|
  for_salary?: boolean;
 | 
						|
};
 | 
						|
 | 
						|
export type TStatTeamGetParams = {
 | 
						|
  search?: string;
 | 
						|
  start_date?: string;
 | 
						|
  end_date?: string;
 | 
						|
};
 | 
						|
 | 
						|
export type TStatCreatorsGetParams = {
 | 
						|
  start_date?: string;
 | 
						|
  end_date?: string;
 | 
						|
};
 | 
						|
 | 
						|
export const statController = {
 | 
						|
  async read(filterObject: TStatGetParams) {
 | 
						|
    const params = { ...filterObject };
 | 
						|
 | 
						|
    if (!!filterObject.search) params.search = filterObject.search;
 | 
						|
    if (!!filterObject.team) params.team = filterObject.team;
 | 
						|
    if (!!filterObject.start_date) params.start_date = filterObject.start_date;
 | 
						|
    if (!!filterObject.end_date) params.end_date = filterObject.end_date;
 | 
						|
 | 
						|
    const { data } = await instance.get<TStat[]>(`stats/all-users/`, {
 | 
						|
      params,
 | 
						|
    });
 | 
						|
    return data;
 | 
						|
  },
 | 
						|
 | 
						|
  async team(filterObject: TStatTeamGetParams) {
 | 
						|
    const params = { ...filterObject };
 | 
						|
 | 
						|
    if (!!filterObject.search) params.search = filterObject.search;
 | 
						|
    if (!!filterObject.start_date) params.start_date = filterObject.start_date;
 | 
						|
    if (!!filterObject.end_date) params.end_date = filterObject.end_date;
 | 
						|
 | 
						|
    const { data } = await instance.get<TStatTeam[]>(`stats/all-teams/`, {
 | 
						|
      params,
 | 
						|
    });
 | 
						|
    return data;
 | 
						|
  },
 | 
						|
 | 
						|
  async creators(filterObject: TStatCreatorsGetParams) {
 | 
						|
    const params = { ...filterObject };
 | 
						|
 | 
						|
    if (!!filterObject.start_date) params.start_date = filterObject.start_date;
 | 
						|
    if (!!filterObject.end_date) params.end_date = filterObject.end_date;
 | 
						|
 | 
						|
    const { data } = await instance.get<TStatTeam[]>(`stats/task-creators/`, {
 | 
						|
      params,
 | 
						|
    });
 | 
						|
    return data;
 | 
						|
  },
 | 
						|
  async cards(filterObject: TStatCreatorsGetParams) {
 | 
						|
    const params = { ...filterObject };
 | 
						|
 | 
						|
    if (!!filterObject.start_date) params.start_date = filterObject.start_date;
 | 
						|
    if (!!filterObject.end_date) params.end_date = filterObject.end_date;
 | 
						|
 | 
						|
    const { data } = await instance.get<TCard>(`stats/tasks-comparison/`, {
 | 
						|
      params,
 | 
						|
    });
 | 
						|
    return data;
 | 
						|
  },
 | 
						|
 | 
						|
  async saveUsersStats(
 | 
						|
    fileName: string,
 | 
						|
    startDate: string,
 | 
						|
    endDate: string,
 | 
						|
    team: string
 | 
						|
  ) {
 | 
						|
    const response = await instance.post(
 | 
						|
      `stats/all-users/?start_date=${startDate}&end_date=${endDate}&team=${team}`,
 | 
						|
      {
 | 
						|
        headers: {
 | 
						|
          "Content-Type": "multipart/form-data",
 | 
						|
          "Content-Disposition": `attachment;`,
 | 
						|
        },
 | 
						|
        responseType: "arraybuffer",
 | 
						|
      }
 | 
						|
    );
 | 
						|
    const blob = new Blob([response.data], {
 | 
						|
      type: "application/octet-stream",
 | 
						|
    });
 | 
						|
    const downloadUrl = URL.createObjectURL(blob);
 | 
						|
    const a = document.createElement("a");
 | 
						|
    a.style.display = "none";
 | 
						|
    a.href = downloadUrl;
 | 
						|
    a.download = `stats_${fileName}.csv`;
 | 
						|
    document.body.appendChild(a);
 | 
						|
    a.click();
 | 
						|
    window.URL.revokeObjectURL(downloadUrl);
 | 
						|
    return response.data;
 | 
						|
  },
 | 
						|
 | 
						|
  async saveTeamStats(fileName: string, startDate: string, endDate: string) {
 | 
						|
    const response = await instance.post(
 | 
						|
      `stats/all-teams/?start_date=${startDate}&end_date=${endDate}`,
 | 
						|
      {
 | 
						|
        headers: {
 | 
						|
          "Content-Type": "multipart/form-data",
 | 
						|
          "Content-Disposition": `attachment;`,
 | 
						|
        },
 | 
						|
        responseType: "arraybuffer",
 | 
						|
      }
 | 
						|
    );
 | 
						|
    const blob = new Blob([response.data], {
 | 
						|
      type: "application/octet-stream",
 | 
						|
    });
 | 
						|
    const downloadUrl = URL.createObjectURL(blob);
 | 
						|
    const a = document.createElement("a");
 | 
						|
    a.style.display = "none";
 | 
						|
    a.href = downloadUrl;
 | 
						|
    a.download = `stats_${fileName}.csv`;
 | 
						|
    document.body.appendChild(a);
 | 
						|
    a.click();
 | 
						|
    window.URL.revokeObjectURL(downloadUrl);
 | 
						|
    return response.data;
 | 
						|
  },
 | 
						|
 | 
						|
  async statOne(Id: string | number | undefined) {
 | 
						|
    const { data } = await instance.get<TStat>(`stats/${Id}`);
 | 
						|
    return data;
 | 
						|
  },
 | 
						|
};
 |