import React, { useState, useRef, useEffect } from 'react';
import { useTranslation } from 'react-i18next';
import useGrowl, { growlTypes } from '../../Utils/useGrowl';
import { DataTable } from 'primereact/datatable';
import { Column } from 'primereact/column';
import { ScrollPanel } from "primereact/scrollpanel";
import { Avatar } from 'primereact/avatar';
import assetsImg from '../../Utils/assets';
import { Button } from 'primereact/button';
import RightService from '../../Service/RightService';
import ParameterService from "../../Service/ParameterServices";
import { MultiSelect } from "primereact/multiselect";
import { getKeyValue, toDateString } from "../../Utils/Utils";
import AuthService from "../../Service/AuthService"
import ParameterServices from "../../Service/ParameterServices";
import { Dropdown } from "primereact/dropdown";
import OrganizationService from "../../Service/OrganizationService";
import {TreeSelect} from "primereact/treeselect";
const OrganizationRightStatusDashboard = (props) => {
const [t] = useTranslation();
const [show] = useGrowl();
const [selectedRow, setSelectedRow] = useState(null);
const [selectedTitle, setSelectedTitle] = useState(null);
const [allTitleTypes, setAllTitleTypes] = useState([]);
const [statusDashboard, setStatusDashboard] = useState([]);
const [PersonFullNameList, setPersonFullNameList] = useState([]);
const [allTitles, setAllTitles] = useState([]);
const [allPositions, setAllPositions] = useState([]);
const [filterPosition, setFilterPosition] = useState([]);
const [mailButtonDisabled, setMailButtonDisabled] = useState(true);
const [allOrganizations, setallOrganizations] = useState([]);
const [OrganizationTree, setOrganizationTree] = useState([]);
const [excelData, setExcelData] = useState([]);
const [expandedRows, setExpandedRows] = useState(null);
const [filteredData, setFilteredData] = useState('');
const [filters, setFilters] = useState({
Person: [],
Title: [],
Position: [],
NumberOfDaysSubjestToRight: null,
TotalDeservedRight: null,
BalanceRigth: null,
Organization: [],
UpperOrganization: [],
FirstManager: [],
SecondManager: []
});
const initialFilters = {
Person: [],
Title: [],
Position: [],
NumberOfDaysSubjestToRight: null,
TotalDeservedRight: null,
BalanceRigth: null,
Organization: [],
UpperOrganization: [],
FirstManager: [],
SecondManager: []
}
const onFilterChange = (e) => {
const { key, value } = getKeyValue(e);
setFilters({ ...filters, [key]: value });
};
useEffect(() => {
ParameterService.getAllTitles().then((result) => {
setAllTitleTypes(result);
});
OrganizationService.getAll().then((result) => {
setallOrganizations(result.filter(x => x.OrganizationType == 2 || x.OrganizationType == 3));
});
excelDownload()
}, []);
useEffect(() => {
let personID = AuthService.getCurrentUser()?.Person?.id;
// RightService.getPersonFullNameList(personID).then((result) => {
// setPersonFullNameList(result);
// });
ParameterServices.getAllTitles().then((result) => {
setAllTitles(result);
});
ParameterServices.getAllTaskNames().then((result) => { //DAHA SONRA BACK OLUŞUNCA TASKNAME LERİ ÇEKECEK
setAllPositions(result);
});
}, [])
const personNamesTemplate = () => {
{
let data = props.data;
let personNames = [];
personNames = data.map(({ person_id, FullName }) => ({ person_id, FullName }));
setPersonFullNameList(personNames);
}
};
useEffect(() => {
personNamesTemplate()
}, []);
const filterDataTable = () => {
return props.data.filter(
(item) =>
(filters.Person.length === 0 || (filters.Person && item.person_id && filters.Person.includes(item.person_id))) &&
(filters.Title.length === 0 || (filters.Title && item.TitleId && filters.Title == item.TitleId)) &&
(filters.Position.length === 0 || (filters.Position && item.PositionId && filters.Position.includes(item.PositionId))) &&
(filters.UpperOrganization.length === 0 || (filters.UpperOrganization && item.UpperOrgId && filters.UpperOrganization == item.UpperOrgId)) &&
(filters.Organization.length === 0 || (filters.Organization && item.OrganizationId && filters.Organization == item.OrganizationId))
// (filters.NumberOfDaysSubjestToRight === 0 || (filters.NumberOfDaysSubjestToRight && item.NumberOfDaysSubjestToRight && filters.NumberOfDaysSubjestToRight.includes(item.NumberOfDaysSubjestToRight))) &&
// (filters.TotalDeservedRight === 0 || (filters.TotalDeservedRight && item.TotalDeservedRight && filters.TotalDeservedRight.includes(item.TotalDeservedRight))) &&
// (filters.BalanceRigth === 0 || filters.BalanceRigth && item.BalanceRigth && filters.BalanceRigth.includes(item.BalanceRigth))
);
};
const filterResult = filterDataTable();
const personFilter =