import {useLazyQuery} from "@apollo/client"; import {Button, Card, Col, DatePicker, Form, Input, Radio, Row, Typography,} from "antd"; import _ from "lodash"; import moment from "moment"; import React, {useState} from "react"; import {useTranslation} from "react-i18next"; import {connect} from "react-redux"; import {createStructuredSelector} from "reselect"; import {QUERY_ACTIVE_EMPLOYEES} from "../../graphql/employees.queries"; import {QUERY_ALL_VENDORS} from "../../graphql/vendors.queries"; import {selectReportCenter} from "../../redux/modals/modals.selectors"; import DatePickerRanges from "../../utils/DatePickerRanges"; import {GenerateDocument} from "../../utils/RenderTemplate"; import {TemplateList} from "../../utils/TemplateConstants"; import EmployeeSearchSelect from "../employee-search-select/employee-search-select.component"; import VendorSearchSelect from "../vendor-search-select/vendor-search-select.component"; import "./report-center-modal.styles.scss"; import ReportCenterModalFiltersSortersComponent from "./report-center-modal-filters-sorters-component"; import {selectBodyshop} from "../../redux/user/user.selectors"; const mapStateToProps = createStructuredSelector({ reportCenterModal: selectReportCenter, bodyshop: selectBodyshop, }); const mapDispatchToProps = (dispatch) => ({ //setUserLanguage: language => dispatch(setUserLanguage(language)) }); export default connect( mapStateToProps, mapDispatchToProps )(ReportCenterModalComponent); export function ReportCenterModalComponent({reportCenterModal, bodyshop}) { const [form] = Form.useForm(); const [search, setSearch] = useState(""); const [loading, setLoading] = useState(false); const {t} = useTranslation(); const Templates = TemplateList("report_center"); const ReportsList = Object.keys(Templates).map((key) => { return Templates[key]; }); const {open} = reportCenterModal; const [callVendorQuery, {data: vendorData, called: vendorCalled}] = useLazyQuery(QUERY_ALL_VENDORS, { skip: !( open && Templates[form.getFieldValue("key")] && Templates[form.getFieldValue("key")].idtype ), }); const [callEmployeeQuery, {data: employeeData, called: employeeCalled}] = useLazyQuery(QUERY_ACTIVE_EMPLOYEES, { skip: !( open && Templates[form.getFieldValue("key")] && Templates[form.getFieldValue("key")].idtype ), }); const handleFinish = async (values) => { setLoading(true); const start = values.dates ? values.dates[0] : null; const end = values.dates ? values.dates[1] : null; const { id } = values; const templateConfig = { name: values.key, variables: { ...(start ? {start: moment(start).startOf("day").format("YYYY-MM-DD")} : {}), ...(end ? {end: moment(end).endOf("day").format("YYYY-MM-DD")} : {}), ...(start ? {starttz: moment(start).startOf("day")} : {}), ...(end ? {endtz: moment(end).endOf("day")} : {}), ...(id ? {id: id} : {}), }, filters: values.filters, sorters: values.sorters, }; if (_.isString(values.defaultSorters) && !_.isEmpty(values.defaultSorters)) { templateConfig.defaultSorters = JSON.parse(values.defaultSorters); } await GenerateDocument( templateConfig, { to: values.to, subject: Templates[values.key]?.subject, }, values.sendbyexcel === "excel" ? "x" : values.sendby === "email" ? "e" : "p", id ); setLoading(false); }; const FilteredReportsList = search !== "" ? ReportsList.filter((r) => r.title.toLowerCase().includes(search.toLowerCase()) ) : ReportsList; //Group it, create cards, and then filter out. const grouped = _.groupBy(FilteredReportsList, "group"); return (
setSearch(e.target.value)} value={search} />
); }