{"version":3,"sources":["helpers/Constants.ts","store/reducers/WeatherForecasts.ts","store/reducers/App.ts","store/reducers/ThemeOptions.ts","store/reducers/AppUserAdmin.ts","store/reducers/CaseSettings.ts","store/reducers/Vehicle.ts","store/reducers/MavoVehicle.ts","store/reducers/VehicleAuction.ts","store/reducers/Agenda.ts","store/actions/App.ts","store/actions/ThemeOptions.ts","store/actions/AppUserAdmin.ts","store/actions/CaseSettings.ts","store/actions/Vehicle.ts","store/index.ts","store/configureStore.ts","components/cases/CaseNewInNotification.tsx","components/cases/CaseMessageNotification.tsx","components/cases/CaseTask.tsx","components/cases/AppointmentNewInNotification.tsx","components/Home.tsx","components/auth/LogIn.tsx","components/auth/LogInCallBack.tsx","components/auth/RenewCallBack.tsx","helpers/MUITableTranslations.ts","components/admin/users/UsersTab.tsx","components/admin/users/RolesTab.tsx","components/_shared/Tabs.jsx","components/admin/users/AppUsers.tsx","components/admin/users/EditUser.tsx","components/admin/users/EditUserRoles.tsx","components/admin/users/ResetPassword.tsx","components/admin/users/UserDetails.tsx","components/admin/users/EditRole.tsx","components/admin/listOfValues/CityAppReferentials.tsx","components/admin/listOfValues/AppReferentials.tsx","components/admin/mailPlaceHolders.ts","utils/toBase64.ts","components/admin/otherLists/OtherListsOfValues.tsx","assets/core/_variables-mui.scss","theme/index.js","theme/typography.js","assets/images/Brand_Mark.png","layout-components/HeaderLogo/index.js","assets/images/info.svg","layout-components/HeaderDots/index.js","layout-components/HeaderUserbox/index.js","helpers/VehicleHelper.ts","components/cases/SearchCase.tsx","helpers/Utils.ts","utils/orderUtils.ts","interfaces/OrderParts.ts","components/orders/OrderDetails.tsx","components/orders/SearchOrder.tsx","layout-components/HeaderSearch/index.js","layout-components/Header/index.js","layout-components/PageTitle/index.js","layout-components/WrapperSimple/index.js","layout-components/WrapperSeamless/index.js","layout-blueprints/LeftSidebar/index.js","components/userProfile/userProfile.tsx","components/admin/organizations/OrganizationBankAccounts.tsx","components/admin/organizations/OrganizationLogo.tsx","components/admin/organizations/OrganizationTokens.tsx","components/admin/organizations/EditOrganization.tsx","components/admin/organizations/OrganizationEntities.tsx","components/admin/organizations/OrganizationHierarchy.tsx","components/admin/organizations/OrganizationDetailsTab.tsx","components/admin/organizations/OrganizationUsers.tsx","components/admin/organizations/OrganizationInterfaces.tsx","components/admin/organizations/OrganizationParameters.tsx","components/admin/organizations/organizationCase/OrganizationCaseTypeTab.tsx","components/admin/organizations/organizationCase/OrganizationCaseTypeStepTab.tsx","components/admin/organizations/organizationCase/EditOrganizationFormDesign.tsx","components/admin/organizations/organizationCase/EditOrganizationForm.tsx","components/admin/organizations/organizationCase/OrganizationCaseTypeStepFormTab.tsx","components/admin/organizations/organizationCase/OrganizationNewCaseType.tsx","components/admin/tariffs/EditTariffLaborTab.tsx","components/admin/tariffs/EditTariff.tsx","components/admin/tariffs/Tariffs.tsx","components/admin/workflows/Workflows.tsx","components/admin/organizations/OrganizationFilters.tsx","components/admin/organizations/OrganizationJobTypes.tsx","components/admin/organizations/OrganizationMaintenancePackages.tsx","components/admin/organizations/OrganizationOilViscosities.tsx","components/admin/organizations/OrganizationInvoiceRanges.tsx","components/admin/organizations/OrganizationAdmin.tsx","components/admin/organizations/HOOrganizations.tsx","components/admin/xmlDocument/GtXML.tsx","helpers/forms/FormCode.ts","helpers/forms/FormButton.tsx","components/newCase/Workflows.tsx","components/newCase/SearchVehicleForm.tsx","components/newCase/searchClientForm.tsx","components/newCase/NewCase.tsx","components/admin/workflows/WorkflowGeneralData.tsx","components/admin/workflows/WorkflowParameters.tsx","components/admin/workflows/WorkflowOrganizationTypes.tsx","components/admin/workflows/WorkflowPartners.tsx","components/admin/workflows/WorkflowTariffs.tsx","components/admin/workflows/WorkflowCaseStructureSectionTab.tsx","components/admin/workflows/editWorkflowStep/EditWorkflowStepStatuses.tsx","components/admin/workflows/editWorkflowStep/EditWorkflowStep.tsx","components/admin/workflows/WorkflowCaseStructureStepsTab.tsx","components/admin/workflows/editWorkflowForm/EditWorkflowFormReport.tsx","components/admin/workflows/editWorkflowForm/EditWorkflowFormDesign.tsx","components/admin/workflows/editWorkflowForm/EditWorkflowFormActionTransStatus.tsx","components/admin/workflows/editWorkflowForm/EditWorkflowFormActionCaseAllocation.tsx","components/admin/workflows/editWorkflowForm/EditWorkflowFormActionSendEmail.tsx","components/admin/workflows/editWorkflowForm/EditWorkflowFormAction.tsx","components/admin/workflows/editWorkflowForm/EditWorkflowFormInterfaces.tsx","components/admin/workflows/WorkflowOptimizations.tsx","components/admin/workflows/WorkflowDocumentTypes.tsx","components/admin/workflows/WorkflowCalculations.tsx","components/admin/workflows/WorkflowPermissions.tsx","components/admin/workflows/editWorkflowForm/EditWorkflowForm.tsx","components/admin/workflows/WorkflowCaseStructureFormsTab.tsx","components/admin/workflows/WorkflowCaseStructure.tsx","components/admin/workflows/WorkflowSuppliers2.tsx","components/admin/workflows/WorkflowNotifications.tsx","components/admin/workflows/WorkflowInterfaces.tsx","components/admin/workflows/WorkflowCostCenters.tsx","components/admin/workflows/WorkflowAdmin.tsx","components/Loader.tsx","components/cases/Cases.tsx","components/cases/TariffProperties.tsx","components/cases/CaseDetailsCaseTabSummaryForm.tsx","components/cases/CaseDetailsCaseTabHistoryForm.tsx","helpers/forms/FormHelpers.ts","components/cases/CaseDetailsCaseTabModifyWorkflowForm.tsx","components/cases/CaseDetailsCaseTabDocumentsForm.tsx","components/cases/CaseDetailsCaseTabCarPhotosForm.tsx","interfaces/CalculationParts.ts","components/cases/CaseDetailsCaseTabCalculationDetails2.tsx","components/cases/CaseDetailsAlternativeCalculationPieces.tsx","components/cases/CaseDetailsAlternativeCalculationDetails.tsx","assets/images/car-image-not-available.jpg","components/evaluation/CarCard.tsx","components/cases/ValuationFiltersWizard/ValuationFiltersWizardComponent.tsx","components/cases/ValuationFiltersWizard/ValuationFiltersWizardContainer.tsx","components/cases/CaseDetailsValuation.tsx","components/cases/CaseDetailsCaseTabCompareCalculations.tsx","components/vehicles/CertificateOfControl.tsx","components/radar/RadarFilters.tsx","components/radar/RadarMap.tsx","components/radar/fuelTypes.ts","components/radar/RecentAdds.tsx","components/radar/RadarDonutChart.tsx","components/radar/RadarScatterChart.tsx","components/radar/RadarLineChart.tsx","components/radar/radarReducer.ts","components/radar/Radar.tsx","components/cases/CaseValuationHistory.tsx","components/cases/CaseDetailsCaseRequests.tsx","components/cases/CaseDetailsCaseTabCalculationsForm.tsx","components/_shared/DatePicker.tsx","components/cases/CaseDetailsCaseTabCarDetailsForm.tsx","components/cases/CaseDetailsCaseTabEventDetailsForm.tsx","components/cases/CaseDetailsCaseTabBackToServiceForm.tsx","enums/OfferType.ts","enums/PersonType.ts","components/cases/CaseDetailsCaseTabOtherServiceForm.tsx","enums/CurrencyEnum.ts","components/cases/CaseDetailsCaseTabPaymentDetailsForm.tsx","components/orders/UpdateOrderPart.tsx","components/cases/CaseDetailsCaseTabOrderForm.tsx","components/cases/CaseDetailsCaseServiceAppointmentsForm.tsx","components/cases/CaseDetailsCaseTabClientDataForm.tsx","components/_shared/TableSettings.tsx","components/cases/vehicleDetails/CaseDetailsCostDetailsForm.tsx","assets/images/vin/hand-pen-01.svg","components/cases/vehicleDetails/CaseDetailsCaseTabCarDetailsExtendedContainer.tsx","components/cases/CaseDetailsCaseTabCarRepairCostForm.tsx","components/cases/ContractModal/initialStateValue.ts","enums/AttachmentTypeIdEnum.ts","components/cases/ContractModal/ContractModal.tsx","components/cases/CaseDetailsCaseTabSaleOfferForm.tsx","components/cases/advert/CaseDetailsCaseTabVehicleAdvertComponent.tsx","components/cases/CaseDetailsCaseTabEventBillingDetailsForm.tsx","components/cases/CaseDetailsCaseTabSoldCarForm.tsx","components/agenda/agenda.requests.tsx","utils/appointments.ts","components/appointment/ClientAutocomplete.tsx","components/appointment/CarDetails.tsx","components/appointment/JobsMultipleSelection.tsx","components/appointment/JobDetails.tsx","components/agenda/BigCalendar.tsx","components/appointment/AppointmentCalendar.tsx","components/cases/CaseDetailsCaseServiceAddAppointmentForm.tsx","components/cases/CaseDetailsCaseTabInOutDataForm.tsx","components/cases/CaseDetailsCaseTabIntegrationClientDataForm.tsx","components/cases/CaseDetailsCaseCarfixAnalysisForm.tsx","components/cases/CaseDetailsCaseCarfixBackToServiceForm.tsx","components/cases/CaseDetailsCaseCarfixValidateAppointmentForm.tsx","components/cases/CaseDetailsCaseRepairInProgressForm.tsx","components/cases/CaseDetailsCarInServiceForm.tsx","components/cases/CaseDetailsCaseTab.tsx","components/cases/CaseDetailsCommentsTab.tsx","components/cases/CaseDetailsHistoryTab.tsx","components/cases/CaseDetailsSupportCommentsTab.tsx","components/cases/CaseDetails.tsx","interfaces/Dashboard/VehicleFiltersState.ts","components/dashboards/vehicles/VehicleDashboardAppliedFilters.tsx","components/dashboards/vehicles/VehicleBarChart.tsx","components/dashboards/vehicles/VehicleAverages.tsx","components/dashboards/vehicles/VehicleAverageAgeBarChart.tsx","components/dashboards/vehicles/VehicleMap.tsx","components/dashboards/vehicles/VehicleDonutChart.tsx","components/dashboards/vehicles/VehicleConditionTable.tsx","components/dashboards/vehicles/VehicleStockTable.tsx","interfaces/Dashboard/DashboardFiltersState.ts","components/dashboards/DashboardFilters.tsx","components/dashboards/vehicles/vehicleDashboardReducer.ts","components/dashboards/vehicles/VehicleDashboard.tsx","components/dashboards/acquisitions/AcquisitionDonutChart.tsx","components/dashboards/acquisitions/AcquisitionMainCards.tsx","interfaces/Dashboard/AcquisitionFiltersState.ts","components/dashboards/acquisitions/AcquisitionDashboardAppliedFilters.tsx","components/dashboards/acquisitions/RecentAcquisitions.tsx","components/dashboards/acquisitions/TopBuyers.tsx","components/dashboards/acquisitions/acquisitionDashboardReducer.tsx","components/dashboards/acquisitions/AcquisitionDashboard.tsx","components/dashboards/sales/SalesOfferEmailBarChart.tsx","components/dashboards/sales/SalesHeader.tsx","components/dashboards/sales/SalesDonutChart.tsx","components/dashboards/sales/VehicleAddSalesChart.tsx","components/dashboards/sales/SalesSummaryCard.tsx","components/dashboards/sales/SalesAggregateTable.tsx","components/dashboards/sales/salesDashboardReducer.tsx","interfaces/Dashboard/SalesFiltersState.ts","components/dashboards/sales/SalesDashboardAppliedFilters.tsx","components/dashboards/sales/SalesDashboard.tsx","components/dashboards/Dashboards.tsx","components/orders/Orders.tsx","components/vehicles/VehicleImportModal.tsx","components/vehicles/ImportVehiclesRenaultButton.tsx","components/cases/CaseDetailsCaseTabSaleOfferFormDialog.tsx","components/vehicles/VehicleImportOneCarModal.tsx","components/vehicles/Vehicles.tsx","components/vehicles/VehicleCase.tsx","components/vehicles/VehicleHistoryTimeline.tsx","components/vehicles/VehicleAttachments.tsx","components/vehicles/DetailsOfCarForm.tsx","components/settings/UserOrganizationInterfaces.tsx","components/vehicles/VehiclesHistory.tsx","components/admin/car-class-rent-price/CarClassRentalPrice.tsx","components/billing/Billing.tsx","components/billing/DgpciBilling.tsx","components/order-parts-history/OrderPartsHistory.tsx","components/nomenclature/version/VersionList.tsx","components/nomenclature/bodyType/BodyTypeList.tsx","components/nomenclature/bodyConditionType/BodyConditionTypeList.tsx","components/nomenclature/wheelConditionType/WheelConditionTypeList.tsx","components/nomenclature/invoiceRange/InvoiceRangeList.tsx","components/nomenclature/provenance/ProvenanceList.tsx","components/nomenclature/exchangeRateList/ExchangeRateList.tsx","components/nomenclature/alcorErrorLog/AlcorErrorLogList.tsx","components/nomenclature/financialParameterInfo/FinancialParameterInfoList.tsx","components/nomenclature/sellerData/SellerDataList.tsx","store/actions/MavoVehicle.ts","components/mavo-vehicles/MavoVehicleOrderDialog.tsx","components/mavo-vehicles/MavoVehicleAuctionDialog.tsx","components/mavo-vehicles/MavoVehicles.tsx","components/mavo-vehicles/MavoGeneralInformationContainer.tsx","components/mavo-vehicles/MavoVehicleOptionsContainer.tsx","components/mavo-vehicles/PreviewAttachment.tsx","components/mavo-vehicles/MavoAttachmentDataContainer.tsx","components/mavo-vehicles/MavoStatusDataContainer.tsx","components/mavo-vehicles/MavoVehicleDetailsForm.tsx","components/mavo-vehicles/MavoStockDataEditContainer.tsx","components/mavo-vehicles/MavoVehicleStockDetailsForm.tsx","store/actions/VehicleAuction.ts","components/mavo-vehicles/RealTimeDate.tsx","components/mavo-vehicles/AddAuctionOfferDialog.tsx","components/mavo-vehicles/MavoVehicleDetailsViewForm.tsx","components/mavo-vehicles/MavoVehiclesAuctions.tsx","components/mavo-vehicles/MavoVehiclesUserAuctions.tsx","components/mavo-vehicles/MavoAuctionDetailsForm.tsx","components/mavo-vehicles/MavoVehiclesAdminAuctions.tsx","components/mavo-vehicles/OrdersButtons.tsx","components/mavo-vehicles/MavoVehiclesOrders.tsx","components/admin/poeditor/LanguageApiCard.tsx","components/admin/poeditor/LanguageLocalCard.tsx","components/admin/poeditor/PoEditor.tsx","components/admin/maintenance-cupi-optional-part/MaintenanceCupiOptionalPartComponent.tsx","components/mavo-vehicles/VoInvoiceHistory.tsx","components/admin/users/MavoUsersTab.tsx","components/admin/users/MavoAppUsers.tsx","components/admin/users/MavoEditUser.tsx","components/admin/users/MavoUserDetails.tsx","components/nomenclature/alcorParameterInfo/AlcorParameterInfoList.tsx","components/user-manual/UserManual.tsx","components/admin/organizations/MavoHOOrganizations.tsx","components/admin/organizations/MavoEditOrganization.tsx","components/admin/organizations/MavoOrganizationEntities.tsx","components/admin/organizations/MavoOrganizationDetailsTab.tsx","components/admin/organizations/MavoOrganizationAdmin.tsx","components/admin/model-car-class/ModelCarClass.tsx","components/agenda/SmallCalendar.tsx","components/agenda/NewCaseAppointment.tsx","types/Agenda.ts","components/agenda/DropDownSelect.tsx","components/agenda/AppointmentsTable.tsx","components/appointment/AppointmentBigCalendar.tsx","components/agenda/AgendaPage.tsx","components/appointment/ContactForm.tsx","enums/Status.ts","components/appointment/ConfirmAppointment.tsx","components/appointment/AppointmentClientSelectionDetails.tsx","components/appointment/AppointmentDetails.tsx","components/appointment/AppointmentHistory.tsx","components/appointment/AppointmentTabDocumentsForm.tsx","components/appointment/AppointmentPage.tsx","components/appointment/CarAutocomplete.tsx","components/appointment/MileageInput.tsx","components/appointment/AddNewClientModal.tsx","components/appointment/LinkButton.tsx","components/appointment/AddNewCarModal.tsx","components/appointment/AddNewAppointmentPage.tsx","components/admin/maintenance-producer/MaintenanceProducerComponent.tsx","components/evaluation/DetailsValuation.tsx","components/evaluation/DetailsValuationContainer.tsx","components/evaluation/EvaluationPage.tsx","assets/images/logo_carfix_partner.png","components/evaluation/EvaluationReportFile.tsx","components/evaluation/EvaluationCarFile.tsx","components/evaluation/evaluation.requests.tsx","components/evaluation/EvaluationHistory.tsx","components/billing/GTWSBilling.tsx","components/admin/country-buffer/CountryBufferComponent.tsx","components/billing/NonStockPartBilling.tsx","components/orders/OrderDetailsPage.tsx","components/nomenclature/color/ColorList.tsx","components/mavo-vehicles/MavoVehiclesUserOrders.tsx","components/admin/country-support/CountrySupportComponent.tsx","components/general-notification/GeneralNotification.tsx","components/billing/NewBillingReport.tsx","App.tsx","utils/ScrollToTop.js","index.tsx","store/actions/ActionTypes.ts","helpers/PptConstants.ts","services/PptService.ts","assets/images/carfix_newlogo.svg","layout-components/SidebarHeader/index.js","utils/numberFormat.ts","layout-components/SidebarMenu/SidebarMenuListItem.js","layout-components/SidebarMenu/index.js","utils/useRouter.js","services/AuthService.ts","services/OrganizationService.ts","services/CRUDService.ts","services/AppUserService.ts","services/ReferentialService.ts","services/WorkflowService.ts","assets/images/OLX.png","assets/images/Autovit.jpg","assets/images/Renault.png","helpers/AxiosInstance.ts","helpers/API.ts","layout-components/SidebarUserbox/index.js","context/Contexts.ts","services/WeatherForecastsService.ts","services/TariffService.ts","services/VehicleService.ts","services/CaseService.ts","services/GtService.ts","services/CaseSettingsService.ts","services/DashboardService.ts","services/OrderService.ts","services/ReportsService.ts","services/TranslatorService.ts","layout-components/Sidebar/index.js","layout-components/Sidebar/navItems.js"],"names":["RoleClaimsEnum","Administrator","Admin","AdminUsers","AdminValueList","AdminOrganization","SAMPLEPAGEV3","Agenda","Dashboard","Evaluation","NewCase","Home","Case","Order","Vehicle","Settings","ManagerExport","MavoVehicle","MavoAgent","MavoAdministrator","MavoContab","AdminCountryOrganization","AdminService","VehicleSearch","Supplier","AdminSupport","OrganizationTypeCode","GT","SUPPLIER","LEASING","REP","OrganizationLevelTypeCode","HO","COST","TariffCategoryCode","WorkflowFormActionTypeCode","STATUS_TRANSITION","CASE_ALLOCATION","SEND_MAIL","CommentTypeCode","PUBLIC","PRIVATE","INTERNAL","SUPPORT_REQUEST","SUPPORT_RESPONSE","AttachmentTypeCode","RCA","VIC","ID","DL","IMG","OTHER","CONTRACT","MAIN_VEHICLE_PHOTO","MANUAL_UTILIZARE","WORK_ORDER","HAND_OVER","INVOICE_REPAIR","LEFT_SIDE_FRONT","VehicleAttachmentTypeCodeOrder","PurchaseOriginCode","NC","ParametreCode","TVA","CURRENCY","CalculationTypeCode","ORG","ALT","CaseStatusTypeCode","DRAFT","CarPartQualityTypeCode","OE","OEM","AM","CarPartQualityRatings","Rating","ReportTypeCode","ESTIMATE_OE","RENAULT_OFFER","RENAULT_INVOICE","RENAULT_CONTRACT","ADVERT_REPORT","DEVIZ_AUTOWORLD","DEVIZ_CLIENT","RENAULT_AVIZ_PLATA","RENAULT_FACTURA_LIVRARE","DEVIZ_ALT","FISA_EVALUARE_MASINA","DEVIZ_REPARATIE","DEVIZ_ALT_PRC","DEVIZ_REP_AP","DEVIZ_REP_OFERTA","InsuredTypeCode","PF","PJ","OrderStatusCode","REP_DRAFT","REP_LIVRATA","REP_PLASATA","REP_ANULATA","FZR_IN_LIVRARE","FZR_ACCEPTATA","FZR_REFUZATA","FZR_LIVRATA","FZR_COMANDA_CONFIRMATA","FZR_VERIFICARE_LA_FURNIZOR","REP_VERIFICATA_DE_FURNIZOR","REP_REINTEROGATED_PARTS","WorflowEditableReport","PROCES_VERBAL_PREDARE_PRIMIRE","OrderPartStatus","UNAVAILABLE","PROCESSED","PROCESSING","UNORDERED","ORDERED","RETURNED","OUT_OF_STOCK","MODIFICATA_DE_FURNIZOR","PIESA_SELECTATA","CalculationSectionCodeEnum","PART","LABOR","PAINT","PAINT_LABOR","OrderStatusTypesCode","FZR","OfferTypeCode","SELL","BUY","CurrencyCode","EUR","RON","USD","CHF","ReferentialCode","OrganizationType","OrganizationLevel","CompanyParameter","Currency","Country","Region","City","TariffCategory","TariffTypeGroup","Insurer","CarBrands","CaseType","NewCaseSteps","OptimizationType","Section","AttachmentType","CaseStatus","WorkflowSteps","EmailRecipientType","CarPartCategory","Report","ActionType","UserRole","CalculationType","CarCategory","CarClass","PolicyType","PersonType","SolutionValue","OrderStatus","FilterType","PaymentType","PaymentRequestNo","VehicleMake","BodyType","WheelsType","TractionType","TransmissionType","FuelType","TiresType","PaintType","VehicleCondition","PollutionNorm","GuaranteeType","OfferTye","AdvertRegion","AdvertCity","QCItemCategory","QCItem","VehicleStatus","Advertiser","Model","Color","AdvertDistrict","Bank","CountryOrigin","Version","BodyConditionType","WheelConditionType","InvoiceRangeType","InvoiceRangeStatus","FinancialParameter","VehicleType","MvoDvBattyp","PurchaseOrigin","SaleChannel","MaintenanceOptionalPartName","Refurbished","VehicleAttachmentType","AlcorParameter","JobType","MaintenanceOption","MaintenancePackage","OilViscosity","CostCenter","AppointmentCategoryType","ColorRCR","BodyTypeRCR","EInvoiceStatus","BodyCondition","InterventionType","ImportAlternativePartsFileHeader","H1","H2","H3","H4","H5","H6","H7","H8","H9","H10","H11","ImportOriginalPartsFileHeader","ImportCalculationOriginalPartsFileHeader","ValuationLaguageId","en","ro","Constants","stsAuthority","process","clientId","clientRoot","clientScope","apiRoot","ClientSettings","authority","client_id","redirect_uri","concat","silent_redirect_uri","post_logout_redirect_uri","response_type","scope","automaticSilentRenew","CarDetailsSettings","numberOfKm","VehicleAdvertOperationTypes","publish","delete","RefConstants","vehicleMakeRef","Referentials","referential","find","item","code","bodyTypeRef","wheelsTypeRef","tractionTypeRef","transmissionTypeRef","fuelTypeRef","tiresTypeRef","paintTypeRef","vehicleConditionRef","pollutionNormRef","modelRef","colorRef","personTypeRef","attachementTypeRef","regionRef","cityRef","advertiserRef","districtRef","bankRef","countryOriginRef","invoiceRangeTypeRef","invoiceRangeStatusRef","currencyRef","financialParameterRef","vehicleTypeRef","mvoDvBattypRef","refurbishedRef","versionRef","vehicleAttachmentTypeRef","alcorParameterRef","guaranteeTypeRef","colorRCRRef","bodyTypeRCRRef","bodyConditionRef","eInvoiceRef","VehicleStatusCodeEnum","CaseStatusCodeEnum","CaseTypeCode","CaseStatusCode","allowedVehicleStatuses","Map","Aquisition","Available","Repair","Reserved","ForSale","Sold","AcquisitionRefused","SupplierApiType","enumToDescriptedArray","enumeration","Object","keys","filter","key","isNaN","Number","map","id","description","String","AlternativeCode","TAXAMEDIU","SupplierCode","AUGSBURG","AUTONET","ADTOTAL","MATEROM","CONEX","EUROEST","LKQ","NESTE","AdditionalInfoCode","PRODUS_NU_POATE_FI_RETURNAT","EventDetailsFieldsCode","CASENUMBER","UploadSizeLimit","GTErrorCode","LanguageCode","FuelTypeEnum","INDISPONIBIL","LICITATIE","COMANDA","AVIZ","FACTURAT","MavoVehicleStatusCodeEnum","MavoVehicleProvenanceType","mavoVehicleStatuses","MavoVehicelAttachementTypeCodeEnum","MavoImageUploadSizeLimit","disabledNewMavoVehicleStatuses","disabledMavoVehicleStatuses","MakeExceptionEnum","MakeException","FIAT","toString","ALFA","LANCIA","RenaultGoldList","MavoPersonTypeEnum","MavoOrderStatusCodeEnum","MavoVehicleInvoiceStatusEnum","OriginalPartShortNumberException","AppointmentStatusCodeEnum","InvoiceRangeCodeEnum","renaultMakeCodes","TariffCategoryCodeEnum","AdvertOptionCodeEnum","TariffTypeGroupCodeEnum","OwnStockCodeEnum","includedTariffTypeGroupCodes","CaseTypeCodeEnum","CountryCodeEnum","FilterTypeCodeEnum","AppointmentCategoryTypeCodeEnum","excludedCodes","SOLICITA_MODIFICARE_DEVIZ","IN_ANALIZA","COM_PI","ACTUALIZEAZA_CALCULATIE","OrganizationCaseTypeStepCode","aquisitionWorkflowSectionSteps","aquisitionSteps","excludedAdvertisers","AppointmentPaymentStatus","OrderNotificationTemplateEnum","hideButtonsSectionSteps","nontStockRoles","nonStockCheckedOERoles","MavoAuctionStatusEnum","MavoLanguageTranslationEnum","EInvoiceStatusEnum","InvoiceTypeCodeEnum","AuctionOfferStatusEnum","NotifySupportTemplateEnum","initialState","forecasts","isLoading","user","appUser","showMessage","language","dateFormat","longDateFormat","tasks","comments","newInCases","isCommentsLoading","isTasksLoading","isNewInCasesLoading","currencyRates","newInAppointments","isNewInAppointmentsLoading","sidebarShadow","sidebarFixed","sidebarToggleMobile","sidebarToggle","sidebarHover","headerFixed","headerShadow","headerSearchHover","contentBackground","themeConfiguratorToggle","pageTitleStyle","pageTitleBackground","pageTitleShadow","pageTitleBreadcrumb","pageTitleIconBox","pageTitleDescription","pageTitleBackButton","userList","caseSettings","case","vehicle","mavoVehicle","vin","make","makeId","model","modelId","versionItem","versionId","color","colorId","fuelType","fuelTypeId","bodyTypeId","bodyType","transmissionTypeId","transmissionType","provenance","provenanceId","firstRegistrationDate","fabricationYear","kilometersNr","power","horsePower","engineManufactureCode","accessories","isReserved","reservations","cylinderCapacity","supplier","location","htPurchaseRonPrice","ttcEvaluationEurPrice","nirNumber","nirDate","currentStatus","vehicleOptions","mavoVehicleAttachments","isMavoVehicle","vehicleType","vehicleTypeId","vehicleOptionInfo","vehicleId","engineCapacity","emissionsClass","doorCount","seatCount","driveType","registration","vehicleCondition","metallicColor","upholstery","upholsteryColor","previousOwnersCount","countryOfOrigin","alarm","antiTheft","abs","esp","driverFrontAirbag","passengerFrontAirbag","frontSideAirbags","frontCurtainAirbag","xenonHeadlights","alloyWheels","glassRoof","towHook","protectionFrame","steeringWheelControls","onBoardComputer","cruiseControl","lockableDifferential","particleFilter","electricMirrors","frontElectricWindows","rearElectricWindows","tintedWindows","heatedSeats","rainSensors","parkingSensors","powerSteering","sunroof","rightHandDrive","fogLights","airConditioning","radio","cdPlayer","videoScreen","gps","vehicleConditionInfo","frontWingLeftPaintId","frontWingLeftPaint","frontWingRightPaintId","frontWingRightPaint","rearWingLeftPaintId","rearWingLeftPaint","rearWingRightPaintId","rearWingRightPaint","frontDoorLeftPaintId","frontDoorLeftPaint","frontDoorRightPaintId","frontDoorRightPaint","rearDoorLeftPaintId","rearDoorLeftPaint","rearDoorRightPaintId","rearDoorRightPaint","hoodPaintId","hoodPaint","faceMaskPaintId","faceMaskPaint","frontBumperPaintId","frontBumperPaint","rearBumperPaintId","rearBumperPaint","trunkPaintId","trunkPaint","spoilerPaintId","spoilerPaint","roofPaintId","roofPaint","superstructurePaintId","superstructurePaint","frontWingLeftBodyPaintId","frontWingLeftBodyPaint","frontWingRightBodyPaintId","frontWingRightBodyPaint","rearWingLeftBodyPaintId","rearWingLeftBodyPaint","rearWingRightBodyPaintId","rearWingRightBodyPaint","frontDoorLeftBodyPaintId","frontDoorLeftBodyPaint","frontDoorRightBodyPaintId","frontDoorRightBodyPaint","rearDoorLeftBodyPaintId","rearDoorLeftBodyPaint","rearDoorRightBodyPaintId","rearDoorRightBodyPaint","hoodBodyPaintId","hoodBodyPaint","faceMaskBodyPaintId","faceMaskBodyPaint","frontBumperBodyPaintId","frontBumperBodyPaint","rearBumperBodyPaintId","rearBumperBodyPaint","trunkBodyPaintId","trunkBodyPaint","spoilerBodyPaintId","spoilerBodyPaint","roofBodyPaintId","roofBodyPaint","superstructureBodyPaintId","superstructureBodyPaint","frontWingLeftReplacePaintId","frontWingLeftReplacePaint","frontWingRightReplacePaintId","frontWingRightReplacePaint","rearWingLeftReplacePaintId","rearWingLeftReplacePaint","rearWingRightReplacePaintId","rearWingRightReplacePaint","frontDoorLeftReplacePaintId","frontDoorLeftReplacePaint","frontDoorRightReplacePaintId","frontDoorRightReplacePaint","rearDoorLeftReplacePaintId","rearDoorLeftReplacePaint","rearDoorRightReplacePaintId","rearDoorRightReplacePaint","hoodReplacePaintId","hoodReplacePaint","faceMaskReplacePaintId","faceMaskReplacePaint","frontBumperReplacePaintId","frontBumperReplacePaint","rearBumperReplacePaintId","rearBumperReplacePaint","trunkReplacePaintId","trunkReplacePaint","spoilerReplacePaintId","spoilerReplacePaint","roofReplacePaintId","roofReplacePaint","superstructureReplacePaintId","superstructureReplacePaint","frontLeftSideWindowToReplace","frontLeftSideWindowToRepair","frontRightSideWindowToReplace","frontRightSideWindowToRepair","rearLeftSideWindowToReplace","rearLeftSideWindowToRepair","rearRightSideWindowToReplace","rearRightSideWindowToRepair","leftSideMirrorToReplace","leftSideMirrorToRepair","rightSideMirrorToReplace","rightSideMirrorToRepair","leftWiperToReplace","leftWiperToRepair","rightWiperToReplace","rightWiperToRepair","leftProjectorToReplace","leftProjectorToRepair","rightProjectorToReplace","rightProjectorToRepair","leftTurnSignalToReplace","leftTurnSignalToRepair","rightTurnSignalToReplace","rightTurnSignalToRepair","leftHeadlightToReplace","leftHeadlightToRepair","rightHeadlightToReplace","rightHeadlightToRepair","leftBrakeLightsToReplace","leftBrakeLightsToRepair","rightBrakeLightsToReplace","rightBrakeLightsToRepair","rearWindshieldToReplace","rearWindshieldToRepair","windshieldToReplace","windshieldToRepair","hoodGrilleToReplace","hoodGrilleToRepair","motor","clutch","gearbox","steering","battery","exhaust","tires","driveShaft","leftCvJoints","rightCvJoints","leftShockAbsorbers","rightShockAbsorbers","frontBrakes","backBrakes","itpValidateDate","leftSeatUpholstery","rightSeatUpholstery","rearSeatUpholstery","interiorMirror","firstAidKit","bulbKit","leftFrontHeadrest","rightFrontHeadrest","rearHeadrest","spareTireGood","spareTireReplace","frontFloorMats","fireExtinguisher","wheelWrench","rearFloorMats","reflectiveTriangle","carJack","mavoVehicleAuction","selectedRange","appointments","selectedAppointment","statusList","categoryType","LoadUserNotifications","async","dispatch","getState","context","_appState$appUser","_appState$appUser$org","_appState$appUser$org2","_appState$appUser$org3","caseService","organizationService","appUserService","appState","app","dateFrom","Date","setMonth","getMonth","dateTo","cases","caseNewComments","Promise","all","GetCases","isNew","isAssignedToId","organization","country","toUpperCase","CZ","dateFilterStartDate","setHours","toISOString","dateFilterEndDate","dateFilterCode","DS","GetUserComments","GetTaskList","GetAppointments","org","organizationOwnerId","taskOrg","appointmentOrg","serviceId","push","orgOwners","users","GetUserOrganizationsByIds","Array","from","Set","GetUsersInfo","isNullOrUndefined","userId","forEach","cd","organizationOwner","ap","service","cc","usr","stateTasks","isEqual","type","ActionTypes","setTimeout","AppActionCreators","SetUser","enqueueSnackbar","authService","authenticationService","translatorService","curentUser","getUserAsync","localStorage","setItem","access_token","GetLanguages","GetProfile","languageCode","GetLanguage","gtOrganization","languages","error","console","log","Tranlate","variant","autoHideDuration","RemoveUser","Message","isDisplayed","display","SetLanguage","LoadTasks","LoadComments","RemoveTask","RemoveComment","RemoveNewInCase","MarkAsViewedNewInCase","LoadCurrencyRates","vehicleService","rates","GetCurrencyRates","RemoveNewInAppointment","MarkAsViewedNewInAppointment","ThemeActionCreators","setSidebarToggle","toggle","setSidebarToggleMobile","setSidebarHover","hover","AppUserAdminActionCreators","LoadUsers","page","rowsPerPage","GetAppUsers","EditUser","CaseSettingsActionCreators","SetCaseSettings","caseId","caseSettingsService","curentCase","GetCaseDetails","currentCaseSettings","GetCaseSettings","caseWorkflow","workflowId","workflow","workflowSections","section","workflowSectionSteps","step","isCurrent","caseStatusId","undefined","this","workflowSectionStepCaseStatuses","cs","SetCaseClientData","clientData","caseClientData","SetCaseVehicleData","UpdateCaseParameters","caseParameterArg","caseParameter","UpdateCaseTariffvalue","tariffValue","SetCaseVehicle","caseVehicle","SetCaseEvent","event","caseEvent","SetCaseValuation","valuation","caseValuation","SetCaseStatus","caseStatus","assignedToId","assignedTo","AddPartner","organizationId","orgService","state","casePartners","GetOrganization","firstPrtner","partner","caseWorkflowHistoryId","date","SetCaseCalculationHistory","caseCalculationHistory","SetCarInService","carInService","carInServiceDate","VehicleActionCreators","setVehicle","loading","GetVehicle","setVehicleObject","changeVehicleStatus","statusHis","status","resetVehicleState","reducers","weatherForecasts","WeatherForecastsReducer","incomingAction","action","startDateIndex","AppReducer","commentList","index","findIndex","splice","indexNewIn","caseIndex","isViewed","indexNewInAppointment","appointmentIndex","appointmentStatusHistory","indexTask","themeOptions","ThemeOptionsReducer","appUserAdmin","AppUserAdminReducer","AppCaseSettingsReducer","caseClient","caseParameters","parameter","newCaseParameters","indexTariffValue","caseTariff","caseTariffValuesHistory","newTariffValues","caseCalculation","VehicleReducer","MavoVehicleReducer","VehicleAuctionReducer","agenda","AgendaReducer","payload","useAppDispatch","useDispatch","useAppSelector","useSelector","CaseNewInNotification","React","constructor","arguments","onClick","moveToViewed","notNew","SetCaseNotNew","props","currentPath","history","pathname","toLowerCase","indexOf","go","err","handleAddToTaskList","addToTaskList","render","className","ScaleLoader","length","FontAwesomeIcon","icon","List","_this$props$appState$","_this$props$appState$2","_this$props$appState$3","_this$props$appState$4","_this$props$appState$5","_this$props$appState$6","_this$props$appState$7","_this$props$appState$8","ListItem","divider","style","backgroundColor","Grid","container","spacing","xs","e","cursor","displayName","caseNumber","caseType","plateNumber","name","moment","utc","local","format","direction","IconButton","size","StarBorderIcon","fontSize","DeleteOutlineTwoToneIcon","contextType","ApplicationContext","connect","caseSettingsState","mergeProps","stateProps","dispatchProps","ownProps","withRouter","CaseMessageNotification","RemoveUserComment","ex","handleCheck","Button","firstName","lastName","hoName","text","CaseTasks","handleDeleteFromTaskList","RemoveUserTask","PerfectScrollbar","dateCreation","StarIcon","AppointmentNewInNotification","appointmentStatusHistoryId","SetAppointmentNotNew","IsAppointmentNotNew","appointmentStatus","appointmentCategoryType","_props$appState$appUs","_props$appState$appUs2","_props$appState$appUs3","_props$appState$appUs4","useContext","TranslatorService","changeUID","setUID","useState","Box","m","p","lg","Card","assign","taskAdded","Guid","create","CaseTask","Login","PureComponent","super","tariffService","login","loginAsync","callApi","GetTariffTypes","addApi","updateApi","orgType","gtId","isActive","translations","UpdateOrganizationType","renewToken","renewTokenAsync","then","catch","logout","logoutAsync","getUser","expires_at","info","componentDidMount","createElement","marginTop","profile","margin","withSnackbar","LogInCallBack","result","search","userManager","signinRedirectCallback","setState","window","href","checkState","Redirect","to","RenewCallBack","signinSilentCallback","MUITranslations","GetTranslations","body","noMatch","toolTip","columnHeaderTooltip","column","label","pagination","next","previous","displayRows","toolbar","downloadCsv","print","viewColumns","filterTable","title","reset","titleAria","selectedRows","deleteAria","GetDashboardTranslations","technicalCondition","field","stockTable","topBuyers","topTentaiveBuyers","groupedOfferAndSentEmail","value","advertListAndSoldVehicleListGrouped","salesTable","stockMap","UsersTab","loadUsers","handleUserActiveChange","tableMeta","rowData","usersClone","updUser","target","checked","UpdateUser","onRowClick","getColumns","options","customBodyRender","sortDirection","filterOptions","names","logic","filterVal","Switch","onChange","inputProps","selectableRows","selectableRowsOnClick","download","textLabels","customToolbar","Tooltip","AddCircleTwoToneIcon","MUIDataTable","data","columns","appUserAdminState","RolesTab","roles","loadRoles","roleList","GetAppUserRoles","handleActiveChange","rolesClone","role","UpdateRole","TabPanel","children","other","Typography","component","hidden","AppUsersAdmin","selectedTab","handleChangeTab","newValue","match","path","Fragment","CardContent","Tabs","indicatorColor","textColor","Tab","appReferentialService","organizations","managers","userRoles","email","phoneNumber","jobFunction","manager","managerId","roleId","isMavo","hideOrderPrices","countryId","costCenterId","costCenter","hasValidityDate","validityDate","countryList","costCenterList","handleTextChange","currentTarget","handleAutocompleteChange","property","propertyId","handleOrganizationChange","hoId","filterMangers","saveUser","totalCount","newUser","AddUser","userChanged","newOrganization","handleValidityDateChange","isValid","refRole","countryRef","costCenterRef","GetOrganizations","Get","baseUrl","params","GetAppUser","o","renderForm","alignContent","alignItems","ValidatorForm","onSubmit","instantValidate","TextValidator","fullWidth","validators","errorMessages","TextField","Autocomplete","getOptionLabel","option","renderInput","userName","MuiPickersUtilsProvider","libInstance","utils","MomentUtils","locale","DatePicker","openTo","views","autoOk","minDate","FormControlLabel","control","referentialService","EditUserRoles","selectedRole","loadUserRoles","userRoleList","GetUserAppUserRoles","newroles","filterRoles","deleteRole","getOptions","addRole","newRole","createdByUserFullName","newUserRoles","newRoles","i","AddAppUserRole","deletedRole","newUserRoleArray","DeleteAppUserRole","appuserRoles","r","renderAddForm","ResetUserPass","resetPass","ResetPassword","renderResetPassForm","disabled","UserDetails","loadUser","NavigationIcon","EditRole","roleClaims","selectedClaim","claims","loadRoleClaims","roleClaimsList","GetAppUserRoleClaims","newClaims","filterClaims","setCellHeaderProps","align","setCellProps","deleteClaim","filterType","addClaim","newClaim","AddRoleClaim","saveRole","AddRole","claimValue","deletedClaim","newRoleClaimsArray","DeleteRoleClaim","values","claimType","rolNameChange","GetAppUserRole","renderEditRoleForm","renderClaims","tableIcons","Add","forwardRef","ref","Check","Clear","Delete","DeleteOutline","DetailPanel","ChevronRight","Edit","Export","SaveAlt","Filter","FilterList","FirstPage","LastPage","NextPage","PreviousPage","ChevronLeft","ResetSearch","Search","SortArrow","ArrowDownward","ThirdStateCheck","Remove","ViewColumn","CityAppReferentials","referentials","selectedReferential","regionList","dependentReferentialConfig","selectedCountry","selectedRegion","filteredReferentials","initialCountryList","initialRegionList","x","activeLanguages","loadReferentialsList","_this$state$selectedC","_this$state$selectedR","referentialList","getUrl","GetFromDB","loadDependentReferentials","dependentReferentialList","refItem","lang","translation","R","referentialTypeId","selectedRegionList","dependencyId","handleCountryChange","handleRegionChange","dependencyConfig","dependency","handleIsActiveChange","newReferentials","updatedReferential","Update","updateUrl","charAt","slice","handleLocListChange","gridProps","newLocList","loc","onRowDataChange","searchable","val","InputProps","readOnly","disableUnderline","customFilterAndSearch","matchFilter","editComponent","locListItem","defaultSort","dateModification","Label","getLocalization","header","actions","searchPlaceholder","searchTooltip","editTooltip","addTooltip","emptyDataSourceMessage","editRow","cancelTooltip","saveTooltip","labelRowsSelect","firstTooltip","previousTooltip","nextTooltip","lastTooltip","labelDisplayedRows","renderTypeList","disableClearable","onRowUpdate","newData","oldData","resolve","reject","validateRef","prevState","resultRef","onRowAdd","addUrl","renderTable","MaterialTable","icons","actionsColumnIndex","addRowPosition","localization","editable","AppReferentials","dependentReferencials","selectedDependentReferential","organizationTypeReferential","fuelTypeReferential","onTagsChange","loadReferentials","handleDependentReferencial","_this$state$selectedD3","_this$state$selectedD5","_this$state$selectedD2","_ref","_this$state$selectedD","_ref2","_this$state$selectedD4","_ref3","_this$state$selectedD6","handleIsRCRAvailableChange","isRCRAvailable","takeOrganizationTariff","hideAlternative","hideInsurerCalculation","hideOtherAttachments","ListsOFValueTypes","width","mailPlaceHolders","toBase64","file","reader","FileReader","readAsDataURL","onload","onerror","OtherListsOfValues","worflowService","otherListsOfValues","isDialogEmailTemplateOpen","emailTemplateId","selectedEmailBodyTemplate","EditorState","createEmpty","selectedEmailSubjectTemplate","GetEmailTemplates","newListsOfValues","UpdateEmailTemplate","onEmailTemplateClick","bodyEmailTemplate","subjectEmailTemplate","blocksFromHTML","htmlToDraft","contentState","ContentState","createFromBlockArray","contentBlocks","entityMap","createWithContent","subject","syncClick","syncUndocumentedModels","newListOfValues","newItem","AddEmailTemplate","closeDialog","onEditorStateChange","editorState","renderEditEmailTemplate","Editor","editorStyle","border","borderRadius","height","image","popupClassName","urlEnabled","uploadEnabled","alignmentEnabled","uploadCallback","imageBase64String","link","previewImage","inputAccept","alt","present","mandatory","defaultSize","placeHolderClick","newBlockMap","convertFromHTML","getCurrentContent","getSelection","getAnchorKey","blocksAfter","getBlockMap","skipUntil","_","k","skip","toArray","blocksBefore","takeUntil","getBlockForKey","newContentState","newEditorState","addPlaceholderToSubject","renderMailPlaceHolders","subheader","ListSubheader","button","dense","ListItemText","primary","ListItemSecondaryAction","edge","SubjectIco","saveEmailTemplateChanges","emailBody","draftToHtml","convertToRaw","SyncModels","SyncUndocumentedModels","workflowService","Dialog","onClose","open","fullScreen","DialogTitle","CloseIcon","DialogContent","dividers","sm","elevation","DialogActions","MuiTheme","createMuiTheme","palette","main","vars","grey","inheritDefault1","A100","inheritDefault2","secondary","red","success","green","warning","orange","helpers","blue","contrastThreshold","tonalOffset","shape","overrides","MuiButton","paddingLeft","paddingRight","containedSizeSmall","root","textTransform","fontWeight","MuiTooltip","tooltip","second","padding","arrow","typography","h1","lineHeight","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","caption","overline","clsx","Link","src","projectLogoIcon","boxSizing","projectLogo","loadUserNotifications","_props$appState$appUs5","_props$appState$appUs6","_props$appState$appUs7","_props$appState$appUs8","useHistory","anchorEl1","setAnchorEl1","anchorEl2","setAnchorEl2","anchorEl3","setAnchorEl3","useEffect","unlisten","listen","AGENDA_SET_SELECTED_RANGE","handleClose1","handleClose2","open1","Boolean","open2","open3","setValue","countValue","setNewCasesCount","handleChange","useStyle","makeStyles","indicator","useStyle2","useStyle3","classes","classes2","classes3","Hidden","smDown","pr","NotificationsActiveIcon","Popover","onEntering","checkSelectedTab2","document","getElementById","getElementsByTagName","getAttribute","left","anchorEl","handleClose3","anchorOrigin","vertical","horizontal","transformOrigin","paper","checkSelectedTab","tabContainer","secondTabSelected","thirdTabSelected","PollIcon","MenuBookRoundedIcon","HelpRounded","StyledBadge","withStyles","badge","boxShadow","position","top","animation","content","transform","opacity","Badge","setLanguage","_currentLanguage","setAnchorEl","handleClose","buttonLanguages","handleCloseMenu","reload","anchorElMenu","setAnchorElMenu","overlap","Avatar","sizes","Menu","keepMounted","getContentAnchorEl","Divider","maxWidth","list","VehicleHelper","GetPlateNumber","casee","GetBrand","caseVehicleBrand","vehicleBrand","identifiedMake","brand","GetModel","caseVehicleModel","vehicleModel","identifiedModel","GetUMC","GetVIN","GetKmNr","numberOfKilometers","GetFirstRegistrationDate","dateObj","GetFirstRegistrationDateObject","toLocaleDateString","GetFirstRegistrationDateFormat","toDate","firstPlateDate","GetMakeDateObject","makeDate","registrationDate","GetMakeDate","GetMakeDateFormat","GetBrandModel","SearchCase","cbContext","vehicleList","loadCases","vehicles","loadData","vehicleExtensionList","searchValue","replace","countryCode","GetVehicles","total","includes","vehicleIds","allCasesFromVehicles","makeSearchText","modelSearchText","unionBy","vehicleIdsFromCases","c","vehicleIdsFromVehicles","orphaneVehiclesIds","vid","orphaneCasesVehIds","orphaneCases","orphaneVehicles","GetVehicleList","usersAssignedLIst","userAssignedTo","vehiclesInStock","_item$make","_item$model","_item$currentStatus","_item$currentStatus$s","_i$vehicle","vehiclesNotInStock","_item$model2","_item$model3","_item$currentStatus2","_item$currentStatus2$","_i$caseVehicle","caseWithNoVehicles","isNil","emptyVehicles","onCaseClick","handleSearchPopverClose","onVehicleClick","renderVehicles","renderCases","componentDidUpdate","prevProps","searchId","maxHeight","overflow","Utils","GetValuationLanguageId","GetCurrencyRate","currencyCode","crrRate","currency","rate","ConvertCurrencyWithRoundedRate","fromCurrencyCode","toCurrencyCode","fromRate","toRate","parseFloat","toFixed","ConvertCurrency","validatePlateNumber","test","countryNumberFormat","numString","_country$code","RO","number","minimumFractionDigits","maximumFractionDigits","toLocaleString","_Utils","GetIdOrNull","GetProvenanceIdOrNull","FormatDateString","dateString","Moment","FormatDate","AddObjectToFormData","formData","parentKey","File","append","getPriceWithoutVat","priceWithVat","vatRate","getPriceWithVat","price","getPriceWithMarginVat","sellingPrice","purchasePrice","getMarginVat","removeVatFromPriceLabel","trim","pretUnitarFormat","part","pretOriginal","alternativePartQualityId","Math","round","alternativePrice","OrderParts","parts","vat","_parts","_vat","isDeleted","getPrice","_part$alternativePric","originalPrice","getDiscount","discount","alternativePartDiscount","getAmountPart","reduce","sum","pieceNr","getAmountPartWithDiscount","totalDiscount","totalWithoutVAT","totalVAT","OrderDetails","orderService","userStartCode","isLoadingOrderDetails","orderpartsList","isChangeOrderStatusDialogOpen","changeOrderStatusComment","statuses","selectedStatus","orderDetails","orderStatus","orderPartStatus","orderStatuses","selectedDisplayedStatus","attachments","orderStatusHistory","attachType","partsLocationOrganization","caseCalculationPartsThatChangedDuringPlacingOrder","showOrderPrice","executing","quality","rowsExpanded","partLoaders","firstCasePartToBeOrdered","hasSupplierRole","interventionType","_this$props$caseSetti","_this$props$caseSetti2","_this$props$caseSetti3","_this$props$caseSetti4","_this$props$orderDeta","_this$props$orderDeta2","_partQualityTypes$fin","_this$props$orderDeta4","_this$props$orderDeta5","refOrderStatus","refOrderPartStatus","refQualityPart","orderParts","statusHist","attachmentTypes","partQualityTypes","casePartToBeOrdered","suppliersInit","GetOrderStatusHistories","GetCurrentEvent","GetPartToBeOrdered","casePartToBeOrderedId","supplierId","GetModelById","createdBy","createdByUser","partsLocationOrganizationId","GetCostCenter","orgList","GetOrganizationsByHO","organizationType","amountWithoutTVA","amountTVA","tvaParam","GetCaseParameterHistory","parameterCode","startCode","orderPartStatusFiltered","hasRight","_this$props$orderDeta3","categoryPartId","row","hasBeenVerifiedBySupplier","right","displayOtherOrderDetails","orderPart","rest","availableStock","availableQuantity","isNull","alternativePartStockLocation","nullValue","displayDeliveryOrderDetails","_prevVal","_prevVal2","deliveryTime","prevVal","handleOECodeChange","updatedOrderPart","toBeUpdated","guideNumber","producer","validityTime","codeType","excludeFromOrder","orderCode","locationId","remarks","alternativeGuideNumber","alternativePartCode","alternativePartStockQuantity","alternativePartRemarks","productId","codEan","bundleItem","bundleNo","bundleQuantity","byOeCode","groupedUniqueId","toBeDeleted","updateAmount","handleAMCodeChange","handlePieceNrChange","alternativePartChecked","alternativeParts","originalPartId","selectedAlternativePart","_alternativePartCheck","_alternativePartCheck2","currentPacking","packing","split","secondItemOfPacking","currentPackingNumber","minQty","validateOrigPartUnitsAdd","validateOrigPartUnitsRemove","originalPartid","labelValidate","getElementsByClassName","firstChild","classList","add","inputValidate","closest","querySelector","remove","viewDeletePart","_this$props$orderDeta6","_this$props$orderDeta7","_this$props$orderDeta8","_this$props$orderDeta9","_this$props$orderDeta10","_this$props$orderDeta11","getPartsByColumns","_this$props$orderDeta12","_this$props$orderDeta13","_excludeFromOrder","minWidth","sort","_this$props$orderDeta14","_this$props$orderDeta15","_excludeFromOrder2","alternativePartDescription","alternativePartName","carPartCategory","alternativePartQuality","_this$props$appState$13","_this$props$appState$14","_this$props$appState$15","_this$props$appState$9","_this$props$appState$10","_this$props$appState$11","_this$props$appState$12","_this$props$orderDeta16","_this$props$orderDeta17","min","_excludeFromOrder3","_this$props$appState$19","_this$props$appState$20","_this$props$appState$21","_this$props$appState$16","_this$props$appState$17","_this$props$appState$18","_this$props$appState$25","_this$props$appState$26","_this$props$appState$27","_this$props$appState$22","_this$props$appState$23","_this$props$appState$24","partId","deleteOrderPart","hasRights","changeOrderStatusClick","_this$props$orderDeta18","_this$props$orderDeta19","validateOrder","getNextOrderStatus","_this$props$orderDeta20","_this$props$orderDeta21","_this$props$orderDeta22","_this$props$orderDeta23","_this$props$orderDeta24","_this$props$orderDeta25","_this$props$orderDeta26","_this$props$orderDeta27","canChangeNextOrderStatus","_this$props$orderDeta28","_this$props$orderDeta29","_this$props$orderDeta30","getOrderButton","order","_order$orderStatus","_order$orderStatus3","_order$orderStatus2","_order$orderStatus4","_order$orderStatus5","_order$orderStatus6","_order$orderStatus7","automatePlaceOrder","renderOrderDetailsSection","workflowAutomatePlaceOrder","changeOrderStatusSubmit","client","OWN_STOCK","address","interogateAlternativeParts","interogate","itemIndex","_orderPart$alternativ","_this$props$caseSetti5","_this$props$caseSetti6","_this$props$caseSetti7","_this$props$orderDeta31","_this$props$orderDeta32","InterogateCaseCalculationsAlternativePartsBySupplier","additionTariff","discountTariff","uuidToNumber","hexString","uuid","parseInt","handleAlternativePartChecked","selected","partFromGroup","handleAlternativePartSelect","orderPartIndex","alternativePart","_alternativePart$vali","_alternativePart$code","_alternativePart$type","_alternativePart$orde","_alternativePart$codE","_orderParts$orderPart","_orderParts$orderPart2","stockLocation","isChild","alternativePriceWithoutDiscount","specificAlternativeParts","findAlternativePartGroup","object","idList","initialCaseCalculationOriginalParts","package","displayPopup","alternativePartString","_findAlternativePartG","_findAlternativePartG2","_findAlternativePartG3","_findAlternativePartG4","whiteSpace","isInteger","getPackageFromOrderParts","newOrderParts","j","clearSelectedAlternativeParts","orderPartsCopy","alternativePartsCopy","renderExpandedRow","rowMeta","_orderPart$alternativ2","dataIndex","columnsCount","colSpan","transition","fontFamily","letterSpacing","zIndex","tableLayout","some","el","wordBreak","alternativePartindex","_this$props$appState$28","_this$props$appState$29","_this$props$appState$30","_this$props$appState$31","_this$props$appState$32","_this$props$appState$33","_alternativePart$supp","Radio","placement","textOverflow","quantityAdditionalInfo","supplierName","additionalInfo","partList","amount","onOrderChange","getMuiTheme","MuiTableCell","paddingCheckbox","MUIDataTableSelectCell","expandDisabled","visibility","interogateAll","cp","renderInterogateAllSection","renderOrderPartsSection","rowClassName","rowIndex","expandableRowsHeader","expandableRows","isRowExpandable","expandedRow","renderExpandableRow","MuiThemeProvider","theme","checkIfOrderPartsChangedDuringOrderPlacement","orderDatePlacement","validityTimeOkay","product","_this$props$caseSetti8","_this$props$caseSetti9","_this$props$caseSetti10","_this$props$orderDeta33","_this$props$orderDeta34","changedOrderedProducts","changedOrderedProduct","_this$props$orderDeta35","cloneDeep","newVal","orderedPart","UpdateOrderPart","newOrder","UpdateOrderAmounts","orderId","updateSupplierOrder","_this$props$caseSetti11","_this$props$caseSetti12","_this$props$caseSetti13","_this$props$orderDeta36","_this$props$orderDeta37","_statusHistory$create","_statusHistory$create2","orderedPartsChanged","_this$state$firstCase","_this$state$firstCase2","updateOrderInfoRequest","calculationId","caseCalculationHistoryId","UpdateOrderInfo","_orderPart$alternativ3","AddNonStockPart","oeCode","guideNumberBackup","oeSupplierCode","nextOrderStatus","request","statusId","comment","partsOrganizationId","ChangeOrderStatus","statusHistory","_x$orderStatus","notificationRequest","orderComment","template","VERIFIED_BY_SUPPLIER","SendVerifiedBySupplierOrderNotification","orderStatusId","unshift","nonInterogatedParts","join","validateError","errorString","decimalError","_item$packing","_item$packing2","filtercalculationParts","orderPartObject","sumBy","updateOrderAfterInterogation","_this$props$caseSetti14","_this$props$caseSetti15","_this$props$caseSetti16","_this$props$orderDeta38","_this$props$orderDeta39","_this$state$firstCase3","_this$state$firstCase4","GetOrder","_this$props$orderDeta40","_this$props$orderDeta41","_this$props$orderDeta42","_this$props$orderDeta43","interogatePartner","_this$props$caseSetti17","_this$props$caseSetti18","_this$props$caseSetti19","_this$props$orderDeta44","_this$props$orderDeta45","_this$props$appState$34","_this$props$orderDeta46","_this$props$orderDeta47","_this$props$orderDeta48","_this$props$orderDeta49","_this$props$orderDeta50","_this$props$orderDeta51","orderedPartStatus","supplierOrderNumber","_this$props$caseSetti20","_this$props$caseSetti21","_this$props$caseSetti22","_this$props$orderDeta52","_this$props$orderDeta53","_this$props$appState$35","proceedOrderStatus","SendConfirmedOrderNotification","automatePlaceOrderChange","handleAutocompleteOrderStatusChange","handleOrderPartsStatusChange","ChangeOrderPartStatus","newArray","handleUploadAttachment","attachmentTypeId","attachmentType","files","fileName","uploadDate","carPhotos","originalFileName","caseRequestId","paymentId","serviceAppointmentId","caseClientId","isSelection","handleDeleteAttachment","renderAttachmentBox","attach","downloadFile","justify","htmlFor","selectedPartIndex","groupedParts","DeleteOrderPart","renderChangeOrderStatusForm","multiline","rows","origFileName","fileBlob","GetCaseAttachment","FileSaver","saveAs","showOrdeStatusTimelineHistory","_this$props$appState$36","_this$props$appState$37","_this$props$appState$38","_this$props$appState$39","_this$props$appState$40","_this$props$appState$41","_this$props$appState$42","_this$props$appState$43","_this$props$appState$44","disableBackdropClick","textAlign","SearchOrder","orderList","isDialogOpen","selectedOrder","loadOrders","orders","GetOrders","orgIds","uniq","assignedToList","uniqueAssignedToList","a","b","orgEntities","od","onOrderClick","GetOrderParts","renderOrders","HeaderSearch","searchRef","useRef","triggerChange","setSearchId","setOpenSearchPopover","openSearchPopover","setSearchValue","timer","setTimer","SearchIcon","InputBase","placeholder","input","clearTimeout","onKeyDown","inputMode","Popper","current","ClickAwayListener","onClickAway","Paper","enable","AppBar","isCollapsedLayout","HeaderLogo","lgUp","mdDown","toggleSidebar","MenuRoundedIcon","MenuOpenRoundedIcon","HeaderDots","HeaderUserbox","toggleSidebarMobile","square","DashboardTwoToneIcon","titleHeading","titleDescription","actionButton","backButtonName","_props$history","backButtonHref","onClickBack","WrapperSimple","Component","sectionHeading","Header","Sidebar","UserProfile","openModal","handleClickOpenModal","handleClickCloseModal","resetPassword","managerFullName","userRole","DialogContentText","autoFocus","OrganizationBankAccounts","bankAccounts","currencyList","GetOrganizationBankAccounts","lookup","acc","cur","cellStyle","initialEditValue","deleteTooltip","deleteText","UpdateOrganizationBankAccount","onRowDelete","RemoveOrganizationBankAccount","AddOrganizationBankAccount","mt","pt","OrganizationLogo","img","Image","URL","createObjectURL","saveImage","AddLogo","GetLogo","renderLogo","DropzoneArea","dropzoneClass","dropzoneText","showPreviews","showPreviewsInDropzone","filesLimit","previewText","showAlerts","acceptedFiles","OrganizationTokens","tokens","supplierList","OrganizationToken","GetHOOrganizationsByTypes","Select","MenuItem","EditOrganization","organizationLevelType","region","parent","newFeature","uploadFeature","mondayToFridayOpen","mondayToFridayClose","mondayToThursdayOpen","mondayToThursdayClose","fridayOpen","fridayClose","saturdayOpen","saturdayClose","cityInfo","bufferValue","categoryPart","organizationLevelTypes","parentOrganizations","organizationTypes","cityList","isMondayToFridayOpenValid","countryBuffers","handleValueChange","handleOrganizationLevelTypeChange","orgs","organizationLevelTypeId","parentId","handleOrganizationTypeChange","organizationTypeId","countryBuffer","regionId","cityId","handleCityInfoChange","handleCategoryPartChange","saveOrganization","AddOrganization","UpdateOrganization","organizationChanged","handleInputChange","fieldName","hourValue","NumberFormatCustom","inputRef","NumberFormat","getInputRef","onValueChange","allowNegative","thousandSeparator","decimalScale","isValidTime","hasRole","roleCode","onTabChange","orgLevelList","orgTypes","GetOrganizationLevels","GetCountryBuffers","addValidationRule","getRegionsOptions","getCitiesOptions","city","labelPlacement","showOrderDetails","changeCaseStatusBasedCalculation","bulkNotification","isMavoPartener","isCarfixPartener","hasAppointmentWorkflow","hasRepairWorkflow","hasMentainanceWorkflow","includeToMvo","showCaseStatus","hideOrganizationOwnerWorkflows","hidePartnerTab","showMakeModelSearch","hideLkqColumns","hideOrderCurrencyColumn","fullName","companyNumber","registryNumber","postalCode","contactPerson","phone","dealerId","latitude","longitude","inputComponent","localeCompare","paddingBottom","paddingTop","helperText","OrganizationEntities","isOpenDialog","selectedOrganizationId","loadOrganizations","editOrganization","newOrganizations","updatedOrgIndex","OrganizationHierarchy","organizationLevels","selectedOrganizationLevelType","loadOrganizationLevels","orgLevelTypes","filterLevels","filterLevelTypes","orglevels","levelTypes","deleteOrgLevel","RemoveOrganizationLevel","moveUp","cloneArray","itemToMoveUpIndex","itemToMoveDownIndex","UpdateOrganizationLevel","moveDown","itemToMoveIndex","itemToMoveToIndex","sortOrder","KeyboardArrowUpIcon","KeyboardArrowDownIcon","addOrgLevel","AddOrganizationLevel","OrganizationDetailsTab","OrganizationUsers","hoOrganization","ids","renderTree","nodes","u","childOrganizations","TreeItem","nodeId","isArray","node","TreeView","defaultCollapseIcon","ExpandMoreIcon","defaultExpanded","defaultExpandIcon","ChevronRightIcon","OrganizationInterfaces","interfaces","GetOrganizationInterfaces","clientAccess","supportsOAuth2","aftSupplier","refreshTokenValidUntil","isAfter","Chip","customerId","secondUser","token","UpdateOrganizationInterface","RemoveOrganizationInterface","AddOrganizationInterface","OrganizationParameters","parameters","parameterTypeList","parameterList","GetOrganizationParameters","isDate","toDateString","UpdateOrganizationParameter","RemoveOrganizationParameter","AddOrganizationParameter","OrganizationCaseTypeTab","organizationCases","organizationCaseTypes","selectedOrganizationCaseType","loadOrganizationCases","orgCaseList","orgCaseTypes","GetOrganizationCaseType","caseTypeId","deleteOrgCase","RemoveOrganizationCaseType","UpdateOrganizationCaseType","addOrgCase","AddOrganizationCaseType","OrganizationCaseTypeStepTab","organizationCaseTypeSteps","organizationCaseStepTypes","selectedOrganizationCaseStepType","loadOrganizationSteps","refCaseType","refSteps","orgStepList","orgStepTypes","GetOrganizationCaseTypeStep","orgCaseList1","reloadOrganizationSteps","RemoveOrganizationCaseTypeStep","UpdateOrganizationCaseTypeStep","addOrgStep","AddOrganizationCaseTypeStep","stepId","organizationCaseTypeId","handleAutocompleteCaseChange","handleAutocompleteStepChange","EditOrganizationFormDesign","organizationForm","loadOrganizationFormDesign","organizationFormId","GetOrganizationCaseTypeStepForm","handleEditorDidMountJsonSchema","ev","orgFormDesign","BAD_WORD","WORNING_MESSAGE","json1","handleEditorDidMountUISchema","json2","getSchema","json","JSON","parse","getUISchema","save","UpdateOrganizationCaseTypeStepForm","ControlledEditor","selectOnLineNumber","lineNumbersMinChars","glyphMargin","minimap","enabled","JSONSchemaForm","schema","uiSchema","showErrorList","liveValidate","EditOrganizationForm","handleFormNameChange","newFormTransList","compare","bandA","bandB","comparison","renderNameTextFields","nameTextFieldsList","saveOrganizationForm","organizationFormChanged","formTranslations","trans","OrganizationCaseTypeStepFormTab","organizationCaseTypeStepForms","organizationCaseStepFormTypes","selectedOrganizationCaseTypeStep","selectedOrganizationCaseStepFormType","loadOrganizationForms","filterCaseTypeStepForms","GetOrganizationForms","reloadOrganizationForms","caseTypeStepId","orgCaseTypeStepFormList","GetOrganizationCaseTypeStepForms","RemoveOrganizationCaseTypeStepForm","close","addOrgForm","AddOrganizationCaseTypeStepForm","organizationCaseTypeStepId","formId","handleAutocompleteFormChange","orgCaseTypeStepList","organizationStep","OrganizationNewCaseType","LocalizedUtils","EditTarifLaborTabf","momutil","defaultBrand","defaultInsurer","tariffValues","isVehicleAge","activeAction","selectedTariffTypes","selectedBrands","tariffTypeList","brandList","insurerList","selectedInsurer","selectedSliderValues","selectedValues","selectedOfferValues","selectedValue","selectedOfferValue","selectedMarginValue","selectedMarginValues","compareName","nameA","nameB","brandRef","insurerRef","tariffGroupTypeId","GetTariffValues","tariffId","brandList1","insurerList1","handleTariffTypeChange","saveTariffValues","tariffValuesToSave","selectedDate","tariffType","insurer","brandId","tariffTypeId","offerValue","marginValue","startVehicleYear","endVehicleYear","insurerId","activeButton","dataLaborServices","structureTariffValuesAccordingToDate","itemsToBeUpdated","dataItem","saveItem","isMatchingItem","UpdateTariffValues","item1","item2","handleDateChange","handleBrandChange","allIndex","handleInsurerChange","isNumericString","handleOfferValueChange","handleMarginValueChange","handleValuesChange","newValues","handleOfferValuesChange","handleMarginValuesChange","newvalue","getMarks","removeSliderValue","tValues","tOfferValues","tMarginValues","pop","addSliderValue","renderEditTariffValues","tariffGroupTypeCode","ADAOS","multiple","filterSelectedOptions","tariffGroupTypeName","ADAOS_ASIGURATOR","ADAOS_ALT_PART","DISC","Slider","valueLabelDisplay","max","marks","track","RemoveIcon","getValidators","getErrorMessages","MAN","renderTariffValues","renderVehicleAge","tv","getDistinctTariffTypes","tt","arr","getDistinctInsurer","dateLS","groupBy","items","deleteTariff","dateLocal","DeleteTariffValues","showTimelineTariff","dateTariff","DeleteCircleTwoToneIcon","editInsertTarifLaborButton","_tariff$owner","_tariff$owner$country","_tariff$owner$country2","tariff","isManType","isCzechRepublic","owner","_tariff$owner2","_tariff$owner2$countr","_tariff$owner2$countr2","_tariff$owner3","messages","EditCircleTwoToneIcon","EditTariff","tariffCategoryId","tariffPartners","partnersTariff","tariffTypeGroupList","hoOrganizations","isUsed","handleNameGUIChange","handlePartnerTariffChange","partnerId","handleOtherPartnerTariffChange","saveTariff","AddTariff","UpdateTariff","tariffChanged","tariffList","GetTariffs","ownerId","filterList","createTabTariffGroupType","dataToRender","createTabPanelTariffGroupType","_code","EditTariffLaborTab","tariffCategoryRef","tariffGroupTypeRef","tariffCategoryList","tariffGroupTypeList","workflowsCount","GetOrganizationsForTariffPartners","GetTariffPartners","GetHOOrganizations","GetTariffWorkflowsCount","GetTariff","orgParameters","_item$code","tp","Tariffs","tariffs","selectedTariffId","newTariffs","editTariff","updatedTariffIndex","Workflows","workflows","newWorkflow","workflowParameters","workflowSteps","workflowPartners","workflowTariffs","workflowSuppliers","isPrcIntegration","isMvoIntegration","isCarfixIntegration","isDgpciIntegration","caseTypeList","hoList","GetWorkflows","ho","workflowCaseType","newWorkflows","workflowTranslations","activeLanguage","workflowParametersData","parameterId","updatedWorkflowIndex","UpdateWorkflow","handleIsPrcIntegrationChange","handleIsMvoIntegrationChange","handleIsCarfixIntegrationChange","handleIsDgpciIntegrationChange","handleUseRoundUpChange","useRoundUp","handleAutomatePlaceOrderChange","handleAutomateGenerateOrderChange","automateGenerateOrder","handleB2BIntegrationChange","b2BIntegration","handleOrderConfirmationToServiceChange","orderConfirmationToService","handleChangeCaseStatusBasedCalculationChange","handleChangeSaveDocumentsChange","saveDocuments","handleIsEvaluationWorklfowChange","isEvaluationWorkflow","handleHideRenewAdvertChange","hideRenewAdvert","handleHideCommentsChange","hideComments","handleHasNonStockValidationChange","hasNonStockValidation","handleVQInterogation","vqInterogationValue","saveWorkflow","workflowExist","indexFinded","AddWorkflow","onBlur","handleWorkflowNameChange","newWorkflowTransList","handleWorkflowCaseTypeChange","OrganizationFilters","organizationFilters","organizationFilterTypes","selectedOrganizationFilterType","loadOrganizationFilters","orgFilterList","filterTypes","GetOrganizationFilters","filterTypeId","deleteOrgFilter","RemoveOrganizationFilter","addOrgFilter","AddOrganizationFilter","OrganizationJobTypes","organizationJobTypes","jobTypes","selectedJobType","loadOrganizationJobTypes","organizationJobTypesList","GetOrganizationJobTypes","ojt","jobType","jobTypeId","deleteOrgJobType","RemoveOrganizationJobType","addOrganizationJobType","itemm","AddOrganizationJobType","handleOrganizationJobTypeChange","OrganizationMaintenancePackages","organizationMaintenancePackages","maintenancePackages","selectedMaintenancePackage","loadOrganizationMaintenancePackages","organizationMaintenancePackagesList","GetOrganizationMaintenancePackages","maintenancePackage","maintenancePackageId","deleteOrgMaintenancePackage","RemoveOrganizationMaintenancePackage","addOrganizationMaintenancePackage","AddOrganizationMaintenancePackage","handleOrganizationMaintenancePackageChange","OrganizationOilViscosities","newOrganizationOilViscosity","oilViscosityId","organizationOilViscosityList","selectedFilter","oilViscosityList","newOrganizationOilViscosityId","loadOrganizationOilViscosityList","organizationOilViscositiesList","oilViscosities","GetOrganizationOilViscosities","handleOilViscosityChange","oilViscosity","handlePriceChange","saveOrganizationOilViscosity","AddOrganizationOilViscosity","UpdateOrganizationOilViscosity","customSort","newOrganizationOilViscosityPopup","EditOutlinedIcon","deleteOrganizationOilViscosity","RemoveOrganizationOilViscosity","organizationOilViscosityId","OrganizationInvoiceRanges","newOrganizationInvoiceRange","invoiceRangeTypeId","invoiceRangeType","firstSeries","startingNumber","currentNumber","endingNumber","lastSeries","invoiceRangeStatusId","invoiceRangeStatus","organizationInvoiceRanges","invoiceRangeTypes","invoiceRangeStatuses","newOrganizationInvoiceRangeId","loadOrganizationInvoiceRanges","organizationInvoiceRangesList","GetOrganizationInvoiceRanges","FACTURA_SERVICE","handleOrganizationInvoiceRangeTypeChange","handleOrganizationInvoiceRangeStatusChange","saveOrganizationInvoiceRange","AddOrganizationInvoiceRange","UpdateOrganizationInvoiceRange","isNumber","newOrganizationInvoiceRatePopup","deleteOrganizationInvoiceRate","RemoveOrganizationInvoiceRange","organizationInvoiceRangeId","OrganizationAdmin","orgId","onButtonClick","PageTitle","borderColor","borderBottom","bgcolor","OrganizationTariffs","HOOrganizations","neworg","newHOOrg","filterOrganizations","filterChange","hoType","newOrg","renderFilters","GtXML","calculations","renderCalculations","calc","downloadXml","GetCaseCalculationXML","renderForms","loadCalculations","GetAdminCaseCalculationHistories","calculationType","FormCode","SectionCode","FormButton","GetButtons","scopeWorkflows","selectedWorkflow","createCase","newCase","selectedCase","ChangeCaseWorkflow","selectedVehicle","CreateCase","selectedNotice","selectedClient","response","renderWorkflowList","selectedItem","w","xl","renderWorkflows","hideWorkflow","GetByCompanyNumber","SearchVehicleForm","_this","isLoadingData","vehicleDtoList","modalOpen","modalMessage","modalYesNoButtons","modalData","_this$state$formData$","_this$state$formData$2","_this$state$formData$3","_this$state$formData$4","SearchVehicle","searchInVehicleStock","onRowlick","_currentVehicle$lastC","_currentVehicle$lastC2","_currentVehicle$lastC3","currentVehicle","v","handleModalConfirmation","handleOpenModal","message","lastCase","caseTypeCode","CLAIM","createdByUserName","message1","AQUISITION","DoubleArrowTwoTone","handleCloseModal","onVehicleSelected","class","renderModal","Modal","MUIDataTableBodyCell","stackedCommon","cellHide","MuiTableRow","handleRowClick","renderResults","renderSelectedForm","jsonSchema","jsonGUI","organizationCaseTypeStepForm","TranslateSchema","Form","transformErrors","TranslateErrors","form","SearchClientForm","clientDtoList","personTypes","displayNextActionBtn","refpersonType","personTypeList","cnpCui","personTypeId","CNP","clients","SearchClient","clientName","onClientSelected","updateValue","companyName","handleArraySchema","properties","anyOf","enum","organizationSteps","activeStep","organizationForms","selectedTabForm","selectedOrganizationForm","noticeList","claimReviewList","modelData","selectedModelData","caseStatuses","hideSaleNewWorkflow","loadCaseTypesStepsForms","refCaseStatus","GetUserOrganizationCaseType","GetUserWorkflows","GetOrganizationInfo","owners","GetUserOrganizationCaseTypeStep","GetUserOrganizationCaseTypeStepForms","loadOrganizationcaseTypeStepForms","renderCaseTypes","tabs","forms","noticeNumber","SearchNotice","cbCaseNumber","caseList","SearchByCaseNumber","tabPanels","renderStaticForm","renderJsonForm","_this$state$organizat","_this$state$organizat2","renderFormResults","submitSelectedModelData","_this$state$organizat3","_this$state$organizat4","SALE","makeDescription","modelDescription","handleAutocompleteModelDataChange","renderAddModelForm","vinDecoder","_this$state$organizat5","_this$state$organizat6","isSaleCase","latestCaseVehicleHistory","DecodeVin","GetLatestCaseVehicleHistory","GetVehicleFromVQRepo","errorInfo","THE_VIN_NUMBER_SENT_DOES_NOT_DECODE_ANY_MODEL","responseInfo","vehicleInfoDec","modelList","_this$state$organizat7","_this$state$organizat8","omit","loadOrganizationcaseTypeStepFormsAndVehicleInfo","renderSteps","_organizationCaseType","_organizationCaseType2","_organizationCaseType3","DOS_NOU","Step","StepButton","handleStep","StepLabel","handleChangeTabForm","renderNoticeResults","getNoticeColumns","renderClaimReviewResults","getClaimReviewColumns","onNoticeClick","notice","_casee$caseStatus","_casee$caseStatus2","_casee$caseStatus2$ca","renderStepper","Stepper","nonLinear","connector","StepConnector","renderTabForms","TabIndicatorProps","centered","renderCaseTypeTabPanel","mb","pb","WorkflowGeneralData","GetWorkflow","WorkflowParameters","GetWorkflowParameters","param","par","UpdateWorkflowParameter","RemoveWorkflowParameter","AddWorkflowParameter","WorkflowOrganizationTypes","workflowOrganizationTypes","selectedOrganizationType","loadWorkflowOrganizationTypes","workflowOrgTypes","GetWorkflowOrganizationTypes","deleteWorkflowOrgType","RemoveWorkflowOrganizationType","addWorkflowOrgType","AddWorkflowOrganizationType","WorkflowPartners","workflowOwnerList","workflowPartnerList","selectedWorkflowPartner","loadWorkflowPartners","workflowPartnersList","GetWorkflowPartners","workflowOwner","wp","partners","updatedWorkflowPartnerIndex","UpdateWorkflowPartner","handleIsOwnerTariffChange","isOwnerTariff","handleHideWorkflowChange","viewWorkflow","addWorkflowPartner","AddWorkflowPartner","handleWorkflowPartnerChange","WorkflowTariffs","selectedTariff","loadWorkflowTariffs","GetWorkflowTariffs","orgPartners","GetOrganizationsByIds","wpItem","wt","t","reloadWorkflowTariffs","workflowPartnerId","updatedWorkflowTariffIndex","UpdateWorkflowTariff","addTariff","AddWorkflowTariff","handleWorkflowTariffChange","createFilterOptions","matchFrom","stringify","WorkflowCaseStructureSectionTab","workflowSectionTypes","selectedWorkflowSectionType","workflowSectionId","loadWorkflowSections","workflowSectionList","sections","GetWorkflowSections","UpdateWorkflowSection","updatedWorkflowSectionIndex","AddWorkflowSection","sectionId","deleteWorkflowSection","RemoveWorkflowSection","WorkflowStepStatuses","workflowSectionStepCaseStatusList","caseStatusTypeList","selectedCaseStatusType","workflowSectionStepList","selectedUserRole","loadWorkflowSectionStepStatuses","workflowSectionStepStatusList","caseStatusTypes","GetWorkflowSectionStepCaseStatuses","workflowSectionStepId","deleteWorkflowSectionStepStatus","deletedStatus","newStatusesArray","RemoveWorkflowSectionStepCaseStatus","addStatus","AddWorkflowSectionStepCaseStatus","handleCaseStatusChange","EditWorkflowStep","workflowForm","workflowStepId","WorkflowCaseStructureStepsTab","workflowSectionStepTypes","selectedworkflowSectionType","selectedworkflowSectionStepType","isEditDialogOpen","modalFormTitle","loadWorkflowSectionSteps","sectionTypeId","GetWorkflowSectionSteps","reloadWorkflowSectionSteps","UpdateWorkflowSectionStep","updatedWorkflowSectionStepIndex","stepName","AddWorkflowSectionStep","handleAutocompleteSectionChange","deleteWorkflowSectionStep","RemoveWorkflowStep","showForm","scroll","workflowStepChanged","EditWorkflowFormReport","workflowReports","reportList","selectedOrganization","selectedReport","loadOrganizationFormReports","refReport","workflowFormReports","GetWorkflowFormReports","workflowFormId","wfrItem","wc","workflowPartner","deleteOrgFormReport","RemoveWorkflowFormReport","UpdateWorkflowFormReport","_value$partner","addOrgFormReport","userRoleId","reportId","AddWorkflowFormReport","workflowSectionStepFormId","handleAutocompleteStatusChange","handleUserRoleChange","handleAutocompleteOrganizationChange","handleAutocompleteReportChange","EditWorkflowFormDesign","GetWorkflowSectionStepForm","UpdateWorkflowSectionStepForm","WorkflowFormActionTransStatus","transitionStatus","statusTypeList","tranStatusActionType","refActionTypes","actionTypes","GetWorkflowSectionStepFormActions","activeWf","wf","currentWorkflowId","fromCs","itemCS","fromStatusId","toCs","toStatusId","toWf","toWorkflowId","fromStatus","toStatus","toWorkflow","actionTypeId","required","_rowData$toWorkflow","_this$state$workflows","RemoveWorkflowSectionStepFormAction","AddWorkflowSectionStepFormAction","EditOrganizationFormActionCaseAllocation","actionAllocationCase","isLastUser","workflowPartnerType","partnerList","selectedPartner","workFlowPartnerTypes","caseStatusList","disabledControls","proprietaryWorkflow","refOrgType","refRoles","workflowPartnerTypes","currentWorkFlow","allocationCase","currentUserWorkflowPartner","wpTypeItem","workflowPartnerTypeId","ur","sendEmailSameOrganization","sendEmailProprietaryOrganization","addOrgFormActionAllocationCase","UpdateWorkflowSectionStepAction","handleCheckBoxIsLastUserChange","handleCheckBoxSameOrganization","_currenctUserWorkflow","currenctUserWorkflowPartner","handleCheckBoxProprietaryOrganization","_currenctUserWorkflow2","_this$state$proprieta","handleAutocompleteOrgChange","handleAutocompleteRoleChange","handleAutocompleteOrgTypeChange","handleAutocompleteCaseStatusChange","handleAutocompleteUserChange","userHoId","userOrganizationId","Checkbox","EditWorkflowFormActionSendEmail","sendEmailList","emailTemplate","emailTemplates","stateList","sendEmailActionList","sendEmailToList","selectedState","selectedSendEmailAction","selectedSendEmailTo","selectedTemplate","actionType","actionId","loadOrganizationFormActionsSendEmail","caseStateRef","recipientTypeRef","actionTypeRef","recipientTypeList","emailTemplateList","actionTypeList","data1","element","sendMailStatusId","sendMailStatus","addOrgFormActionSendEmail","emailRecipientTypeId","sendMailActionTypeId","orgFormActionSendEmail","contor","actionList","sendMailActionType","emailRecipientType","reuseEmailTemplate","AddWorkflowSectionStepFormActions","handleStateChange","handleSendEmailActionChange","handleSendEmailToChange","handleEmailChange","EditOrganizationFormAction","EditWorkflowFormActionTransStatus","EditOrganizationFormActionSendEmail","WorkflowFormInterfaces","GetWorkflowFormInterfaces","UpdateWorkflowFormInterface","RemoveWorkflowFormInterface","AddWorkflowFormInterface","WorkflowOptimizations","workflowOptimization","optimizationTypeList","selectedOptimizationType","workflowPartnerTypeList","selecteWorkflowPartnerType","loadWorkflowOptimization","refStatus","optimizationTypes","workflowOptimizationTypes","GetWorkflowOptimizations","wo","deleteWorkflowOptimization","RemoveWorkflowOptimization","addWorkflowOptimization","optimizationTypeId","AddWorkflowOptimization","handleOptimizationTypeChange","WorkflowDocumentTypes","workflowDocumentTypes","documentTypeList","booleanList","GetWorkflowDocumentTypes","wdt","dt","documentTypeId","documentType","lookupDocumentTypes","displayNAme","lookupBoolean","sorting","isMandatory","isBoolean","isMultiple","isSelectionGroup","UpdateWorkflowDocumentType","RemoveWorkflowDocumentType","AddWorkflowDocumentType","WorkflowCalculations","workflowCalculations","isSelectedWorkflowCalculation","newWorkflowCalculation","loadWorkflowCalculations","GetWorkflowCalculations","wcItem","reloadWorkflowCalculation","updatedWorkflowCalculationIndex","UpdateWorkflowCalculation","workflowCalculationId","filterCaseStatus","deleteCalculation","deletedCalculation","newWorkflowCalculationsArray","RemoveWorkflowCalculation","addWorkflowCalcType","AddWorkflowCalculation","saveCalculationsChange","_this$state$newWorkfl","_this$state$newWorkfl2","md","originalCalculation","vinInterogation","hideEconomicParts","alternativeCalculation","gtValuation","qualityControlCertificate","radar","insurerCalculation","hasMultipleTariff","hasBackButton","editGuideNumber","editQuantity","addOriginalPart","addAlternativePart","deleteOriginalPart","importOriginalParts","importAlternativeParts","selectAlternativePart","tmlEditable","Input","defaultMaxDeliveryTime","alternativeCalculationWithoutOriginal","alternativePartner","alternativeNetPrice","viewOptim","viewPrcNewColumns","serviceOwnStock","oilMapping","allPartsHasBeenInterogated","viewClientCommentsHistory","byAquisitionPrice","hasHistoryInterogation","hasAlternativePartDescription","addNotifySupportOriginalPart","addCarParts","deleteCarParts","editCarParts","addLabor","deleteLabor","editLabor","addPaintingMaterials","deletePaintingMaterials","editPaintingMaterials","addPaintingLabor","deletePaintingLabor","editPaintingLabor","importParts","ownerSolutionView","ownerSolution","WorkflowPermissions","workflowPermissions","selecteWorkflowSectionStepType","loadWorkflowPermissions","GetWorkflowPermissions","createWorkflowPartner","updatedWorkflowPermissionIndex","UpdateWorkflowPermission","deletePermission","deletedPermission","newWorkflowPermissionsArray","RemoveWorkflowPermission","addWorkflowPermissionType","AddWorkflowPermission","read","execute","write","EditWorkflowForm","appointmentCategoryTypes","saveWorkflowForm","workflowFormChanged","handleAppointmentCategoryTypeChange","appointmentCategoryTypeId","firstButtonLabel","hideFirstButton","secondButtonLabel","hideSecondButton","_this$state$workflowF","hasDesign","hasPermissions","hasActions","hasCalculations","hasReports","hasOptimizations","hasDocumentTypes","hasInterfaces","EditWorkflowFormAction","workflowSectionStep","workflowSection","EditWorkflowFormInterfaces","WorkflowCaseStructureFormsTab","workflowSectionStepForms","workflowSectionStepFormTypes","selectedWorkflowSectionStepType","selectedWorkflowSectionStepFormType","formCode","isDialogDeleteOpen","deleteFormId","loadWorkflowForms","filterSectionStepForms","GetWorkflowForms","reloadWorkflowForms","sectionStepId","workflowSectionStepFormList","GetWorkflowSectionStepForms","formName","updatedWorkflowSectionStepFormIndex","_this$state$workflowS","_this$state$workflowS2","_this$state$workflowS3","wfSectionForm","AddWorkflowSectionStepForm","formTypeId","closeDeleteDialog","deleteWorkflowSectionStepForm","RemoveWorkflowForm","workflowStep","workflowFormCode","WorkflowCaseStructure","WorkflowSuppliers","newWorkflowSupplier","workflowSupplierTypes","workflowSupplierInterfaceTypes","selectedWorkflowSupplierType","selectedWorkflowSupplierInterfaceType","urlInterface","password","port","workflowSupplierId","supplierApiType","supplierApiTypes","loadWorkflowSuppliers","ws","GetWorkflowSuppliers","interfacePromises","supplierIds","organizationInterfaces","suppInterface","supplierInterfaceId","supplierInterface","updatedWorkflowSupplierIndex","UpdateWorkflowSupplier","reloadWorkflowSuppliers","supplierApiTypeId","AddWorkflowSuppliers","handleAutocompleteInterfaceChange","url","handleAutocompleteSupplierChange","orgInterfaceTypes","handleDiscountChange","handlePortChange","suffix","IntFormatCustom","deleteWorkflowSupplier","RemoveWorkflowSupplier","WorkflowReminders","workflowReminders","emailList","emailToList","reminderId","caseStatusRef","GetWorkflowReminders","alertItem","lookupOrganization","lookupCaseStatus","lookupEmail","lookupEmailTo","filtering","caseStatusIdList","numberOfHours","workflowAlert","UpdateWorkflowReminder","AddWorkflowReminder","RemoveWorkflowReminder","WorkflowInterfaces","loadWorkflowInterfaces","GetWorkflowInterfaces","UpdateWorkflowInterface","RemoveWorkflowInterface","AddWorkflowInterface","WorkflowCostCenters","workflowCostCenters","costCenters","selectedCostCenter","loadWorkflowCostCenters","workflowCostCenterList","GetWorkflowCostCenters","deleteWorkflowCostCenter","RemoveWorkflowCostCenter","addWorkflowCostCenter","AddWorkflowCostCenter","handleWorkflowCostCenterChange","WorkflowSuppliers2","Loader","Cases","organizationEntities","selectedOrgEntities","workflowsList","userWorkflowsList","selectedWorkflows","organizationCasePartnerList","selectedOrgFilter","selectedOrgCasePartner","selectedCaseStatus","caseTypesList","selectedCaseType","assignedToUserList","createdByUserList","selectedAssignedToUser","selectedCreatedByUser","casePolicyTypesList","selectedPolicyType","isLoadingCases","count","pageSize","filterStartDate","filterEndDate","showCopyCase","isLoadingDialog","isOrderDialogOpen","vinSearchText","plateNumberSearchText","caseNumberSearchText","isInternal","filters","createdByList","caseTypeIds","partnerIds","statusIds","workflowIds","organizationIds","policyTypeIds","datefilterEndDate","materializeCaseObject","workflowDisplayName","reloadFilters","GetCaseFilters","workflowList","orgCasePartnerList","caseTypes","onOrderRowClick","getOrderColumns","onSupplierOrderNumberRowClick","onDelete","currentCase","onCopyCase","FileCopyOutlined","loadPieces","CopyCase","RemoveCase","GetOrdersWithParts","closeOrderDialog","orderChange","handleOrgEntitiesChange","handleWorkflowsChange","handleOrgCasePartnersChange","handleOrFilterChange","handlePolicyTypeChange","handleCaseTypeChange","handleAssignedToChange","handleCreatedByChange","handleVinChange","handlePlateNumberChange","handleCaseNumberChange","handleMakeChange","handleModelChange","handlefilterStartDateChange","reloadCases","handlefilterEndDateChange","InputLabelProps","disableToolbar","onCellClick","colData","cellMeta","colIndex","refpolicyType","policyTypes","caseDetailsList","serverSide","onTableChange","tableState","orderOptions","TariffProperties","caseTariffValues","caseTariffHistoryId","renderTariffGroupTypes","tariffGroupTypes","tariffGroupType","renderCaseTariffValues","caseTariffValuess","tariffTypeGroupId","CaseDetailsCaseTabSummaryForm","loadCaseSettingsSummaryForm","renderCaseDetails","renderPartners","renderParameters","CaseDetailsCaseTabHistoryForm","caseWorkflowHistory","caseParameterHistory","casePartenerHistory","caseTariffHistory","loadCaseWorkflowHistoryForm","orgTypeRef","GetCaseWorkflowHistory","GetCasePartnerHistory","GetCaseTariffHistory","caseWh","GetUserTariffs","partnerItem","paramItem","tariffItem","renderPartenersHistory","caseWorkflowId","renderParameterHistory","renderTariffHistory","showTimelineWorkflowHistory","FormHelpers","ParseAllocations","workflowFormActions","caseAllocation","GetUserInfo","_x$partner","HasRights","workflowFormPermissions","permission","VehicleDetailsHasRights","statusCode","GetCalculation","GetReports","CaseDetailsCaseTabModifyWorkflowForm","referencialService","selectedUser","isLoading2","isLoading3","isOrganizationsDisabled","isUsersDisabled","isUserHidden","loadCaseWorkflows","ststusList","GetUserWorkflowPartners","GetUserAppUsers","renderAssignementForm","changeWorkflow","handleUserChange","submitForm","caseSectionStepFormId","newStatus","SubmitForm","handleSelectWorkflow","setCaseAllocation","allocationResult","imageExtensions","CaseDetailsCaseTabDocumentsForm","reportsService","caseAttachments","attachmentTypeList","previewAttachFile","previewAttachFileExtension","isCameraDialogOpen","attachmentTypeClicked","showUploadMessage","isOpen","dialogVisible","selectedAttachment","wfTransitionStepAction","appointment","appointmentPaymentStatus","hideButton","loadCaseDocumentsForm","_appointmentPaymentSt2","_step$workflowStep$co","_step$workflowStep","refAppointmentCategoryType","workflowDocumentsTypes","GetAppointmentByType","wfDoc","paymentRequest","GetAppointmentPaymentStatus","GetCaseAppointmentAttachments","GetCaseAttachments","getWorkflowSectionStep","relevantAttachmentTypes","workflowDocumentType","_appointmentPaymentSt","generateReport","pre_appointment","photosProm","categ","photos","elem","_item$actionType","setCameraDetails","setAttachmentTypeList","reactImageSize","rejectTimeout","addEventListener","resizeImageFile","Resizer","imageFileResizer","uri","persist","unacceptedFileList","ext","SizeLimit","newFiles","AddCaseAttachment","handleUploadAttachmentFromCamera","handleCloseConfirmationDialog","handleOpenConfirmationDialog","openDeleteAttachmentPopUp","fileInputKey","RemoveCaseAttachment","now","handlePreviewAttachment","filename","extension","renderPreviewAttachment","FileViewer","fileType","filePath","renderPreviewImage","renderAttachments","workflowDocument","attachmentsToRender","VisibilityIcon","GetAppIcon","flexBasis","canUpload","attachemntType","generateInvoiceReport","generateInOutReport","_organization","reportParameters","GetInOutReport","appointmentId","includeInOtherTab","_organization2","_appointmentPaymentSt3","payment","COMPLETED","GetInvoiceReport","renderWorkflowAttashmentTypes","downloadBasedOnAttachmentType","DescriptionIcon","CardFooter","ButtonGroup","borderTopRightRadius","borderBottomRightRadius","PhotoCameraOutlinedIcon","downloadAll","GetCaseAttachmentsArchive","handleConfirmChanges","carfixAttachmentNotification","attachmentId","attachmentTypeCode","CarfixAttachmentNotification","attachment","closeCameraDialog","handleTakePhoto","dataUri","mime","bstr","atob","n","u8arr","Uint8Array","charCodeAt","random","hasIntegrationDocuments","_workflow","Camera","onTakePhoto","onTakePhotoAnimationDone","mirrored","CaseDetailsCaseTabCarPhotosForm","caseCarPhotos","imgType","currentImage","viewerIsOpen","isUploading","openLightbox","closeLightbox","clearOnUnmount","borderStyle","marginBottom","GridList","cellHeight","GridListTile","GridListTileBar","subtitle","actionIcon","ModalGateway","Carousel","currentIndex","source","CalculationParts","smallPartsPercent","ignoreAlternativePart","_sections","_ignoreAlternativePart","_smallPartPercentage","SmallPartPercentage","GetSmallPartsValue","GetAmountSalePartWithDiscount","GetPrice","GetDiscount","addition","additionInsurer","GetInsurerAddition","GetAmountPart","partsSectionId","calculationSectionId","GetAmountPieceTotal","GetAmountPartWithDiscount","TotalDiscount","GetTotalInsurerAddition","TotalWithoutVAT","totalParts","smallPartsValue","TotalVAT","Total","GetDiscountPercent","GetTotalPartsDiscount","CaseDetailsCaseTabCalculationDetails","appuserService","caseCalculationHistoryDetails","calculationSectionList","calculationParts","newCalculationPart","newCalculationPartId","currentSection","modified","workflowCalculation","solutionValues","deliveryAdress","loadCalculationDetails","refSolutionValue","maintenancePackageRef","currencyLIst","calculationSections","caseCalculationParts","GetCaseCalculationHistoryDetails","calculationHistoryId","GetCalculationSections","GetCaseCalculationParts","workflowSuppliersList","suppliers","getWorkflowForm","stepFormId","displayCalculationPartPrice","calculationPart","displayCalculationPartDiscount","calculationPartUnitOEPrice","calculationPartUnitSalePrice","_additionInsurer2","_additionInsurer","displayCalculationPartUnitSalePrice","displayCalculationPartTotalPrice","saleUnitPrice","calculationTotalPartsOEPrice","calculationTotalPartsAMPrice","amountPiecesWithDiscount","displayCalculationTotalPartsEconomy","originalTotal","alternativeTotal","displayCalculationPartPLPVProcent","salePrice","displayCalculationTotalPartsAMPriceBK","_additionInsurer4","_additionInsurer3","displayCalculationPartQuality","partQualityType","displayCalculationPartSupplier","handlePartInsurerAdditionChange","currentPartId","updatedCalculationParts","partDisabled","inputValue","numericValue","percentage","repairMethod","solutionValue","handleSolutionValueChange","solutionComment","handleSolutionCommentChange","deleteCalculationPart","calcPartList","amountPieces","amountLabor","amountPaintingMaterials","amountPaintingLabor","amountLaborWithDiscount","amountPaintingMaterialsWithDiscount","amountPaintingLaborWithDiscount","amountDiscount","additionInsurerParts","amountPiecesDiscount","calculationPartId","calculationSection","partQualityTypesFilter","qualityType","NumberFormatCustomDiscount","propName","calculationPartIndex","handleModifiedPropChanges","addCalculationPartForm","carPartCategoryId","handleAutocompletePartQualityChange","setAlternativePartQuality","carPartCategoryOriginal","handleImportOriginalParts","preventDefault","f","readedData","XLSX","wsname","SheetNames","Sheets","fullParsedContent","sheet_to_json","dataParse","defval","emptyRows","guideNumberImported","nameImported","originalPriceImported","qualityImported","unitsImported","supplierListFilter","supplierImported","readAsBinaryString","importedOriginalParts","deliveryTimeImported","discountImported","producerImported","remarksImported","rowHover","CloudDownloadTwoToneIcon","getPerson","insuredPersonType","insuredName","handleGeneralInsurerAdditionChange","renderCalculationGeneralData","offerNumber","handleOfferNumberChange","vinQuery","vehicleState","insurerName","renderCalculationPart","handleRemarksChange","solutionValueId","displayValueWithCurrency","renderCalculationTotal","amountAddition","UpdateCaseCalculationParts","organizationName","manipulationPercent","onSave","newCalcPartId","CaseDetailsAlternativeCalculationPieces","partSection","isAddOriginalPartDialogOpen","selectedAlternativePartValue","caseCalculationAlternativePart","newCaseCalculationAlternativePart","clearStateAlternativeParts","calculationPartFormTypeAdd","isDialogModifiedOpen","isConfirm","selectedOrganizationBranch","organizationBranches","currentWorkflowContainsOrderFormOrInterogatePartner","isDialogOpenConfirmationOrgPartner","isDialogOpenFunctionToBeCalled","orderPartList","calculationPartsOrdered","isDialogOpenOptimConfirmation","caseCalculationAlternativePartCopy","includeChild","carClassRentPrice","interogateParts","hasBillingForm","rentVehiclePrices","ownStockOrganization","packageCalculationParts","isNotifySupportDialogOpen","sendNotificationToSupportLoading","rowRefs","getInsurerId","loadPiecesDetails","_this$props$workflowC","_this$props$workflowC2","_order$orderParts","GetSupplierStockOrganization","packageCalculationId","carClassRentPrices","carClassId","GetCarClassRentPriceByClassId","FleetSearchVehicle","trimmedNumber","ceil","caseCalculationPartsCopy","_orderPart$deliveryTi","_orderPart$deliveryTi2","_orderPart$discount","isOrdered","currentWorkflowPartner","partnerOrganizations","organizationAddress","parentIds","GetOrganizationDescendents","deliveryOrganizationId","arrMap","roots","assignObjectPaths","_currentWorkflowPartn","selectedItemFromTree","findRecursive","checkPackageNotification","obj","stack","isDialogOpenOptimizeConfirmationHandler","validateOrginalParts","hasChildItem","optimizeAllParts","checkIfOptimIsPossible","getParentParts","parentParts","formatedDeliveryTime","excludedParentParts","childParts","optimize","_this$state$carClassR","_this$state$carClassR2","offerLines","quantity","offerParts","_part$availableQuanti","rowId","getBestOfferRequest","getPriceForInsurer","bestOfferResult","GetBestOffer","bestOfferLine","offerLine","bestOfferPart","scrollToSelectedItems","caseCalculationOriginalPartsCopy","reverse","calculationOriginalPart","altParts","_this$rowRefs$selecte","selectedAlternativePartId","_this$rowRefs$selecte2","scrollIntoView","behavior","block","calcPart","isDialogOpenConfirmationHandler","func","_this$state$selectedO","_this$state$selectedO2","GetOrganizationOilMapping","partCode","cupiCode","auxiliarInformation","_this$state$selectedO3","InterogateCaseCalculationsAlternativeParts","differentCaseCalculationAlternativePart","calculationsAlternativeParts","copyCalculationPart","closeAddOriginalPartDialog","notifySupportCalculationPart","closeNotifySupportDialog","sendNotificationToSupport","originalPart","supportComment","SendPartNotifySupport","addNewAlternativePart","originalPartIndex","handleUpdateAlternativeCalcAmount","handleAvailableQuantityChange","calculationAlternativeParts","addAlternativeCalculationPartForm","newPart","copyCalculationPartForm","_caseCalculationOrigi","_caseCalculationOrigi2","alternativePartNetPrice","nonStockSupplier","nonStockSuppliers","validateAlternativePartDescriptionAdd","validateAlternativePartDescriptionRemove","validateOriginalPartPriceAdd","borderValidate","validateOriginalPartPriceRemove","filterAlternativePartsByOptimization","optmizationType","filterAlternativePartsByDeliveryTime","filterAlternativePartsByPrice","filterAlternativePartsByQuality","altPart","_this$rowRefs$selecte3","_this$rowRefs$selecte4","prev","curr","bestQuality","handleTextChangeOriginalPart","trimLeft","handlePriceChangeOriginalPart","handleAutocompleteOriginalPartQualityChange","handleUnitsOriginalPart","handleSelectedWorkflowPartner","renderOrderedPartsTable","_this$state$selectedO4","_this$state$selectedO6","zeroPriceError","alternativePartDescriptionError","interogateList","calcPartObject","interogationList","calculationPartsList","editOriginalPrice","_this$props$workflowC3","_this$state$selectedO5","CreateCalculationHistory","calculationTypeId","manipulationTariff","calculationPartsToSave","getPackageFromCalculationParts","isOwnStock","caseStatusRequest","ChangeCaseStatus","newcalculationParts","loaders","handleImportAlternativeParts","originalParts","dataParseArr","originalPartsGuideNrs","originalPartGuideNumberImported","alternativePartGuideNumberImported","cls","importedAlternativeParts","availableQuantityImported","stockLocationImported","renderPartsButtons","minHeight","handleOriginalPartPriceChange","handleOriginalPartGuideNumberChange","handleAlternativePartDescriptionChange","handleOriginalPartQuantityChange","matchingParts","pkgPart","combinedMessage","renderCalculationPieces","FileCopyOutlinedIcon","NotificationImportantOutlinedIcon","createRef","closeModifiedDialog","onDropDownChange","currentNode","selectedNodes","newSelectionOrganizationBranch","oldSelectionOrganizationBranch","_selectedNodes$","newPartialSelectionOrganizationBranch","entry","_arr$entry$children","partialResult","resetOptimizatonType","_insurer$code$toLower","_insurer$code","insurerCode","hasOwnProperty","renderNotifySupportOriginalPartForm","CircularProgress","marginLeft","marginRight","renderAddOriginalPartForm","_this$state$selectedO7","_this$state$selectedO8","_this$state$selectedO9","DropdownTreeSelect","mode","texts","CaseDetailsAlternativeCalculationDetails","openMenuItem","totalAlternativeCalculation","totalAlternativeCalculationSmallParts","totalPartsAlternativeCalculation","setOptimizationType","workflowOptimizations","handleTml","_this$state$caseCalcu","renderSection1","optimizationType","originalCalculationPartsList","alternativeCalculationPartsList","CarCard","_option$extraData","_option$extraData2","_option$extraData3","_option$extraData4","_option$extraData5","_option$extraData6","_option$extraData7","_option$extraData8","_option$extraData9","_option$extraData10","_option$extraData11","_option$extraData12","_option$extraData13","_option$extraData14","_option$extraData15","_option$extraData16","_option$extraData17","_option$extraData18","_option$extraData19","extraData","gutterBottom","manufacturer","minPrice","maxPrice","CardMedia","imageUrl","ImageNotAvailable","generation","modelYear","doorsNo","CardActions","useStyles","instructions","renderAutocomplete","showNoDataMessage","onDateChange","isFromValuationModule","disableFuture","gap","ValuationFiltersWizardComponent","memo","steps","makeList","models","bodyTypesList","generationTypesList","fuelTypes","powerTypes","transmissionTypes","tractionTypes","onChangeFirstRegistrationDate","setShowNoDataMessage","_state$app","firstRegistrationDateLocal","setFirstRegistrationDate","orientation","labelProps","optional","_state$brand","_state$model","_state$body","_state$generation","_state$generation$ext","_state$generation2","_state$generation2$ex","_state$fuelType","_state$powerType","_state$transmissionTy","_state$tractionType","powerType","tractionType","getTextContent","getStepContent","initialVehicleInfo","brandTypes","modelTypes","bodyTypes","onWizardCallback","onFilterChanged","onShowCarList","setActiveStep","setVehicleInfo","filteredBodyTypes","setFilteredBodyTypes","generationTypes","setGenerationTypes","filteredModels","setFilteredModels","filteredFuelTypes","setFilteredFuelTypes","filteredPowerTypes","setFilteredPowerTypes","filteredVehicles","setFilteredVehicles","filteredTractionTypes","setFilteredTractionTypes","filteredTransmissionTypes","setFilteredTransmissionTypes","localMakeList","setLocalMakeList","localBodyTypes","setLocalBodyTypes","localModels","setLocalModels","localfuelTypes","setLocalfuelTypes","localTractionTypes","setLocalTractionTypes","localTransmissionTypes","setLocalTransmissionTypes","isFirstRender","loadMakeList","loadBodytypeList","loadModelList","loadFuelTypesList","localTractionTypesList","localTransmissionTypesList","d","prevActiveStep","checkIfIsValidDate","registrationTimestamp","getTime","fetchValuationModels","valuationModels","GetValuationModels","newModels","stateModel","valuationModel","_state$brand2","valModel","fetchValuationBodies","_state$brand3","valuationBodies","GetValuationBodies","newBodyTypes","stateBody","valuationBody","_stateBody$translatio","enBodyTranslation","_bodyType$translation","valBody","fetchValuationGeneration","_state$body$translati","_state$body2","_state$body2$extraDat","_state$brand4","_state$model2","_state$body3","_state$body3$extraDat","generationValuation","GetValuationGenerations","newGenerationType","generationBody","_stateBody$translatio2","enTranslation","generationType","_generationType$trans","valGen","updatedGenerationType","_state$body4","_state$body4$translat","_state$brand5","_state$model3","resultVehicles","newFuelTypes","stateFuelType","_stateFuelType$transl","enFuelTranslation","onWizardCallbackWrapper","filterVehicles","vehiclesResult","_state$fuelType$trans","kw","transmission","drivenWheels","newPowerTypes","newTransmissionTypes","newTractionTypes","useCallback","toNullProperties","_state$fieldName","newState","CaseDetailsValuation","viewOptions","optionCodes","optionsValue","selectedOptionIndexes","excludedOptionsIndexes","includedOptionsIndexes","requiredOptionsIndexes","showOtionalRequiredOptions","optinalRequiredOptionsIndexes","isloadingIncludeExcludeOptions","tireWear","bodyDamage","hasGpl","valuationLoading","showWizard","hideVehicleSelection","showCarTable","GetValuationVehiclesWithoutVin","extraOptionCodes","show","_this$props$vehicleSt","_this$props$vehicleSt2","workflowFlowCalculation","carSelectedOptionalCodes","isStandard","isSelected","valuationVehicleId","_this$props$optionCod","valuationVehicles","registration_date","ignore_date","override_existing_match","GetValuationVehiclesInfo","_vehicleState$vehicle","version","_vehicleState$vehicle2","_vehicleState$vehicle3","_vehicleState$vehicle4","_vehicleState$vehicle5","_vehicleState$vehicle6","_vehicleState$vehicle7","_vehicleState$vehicle8","perfectMatchFoundByVersionList","_vehicleState$vehicle9","loadOptions","valuationVehicle","GetValuationVehicle","getVehicleColumns","geOptionsColumns","optionCode","isExcluded","isIncluded","isRequired","getIncludedExcludedRequiredOptions","included","excluded","findIndexesByCode","extraOptions","codes","indexes","_this$props$vehicleSt3","GetValuationVehicleOptions","includedIndexex","excludedIndexex","requiredIndexex","updatedIncludedIndexes","updatedExcludedIndexes","updatedRequiredIndexes","getSelectedRows","getExtraOptionsPrice","extraoptions","indexArray","getVehicleOptions","selectableRowsHeader","disableToolbarSelect","onRowsSelect","rowSelected","onSelectedVehicle","selectedIndexes","_vatParameter$","vatValue","getOptionsOptions","rowsSelected","lastSelectedIndex","lastSelectedOptionIndex","optionId","includedOptionIds","excludedOptionIds","requiredOptionIds","fetchIncludeAndExcludeOptions","finalSelectedIndexes","finalIncludedIndexes","finalExcludedIndexes","finalRequiredIndexes","includedIndexes","findIndexes","removeIndexes","mandatoryIndexes","atLeastOne","excludedIndexes","atLeastOneIndexes","isRowSelectable","fetchIncludeOptions","includeOptionsRequest","GetIncludeOptions","extractIndexes","rule","fetchExcludeOptions","excludeOptionsRequest","GetExcludeOptions","fetchRequiredOptions","requiredOptionsRequest","GetRequiredOptions","parseRequiredConditions","matches","handleBodyDamageTextChange","handleTireWearTextChange","handleGplChange","performValuation","_this$state$selectedV","_this$state$selectedV2","valuationRequest","attritionValue","bodyDamageValue","extraOptionsPrice","gpl","priceAsNew","wholesalePrice","fabricationDate","equipmentVersion","trimLevel","powerHP","nrOfDoors","noOfDoors","PerformValuation","renderOptions","_caseParameters$find","_this$state$selectedV3","_this$props$vehicleSt4","_this$props$vehicleSt5","offerTypeCode","caseVatRate","_x$parameter","basePrice","optionsPrice","totalPrice","purchaseVatRate","tradeInPrice","offerPrice","retailPrice","basePriceLabel","optionsPriceLabel","totalPriceLabel","pointerEvents","renderMandatoryOptionsDialog","bottom","_this$state$options","allRows","_this$state$options2","selectedOptionIndexInExtraOptions","unselectedOptionsToBeRemoved","findOptionsToBeExcluded","renderVehicleSelection","_this$props$firstRegi","ValuationFiltersWizardContainer","allConditionsRegex","allConditions","exec","mandatoryPart","mandatoryRegex","mandatoryMatch","optionalPartMatch","optionalRegex","optionalMatch","num","CaseDetailsCaseTabCompareCalculations","firstCalculation","secondCalculation","first","caseFirstCalculationParts","caseSecondCalculationParts","calculationHistoryIds","y","backgroud","renderCalculationParts","calculationPartsForSectionId","firstCalculationPart","secondCalculationPart","dynamicPrice","dynamicDiscount","calculation","generalDiscount","renderCalculation","renderTotalCalculation","CertificateOfControlForm","qualityControlItems","submitData","VehicleQualityControlCert","SaveList","rendeCertificateOfControlForm","renderVehicleInfo","radioCode","handleToggleIsCheckedOption","qcItemId","indexValue","newQualityControlItems","isChecked","isReplaced","handleToggleIsReplacedOption","renderCertificateOfControlList","valuesCategories","qcItem","qcItemCategory","refQcItem","refQcItemCateg","vehicleQCList","qcItems","qcItemCateg","GetUser","itemQC","qcItemCategoryId","RadarFilters","setFilters","sliderMarks","useMemo","makes","selectedMakes","selectedMakesIds","selectedModels","filterModels","selectedMakeIds","selectedModelsIds","_ref4","handleFormChange","period","DefaultIcon","L","iconUrl","shadowUrl","iconShadow","iconSize","iconAnchor","Marker","prototype","CustomMarker","markerStyle","justifyContent","RadarMap","filteredMarketData","selectedMarketData","setSelectedMarketData","mapMarkers","setMapMarkers","mapLoading","setMapLoading","handleMapMarkerClick","geocoder","GeocoderArcGIS","markers","county","findAddressCandidates","candidates","lat","long","getGeoData","MapContainer","center","zoom","scrollWheelZoom","TileLayer","attribution","EnhancedMarker","eventHandlers","click","U","D","RecentAdds","overflowY","textDecoration","addId","offeredBy","substring","InfoIcon","float","manufacturerYear","kmNo","RadarDonutChart","handleDonutClick","sources","uniqBy","series","chart","events","dataPointSelection","chartContext","config","dataPointIndex","labels","legend","responsive","breakpoint","ReactApexChart","ScatterChart","currentVehicleMileage","handleScatterClick","custom","seriesIndex","annotations","xaxis","RadarLineChart","handleLineClick","meanKmArray","monthMap","dateEnd","dateStart","month","has","get","months","dataMin","results","addDate","minBy","dataMed","mean","meanBy","meanKm","minPriceSeries","mediumPriceSeries","categories","SET_FILTERS","SET_SELECTED_MARKET_DATA","SET_MARKET_DATA","SET_SELECTED_SELLER_TYPE","SET_SELECTED_SELLER","SET_MARKET_DATA_LOADING","SET_SELECTED_VEHICLE","radarReducer","_state$selectedMarket","marketData","selectedSellerType","selectedSeller","marketDataLoading","Radar","_state$selectedVehicl","useReducer","newFilters","setMarketDataLoading","setMarketData","setSelectedSeller","setSelectedVehicle","setSelectedSellerType","handleSelectedSellerDonutClick","handleSelectedSellerTypeDonutClick","vehicleFilters","GetVehiclesFilters","_vehicle$make","_vehicle$model","getVehicleFilters","GetVehicleMarketData","uuidv4","getMarketData","RadarScatterChart","noop","CaseValuationHistory","setIsLoading","historyList","setHistoryList","_state$app2","GetValuationHistory","userIds","modifiedBy","futureHistoryList","_users$i","_users$i2","updatedByUserFullName","fetchHistory","showHistory","labelStyle","priceStyle","boxStyle","CaseDetailsCaseRequests","caseRequests","pin","gdprAgreement","district","bankAccount","loadCaseRequests","GetCaseRequests","downloadVehicleCostFile","GetVehicleCostAttachment","showTimeline","requests","_this$state$clientDat","_request$costType","carfixOfferComments","dangerouslySetInnerHTML","__html","isVehicleCost","costType","secondValue","secondCurrency","caseRequest","CaseDetailsCaseTabCalculationsForm","ACTION_COMPARE","ACTION_GT_VAL","RADAR","ACTION_INSURER_CALCULATION","ACTION_BACK_BUTTON","caseCalculationHistoryCopy","caseCalculationActionTypeList","WorkflowOptimization","disableButtonForMoreThenOneRowChecked","disableButtonForMoreThenTwoRowsChecked","selectedCalculationButton","isValuationOpen","isDialogAlternativeCalculationOpen","isDialogQualityControlOpen","isDialogRadarOpen","maxDeliveryTime","unorderedParts","partsForFirstCalculation","discretionaryPriceDealer","discretionaryPriceEmployee","accoutingValue","showHistoryModal","ownerTariffPartner","isMultipleTariffDialogOpen","selectedCalculationTypeId","tariffBranches","selectedTariffBranch","isOwnTariffLoading","lastServiceCalculation","isClientCommentOpen","orginalCalculationTypeId","caseStatusHistory","backButtonDisabled","_this$props$appState","priceEmployee","priceDealer","accountingVal","_this$vehicleService","vehicleAdvert","GetVehicleAdvert","accountingValue","refCalculations","refInsurer","caseCalculations","calculationTypeList","GetCaseCalculationHistories","GetAttachmentTypeByCode","GetOwnerTariffPartner","GetCaseStatusHistory","GetNonStockSuppliers","caseCalculationCopy","sortBy","packageCalculation","GetPartsToBeOrdered","currentOrganizationId","serviceCalculation","organizationTypeCode","GetManipulationPercent","workflowOrganizationOwnerId","ownTariffId","GetTariffPercent","getInsurerIdInfo","tariffCode","ADD_PARTS","PSE_ALT","wr","atmUserRole","firstOriginalCalculationIndex","isExternal","background","getPartsHistoryInterogationReport","EN","GetPartsHistoryInterogationReport","closeAlternativeCalcDialog","closeQualityControlDialog","closeRadarDialog","closeMultipleTariffDialog","loadOrganizationTariff","tariffListBranches","ownOrganizationTariffs","GetOwnTariffs","tariffName","handleCalculationsTypesButton","calculationTypeCode","_caseStatus$caseStatu","_this$state$workflowC","lastClientComment","originalCalculationClick","insurerCalculationClick","_this$state$workflowC2","orgIndex","displayCalculationZeroAmountWarning","alternativeCalculationClick","indexNumber","selectedCaseCalculationHistory","selectedRowIndex","CreateCalculation","gtEstimateResponseDto","codeUrl","UpdateCalculationTariff","newCalculationId","UpdateCalculationPdfCallback","reportClick","reportCode","GetReport","GetCaseCalculationReport","_this$state$caseCalcu2","_this$state$caseCalcu3","GetRepairReport","_organization$country","_organization2$countr","_organization2$countr2","_this$state$caseCalcu4","_this$state$caseCalcu5","saveGeneratedFile","checkFileName","handleQualityControlButton","getForms","sortFunction","formIndex","lastOriginalCalculation","checkAlternativePartDescriptionForNonStocks","checkIfExistStockParts","_this$state$wfTransit","_this$state$wfTransit2","orderNonStockStatus","COMANDA_PIESE_NON_STOC","updateOE","CarfixAlternativeCalculation","alternativeCalculations","generateLKQReports","_this$props$appState2","_this$props$appState3","showManipulation","calculationHistory","checkIntegrationRequirements","_workflow2","_caseStatus$caseStatu2","newSelectionTariffBranch","oldSelectionTariffBranch","newPartialSelectionTariffBranch","onSubmitTariffForm","renderSelectTariffForm","handleCloseClientCommentModal","isButtonDisabled","rowNumber","_organization3","_organization$country2","_organization4","_organization4$countr","_organization4$countr2","reportServiceParameters","serviceFileBlob","endsWith","calcId","UpdateCalculationCallback","getErrorDetails","errorDetails","entries","_this$props$appState4","_this$props$appState5","_this$props$appState6","_workflow5","_this$state$workflowC3","accountingValueLabel","dealerPriceLabel","employPriceLabel","startIcon","ArrowBackTwoToneIcon","report","_workflow3","_workflow4","flexDirection","smallPartsAquisitionValue","manipulationValue","CaseDetailsCaseTabCalculationDetails2","CertificateOfControl","MaterialDatePicker","CaseDetailsCaseTabCarDetailsForm","carCategoryList","filteredModelList","undocumentedModelList","carClassList","refCarCateg","refCarBrand","refCarClass","GetCarModelsByBrand","GetCarUndocumentedModelsByBrand","modelList1","HTML5_FMT","DATE","motDate","initialNumberOfKilometers","validate","errors","addError","hasVinQuery","AddCaseVehicle","UpdateCaseVehicle","CustomDatePicker","umc","validateCaseCarDetails","renderFormData","widgets","DateWidget","onFormChange","onChangeVin","makeCode","startsWith","vinRequest","GetVinByPlateNumberRequest","PlateNumber","externalClient","CaseDetailsCaseTabEventDetailsForm","policyTypeLIst","organizationsList","GetOrganizationHierarchy","eventDate","noticeDate","claimReviewDate","validateCaseEventDetails","isEmpty","AddCaseEvent","UpdateCaseEvent","CaseDetailsCaseTabBackToServiceForm","appReferentialServie","backToServiceFormData","formSubmitted","findTopParent","ob","loadCaseBackToServiceForm","_wfStepActions$find","_wfStepActions$find$w","userIdTo","wfStepActions","caseOrganizationTypeId","_item$actionType2","workflowPartnerIds","extendedWorkflowPartners","parentPartner","organizationBranch","_allocationResult$par","sendEmail","_this$state$selectedU","vinAquisitionCases","GetAcquisitionCases","AddCaseRequest","getWorkflowStep","appuser","_newStatus$caseStatus","_newStatus$caseStatus2","_prevCaseStatus$caseS","_newStatus$caseStatus3","prevCaseStatus","ChangeVehicleStatus","DeleteAllAdvertWhenCaseStatusBecameClosed","_prevCaseStatus$caseS2","rendeBackToServiceForm","FormHelperText","OfferType","CheckBoxOutlineBlankIcon","checkedIcon","CheckBoxIcon","CaseDetailsCaseTabOtherServiceForm","otherServiceFormData","selectedCaseAttachments","clientOffers","selectedClientOffers","hasInvoice","hasOffer","stringToArray","arrayToString","isSellOrBuyOffer","code17Steps","wfs","codeF17","wfssf","handleSwitchValue","renderEmailEditor","toolbarHidden","loadCaseOtherServiceForm","at","_orderBy","GetClientOffers","co","orderBy","offer","_a$actionType","templateSubject","templateBody","templateBodyText","BuildFilledInEmailTemplate","hasEmailTemplate","ca","handleSelectedClientOffer","_newValue$vehicle","_newValue$vehicle$mak","_newValue$vehicle2","_newValue$vehicle2$mo","_newValue$vehicle3","offerType","offerTypeId","renderGenerateDocsButtons","renderAttachementBoxInAppDocs","_option$caseClientHis","_option$caseClientHis2","_option$caseClientHis3","_option$caseClientHis4","_option$vehicle","_option$vehicle$make","_option$vehicle2","_option$vehicle2$mode","caseClientHistory","renderOption","_option$caseClientHis5","_option$caseClientHis6","_option$caseClientHis7","_option$caseClientHis8","_option$vehicle3","_option$vehicle3$make","_option$vehicle4","_option$vehicle4$mode","disableCloseOnSelect","caseClientHistoryId","gatewayServiceUrl","offerId","hideOrganizationLogo","rendeOtherServiceForm","freeSolo","CurrencyEnum","CaseDetailsCaseTabPaymentDetailsForm","paymentTypeId","paymentType","paymentRequestNoId","paymentRequestNo","paymentAmount","paymentAmountWithoutVAT","paymentAmountVAT","secondPaymentAmount","secondPaymentAmountWithoutVAT","hasFransiza","installments","IBANList","selectedIBAN","paymentTypeList","paymentRequestNoList","currencyType","paymentHistory","bankName","bankList","cursorBankAccount","outerValue","selectionStart","selectionEnd","checkIfCurrencyIsEurOrRon","showCostDetails","costTypes","costValues","caseVehicleCosts","currencyRate","inputTextValidator","loadVehicleOffer","offerTypeRef","offers","GetVehicleOffers","getSecondCurrency","_this$state$currencyT","_this$state$currencyT2","_this$state$currencyL","indexRon","indexEur","loadCasePaymentDetailsForm","_casee$caseClient","_banks$find","vatParameter","refPaymentType","refPaymentRequestNo","refCurrencyType","refBanks","serviceOrg","bankAccountList","currentCasePayment","paymentHistoryList","banks","GetUserOrganizationBankAccounts","GetCurrentCasePayment","GetCasePayments","vehicleOffer","GetCostRequests","currrency","selectedCurrency","selectedIban","iban","substr","futureCostTypes","GetVehicleCostTypes","futureCostValues","cost","_this$state$currencyT3","costTypeId","costTypeCode","withCurrency","secondOfferValue","handleUploadCostAttachment","handleDeleteCostAttachment","indexAttachment","renderAttachmentBoxForCosts","costIndex","sendCost","AddCost","paymentDetailsFormData","userToId","getSumWithVAT","getSecondSumWithVAT","AddCasePayment","loadCaseVehicleCosts","loadPayments","payments","handleBanckAccountChange","formatBankAccount","bankAccountValue","handleBankAccountChange","handlePaymentTypeChange","handleRequestNoChange","handlePaymentAmountChange","handlePaymentAmountWithoutVATChange","setSecondValueBasedOnCaseCurrency","handlePaymentAmountVATChange","handleInstallmentChange","sumWithoutVat","handleCurrencyTypeChange","_this$state$currencyT4","previousCurrencyCode","previousCurrencyRate","futureCurrencyRate","showPaymentHistoryTimeline","renderPaymentAttachmentBox","getLabel","_item$value","valueWithoutVat","uploadAttachment","deleteAttachment","renderCostType","indexLang","renderCostDetails","AddCircleOutlineIcon","renderCostDetailsFromCase","renderCostTypeFromCase","_cost$costType","_cost$costType2","renderPaymentDetailsWithCurrencyForm","_this$state$paymentAm","_this$state$currencyT5","_this$state$secondPay","_this$state$currencyT6","caseHasVAT","priceLabel","updateOnblur","maxLength","rendePaymentDetailsForm","IbanTools","valid","_prevState$currencyTy","_this$state$currencyT7","_this$state$currencyT8","focus","_this$state$bankList$","newBankName","_this$state$currencyT9","_this$state$currencyT10","resultValue","_this$state$currencyT11","_this$state$currencyT12","futureCurrencyCode","_this$state","_this$state2","_this$state2$caseVehi","qualityParts","selectedQualityPart","partLoader","partDetails","calculationPartsCopy","caseCalculationPartId","selectedCalculationPart","draggable","showTitle","paging","grouping","handleProducerChange","handleDeliveryTimeChange","handleStockChange","handleLocationChange","handleQualityChange","displayOrderPartOtherDetails","renderOrderPartDetailsEditable","FormControl","InputLabel","labelId","getCalculationParts","_part$package$j$valid","_part$package$j$codeT","_part$package$j$type","_part$package$j$order","_part$package$j$codEa","_alternativePart$pack","_alternativePart$pack2","UpdateCalculationPartsAndCasePartToBeOrdered","UpdatePartToBeOrdered","_alternativePart$vali2","_alternativePart$code2","_alternativePart$type2","_alternativePart$orde2","_alternativePart$codE2","CaseDetailsCaseTabOrderForm","orderIds","isAddSupplierOrderStatusDialogOpen","selectedWorkflowSupplier","isUpdateOrderPartDialogOpen","unorderedPartIds","hasRemainingNonStockParts","hasValidatorRole","partStock","nonStockOrder","CreatePartsToBeOrdered","COMANDA_ATM","caseInfo","GetCaseInfoById","unorderedPartsSupplierIds","updateRow","closeAddOrderSupplierDialog","closeUpdateOrderPartDialog","deleteOrder","DeleteOrder","partIndex","DeletePartToBeOrdered","displayUnorderedPartPrice","unorderedPart","getUnorderedPartsColumns","addOrder","addOrderSubmit","CreateOrder","unorderedPartsBySupplier","renderAddOrderForm","handleStockParts","lastNonExcludedStatus","CreateAutomateAppointment","checkConfirmChanges","firstOrder","_code2","pse_com","ChangeCaseStatusBasedCode","CaseDetailsCaseServiceAppointpentsForm","serviceInDate","serviceOutDate","loadCaseServiceAppointmentForm","currentCaseServiceAppointment","GetCurrentCaseServiceAppointment","currentCaseServiceAppointment1","createAppointment","appointmentFormData","AddCaseServiceAppointment","handleDateInChange","handleDateOutChange","CaseDetailsCaseTabClientDataForm","regionsTypes","citiesTypes","districtsTypes","loadCaseClientDataForm","refAttachemntType","regions","cities","districts","submitClientData","newCaseClient","AddCaseClient","UpdateCaseClient","handleCNPChange","handlePersonTypeChange","personType","handleAddressChange","handleIsActiveAgreement","isCnpCuiEnabled","_workflow$workflowSec","resultPart1","shouldEnableCnpCUi","_resultPart1$section","checkIsItsSaleWorkflow","_workflow$workflowSec2","showResetClientData","_resultPart1$section2","handleAdvertRegionTypeChange","handleAdvertDistrictTypeChange","handleCnpCuiOnBlur","pin_cui","_client$bankAccount$r","handleAdvertCityTypeChange","resetClientData","rendeClientDataForm","updateBankOnblur","_this$state$region","_this$state$city","_this$state$city2","_this$state$bankList$2","MaterialTableIcons","nRowsSelected","CaseDetailsCostDetailsForm","_this$props","futureCurrencyList","readonly","indexCurrency","_this$props$match","_this$props$match$par","currencyTypeCode","updateCostValues","_this$state2$currency","_this$state3","_this$state3$currency","_this$state$currencyL2","getValue","_this$props2","_this$props2$costValu","_this$state$costTypes","_this$props3","_this$props4","_this$props4$costValu","standardOptionsSchemaIds","CaseDetailsCaseTabCarDetailsExtendedContainer","versionTypes","vehicleTypes","refurbishedList","mvoDvBattypList","polutionNormTypes","paintTypes","tiresTypes","rimsTypes","colorTypes","carInteriorStateTypes","carExteriorStateTypes","carMechanicalStateTypes","carStandardOptions","carOptionalOptions","datePickerFirstRegistrationError","ignoreExistingMappingSwitch","ignoreTimeStampSwitch","carDetailsExtendedData","engineSize","co2","inConditionComments","outConditionComments","technicalConditionComments","pollutionNormId","tractionTypeId","wheelsTypeId","tiresTypeId","paintTypeId","inConditionId","outConditionId","technicalConditionId","pollutionNorm","wheelsType","tiresType","paintType","inCondition","outCondition","refurbished","refurbishedId","carDetailsFetchedData","includedExtraOptionIds","excludedExtraOptionIds","requiredExtraOptionIds","showOptionalRequiredOptions","optionalRequiredOptionsIds","loadCaseCarDetailsExtendedForm","vehicleInfo","caseCarDetailsExtended","_caseCarDetailsExtend","_caseCarDetailsExtend2","tableData","standardOptions","checkIfVinExistOnAcquisitionCase","submitVehicleData","newVehicle","standardOption","optionalOption","updateOptionStatus","OMV","AddVehicle","initialStatus","UpdateVehicle","ValuationSaveMapping","loadVehicleCosts","handleBrandTypeChange","vehicleCosts","GetVehicleCosts","newCostValues","handleModelTypeChange","updateCostValue","fieldNameId","updatedState","validateFirstRegistrationDate","currentDate","handleFirstRegistrationDateChange","handleYearOfFabricationDateChange","setSelectedOptions","getValuationInfoConfirmation","getValuationInfo","selectedVehicleHandler","getManualValuationInfo","optionsCodes","_selectedVehicle$cc","_selectedVehicle$engi","mvoDvBattyp","refurbishedItem","traction","pollution","valLanguageId","mvoDvBattypId","propulsionSystem","languageId","schemaId","op","getCarStandardOptionsColumns","getCarOptionalOptionsColumns","vehicleMakeList","bodyTypeList","wheelsTypeList","tractionTypeList","transmissionTypeList","fuelTypeList","tiresTypeList","paintTypeList","vehicleConditionList","pollutionNormList","modelTypesList","colorTypeList","vehicleTypeList","standardOnRowAdd","standardOnRowUpdate","dataUpdate","standardOnRowDelete","dataDelete","optionalOnRowAdd","optionalOnRowUpdate","optionalOnRowDelete","renderCarStandardOptionsTable","selection","selectionProps","isEditHidden","components","Container","onSelectionChange","renderCarOptionalOptionsTable","rowStyle","previousSelections","opt","newSelections","newlySelected","newlyDeselected","lastSelectedItem","lastSelectedOptionId","finalIncludedOptionIds","finalExcludedOptionIds","finalRequiredOptionIds","updateCheckedExtraOptionsStatus","addIndexes","convertKwToHp","convertHpToKw","hp","handlePowerChange","handleChassisNumberChange","handleVinNumberBlur","handleHPChange","isDisabled","fieldValue","_this$state$carDetail","_this$state$carDetail2","checkIfIsElectric","E","handlePlateNumberBlur","renderValidators","rules","_this$state$carDetail3","_this$state$carDetail4","_this$props$appState7","_this$props$appState8","_this$props$appState9","_this$props$appState10","_this$props$appState11","_this$props$appState12","_this$props$appState13","_this$props$appState14","_this$props$appState15","_this$props$appState16","_this$props$appState17","_this$props$appState18","_this$props$appState19","_this$props$appState20","_this$props$appState21","_this$props$appState22","_this$props$appState23","_this$props$appState24","_this$props$appState25","_this$props$appState26","_this$props$appState27","_this$props$appState28","_this$props$appState29","_this$props$appState30","_this$props$appState31","_this$props$appState32","_this$props$appState33","_this$props$appState34","_this$props$appState35","_this$props$appState36","_this$props$appState37","_this$props$appState38","_this$props$appState39","_this$props$appState40","_this$props$appState41","_this$props$appState42","_this$props$appState43","_this$props$appState44","_this$props$appState45","_this$props$appState46","_this$props$appState47","_this$props$appState48","_this$props$appState49","_this$props$appState50","_this$props$appState51","_this$props$appState52","_this$props$appState53","_this$props$appState54","_this$props$appState55","_this$props$appState56","_this$props$appState57","_this$props$appState58","_this$props$appState59","_this$props$appState60","_this$props$appState61","_this$props$appState62","_this$props$appState63","_this$props$appState64","_this$props$appState65","_this$props$appState66","_this$props$appState67","_this$props$appState68","_this$props$appState69","_this$props$appState70","_this$props$appState71","_this$props$appState72","_this$props$appState73","_this$props$appState74","_this$props$appState75","_this$props$appState76","_this$props$appState77","_this$props$appState78","_this$props$appState79","_this$props$appState80","_this$props$appState81","_this$props$appState82","_this$props$appState83","_this$props$appState84","_this$props$appState85","_this$props$appState86","_this$props$appState87","_this$props$appState88","_this$props$appState89","_this$props$appState90","_this$props$appState91","_this$props$appState92","_this$props$appState93","_this$props$appState94","_this$props$appState95","_this$props$appState96","_this$props$appState97","_this$props$appState98","_this$props$appState99","_this$props$appState100","_this$props$appState101","_this$props$appState102","_this$props$appState103","_this$props$appState104","_this$props$appState105","_this$props$appState106","_this$props$appState107","_this$props$appState108","_this$props$appState109","_this$state$carDetail5","_this$props$workflowF","_this$props$workflowF2","showAquisitionPrice","saleCase","plateNumberObject","endAdornment","InputAdornment","vehicleInfoDisabled","manualVinIdentification","getModelsOptions","getBodiesOptions","rcrEmployeeLastName","rcrEmployeeFirstName","rcrEmployeeEmail","rcrEmployeePhone","showCostTypes","flexWrap","_data$filter","selectedOption","finalRequiredIds","optionsToBeExcludedIds","finalExtraOptions","stateProperty","statusProperty","filteredModelTypes","CaseDetailsCaseTabCarRepairCostForm","onHandleTariffInputChange","newCaseTariffValues","caseParameterMandatoryField","_caseParameter$parame","_caseParameter$parame2","SaveParameterHistory","SaveCaseTariffHistory","getCarRepairCostParametersColumns","parametersOnRowAdd","parametersOnRowUpdate","_newData$parameter","_newData$parameter2","newItemIndex","parametersOnRowDelete","renderCarRepairCostParametersTable","caseParametersList","ControlType","initialStateValue","STRING","notMandatory","ORIGINAL_COPY","seller","onlyForDisplay","PERSONAL_DATA","buyer","NUMBER","others","BOOLEAN","footer","AttachmentTypeIdEnum","personalDataType","booleanType","originalCopyType","ContractModal","isSaleOfferType","reduxState","requiredFields","setRequiredFields","_caseClient$personTyp","personIsCompany","otherParameters","priceParamaters","vehicleParameters","buyerParameters","sellerParameters","_vehicle$engineSize","_vehicle$pollutionNor","setParameterValue","_caseClient$personTyp2","_caseClient$personTyp3","getVehicle","groupName","reportParametersExtended","requiredParameters","personalDataParams","caseAttachment","group","getControl","valuesArray","onlyForDisplayEditable","CaseDetailsCaseTabSaleOfferForm","reportService","guaranteeTypes","offerTypes","contractModalOpened","displaySecondCurrency","vehicleOfferData","damageValue","newVin","offerValueWithVAT","priceValue","tradeInValue","withNewVehicle","secondOfferVatAmount","secondOfferValueWithVAT","purchaseOrigins","saleChannels","closeContractModal","getCurrencyRates","openContractModal","contractOffer","contractPrice","caseContractAttachments","Error","attachmentBlob","documentName","getCurrentCurrency","getVATValue","getPriceWithVAT","getReverseVatValue","getPriceWithoutVAT","vehicleHasNoVAT","getOfferPriceWithoutVAT","_this$props$vehicleSt6","getVATFromOfferPrice","_this$props$vehicleSt7","_this$props$vehicleSt8","_this$props$vehicleSt9","offerPriceWithoutVAT","getValuationPrice","_caseValuation","_caseValuation2","valuationValue","caseValuationVatValue","setStatePriceAndVAT","caseHasNoVAT","getDamageValue","damage","loadCaseSaleOfferForm","purchaseOriginRef","saleChannelRef","offerTypeList","guaranteeTypeList","puchaseOriginList","saleChannelList","makeListFiltered","guaranteeType","guaranteeTypeId","loadOffers","NumberFormatCustomCurrencyRate","offerVatAmount","SaveVehicleOffer","handleGuaranteeTypeChange","handlePurchaseOriginChange","purchaseOrigin","purchaseOriginId","handleSaleChannelChange","saleChannel","saleChannelId","handleIsActiveNewVehicle","_purchaseOrigin$id","_purchaseOrigin","getInvoicePdf","getOfferPdf","showGetInvoiceButton","showOfferTimeline","_this$props$caseSetti23","_this$props$vehicleSt10","secondPrice","renderClientDataForm","_this$props$vehicleSt11","_this$props$vehicleSt12","_this$props$caseSetti24","_this$props$caseSetti25","_this$props$caseSetti26","_this$props$vehicleSt13","_this$state$vehicleOf","_this$state$vehicleOf2","_this$state$vehicleOf3","_this$props$caseSetti27","_this$props$caseSetti28","_this$props$caseSetti29","_this$props$caseSetti30","saleOfferPriceWithoutVatLabel","saleOfferPriceOfferedWithoutVatLabel","saleOfferPriceOfferedWithVatLabel","saleOfferCalculatedPriceWithoutVat","setSecondVatFromOfferPrice","_this$props$caseSetti31","_this$props$caseSetti32","_this$props$caseSetti33","_this$props$vehicleSt14","_this$props$vehicleSt15","_this$props$vehicleSt16","_this$props$caseSetti34","_this$props$caseSetti35","_this$props$caseSetti36","_this$state$contractO","CaseDetailsCaseTabVehicleAdvertComponent","advertiserOperations","valuationPrice","vehicleAdvertHistory","vehicleAdvertData","leasingConcession","individual","privateBusiness","authorizedDealer","hasFinanceEligibility","manufacturerWarrantyDate","isRegistered","isFirstOwner","hasAccident","hasServiceBook","hasParticlesFilter","hasStandardImages","hasOptionalImages","vehicleAdvertOptions","makeTypes","gearBoxTypes","pollutionNormTypes","carBodyTypes","originCountriesTypes","advertisers","isPublishLoading","loadCaseVehicleAdvert","_vehicleInfo","colors","advertDistricts","originCountries","getVehicleAdvertHistoryAmongWithUsers","initialOptions","o1","o2","vehicleOptionId","intermediaryArr","_x$code","getVatParameterValue","countryOrigin","countryOriginId","co2Emission","getDocForm","getCaseAttachements","dateDiffYears","date1","date2","diff","years","floor","age","days","checkMakeYearAndKilometersNr","operationType","makeYearAndKilometersNrValid","advertiserCode","today","vehicleAge","publishAdvert","selectedAdvertiserCodes","_a$attachmentType","fileUrl","_attachmentTypeCode","_attachmentTypeCode2","PublishAdvert","details","isImported","priceForEmployee","formattedPrice","adDetails","advertPublishedResults","AdvertiserCode","advertiser","AdUrl","Price","requestData","ConnectId","AdDetails","SendPublishedAdvertsToRcr","deleteAdvert","DeleteAdvert","vatAmount","SaveVehicleAdvert","handleIsActiveIndividual","handleIsActiveBusiness","getVATFromAdvertPrice","advertPrice","handleMakeTypeChange","handleFuelTypeChange","handleTransmissionTypeChange","handleGearBoxTypeChange","handlePollutionNormTypeChange","handleCarBodyTypeChange","districtId","handleAdvertOriginCountryTypeChange","handlePaintTypeChange","handleColorTypeChange","handleManufacturerWarrantyDateChange","handleManufacturerWarrantyDateClear","handleManufacturedYearDateChange","handleToggleOptions","idx","newOptions","vehicleAdvertId","gtid","onToogleAdvertiser","getAdvertReportWord","vehicleAdv","_vehicleAdv$createdBy","vehicleAdvertAdvertisers","_this$state$advertise","_this$state$advertise2","advertiserId","REN","externalId","rel","renderAdvertisers","isMavoAdvertPresent","MAVO","adv","isAdvertisersDisabled","getCarOptionsColumns","optionIsChecked","renderCarOptionsTable","scrollToRef","scrollTo","offsetTop","rendeVehicleAdvertForm","calculatedPriceWithVat","advertPriceWithVat","onError","ClearIcon","warrantyKmLimit","publishingAndDeletingAreAllowed","GetVehicleAdvertHistory","operation","CaseDetailsCaseTabEventBillingDetailsForm","organizationDeliveryBranches","selectedDeliveryOrganizationBranch","interventionTypesBranches","selectedInterventionTypeBranch","refInterventionType","newCaseEvent","interventionTypes","GetUserWorkflowCostCenters","interventionTypeId","organzationListBranches","interventionTypeListBranches","selectedInterventionType","selectedDeliveryOrganization","onDeliveryDropDownChange","_selectedNodes$2","onInteventionTypeDropDownChange","newInterventionTypeBranch","oldInterventionTypeBranch","_selectedNodes$3","newPartialSelectionInterventionTypeBranch","CaseDetailsCaseTabSoldCarForm","SaveVehicleOfferWithoutCaseId","getJobListRequest","API","GetAsync","getAppointmentsRequest","Post2Async","addAppointment","changeAppointmentStatus","getDay","getHourForAppointment","hours","getHours","minutes","getMinutes","setMinutes","getHour","indexHour","formatAppointmentForCalendar","appointmentDate","day","hour","start","end","resource","getStatusData","_statusList$CANCELED","_statusList$INITIATA","_statusList$RESCHEDUL","_statusList$CONFIRMED","_statusList$PAYMENT_C","_statusList$ESTIMATE_","statusItem","CANCELED","INITIATA","RESCHEDULED","CONFIRMED","PAYMENT_CONFIRMATION","ESTIMATE_ACCEPTED","getStatusList","responseData","getAppointmentStatus","futureStatusList","getCategoryTypeList","getAppointmentCategoryType","toStartOfWeek","dayOfWeek","getFullYear","getDate","formatDate","formattedDateString","ClientAutocomplete","setClients","getClientList","getClientListRequest","CarDetails","selectedCar","CategoryAppointmentDetails","_selectedCar$identifi","_selectedCar$engineSi","_selectedCar$power","_selectedCar$identifi2","_selectedCar$carColor","_selectedCar$engineTy","_selectedCar$carCateg","_selectedCar$carCateg2","_selectedCar$carCateg3","px","identifiedFuelType","identifiedCarBody","carColor","engineType","carCategory","CategoryAddAppointment","_selectedCar$model","_selectedCar$model2","_selectedCar$identifi3","_selectedCar$identifi4","_selectedCar$engineSi2","_selectedCar$power2","_selectedCar$engineTy2","_selectedCar$carCateg4","_selectedCar$carCateg5","_selectedCar$carCateg6","_selectedCar$carColor2","borderWidth","JobsMultipleSelection","setOptions","setSelected","getTranslations","jobOptions","job","fetchJobOptions","FormGroup","newSelected","JobDetails","defaultValue","BigCalendar","getAppointments","defaultView","setDefaultView","defaultDay","handleSlotSelect","localizer","momentLocalizer","zoomLevel","setZoomLevel","devicePixelRatio","_state$agenda","_state$agenda2","_appointment$appointm","start_date","end_date","formatedAppointments","handleZoomChange","matchMedia","removeEventListener","flex","Calendar","dayLayoutAlgorithm","week","selectable","view","onView","CustomEvent","customStyle","eventPropGetter","getEventStyle","time","allDay","work_week","ArrowLeftIcon","ArrowRightIcon","yesterday","tomorrow","noEventsInRange","showMore","defaultDate","onRangeChange","range","fullMonthRanges","startDate","endDate","monthStart","monthEnd","monthName","getFullMonthRangesInRange","setDate","startAccessor","endAccessor","onSelectEvent","onSelectSlot","popup","heigth","_resource$appointment","_resource$vehicle","_resource$vehicle2","_state$agenda3","AppointmentCalendar","setDay","setHour","showDefaultCalendar","showCalendar","setShowCalendar","showBigCalendar","setShowBigCalendar","generateArrayOfHours","minute","formattedHour","padStart","localAppointments","setLocalAppoitments","localLoading","setLocalLoading","setDefaultDay","showDropdown","setShowDropdown","useSnackbar","isLoadingDate","setIsLoadingDate","isLoadingHour","setIsLoadingHour","AGENDA_SET_STATUS_LIST","getSyles","generalStyle","fetchAppointments","onlyOneDay","AGENDA_SET_APPOINTMENTS","slotInfo","selectedHour","selectedMinute","mapAppointments","firstDayOfMonth","lastDayOfMonth","calendarStyle","showNeighboringMonth","hourDropdownStyle","ora","handleSelectOption","CaseDetailsCaseServiceAddAppointmentForm","isCarInService","requiresServiceScheduling","getAppointment","res","getAppointmentByCaseId","getPayloadFormat","_this$state$date","_this$state$appointme","_this$state$appointme2","_this$state$appointme3","_this$state$appointme4","_this$state$appointme5","selectedJobs","appointmentJobTypes","indexJob","finalDate","splitHour","appointmentClient","jobDetails","carBody","handleSwitchChange","addNewAppointment","_this$state$date2","hasErrors","validateFieldRequiredAdd","displayInfo","disableHoverListener","validateFieldRequiredRemove","_this$state$appointme6","_this$state$appointme7","_this$state$appointme8","_this$state$appointme9","_this$state$appointme10","CaseDetailsCaseTabInOutDataForm","caseVehicleDetails","repairDate","hasOkWindows","hasGlitchWindows","hasOkLights","hasGlitchLights","hasOkBodyAndPaint","hasGlitchBodyAndPaint","hasOkWipers","hasGlitchWipers","fuelInTheTank1","fuelInTheTank2","fuelInTheTank3","fuelInTheTank4","fuelInTheTank5","mandatoryEquipment1","mandatoryEquipment2","mandatoryEquipment3","mandatoryEquipment4","mandatoryEquipment5","otherEquipment1","otherEquipment2","otherEquipment3","otherEquipment4","otherEquipment5","hasPickUp","replacementVehicle","documentsReceived1","documentsReceived2","documentsReceived3","documentsReceived4","loadCaseInOutDataForm","lastApprovedCaseCalculationHistory","GetLastApprovedCaseCalculationHistory","GetCurrentVehicleDetails","repairPrice","isAllowed","floatValue","decimalSeparator","fixedDecimalScale","submitCaseVehicleDetailsData","newCaseVehicleDetails","AddCaseVehicleDetails","UpdateCaseVehicleDetails","onChangeCheckedField","handleHasOkWindows","handleHasOkLights","handleHasOkBodyAndPaint","handleHasOkWipers","handleCheckBoxFuelInTheTank1Change","handleCheckBoxFuelInTheTank2Change","handleCheckBoxFuelInTheTank3Change","handleCheckBoxFuelInTheTank4Change","handleCheckBoxFuelInTheTank5Change","handleCheckBoxMandatoryEquipment1Change","handleCheckBoxMandatoryEquipment2Change","handleCheckBoxMandatoryEquipment3Change","handleCheckBoxMandatoryEquipment4Change","handleCheckBoxMandatoryEquipment5Change","handleCheckBoxOtherEquipment1Change","handleCheckBoxOtherEquipment2Change","handleCheckBoxOtherEquipment3Change","handleCheckBoxOtherEquipment4Change","handleCheckBoxOtherEquipment5Change","handleHasPickUp","handleReplacementVehicle","handleCheckBoxDocumentsReceived1Change","handleCheckBoxDocumentsReceived2Change","handleCheckBoxDocumentsReceived3Change","handleCheckBoxDocumentsReceived4Change","handleRepairDateChange","repairDateError","validateDates","rendeCaseVehicleDetailsDataForm","parsedValue","serviceComment","hasWindowsComment","hasLightsComment","hasBodyAndPaintComment","hasWipersComment","pickUpCode","CaseDetailsCaseTabIntegrationClientDataForm","CaseDetailsCaseCarfixAnalysisForm","clientEmail","CaseDetailsCaseCarfixBackToServiceForm","externalCaseRequests","CaseDetailsCaseCarfixValidateAppointmentForm","GetAppointmentByCaseId","CaseDetailsCaseRepairInProgressForm","repairHasBeenFinished","updateOffer","CaseDetailsCarInServiceForm","continue","submitCaseCarInServiceData","CAR_LEAVE_WORKSHOP","rendeCarInServiceForm","excludedSteps","CaseDetailsCaseTab","workflowCaseSections","selectedWorkflowSection","selectedStep","workflowCaseSectionSteps","workflowForms","workflowCaseSectionStepForms","refreshDesign","isDialogFormOpen","loadCaseSettings","workflowCaseSectionId","initialWorkflowCaseSectionId","workflowCaseSection","loadInitialWorkflowSteps","loadWorkflowSteps","loadCurrentWorkflowSelectedStep","getSelectedWorkflowSection","handleTabChange","renderSectionTabs","sectionTabs","selectedItemId","renderSectionTabs2","AddCircleIcon","Xarrow","strokeWidth","loadWorkflowCurrentSteps","workflowCaseSectionStep","getStepBasedCaseStatus","isStepCurrent","renderSteps2","PlayCircleOutlineIcon","closeDialogForm","CaseDetailsCaseServiceAppointmentsForm","prevStatus","prevStep","CaseDetailsCommentsTab","caseComments","commentText","selectedCommentType","selectedCaseCommentId","editComment","editTextComment","loadCaseComments","GetCaseComments","mailHandleClick","handleDeleteComment","RemoveCaseComment","handleEditComment","editCaseComment","UpdateCaseComment","displayText","renderCaseComments","rowsMax","disableRipple","commentTypeCode","addCaseComment","caseComment","AddCaseComment","CaseDetailsHistoryTab","loadCaseStatusHistory","vehicleCost","renderCaseRequests","renderCaseRequestsForFirstStatus","req","CaseDetailsCaseSupportCommentsTab","caseSupportComments","loadCaseSupportComments","GetCaseCommentsByTab","adminSupport","userSupportComment","toUserId","CASE_SUPPORT_RESPONSE","CASE_NOTIFY_SUPPORT","SendNotifySupport","isFromSupportTab","CaseDetails","rejectedOfferModal","renderOfferPriceAndDate","_calculation$amount","renderLastOfferApproved","indexOfLastOfferApproved","hasBeenApproved","renderlastOfferRejectedModal","lastOfferRejected","PutAsync","setLastOfferRejected","renderLastStatus","getStatusDescription","resultCaseCalculations","getTitleDescription","casePlateNumber","carMake","carModel","carVersion","carPlateNumber","_this$props2$vehicleS","_this$props2$vehicleS2","CaseDetailsSupportCommentsTab","VehicleFilterStateKeys","VehicleDashboardAppliedFilters","setFiltersValueByName","resetInventoryFilters","orgName","setOrgName","lessThan","appliedFilters","_data$byMaker$find","_data$byModel$find","_data$byTechnicalCond","_data$byStatusType$fi","_data$byInventoryAge$","_data$byFuelType$find","_data$byTransmissionT","_data$byTractionType$","propertyName","MAKE_ID","byMaker","LOCATION_ID","MODEL_ID","byModel","TECHNICAL_CONDITION_ID","byTechnicalCondition","STATUS_ID","byStatusType","_ref5","INVENTORY_AGE_FILTER","byInventoryAge","_ref6","FUEL_ID","byFuelType","_ref7","TRANSMISSION_TYPE_ID","byTransmissionType","_ref8","TRACTION_TYPE_ID","byTractionType","_ref9","getOrgName","handleDelete","VehicleBarChart","selectedId","handleBarClick","numberOfVehicles","maxValue","fill","plotOptions","bar","distributed","dataLabels","tickAmount","formatter","yaxis","chartHeight","selectedItemName","VehicleAverages","averageMileage","averageVehicleAge","VehicleAverageAgeBarChart","vehicleCount","VehicleMap","vehicleLocationCount","setLocationId","parentCallback","VehicleDonutChart","VehicleConditionTable","setTechnicalCondtionId","exterior","interior","mechanical","Pagination","evt","selectedRow","VehicleStockTable","setStatusId","withMissingInfo","dashboardState","lackingInformation","moreThan90Days","nrOfVehiclesOlderThan90Days","getRowBackgroundColor","getRowColor","DashboardMainFilterStateKeys","DashboardFilters","vatFilterVisible","setOrganizations","handleFiltersChange","selectItems","getAllChildren","child","availableOrganizations","userOrganization","childItems","SELECTED_ORGANIZATIONS","START_DATE","END_DATE","selectedOrganisations","includeVat","INCLUDE_VAT","FormLabel","SET_MAKEID","SET_MODELID","SET_VALUE_BY_NAME","SET_TECHNICAL_CONDITION_ID","SET_STATUS_ID","SET_INVENTORY_AGE_FILTER","SET_FUEL_ID","SET_TRANSMISSION_TYPE_ID","SET_TRACTION_TYPE_ID","SET_LOCATION_ID","RESET_INVENTORY_FILTERS","vehicleDashboardReducer","fuelId","inventoryAgeFilter","VehicleDashboard","setData","updatedItems","setUpdatedItems","constantsData","setMakeId","setModelId","setTechnicalConditionId","setInventoryAgeFilter","setFuelId","setTransmissionTypeId","setTractionTypeId","handleFuelTypeDonutClick","handleTractionTypeDonutClick","handleTransmissionTypeDonutClick","handleInventoryAgeBarClick","handleMakeBarClick","handleModelBarClick","vehicleChartHeight","axios","CancelToken","makeIds","modelIds","inventoryAgeFilters","fuelTypeIds","tractionTypeIds","transmissionTypeIds","GetDashboardData","finalResult","byInOutAndTechnicalCondition","byOrganization","isCancel","getData","cancel","pptService","PptService","addFirstPage","addHorizontalChart","addTable","geTechnicalConditionFormatTable","formatTable","numberFormat","byInConditionValue","byOutCondition","byTehnicalConditionValue","inventoryAge","addVerticalChart","averageInventoryAge","addCircleChart","exportPpt","childData","AcquistionDonutChart","translateDisplayName","AcquisitionMainCards","purchasesCompleted","purchasesInProgress","purchasesFailed","newVehiclesSoldCount","purchasesCompletedPrice","amountInclVat","purchasesInProgressPrice","purchasesFailedPrice","averagePurchasePrice","AcquisitionFilterStateKeys","AcquisitionDashboardAppliedFilters","resetFilters","_data$purchasedVehicl","_data$purchasedVehicl2","_data$purchasedVehicl3","purchasedVehiclesByMaker","CLIENT_TYPE_ID","purchasedVehiclesByClientType","OFFER_TYPE_ID","purchasedVehiclesByOfferType","RecentAcquisitions","convertBlobToBase64","blobToBase64","blob","itemsWithImages","imageURL","base64Value","getAttachments","columnGap","makeName","modelName","makeYear","purchasePriceInclVat","buyerName","TopBuyers","isTentative","mainColumns","inProgressPurchasesEstimatedAveragePriceInclVat","inProgressPurchasesEstimatedAveragePrice","completedPurchases","damageAndOtherCostsInclVat","damageAndOtherCosts","averagePrice","SET_CLIENT_TYPE_ID","SET_OFFER_TYPE_ID","SET_MAKE_ID","RESET_FILTERS","acquisitionDashboardReducer","clientTypeId","AcquistionDashboard","setClientTypeId","setOfferTypeId","handleMakeDonutClick","handleClientTypeDonutClick","handleOfferTypeDonutClick","getTopBuyersFormatTable","firstPart","personTypeIds","offerTypeIds","GetDashboardAquisitionData","recentAcquisitions","topTentativeBuyers","AcquisitionDonutChart","SalesOfferEmailBarChart","offerGeneratedCountArray","emailSentCountArray","offerGeneratedCount","emailSentCount","SalesChannel","channelId","activeCount","autovitLogo","olxLogo","renaultLogo","SalesHeader","channels","topSellers","onClickSeller","channel","advertId","VehicleAddSalesChart","advertsCountArray","soldVehiclesCountArray","advertCount","soldVehicleCount","SalesSummaryCard","adsValue","SalesAggregateTable","carType","averageAge","fixesAndOtherCosts","profit","totalProfit","avgOfYear","purchaseValue","soldValue","profitPercent","profitValue","carInfo","numberOfUnitSold","groupedByFuelType","percentValue","groupedByTransmissionType","avgSoldValue","avgDamageValue","maxBodyHeight","headerStyle","actionsCellStyle","SET_VAL_BY_NAME","SET_PERSON_TYPE_ID","SET_SALE_PERSON_ID","RESET_SALES_FILTERS","salesDashboardReducer","salePersonId","SalesFilterStateKeys","SalesDashboardAppliedFilters","_data$topSellersBased","_data$vehiclesGrouped","SALE_PERSON_ID","topSellersBasedOnClosedFolders","vehiclesGroupedByClientType","SalesDashboard","_numberFormat","_numberFormat2","_numberFormat3","_numberFormat4","_numberFormat5","_numberFormat6","_numberFormat7","_numberFormat8","_numberFormat9","_numberFormat10","setPersonTypeId","setSalePersonId","salePersonIds","GetDashboardSalesData","handlePersonTypeDonutClick","addVerticalChart2","addScatterChar","salesProfit","vehiclesGroupedByMakerAndModel","lastSalePage","salesChannels","VehicleAdSalesChart","guaranteeCount","soldVehicleInformation","addsInformation","DashboardTab","Dashboards","setSelectedTab","VEHICLES","newTab","AquisitionDashboard","Orders","selectedClients","selectedSuppliers","madeByUsersList","selectedMadeByUsersList","locations","selectedLocations","orderStatusList","selectedOrderStatus","selectedDateFrom","selectedDateTo","isSupplier","descriptionSearchText","supplierOrderNumberSearchText","clientIds","locationIds","madeByList","orderDetailsList","checkIfIsSupplierAccount","GetOrderFilters","orderListStatusIds","reloadOrders","orderStatusHistories","_orderStatusHistory$o","_orderStatusHistory$o2","_orderStatusHistory$o3","_orderStatusHistory$o4","handleDateChangeFrom","handleDateChangeTo","handleClientsChange","handleSuppliersChange","handleMadeByUsersChange","handleLocationsChange","handleStatusesChange","handleDescriptionChange","handleSupplierOrderNumberChange","vatOptions","VehicleImportModal","setVehicles","setPurchaseVatRate","setDialogVisible","_props$firstRegistrat","checkIfDataIsValid","importCars","importedValues","trimmedValue","invalidValues","temp","importedVehicles","newVehicleArr","km","handleAutoImportFromCsv","simpleVehicles","SaveImportedVehicles","importedVehicleVins","copiedVehicleVins","duplicatedVehicleVins","CSVReader","cssClass","inputId","inputStyle","onFileLoaded","handleAutoImport","handleRowAdd","newVehicles","vehicleIndex","handleRowUpdate","handleRowDelete","ImportVehiclesRenaultButton","setFileInputKey","SaveImportedXlsxVehicles","prevKey","_document$getElementB","CaseDetailsCaseTabSaleOfferFormDialog","OF_VANZ","submitFormForClosedCase","Closed","initialVehicle","VehicleImportOneCarModal","vehicleData","setVehicleData","setDatePickerFirstRegistrationError","plateNumberError","setPlateNumberError","attributeName","isPlateNumberValid","SaveManualdVehicles","Vehicles","vehiclesList","makeEntities","selectedMakeEntities","modelEntities","selectedModelEntities","fuelEntities","selectedFuelEntities","transmissionEntities","selectedTransmissionEntities","tractionEntities","selectedTractionEntities","statusEntities","selectedStatusEntities","isLoadingVehicles","vehicleImportDialogOpenend","vehicleImportOneCarDialogOpenend","isCarSoldDialogOpen","vehiclesCaseList","salesWokflowForm","paramList","loadVehicles","vehiclesFilters","transmissionIds","tractionIds","vehicleHistory","GetLastCaseByVehicleId","vehicleCase","vehicleStatuses","closeCarSoldDialogOnSaveButton","_vehicleExtension$veh","_vehicleExtension$veh2","_vehicleExtension$veh3","_vehicleExtension$veh4","vehicleExtension","buttonsToBeRendered","_vehicleExtension$veh5","DATE_CLIENT","GetWorkflowSettingsForVehiclesTab","salesForm","Vin","RcrEmployeeMail","RcrEmployeePhone","SendVehicleToCarfix","handleMakeEntitiesChange","handleModelEntitiesChange","handleFuelEntitiesChange","handleTransmissionEntitiesChange","handleTractionEntitiesChange","handleStatusEntitiesChange","handleImportDialogOpen","handleImportDialogClose","tableOptions","_ref10","_ref11","refParam","_ref12","renderVehicleImport","VehicleCaseForm","vehicleCaseList","loadVehicleCaseForm","SearchByVehicle","vehicleCaseDetailsList","usersAssignedList","casesUrl","vehicelState","VehicleHistoryTimeline","vehicleStatusHistory","loadVehicleHistoryTimeline","vehicleFieldsUpdateHistory","GetVehicleStatuses","GetVehicleFieldsHistory","vehicleStatusHistoryDetailedList","vehicleUpdateHistory","vehicleStatusHistoryId","showVehicleStatusHistoryTimeline","renderFieldsUpdateHistory","vehicleUpdate","vehicleUpdateHistoryFields","_vehicleUpdate$user","vehicleFieldNameLocalized","oldValueLocalized","newValueLocalized","VehicleAttachments","setCaseAttachments","previewFile","setPreviewFile","setIsDialogOpen","getImage","GetCaseAttachmentsForVehicle","organizationOwnerName","picturesExpanded","documentsExpanded","setVehicleAttachmens","caseTypeDisplayName","pictureAttachments","documentAttachments","newAttachments","expandPictures","ExpandLessIcon","_attachment$attachmen","expandDocuments","_attachment$attachmen2","DetailsOfCarForm","statusOptions","isChangeVehicleStatusDialogOpen","loadDetailsOfCarForm","_vehicle$currentStatu","_vehicle$currentStatu2","_vehicle$currentStatu3","statusesTypeRef","getStatusOptions","currentStatusEnum","allowedStatuses","s","changeVehicleStatusSubmit","_this$state$selectedS","_this$state$selectedS2","handleAutocompleteVehicleStatusChange","renderChangeVehicleStatusForm","changeVehicleStatusClick","_this$state$vehicle","_this$state$vehicle$m","_this$state$vehicle2","_this$state$vehicle2$","_this$state$vehicle3","_this$state$vehicle4","_this$state$vehicle5","VehicleCase","GetInterfacesWithClientAccess","handleConnect","interfaceId","GetInterfaceAuthorizeUrl","SetInterfaceCredentials","clientSecret","VehiclesHistory","CarClassRentalPrice","newCarClassRentPrice","carClasses","newCarClassRentPriceId","loadCarClassRentPrices","carClassPrices","GetCarClassRentPrices","handleCarClassChange","carClass","saveCarClassRentalPrice","AddCarClassRentPrice","UpdateCarClassRentPrice","newCarClassPopup","deleteCarClassRentPrice","RemoveCarClassRentPrice","carClassRentalPriceId","Billing","startDateError","endDateError","exportInfo","formatedStartDate","formatedEndDate","requestPayload","isGtm","GetCaseBillingReport","DgpciBilling","GetCaseBillingReportDgpciRequest","OrderPartsHistory","GetOrderPartsHistory","VersionList","selectedMake","selectedModel","initialMakeList","initialModelList","_this$state$selectedM","_this$state$selectedM2","selectedModelList","BodyTypeList","BodyConditionTypeList","WheelConditionTypeList","InvoiceRangeList","newInvoiceRange","invoiceRanges","newInvoiceRangeId","loadInvoiceRanges","GetInvoiceRanges","FACTURA","handleInvoiceRangeTypeChange","handleInvoiceRangeStatusChange","saveInvoiceRange","AddInvoiceRange","UpdateInvoiceRange","newInvoiceRatePopup","deleteInvoiceRate","RemoveInvoiceRange","invoiceRateId","ProvenanceList","newProvenance","account","provenances","newProvenanceId","loadProvenance","GetProvenances","saveProvenance","AddProvenance","UpdateProvenance","newProvenancePopup","deleteProvenance","RemoveProvenance","ExchangeRateList","newExchangeRate","exchangeRatesHistory","exchangeRateHistory","startOf","endOf","exchangeRateId","exchangeRates","newExchangeRateId","selectedExchangeRate","isHistoryDialogOpen","lastExchangeRate","loadExchangeRatesList","GetExchangeRates","modifiedByUser","saveExchangeRate","_this$state$lastExcha","previousStartDate","AddExchangeRate","UpdateExchangeRate","handleStartDateDateChange","handleEndDateDateChange","newExchangeRatePopup","viewHistory","VisibilityOutlinedIcon","deleteExchangeRate","RemoveExchangeRate","showExchangeTimeline","closeHistoryDialog","renderViewHistory","AlcorErrorLogList","alcorErrors","loadAlcorErrorLogs","GetAlcorErrorLogs","FinancialParameterInfoList","newFinancialParameterInfo","financialParameterId","financialParameter","financialParameters","financialParametersInfoList","newFinancialParameterInfoId","loadFinancialParameterInfoList","GetFinancialParameterInfoList","handleFinancialParameterChange","saveFinancialParameterInfo","AddFinancialParameterInfo","UpdateFinancialParameterInfo","newFinancialParameterInfoPopup","deleteFinancialParameterInfo","RemoveFinancialParameterInfo","financialParameterInfoId","SellerDataList","sellerData","address2","address3","bank","sellerDataList","isDialogLoading","loadSellerDataList","GetSellerDataList","GetSellerLogo","saveSellerData","sellerId","AddSellerData","UpdateSellerData","AddSellerLogo","handleCityChange","ownCapital","MavoVehicleActionCreators","setMavoVehicle","GetMavoVehicle","setMavoVehicleObject","changeMavoVehicleStatus","MavoVehicleOrderDialog","orderDateError","isLoadingUsers","handleSaveOrder","orderForm","orderDate","mavoVehicleId","cnp","adress","AddMavoVehicleOrder","closeDialogOrder","NumberDecimalFormatCustom","renderOrderForm","_this$props$orderForm","_this$props$orderForm2","handleChangeOrder","RadioGroup","handleOrderDateChange","_this$props$orderForm3","renderOrderContent","GetMavoUserAppUsers","isDialogOpenOrder","MavoVehicleAuctionDialog","handleSaveAuction","auctionForm","checkIfEndDateIsBeforeStartDate","currentPrice","AddMavoVehicleAuction","closeDialogAuction","_this$props$auctionFo","_this$props$auctionFo2","_this$props$auctionFo3","_this$props$auctionFo4","isBefore","renderAuctionForm","_this$props$auctionFo5","_this$props$auctionFo6","_this$props$auctionFo7","startPrice","handleChangeAuction","disablePast","handleStartDateChange","handleEndDateChange","minDifference","renderAuctionContent","isDialogOpenAuction","MavoVehicles","provenanceEntities","selectedProvenanceEntities","selectedStartDate","selectedEndDate","isLoadingImportVehicles","isLoadingExport","isDeleteLoading","mavoVehiclesFilters","provenanceIds","GetMavoVehicles","GetMavoVehiclesFilters","provenanceList","makeSelectedVehicle","head","MuiCheckbox","colorSecondary","handleProvenanceEntitiesChange","isVehicleValid","RCI","handleDialogOpen","handleStockDialog","handleDeleteDialog","handleDeleteVehicle","DeleteMavoVehicle","handleExportMavoVehicles","ExportMavoVehicles","onRowDoubleClick","columnIndex","detail","importedTableOptions","handleImport","SaveImportedMavoVehicles","totalVehiclesNum","importedVehiclesNum","mavoVehicles","getImportedColumns","renderImportedResultBox","accept","handleAuctionStartDateChange","handleAuctionEndDateChange","renderMavoVehicleButtons","countryRo","renderSearchButtons","renderImportContent","mavoVehicleState","MavoGeneralInformationContainer","provenanceTypes","vehicleAttachmentTypes","addMavoVehicleAttachments","mavoVehicleAttachmentsGrouped","AddMavoVehicleAttachments","submitMavoVehicleData","GetMavoVehicleByVin","AddMavoVehicle","bodyTypeRCR","bodyTypeRCRId","onChangeProvenance","versionTypeList","provenanceTypeList","vehicleAttachmentTypeList","GetRCRFuelTypes","dvsProvenance","DVS","handleFabricationYearChange","colorRCR","colorRCRId","chassisNumberValidation","isDisabledVin","_code3","renderGeneralInformationForm","getOptionSelected","getVersionsOptions","maxDate","filteredVersionTypes","_this$state$bodyTypes","MavoVehicleOptionsContainer","onCheckBoxChange","onVehicleChange","rendeVehicleOptionForm","userSelect","PreviewAttachment","scale","nextImage","_this$props$loadMavoA","loadMavoAttachmentData","prevImage","_this$props$loadMavoA2","TransformWrapper","initialScale","minScale","maxScale","wheel","doubleClick","zoomIn","zoomOut","TransformComponent","objectFit","MavoAttachmentDataContainer","vehicleAttachmentList","GetMavoVehicleAttachments","GetMavoVehicleAttachment","finalResults","addWatermarkToImage","canvas","ctx","getContext","drawImage","font","fillStyle","textBaseline","translate","rotate","PI","fillText","restore","toBlob","watermarkedFile","MaxSizeKB","RemoveMavoVehicleAttachment","renderGalleryAttashment","_this$state$loadMavoA","maxNumberOfCharacters","MavoStatusDataContainer","bodyConditions","onRepairPriceChange","repairCostPrice","handleToggleIsChecked","fieldName2","renderBodySection","conditionInfo","renderMecanicsSection","handleITPValidateDateChange","renderInteriorAndAccesoriesSection","renderObservationsSection","observations","renderVehicleStatusForm","MavoVehicleDetailsForm","loadMavoVehicle","MavoStockDataEditContainer","NumberDecimalCurrencyFormatCustom","handleNirDateChange","renderVehicleDetails","_this$props$mavoVehic","_this$props$mavoVehic2","_this$props$mavoVehic3","_this$props$mavoVehic4","_this$props$mavoVehic5","renderStockDataForm","noticeNr","invoiceDate","invoiceNr","MavoVehicleStockDetailsForm","updateHasRightsValue","VehicleAuctionActionCreators","setMavoVehicleAuctionObject","RealTimeDate","showLastOffer","auctionStatus","remainingTime","setRemainingTime","isLastOffer","setIsLastOffer","updateRemainingTime","duration","TERMINATA","STOPATA","asMilliseconds","asMinutes","asDays","seconds","timeString","calculateRemainingTime","interval","setInterval","clearInterval","AddAuctionOfferDialog","selectedAuction","maxOffers","mavoVehicleAuctionOffer","mavoVehicleAuctionId","isOfferLoading","GetMavoAuction","minimumOffer","mavoVehicleAuctionOffers","addAuctionOffer","hasManualOffer","AddMavoAuctionOffer","goToUserAuctions","renderAuctionDetails","renderOfferContent","maximumOffer","mavoVehicleAuctionState","MavoVehicleDetailsViewForm","isOfferDialogOpen","openAddOfferDialog","closeAddOfferDialog","MavoVehiclesAuctions","auctionsList","isLoadingAuctions","loadAuctions","mavoVehiclesAuctionsFilters","GetAuctions","GetAuctionsFilters","makeSelectedAuction","auctions","auction","handleMinPriceChange","handleMaxPriceChange","closeOfferDialog","renderAuctionsButtons","MavoVehiclesUserAuctions","offerStatuses","selectedOfferStatus","loadUserAuctions","mavoVehiclesUserAuctionsFilters","GetUserAuctions","GetUserAuctionsFilters","getColor","userStatus","userOffer","handleOfferStatusChange","AUCTION_WINNER","AUCTION_LAST_BIDDER","AUCTION_LOSER","AUCTION_OFFER_EXCEEDED","MavoAuctionDetailsForm","showBidOfferTimeline","auctionCommentDetails","auctionDetails","_this$state$mavoVehic","_this$state$mavoVehic2","closeAuction","auctionId","CloseAuction","MavoVehiclesAdminAuctions","mavoAdminAuctionsFilters","GetAdminAuctions","GetAdminAuctionsFilters","handleExportAuctionOffers","ExportAuctionOffers","renderAdminAuctionsButtons","OrdersButtons","orderConfirmationLoading","cancelOrderLoading","orderRefuseLoading","printPaymentNoticeLoading","generateInvoiceLoading","rciCloseOrderLoading","handleOrderConfirm","_this$props$selectedO","_this$props$selectedO2","_this$props$selectedO3","CONFIRMAT","TRANSMIS","_this$props$selectedO4","mavoVehicleOrderId","ConfirmMavoVehicleOrder","handleCancelConfirmation","_this$props$selectedO5","_this$props$selectedO6","_this$props$selectedO7","CancelNoticeMavoVehicle","handleOrderRefuse","_this$props$selectedO8","_this$props$selectedO9","DeclineMavoVehicleOrder","handlePrintPaymentNotice","_this$props$selectedO10","_this$props$selectedO11","PrintMavoVehicleNotice","handleInvoiceGenerate","_this$props$selectedO12","_this$props$selectedO13","_this$props$selectedO14","GenerateInvoiceReport","existingValidInvoice","eInvoiceResponse","CreateEInvoice","invoiceId","invoiceTypeCode","statusMessage","handleRCICloseOrder","CloseMavoVehicleOrderRCI","orderButtonDisabled","rciButtonDisabled","MavoVehiclesOrders","ordersList","selectedAgentEntities","agentList","isLoadingOrders","mavoVehiclesOrdersFilters","agentIds","GetMavoOrders","makeSelectedOrder","handleAgentChange","orderFilters","GetMavoOrdersFilters","LanguageApiCard","processCountryFlag","LanguageLocalCard","showSnackbar","ImportLanguage","fetchLanguages","handleUpdate","UpdateLanguage","DeleteLanguage","checkIfLocalLanguageExists","languagesLocal","renderActionsButtons","buttonStyle","languageApi","PoEditor","fetchLanguagesList","languagesList","GetLanguagesList","languagesApi","_this$state$languages","MaintenanceCupiOptionalPartComponent","newMaintenanceCupiOptionalPart","maintenanceOptionalId","maintenanceCupiOptionalPartList","maintenanceOptionList","newMaintenanceCupiOptionalPartId","loadMaintenanceCupiOptionalPartList","MaintenanceCupiOptionalPartList","handleMaintenanceOptionChange","maintenanceOption","maintenanceOptionId","handleCupiCodeChange","saveMaintenanceCupiOptionalPart","AddMaintenanceCupiOptionalPart","UpdateMaintenanceCupiOptionalPart","newMaintenanceCupiOptionalPartPopup","deleteMaintenanceCupiOptionalPart","RemoveMaintenanceCupiOptionalPart","maintenanceCupiOptionalPartId","VoInvoiceHistory","invoicesList","invoiceNumber","isLoadingInvoices","selectedInvoice","isLoadingInvoice","isLoadingNotice","isLoadingBackToStock","isLoadingEInvoice","isLoadingResendInvoice","loadInvoices","mavoInvoicesFilters","GetMavoInvoices","makeSelectedInvoice","invoices","invoice","anafStatus","renderAgentMavoFilters","handleBackToStock","invoiceStatus","STORNO","STORNATA","_this$state$selectedI","mavoVehicleOrder","CancelInvoiceMavoVehicle","handlePrintNotice","PrintMavoVehicleNoticeBasedInvoiceId","handlePrintInvoice","isStorno","PrintInvoice","handlePrintEInvoice","resultPath","DownloadResults","byteArray","byteContent","char","Blob","handleSendToEInvoice","FACTURA_CORECTATA","handleExportInvoices","ExportInvoices","disabledResendInvoice","PENDING","VERIFICATION_SUCCESS","disabledPrintEInvoice","invoicesFilters","GetMavoInvoicesFilters","renderMavoInvoicesButtons","MavoUsersTab","MavoAppUsersAdmin","MavoEditUser","MavoUserDetails","AlcorParameterInfoList","newAlcorParameterInfo","alcorParameterId","alcorParameter","alcorParameters","alcorParametersInfoList","newAlcorParameterInfoId","loadAlcorParameterInfoList","GetAlcorParameterInfoList","handleAlcorParameterChange","saveAlcorParameterInfo","AddAlcorParameterInfo","UpdateAlcorParameterInfo","newAlcorParameterInfoPopup","deleteAlcorParameterInfo","RemoveAlcorParameterInfo","alcorParameterInfoId","UserManual","organizationList","organizationAttachments","isLoadingAttachments","GetOrganizationAdminAttachments","GetOrganizationAttachments","loadOrganizationAttachments","saveOrganizationAttachments","AddOrganizationAttachments","getDistinctOrganization","GetOrganizationAttachment","RemoveOrganizationAttachment","renderOrganizationAttachments","organizationAttachment","organizationAttachmentList","renderOrganizations","MavoHOOrganizations","GetMavoHOOrganizations","MavoEditOrganization","MavoOrganizationEntities","MavoOrganizationDetailsTab","MavoOrganizationAdmin","ModelCarClass","newModel","newModelId","loadModels","GetModelList","updateCarClassModel","UpdateCarClassModel","SmallCalendar","_selectedRange$start_","setModalOpen","currentRange","tileContent","appoimentsForDate","appointmentsInDay","dayAsString","getColorHueIntensity","newDate","setSeconds","onChangeDate","intensity","NewCaseAppointment","appAppointmentId","setSelectedItem","setWorkflows","newAppointmentCase","workflowServiceInstance","WorkflowService","organizationServiceInstance","OrganizationService","appReferentialServiceInstance","ReferentialService","orgCaseType","futureOrganizations","counter","_w$caseType","REPARATIE","Close","AppointmentFilterStateKeys","MenuProps","PaperProps","DropDownSelect","_filterList$index","optionValues","allValue","_futureFilterList","_futureFilterList3","_futureFilterList4","futureFilterList","_futureFilterList2","shift","initialFilters","appointmentIds","formatedDateList","formatedHourList","plateNumberList","appointmentStatuses","formattedDateCreationList","formattedHourCreationList","appAppointmentIds","AppointmentsTable","tableProps","setOpenModal","setAppointmentId","selectedfilters","setSelectedFilters","formatedHours","setFormatedHours","_state$app3","getAppointmentFilters","getAppointmentFiltersRequest","formattedHourCreationListToLocal","_moment$utc","_moment$utc$local","applyFilters","currentFilterList","_futureFilterList$app","_futureFilterList$app2","getFormatedHour","_filterList$appointme","_filters$appointmentS","statusNameMap","getStatusIds","appointmentCategoryTypeIds","_filterList$appointme2","_filters$appointmentC","appointmentCategoryTypeList","appointmentCategoryTypeNameMap","selectedAppointmentCategoryType","getAppointmentCategoryTypeIds","includedAdditionalData","enableNestedDataAccess","displayData","searchText","onFilterChange","customFilterDialogFooter","applyNewFilters","COLUMNS","uniqueArray","_appointment$vehicle","_appointment$vehicle2","_appointment$vehicle3","_appointment$vehicle4","_appointment$vehicle5","_appointment$vehicle6","_tableMeta$rowIndex$a","Visibility","Folder","CreateNewFolder","AppointmentBigCalendar","AgendaPage","setTabelProps","changeBigCalendar","dates","firstDate","startOfWeek","areDatesInSameWeek","_filters$formatedDate","formatRangeValue","AGENDA_SET_CATEGORY_TYPE","ContactForm","newFormData","phoneNo","AppointmentActionStatus","ConfirmAppointment","visible","setIsVisible","setComment","onClickButton","calendarText","buttonText","alignSelf","AppointmentClientSelectionDetails","clientDateSelections","getSelectedAppointment","changeStatus","openViewCalendar","setOpenViewCalendar","openRescheduleModal","setOpenRescheduleModal","openRescheduleCalendarModal","setOpenRescheduleCalendarModal","setSelectedHour","CustomToolbar","_value$translations","_value$translations$i","_value$translations2","_value$translations$i2","appointmentClientSelectionId","MAINTENANCE","REPAIR","handleApprove","setUTCHours","CONFIRMEDSERVICE","AppointmentDetails","contactFormData","setContactFormData","openCommentModal","setOpenCommentModal","_appointment$appointm3","_appointment$appointm4","_appointment$appointm5","_appointment$appointm6","_appointment$appointm7","_appointment$appointm8","_appointment$appointm9","_appointment$appointm10","username","appUsername","notchedOutline","_appointment$appointm2","hideCancelButton","appointmentClientSelections","AppointmentHistory","appointmentHistory","checkDate","dataA","dataB","appointmenObj","_appointmenObj$date","_appointmenObj$user","AppointmentTabDocumentsForm","appointmentAttachments","loadAppointmentDocumentsForm","GetAppointmentAttachments","renderAttachmentTypes","GetAppointmentAttachmentsArchive","AppointmentPage","useParams","setAppointment","setAppointmentHistory","appointmentHistoryList","appUserServiceInstance","AppUserService","futureAppointmentHistory","appointmentObj","desiredStatus","appointmentStatusId","loadAppointmentStatusHistory","appointmentStatusHistories","CarAutocomplete","cars","setCars","getCarList","getCarListRequest","mappedCars","carData","_carData$model","_carData$model2","_carData$model3","_carData$model4","addManual","car","_car$plateNumber","MileageInput","AddNewClientModal","setFormData","formError","setFormError","prevData","closeModal","validateForm","canContinue","handleSave","LinkButton","onClickMethod","FORM_JSON","tag","minLength","AddNewCarModal","_formData$modelList3","_formData$brandList4","setModelData","setSelectedModelData","futureBrandList","futureModelList","_formData$brandList3","_formData$brandList","_formData$modelList","_formData$brandList2","_formData$modelList2","futureFormData","_formData$modelList$i","_formData$modelList$i2","indexModel","indexBrand","AddNewAppointmentPage","setSelectedClient","setSelectedCar","carMileage","setCarMileage","setSelectedJobs","setJobDetails","addCarModal","setAddCarModal","setCanContinue","saveData","indexCategory","categoryItem","organization_id","appFirstName","appLastName","appEmail","appPhone","getRequestPayload","goBack","handleClientChange","handleCarChange","mileage","futureCanContinue","MaintenanceProducerComponent","newMaintenanceProducer","maintenanceProducerList","maintenancePackageList","newMaintenanceProducerId","loadMaintenanceProducerList","MaintenanceProducerList","packageItem","countryItem","handleMaintenancePackageChange","saveMaintenanceProducer","AddMaintenanceProducer","UpdateMaintenanceProducer","newMaintenanceProducerPopup","deleteMaintenanceProducer","RemoveMaintenanceProducer","maintenanceProducerId","DetailsValuation","hideValuationWizzard","_vehicleState$vehicle10","checkIfImageExists","startSellingDate","endSellingDate","getStandardOptionsColumns","handleKmNoTextChange","handleColorChange","_this$state$selectedV4","_this$state$selectedV5","_this$state$selectedV6","_this$state$selectedV7","_this$state$selectedV8","DetailsValuationContainer","showRequiredVinError","showSearchingLoader","goToValuationHistory","imgUrl","endIcon","ConnectedComponent","EvaluationPage","EvaluationReportFile","reportData","_carDetails$options","_carDetails$options2","carDetails","basicTableCellStyle","leftTableCellStyle","Table","TableBody","TableRow","TableCell","dateTimeString","year","formattedDate","formattedTime","formatDateTime","ListItemIcon","FiberManualRecord","primaryTypographyProps","EvaluationCarFile","valuationId","isOptionsLoading","setIsOptionsLoading","setCarDetails","reportRef","fetchCarDetails","carDetailsResponse","getCarValuationDetails","resetCarDetails","decodedOptions","getCarOptions","carOptionsResponse","getValuationVehicleOptions","valuationDate","extraOptionsDepreciationPrice","valuationSourceId","vehicleSourceId","downloadCarPdfRaport","html2canvas","useCORS","jsPDF","unit","worker","html2pdf","set","toPdf","pdf","totalPages","internal","getNumberOfPages","pageHeight","pageWidth","reportName","dateAndTime","formattedThisDateTime","toLocaleTimeString","setPage","setFontSize","EvaluationHistory","valuationHistory","setValuationHistory","historyValuationResponse","getValuationVehicleHistory","sortedHistory","rowsPerPageOptions","GTWSBilling","GetGTWSBillingReport","CountryBufferComponent","newCountryBuffer","newCountryBufferId","loadCountryBuffers","saveCountryBuffer","AddCountryBuffer","UpdateCountryBuffer","newCountryBufferPopup","deleteCountryBuffer","RemoveCountryBuffer","countryBufferId","NonStockPartBilling","GetNonStockPartBillingReport","OrderDetailsPage","GetOrderWithVehicle","ColorList","MavoVehiclesUserOrders","MavoVehiclesUserOrdersFilters","CountrySupportComponent","newCountrySupport","countrySupports","newCountrySupportId","loadCountrySupports","GetUserCountrySupports","saveCountrySupport","AddCountrySupport","UpdateCountrySupport","newCountrySupportPopup","deleteCountrySupport","RemoveCountrySupport","countrySupportId","GeneralNotification","companyId","DOMPurify","sanitize","notifySupport","GENERAL_NOTIFY_SUPPORT","SendGeneralNotifySupport","NewBillingReport","GetNewBillingReport","App","updateMomentLanguage","languageList","cz","pl","nl","sk","updateLocale","dow","doy","handleCloseMessage","reason","renderUserRoutes","Route","exact","UserOrganizationInterfaces","AppUser","MavoAppUsers","WorkflowAdmin","LoadLanguage","ThemeProvider","LeftSidebar","LoginCallBack","Snackbar","library","far","faSquare","faLifeRing","faCheckCircle","faTimesCircle","faDotCircle","faThumbsUp","faComments","faFolderOpen","faTrashAlt","faFileImage","faFileArchive","faCommentDots","faFolder","faKeyboard","faCalendarAlt","faEnvelope","faAddressCard","faMap","faObjectGroup","faImages","faUser","faLightbulb","faGem","faClock","faUserCircle","faQuestionCircle","faBuilding","faBell","faFileExcel","faFileAudio","faFileVideo","faFileWord","faFilePdf","faFileCode","faFileAlt","faEye","faChartBar","fab","faFacebook","faTwitter","faVuejs","faReact","faHtml5","faGoogle","faInstagram","faPinterest","faYoutube","faDiscord","fas","faAngleDoubleRight","faAngleDoubleLeft","faSmile","faHeart","faBatteryEmpty","faBatteryFull","faChevronRight","faSitemap","faPrint","faMapMarkedAlt","faTachometerAlt","faAlignCenter","faExternalLinkAlt","faShareSquare","faInfoCircle","faSync","faQuoteRight","faStarHalfAlt","faShapes","faCarBattery","faTable","faCubes","faPager","faCameraRetro","faBomb","faNetworkWired","faBusAlt","faBirthdayCake","faEyeDropper","faUnlockAlt","faDownload","faAward","faPlayCircle","faReply","faUpload","faBars","faEllipsisV","faSave","faSlidersH","faCaretRight","faChevronUp","faPlus","faLemon","faChevronLeft","faTimes","faChevronDown","faFilm","faSearch","faEllipsisH","faCog","faArrowsAltH","faPlusCircle","faAngleRight","faAngleUp","faAngleLeft","faAngleDown","faArrowUp","faArrowDown","faArrowRight","faArrowLeft","faStar","faSignOutAlt","faLink","createBrowserHistory","basename","store","appcontext","middleware","thunk","withExtraArgument","routerMiddleware","rootReducer","combineReducers","router","connectRouter","enhancers","windowIfDefined","__REDUX_DEVTOOLS_EXTENSION__","createStore","compose","applyMiddleware","configureStore","AppContext","ReactDOM","Provider","ConnectedRouter","CssBaseline","ScrollToTop","SnackbarProvider","maxSnack","transitionDuration","enter","exit","APP_SET_USER","APP_REMOVE_USER","APP_DISPLAY_MESSAGE","APP_SET_LANGUAGE","APP_LOAD_NOTIFICATION","APP_LOAD_TASKS","APP_LOAD_COMMENTS","APP_REMOVE_TASK","APP_REMOVE_COMMENT","APP_REMOVE_NEW_IN_CASE","APP_MARK_AS_VIEWED_NEW_IN_CASE","APP_REMOVE_NEW_IN_APPOINTMENT","APP_MARK_AS_VIEWED_NEW_IN_APPOINTMENT","APP_SET_NOTIFICATIONS_LOADERS","APP_SET_CURRENCY_RATES","APPUSER_USER_GET_LIST_START","APPUSER_USER_GET_LIST_END","APPUSER_USER_EDIT","RECEIVE_WEATHER_FORECASTS","THEME_SET_SIDEBAR_HOVER","THEME_SET_SIDEBAR_TOGGLE","THEME_SET_SIDEBAR_TOGGLE_MOBILE","CASE_SETTINGS_SET_CASE","CASE_SETTINGS_SET_LOADING","CASE_SETTINGS_SET_CASE_VEHICLE","CASE_SETTINGS_SET_CASE_EVENT","CASE_SETTINGS_SET_CASE_STATUS","CASE_SETTINGS_ADD_CASE_PARTNER","CASE_SETTINGS_SET_CASE_VALUATION","CASE_SETTINGS_SET_CLIENT_DATA","CASE_SETTINGS_SET_VEHICLE_DATA","CASE_SETTINGS_UPDATE_PARAMETERS","CASE_SETTINGS_UPDATE_TARIFF_VALUE","CASE_SETTINGS_SET_CASE_CALCULATION_HISTORY","CASE_SETTINGS_SET_CAR_IN_SERVICE","VEHICLE_SET_VEHICLE","VEHICLE_SET_VEHICLE_STATUS","VEHICLE_RESET_STATE","VEHICLE_SET_VEHICLE_LOADING","MAVO_VEHICLE_SET_VEHICLE","MAVO_VEHICLE_SET_VEHICLE_STATUS","VEHICLE_SET_VEHICLE_AUCTION","AGENDA_SET_SELECTED_APPOINTMENT","defaultChartColors","defaultChartPosition","h","titleOptions","bold","titlePosition","tabNameOptions","tabNamePosition","rectangletextOpts","wrap","cellOpt","sallerTableOptions","valign","autoPage","logos","dimension","recentAcquisitionLogos","recentAcquisitionOptions","salesChannelOptions","rectangleOptions","horizontalChartOptions","valAxisMinVal","catAxisLabelFontSize","valAxisHidden","catAxisLineShow","showValue","dataLabelColor","dataLabelFontSize","barGapWidthPct","chartColors","verticalCharOptions","barDir","chartColorsOpacity","barGrouping","verticalChar2Options","chartArea","plotArea","catAxisLabelFontFace","dataLabelFontFace","dataLabelPosition","showLegend","legendPos","circleChartOptions","dataBorder","firstSliceAng","dataLabelSize","dataLabelFormatCode","scatterChartOptions","lineSize","lineSmooth","catGridLine","catAxisLabelPos","pptData","pptx","addStockStructure","slide","addText","acquisitionMainCard","textOpts","salesTopSeller","_this$pptData$topSell","salesChannel","_this$pptData$salesCh","pos","addImage","addSlide","recentAcquisition","getFilterName","indexMake","getFiltersInfo","_filters$selectedOrga","firstPosition","textPostion","firstSlide","secondSlide","getDataForChart","formatData","dataChart","charData","infoChart","addChart","charts","BAR","valAxisMaxVal","tableFormat","customLabels","sectionTitle","firstCategoryChart","secondCategoryChart","PIE","addCarBox","firstCategoryName","secondCategoryName","LINE","writeFile","pptxgen","decimalPlaces","CustomRouterLink","flexGrow","RouterLink","SidebarMenuListItem","depth","Icon","redirectTo","openProp","needToken","setOpen","handleToggle","disableGutters","active","Collapse","in","activeClassName","defaultProps","SidebarMenuList","pages","propsContainer","reduceChildRoutes","rights","matchPath","SidebarMenu","__RouterContext","AuthService","UserManager","addUserSignedOut","signoutRedirect","resp","Log","logger","level","INFO","signinRedirect","signinSilent","id_token","expired","baseController","CRUDService","PostAsync","AddOrganizationType","organizationTyoe","types","typeList","minLevelId","GetGtOrganization","GetCurrentOrganization","organizationLevel","DeleteAsync","GetUserOrganizationFilters","organizationFilterType","organizationBankAccount","organizationInterface","organizationParameter","organizationCaseType","orgCaseTypeId","OrganizationCaseTypeStep","orgCaseTypeStepId","GetOrganizationForm","orgForm","UpdateOrganizationForm","GetOrganizationFormActions","orgFormId","AddOrganizationFormAction","organizationFormAction","RemoveOrganizationFormAction","FormData","GetFileAsync","GetUserOrganizationJobTypes","GetUserOrganizationMaintenancePackages","organizationOilViscosity","CupiCodeCorespondenceList","AddCupiCodeCorespondence","cupiCodeCorespondence","UpdateCupiCodeCorespondence","RemoveCupiCodeCorespondence","organizationInvoiceRange","GetCountryBuffer","RemoveSellerData","countrySupport","controller","itemController","baseAdminController","userUserRole","roleClaim","claimId","cache","referencial","GetUserWorkflow","GetWorkflowSettings","GetUserWorkflowParameters","workflowParameter","workflowOrgType","UpdateWorkflowOptimization","GetUserWorkflowTariffs","workflowTariff","GetWorkflowSteps","workflowSectionStepForm","workflowSectionStepCaseStatus","AddWorkflowSupplier","workflowSupplier","workflowReminder","workflowFormInterface","workflowPermission","workflowReport","workflowSectionStepFormAction","workflowSectionStepFormActions","workflowInterface","UpdateWorkflowCostCenter","workflowCostCenter","instance","baseURL","withCredentials","interceptors","use","headers","getItem","_error$response","services","GetHeaders","responseType","PostFileAsync","post","Post2WithCancelAsync","cancelToken","put","Accept","Authorization","translatorSrv","authSrv","weatherForecastsService","GetWeather","appUserAdminService","tarriffId","GetUserTariff","tarriffIds","idLIst","groupId","AddTariffValues","idsList","typeId","advertiserCodes","_cost$currency","invoiceRange","exchangeRate","financialParameterInfo","ChangeMavoVehicleStatus","mavoVoInvoiceFilters","alcorParameterInfo","mavoAuctionAdminFilters","ObtainResults","RefreshStatus","GetValuationVehicles","calculationFormId","valuationVehiclesInfoRequest","VehicleId","optionsId","calculationRequest","caseFilters","brandsRef","brands","GetCaseEntity","assignedUser","orgOwner","noticeId","UpdateCase","GetCarModels","casePayment","GetAllCaseStatusHistory","AddCaseStatusHistory","AddCasePartnerHistory","casePartnerHistory","GetCaseTariffValueHistory","caseTariffValueHistory","mostRecentCaseTariffValues","tariffValuesForTariffGroupType","mostRecentTariffValuesDate","AddCaseTariffValueHistory","AddCaseCalculationPart","caseCalculationPart","UpdateCaseCalculationPart","isUpdate","RemoveCaseCalculationPart","assigned","partNUmber","organizationIdParam","encodeURIComponent","partNumber","caseCalculationHistId","moveToTasks","addtask","GetCarExceptions","AddCarException","carException","UpdateCarException","RemoveCarException","CarExceptionSearch","classId","billingFilters","dgpciBillingFilters","PrcClaimService","CalculationDifferences","PrcClaimServiceCalculation","PrcClaimStatus","PrcClaimServiceAlternativeCalculation","maintenanceCupiOptionalPart","vehicleDetails","maintenanceProducer","appoitmentFilters","appointmentStatusHistId","gtWsBillingFilters","nonStockBillingFilters","GenerateSmartBillInvoice","SendAlternativeCalculation","isSupportTab","gtService","dashboardService","GetDashboardOriginalCalc","Filters","GetDashboardAlternativeCalc","GetDashboardVinIdentifiersNumber","GetDashboardGTEstimateNumber","GetDashboardPiecesOrdersNumber","GetDashboardTotalCases","GetDashboardCostsStructure","closedCases","openedCases","GetDashboardCostOptimization","GetDashboardCasesAnalsysChartCaseOwner","GetDashboardCasesAnalsysChartCaseType","GetDashboardCasesAnalsysChartCaseStatus","GetDashboardCostStructureChartCaseOwner","GetDashboardCostStructureChartCostType","GetDashboardCostStructureChartVehicleBrand","GetDashboardCostOptimizationChartCaseOwner","GetDashboardCostOptimizationChartCostType","GetDashboardCostOptimizationChartVehicleBrand","GetDashboardNewCases","GetDashboardUpdatedCases","GetDashboardWaitingCases","GetDashboardFilters","casePartnerIds","caseStatusIds","orderFilter","withParts","ordId","orderStatusChangeRequestDto","_orderStatusChangeReq","_orderStatusChangeReq2","orderPartsFilters","DeleteCasePartTobeOrdered","createContext","cookienName","transRO","transEN","safetyLanguages","transNL","transPL","localStorageLanguages","defaultLanguage","dependencies","pKey","pKey2","keyF","limit","defaulValue","languagesCopy","cookie","getCookie","cname","decodeURIComponent","setCookie","cvalue","domain","sidebarMenuContent","navItems","iOS","browser","navigator","userAgent","SwipeableDrawer","sx","anchor","onOpen","disableBackdropTransition","disableDiscovery","BackdropProps","invisible","disableSwipeToOpen","SidebarHeader","SidebarUserbox","wheelPropagation","iconsMap","BarChartIcon","CalendarTodayIcon","ChatIcon","CodeIcon","DashboardIcon","ErrorIcon","FolderIcon","GradeTwoTone","ListAltIcon","LockOpenIcon","MailIcon","PresentToAllIcon","PeopleIcon","PersonIcon","ReceiptIcon","SettingsIcon","ViewModuleIcon","HomeIcon","LocalShippingIcon","DirectionsCarIcon","AirportShuttleIcon","BuildIcon","CommuteOutlinedIcon","origin"],"mappings":"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,UAAWq9N,IACnCzrO,gBAACgrO,IAAK,CAACr8N,KAAK,iBAAiBP,UAAWjF,KACvC9O,KAAK0wO,oBAGR/qO,gBAAC0rO,KAAQ,CACPnlN,KAAMlsB,KAAKkG,MAAMjhB,YACjB+X,iBAAkB,KAClBivB,QAASjsB,KAAKwwO,sBAKxB,EAnUIV,GAIG1mO,YAAcC,IAkURC,oBAAS3H,GAA4BA,EAAMtJ,KAAKqD,IAAhD4N,CAAmE4E,YAAa4hO,K,WC5ZhFlmO,oBAZKsb,IAA2C,IAA1C,SAAEtR,EAAU5qB,UAAU,SAAEqd,IAAY6e,EASvD,OARA0L,qBAAU,KACRniB,OAAOgiK,SAAS,CACdx8I,IAAK,EACLpB,KAAM,EACN2kF,SAAU,UACV,GACD,CAACnxG,IAEGuN,GAAY,IAAI,I,wDC6HzB09N,KAAQ9pM,IACN+pM,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MAEFtC,KAAQ9pM,IACNqsM,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MAEFjD,KAAQ9pM,IACNgtM,MACAC,KACAC,KACAC,MACAC,KACAC,KACAC,KACAC,KACAC,MACAC,KACAC,KACAC,MACAC,KACAC,KACAC,KACAC,KACAC,MACAC,KACAC,MACAC,KACAC,KACAC,MACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MACAC,KACAC,KACAC,KACAC,KACAC,MACAC,KACAC,KACAC,KACAC,MACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,MACAC,KACAC,MAIF,MAAMlhO,GAAUob,SAASE,qB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","file":"static/js/main.6ec881b0.chunk.js","sourcesContent":["import Referentials from './Referentials.json';\r\n\r\nexport const RoleClaimsEnum = {\r\n Administrator: 'Administrator',\r\n Admin: 'ADMIN',\r\n AdminUsers: 'ADMIN_USERS',\r\n AdminValueList: 'ADMIN_VALUELISTS',\r\n AdminOrganization: 'ADMIN_ORGANIZATION',\r\n SAMPLEPAGEV3: 'SAMPLEPAGEV3',\r\n Agenda: 'AGENDA',\r\n Dashboard: 'DASHBOARD',\r\n Evaluation: 'EVALUATION',\r\n NewCase: 'NEW_CASE',\r\n Home: 'HOME',\r\n Case: 'CASE',\r\n Order: 'ORDER',\r\n Vehicle: 'VEHICLE',\r\n Settings: 'SETTINGS',\r\n ManagerExport: 'MANAGER_EXPORT',\r\n MavoVehicle: 'MAVO_VEHICLE',\r\n MavoAgent: 'MAVO_AGENT',\r\n MavoAdministrator: 'MAVO_ADMINISTRATOR',\r\n MavoContab: 'MAVO_CONTAB',\r\n AdminCountryOrganization: 'ADMIN_COUNTRY_ORGANIZATION',\r\n AdminService: 'ADMIN_SERVICE',\r\n VehicleSearch: 'VEHICLE_SEARCH',\r\n Supplier: 'SUPPLIER',\r\n AdminSupport: 'ADMIN_SUPPORT'\r\n};\r\n\r\nexport const OrganizationTypeCode = {\r\n GT: 'GT',\r\n SUPPLIER: 'FRZ',\r\n LEASING: 'LEA',\r\n REP: 'REP'\r\n};\r\n\r\nexport const OrganizationLevelTypeCode = {\r\n HO: 'HO',\r\n COST: 'COST'\r\n};\r\n\r\nexport const TariffCategoryCode = {\r\n REP: 'REP'\r\n};\r\n\r\nexport const WorkflowFormActionTypeCode = {\r\n STATUS_TRANSITION: 'TRAN_ST',\r\n CASE_ALLOCATION: 'CS_ALLOC',\r\n SEND_MAIL: 'SD_MAIL'\r\n};\r\n\r\nexport const CommentTypeCode = {\r\n PUBLIC: 'Public',\r\n PRIVATE: 'Private',\r\n INTERNAL: 'Internal',\r\n SUPPORT_REQUEST: 'SUPPORT_REQUEST',\r\n SUPPORT_RESPONSE: 'SUPPORT_RESPONSE'\r\n};\r\n\r\nexport const AttachmentTypeCode = {\r\n RCA: 'RCA',\r\n VIC: 'VIC',\r\n ID: 'ID',\r\n DL: 'DL',\r\n IMG: 'IMG',\r\n OTHER: 'OTHER',\r\n CONTRACT: 'CONTRACT',\r\n MAIN_VEHICLE_PHOTO: '104',\r\n MANUAL_UTILIZARE: 'MANUAL_UTILIZARE',\r\n WORK_ORDER: 'WORK_ORDER',\r\n HAND_OVER: 'HAND_OVER',\r\n INVOICE_REPAIR: 'INVOICE_REPAIR',\r\n LEFT_SIDE_FRONT: '104'\r\n};\r\n\r\nexport const VehicleAttachmentTypeCodeOrder = ['104','199','105','108','106', '102'];\r\n\r\nexport const PurchaseOriginCode = {\r\n NC: '01'\r\n};\r\n\r\nexport const ParametreCode = {\r\n TVA: 'TVA',\r\n CURRENCY: 'CUR'\r\n};\r\nexport const CalculationTypeCode = {\r\n ORG: 'ORG',\r\n ALT: 'ALT'\r\n};\r\nexport const CaseStatusTypeCode = {\r\n DRAFT: 'DRAFT'\r\n};\r\n\r\nexport const CarPartQualityTypeCode = {\r\n OE: 'OE',\r\n OEM: 'OEM',\r\n AM: 'AM'\r\n};\r\n\r\nexport const CarPartQualityRatings = [\r\n {\r\n CarPartQualityTypeCode: CarPartQualityTypeCode.OE,\r\n Rating: 3\r\n },\r\n {\r\n CarPartQualityTypeCode: CarPartQualityTypeCode.OEM,\r\n Rating: 2\r\n },\r\n {\r\n CarPartQualityTypeCode: CarPartQualityTypeCode.AM,\r\n Rating: 1\r\n }\r\n];\r\n\r\nexport const ReportTypeCode = {\r\n ESTIMATE_OE: 'DEVIZ_OE',\r\n RENAULT_OFFER: 'RENAULT_OFFER',\r\n RENAULT_INVOICE: 'RENAULT_INVOICE',\r\n RENAULT_CONTRACT: 'RENAULT_CONTRACT',\r\n ADVERT_REPORT: 'ADVERT_REPORT',\r\n DEVIZ_AUTOWORLD: 'DEVIZ_AUTOWORLD',\r\n DEVIZ_CLIENT: 'DEVIZ_CLIENT',\r\n RENAULT_AVIZ_PLATA: 'RENAULT_AVIZ_PLATA',\r\n RENAULT_FACTURA_LIVRARE: 'RENAULT_FACTURA_LIVRARE',\r\n DEVIZ_ALT: 'DEVIZ_ALT',\r\n FISA_EVALUARE_MASINA: 'FISA_EVALUARE_MASINA',\r\n WORK_ORDER: 'WORK_ORDER',\r\n HAND_OVER: 'HAND_OVER',\r\n DEVIZ_REPARATIE: 'DEVIZ_REPARATIE',\r\n DEVIZ_ALT_PRC: 'DEVIZ_ALT_PRC',\r\n DEVIZ_REP_AP: 'DEVIZ_REP_AP',\r\n DEVIZ_REP_OFERTA : 'DEVIZ_REP_OFERTA'\r\n};\r\n\r\nexport const InsuredTypeCode = {\r\n PF: 'PF',\r\n PJ: 'PJ'\r\n};\r\nexport const OrderStatusCode = {\r\n REP_DRAFT: 'REP_DRAFT',\r\n REP_LIVRATA: 'REP_LIVRATA',\r\n REP_PLASATA: 'REP_PLASATA',\r\n REP_ANULATA: 'REP_ANULATA',\r\n FZR_IN_LIVRARE: 'FZR_IN_LIVRARE',\r\n FZR_ACCEPTATA: 'FZR_ACCEPTATA',\r\n FZR_REFUZATA: 'FZR_REFUZATA',\r\n FZR_LIVRATA: 'FZR_LIVRATA',\r\n FZR_COMANDA_CONFIRMATA: 'FZR_COMANDA_CONFIRMATA',\r\n FZR_VERIFICARE_LA_FURNIZOR: 'FZR_VERIFICARE_LA_FURNIZOR',\r\n REP_VERIFICATA_DE_FURNIZOR: 'REP_VERIFICATA_DE_FURNIZOR',\r\n REP_REINTEROGATED_PARTS: 'REP_REINTEROGATED_PARTS'\r\n};\r\n\r\nexport const WorflowEditableReport = {\r\n FISA_EVALUARE_MASINA: 'FISA_EVALUARE_MASINA',\r\n PROCES_VERBAL_PREDARE_PRIMIRE: 'PROCES_VERBAL_PREDARE_PRIMIRE'\r\n};\r\nexport const OrderPartStatus = {\r\n UNAVAILABLE: 'NU_DISP',\r\n PROCESSED: 'PRC',\r\n PROCESSING: 'IN_PRC',\r\n UNORDERED: 'NEC',\r\n ORDERED: 'ACT',\r\n RETURNED: 'RET',\r\n OUT_OF_STOCK: 'LIPSA_STOC',\r\n MODIFICATA_DE_FURNIZOR: 'MODIFICATA_DE_FURNIZOR',\r\n PIESA_SELECTATA: 'PIESA_SELECTATA'\r\n};\r\n\r\nexport const CalculationSectionCodeEnum = {\r\n PART: 'PART',\r\n LABOR: 'LABOR',\r\n PAINT: 'PAINT',\r\n PAINT_LABOR: 'PAINT_LABOR'\r\n};\r\n\r\nexport const OrderStatusTypesCode = {\r\n FZR: 'FZR_',\r\n REP: 'REP_'\r\n};\r\n\r\nexport const OfferTypeCode = {\r\n SELL: 'SELL',\r\n BUY: 'BUY'\r\n};\r\n\r\nexport const CurrencyCode = {\r\n EUR: 'EUR',\r\n RON: 'RON',\r\n USD: 'USD',\r\n CHF: 'CHF'\r\n};\r\n\r\nexport const ReferentialCode = {\r\n OrganizationType: 'OrganizationType',\r\n OrganizationLevel: 'OrganizationLevel',\r\n CompanyParameter: 'CompanyParameter',\r\n Currency: 'Currency',\r\n Country: 'Country',\r\n Region: 'Region',\r\n City: 'City',\r\n TariffCategory: 'TariffCategory',\r\n TariffTypeGroup: 'TariffTypeGroup',\r\n Insurer: 'Insurer',\r\n CarBrands: 'CarBrands',\r\n CaseType: 'CaseType',\r\n NewCaseSteps: 'NewCaseSteps',\r\n OptimizationType: 'OptimizationType',\r\n Section: 'Section',\r\n AttachmentType: 'AttachmentType',\r\n CaseStatus: 'CaseStatus',\r\n WorkflowSteps: 'WorkflowStep',\r\n EmailRecipientType: 'EmailRecipientType',\r\n CarPartCategory: 'CarPartCategory',\r\n Report: 'Report',\r\n ActionType: 'ActionType',\r\n UserRole: 'UserRole',\r\n CalculationType: 'CalculationType',\r\n CarCategory: 'CarCategory',\r\n CarClass: 'CarClass',\r\n PolicyType: 'PolicyType',\r\n PersonType: 'PersonType',\r\n SolutionValue: 'SolutionValue',\r\n OrderStatus: 'OrderStatus',\r\n OrderPartStatus: 'OrderPartStatus',\r\n FilterType: 'FilterType',\r\n PaymentType: 'PaymentType',\r\n PaymentRequestNo: 'PaymentRequestNo',\r\n VehicleMake: 'Make',\r\n BodyType: 'BodyType',\r\n WheelsType: 'WheelsType',\r\n TractionType: 'TractionType',\r\n TransmissionType: 'TransmissionType',\r\n FuelType: 'FuelType',\r\n TiresType: 'TiresType',\r\n PaintType: 'PaintType',\r\n VehicleCondition: 'VehicleCondition',\r\n PollutionNorm: 'PollutionNorm',\r\n GuaranteeType: 'GuaranteeType',\r\n OfferTye: 'OfferType',\r\n AdvertRegion: 'AdvertRegion',\r\n AdvertCity: 'AdvertCity',\r\n QCItemCategory: 'QCItemCategory',\r\n QCItem: 'QCItem',\r\n VehicleStatus: 'VehicleStatus',\r\n Advertiser: 'Advertiser',\r\n Model: 'Model',\r\n Color: 'Color',\r\n AdvertDistrict: 'AdvertDistrict',\r\n Bank: 'Bank',\r\n CountryOrigin: 'CountryOrigin',\r\n Version: 'Version',\r\n BodyConditionType: 'BodyConditionType',\r\n WheelConditionType: 'WheelConditionType',\r\n InvoiceRangeType: 'InvoiceRangeType',\r\n InvoiceRangeStatus: 'InvoiceRangeStatus',\r\n FinancialParameter: 'FinancialParameter',\r\n VehicleType: 'VehicleType',\r\n MvoDvBattyp: 'MvoDvBattyp',\r\n PurchaseOrigin: 'PurchaseOrigin',\r\n SaleChannel: 'SaleChannel',\r\n MaintenanceOptionalPartName: 'MaintenanceOptionalPartName',\r\n Refurbished: 'Refurbished',\r\n VehicleAttachmentType: 'VehicleAttachmentType',\r\n AlcorParameter: 'AlcorParameter',\r\n JobType: 'JobType',\r\n MaintenanceOption: 'MaintenanceOption',\r\n MaintenancePackage: 'MaintenancePackage',\r\n OilViscosity: 'OilViscosity',\r\n CostCenter: 'CostCenter',\r\n AppointmentCategoryType: 'AppointmentCategoryType',\r\n ColorRCR: 'ColorRCR',\r\n BodyTypeRCR: 'BodyTypeRCR',\r\n EInvoiceStatus: 'EInvoiceStatus',\r\n BodyCondition: 'BodyCondition',\r\n InterventionType: 'InterventionType'\r\n};\r\n\r\nexport const ImportAlternativePartsFileHeader = {\r\n H1: 'COD_ORIGINALA',\r\n H2: 'COD_ALTERNATIVA',\r\n H3: 'NUME_ALTERNATIVA',\r\n H4: 'PRET_UNITAR_ALTERNATIVA',\r\n H5: 'CALITATE_ALTERNATIVA',\r\n H6: 'PRODUCATOR',\r\n H7: 'FURNIZOR',\r\n H8: 'TIMP_LIVRARE',\r\n H9: 'CANTITATE_DISPONIBILA',\r\n H10: 'LOCATIE_STOC',\r\n H11: 'OBSERVATII'\r\n};\r\n\r\nexport const ImportOriginalPartsFileHeader = {\r\n H1: 'COD_ORIGINALA',\r\n H2: 'NUME_ORIGINALA',\r\n H3: 'PRET_UNITAR_ORIGINALA',\r\n H4: 'CALITATE_ORIGINALA',\r\n H5: 'UNITATI_ORIGINALA'\r\n};\r\n\r\nexport const ImportCalculationOriginalPartsFileHeader = {\r\n H1: 'COD',\r\n H2: 'NUME',\r\n H3: 'PRET_UNITAR',\r\n H4: 'CALITATE',\r\n H5: 'UNITATI',\r\n H6: 'DISCOUNT',\r\n H7: 'FURNIZOR',\r\n H8: 'TIMP_LIVRARE',\r\n H9: 'PRODUCATOR',\r\n H10: 'OBSERVATII'\r\n};\r\n\r\nexport const ValuationLaguageId = {\r\n en: 19,\r\n ro: 55\r\n};\r\n\r\nexport class Constants {\r\n public static stsAuthority = process.env.REACT_APP_IDENTITY_URL;\r\n public static clientId = 'ClaimBoxSPA';\r\n public static clientRoot = process.env.REACT_APP_APP_ROOT;\r\n public static clientScope =\r\n 'openid profile ApiGateway TariffService OrganizationService CaseService WorkflowService roles AdministratorClientId_api VehicleService';\r\n public static apiRoot = process.env.REACT_APP_API_ENDPOINT;\r\n}\r\n\r\nexport const ClientSettings = {\r\n authority: Constants.stsAuthority,\r\n client_id: Constants.clientId,\r\n redirect_uri: `${Constants.clientRoot}callback`,\r\n silent_redirect_uri: `${Constants.clientRoot}renewcallback`,\r\n post_logout_redirect_uri: `${Constants.clientRoot}`,\r\n response_type: 'code',\r\n scope: Constants.clientScope,\r\n automaticSilentRenew: true\r\n};\r\n\r\nexport const CarDetailsSettings = {\r\n numberOfKm: 1000000\r\n};\r\n\r\nexport const VehicleAdvertOperationTypes = {\r\n publish: 'Publish',\r\n delete: 'Delete'\r\n};\r\n\r\nexport const RefConstants = {\r\n vehicleMakeRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.VehicleMake\r\n ),\r\n bodyTypeRef: Referentials.referential.find((item) => item.code === ReferentialCode.BodyType),\r\n wheelsTypeRef: Referentials.referential.find((item) => item.code === ReferentialCode.WheelsType),\r\n tractionTypeRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.TractionType\r\n ),\r\n transmissionTypeRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.TransmissionType\r\n ),\r\n fuelTypeRef: Referentials.referential.find((item) => item.code === ReferentialCode.FuelType),\r\n tiresTypeRef: Referentials.referential.find((item) => item.code === ReferentialCode.TiresType),\r\n paintTypeRef: Referentials.referential.find((item) => item.code === ReferentialCode.PaintType),\r\n vehicleConditionRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.VehicleCondition\r\n ),\r\n pollutionNormRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.PollutionNorm\r\n ),\r\n modelRef: Referentials.referential.find((item) => item.code === ReferentialCode.Model),\r\n colorRef: Referentials.referential.find((item) => item.code === ReferentialCode.Color),\r\n personTypeRef: Referentials.referential.find((item) => item.code === ReferentialCode.PersonType),\r\n attachementTypeRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.AttachmentType\r\n ),\r\n regionRef: Referentials.referential.find((item) => item.code === ReferentialCode.AdvertRegion),\r\n cityRef: Referentials.referential.find((item) => item.code === ReferentialCode.AdvertCity),\r\n advertiserRef: Referentials.referential.find((item) => item.code === ReferentialCode.Advertiser),\r\n districtRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.AdvertDistrict\r\n ),\r\n bankRef: Referentials.referential.find((item) => item.code === ReferentialCode.Bank),\r\n countryOriginRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CountryOrigin\r\n ),\r\n invoiceRangeTypeRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.InvoiceRangeType\r\n ),\r\n invoiceRangeStatusRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.InvoiceRangeStatus\r\n ),\r\n currencyRef: Referentials.referential.find((item) => item.code === ReferentialCode.Currency),\r\n financialParameterRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.FinancialParameter\r\n ),\r\n vehicleTypeRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.VehicleType\r\n ),\r\n mvoDvBattypRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.MvoDvBattyp\r\n ),\r\n refurbishedRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.Refurbished\r\n ),\r\n versionRef: Referentials.referential.find((item) => item.code === ReferentialCode.Version),\r\n vehicleAttachmentTypeRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.VehicleAttachmentType\r\n ),\r\n alcorParameterRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.AlcorParameter\r\n ),\r\n guaranteeTypeRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.GuaranteeType\r\n ),\r\n colorRCRRef: Referentials.referential.find((item) => item.code === ReferentialCode.ColorRCR),\r\n bodyTypeRCRRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.BodyTypeRCR\r\n ),\r\n bodyConditionRef: Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.BodyCondition\r\n ),\r\n eInvoiceRef: Referentials.referential.find(\r\n (item) => item.code == ReferentialCode.EInvoiceStatus\r\n )\r\n};\r\n\r\nexport enum VehicleStatusCodeEnum {\r\n Available = 1,\r\n Sold = 2,\r\n Repair = 3,\r\n Reserved = 4,\r\n Aquisition = 5,\r\n AcquisitionRefused = 6,\r\n ForSale = 7,\r\n LICITATIE = 8,\r\n INDISPONIBIL = 9,\r\n COMANDA = 10,\r\n AVIZ = 11,\r\n FACTURAT = 12,\r\n REZERVAT = 13\r\n}\r\n\r\nexport enum CaseStatusCodeEnum {\r\n Closed = 2,\r\n OF_VANZ = 47,\r\n OE = 'OE',\r\n AM = 'AM',\r\n COM_PI = 'COM_PI',\r\n PRELUAT_SERVICE = 'PRELUAT_SERVICE',\r\n SOLICITARE_APROBARE_DEVIZ = 'SOLICITARE_APROBARE_DEVIZ',\r\n REFUZAT_PRC = 'REFUZAT_PRC',\r\n COMANDA_ATM = 'COMANDA_ATM',\r\n INITIATED = 'INITIATED',\r\n IN_ANALIZA = 'IN_ANALIZA',\r\n WORK_ORDER_GENERATED = 'WORK_ORDER_GENERATED',\r\n ACTUALIZARE_DEVIZ = 'ACTUALIZARE_DEVIZ',\r\n PROGRAMARE_REPARATIE_CONFIRMATA = 'PROGRAMARE_REPARATIE_CONFIRMATA',\r\n SOLICITA_MODIFICARE_DEVIZ = 'SOLICITA_MODIFICARE_DEVIZ',\r\n ACTUALIZEAZA_CALCULATIE = 'ACTUALIZEAZA_CALCULATIE',\r\n WAITING_FOR_BILLING_DATA = 'WAITING_FOR_BILLING_DATA',\r\n CAR_LEAVE_WORKSHOP = 'CAR_LEAVE_WORKSHOP',\r\n COMANDA_PIESE_NON_STOC = 'COMANDA_PIESE_NON_STOC',\r\n SUPLIMENTARE_PIESE = 'SUPLIMENTARE_PIESE',\r\n pse_com\t= 'pse_com',\r\n INTEROGARE_PIESE_NON_STOC = 'INTEROGARE_PIESE_NON_STOC'\r\n}\r\n\r\nexport enum GuaranteeTypeEnum {\r\n FG = 'FG'\r\n}\r\n\r\nexport enum CaseTypeCode {\r\n AQUISITION = 'ACHIZITIE',\r\n SALE = 'VANZARE',\r\n CLAIM = 'CLAIM',\r\n REP = 'REP',\r\n OFFER = 'OFFER',\r\n Avizare = 'Avizare',\r\n OMV = 'OMV'\r\n}\r\n\r\nexport enum CaseStatusCode {\r\n DATE_CLIENT = 'DATE_CLIENT'\r\n}\r\n\r\nexport const allowedVehicleStatuses = new Map([\r\n [VehicleStatusCodeEnum.Aquisition, []],\r\n [VehicleStatusCodeEnum.Available, [VehicleStatusCodeEnum.Repair, VehicleStatusCodeEnum.Reserved]],\r\n [VehicleStatusCodeEnum.ForSale, []],\r\n [VehicleStatusCodeEnum.Repair, [VehicleStatusCodeEnum.Available]],\r\n [VehicleStatusCodeEnum.Reserved, [VehicleStatusCodeEnum.Available]],\r\n [VehicleStatusCodeEnum.Sold, []],\r\n [VehicleStatusCodeEnum.AcquisitionRefused, []]\r\n]);\r\n\r\nexport enum SupplierApiType {\r\n GetParts = 1,\r\n Comenzi = 2\r\n}\r\n\r\nexport type Descripted = {\r\n [K in keyof T]: {\r\n readonly id: T[K];\r\n readonly description: string;\r\n };\r\n}[keyof T];\r\n\r\nexport function enumToDescriptedArray(enumeration: T): Descripted[] {\r\n return (Object.keys(enumeration) as Array)\r\n .filter((key) => isNaN(Number(key)))\r\n .filter((key) => typeof enumeration[key] === 'number' || typeof enumeration[key] === 'string')\r\n .map((key) => ({\r\n id: enumeration[key],\r\n description: String(key)\r\n }));\r\n}\r\n\r\nexport const AlternativeCode = {\r\n TAXAMEDIU: 'TAXAMEDIU'\r\n};\r\n\r\nexport const SupplierCode = {\r\n AUGSBURG: 'Augsburg',\r\n AUTONET: 'Autonet',\r\n ADTOTAL: 'AD Autototal',\r\n MATEROM: 'Materom',\r\n CONEX: 'Conex',\r\n EUROEST: 'Euroest',\r\n LKQ: 'LKQ',\r\n NESTE: 'Neste'\r\n};\r\n\r\nexport const AdditionalInfoCode = {\r\n PRODUS_NU_POATE_FI_RETURNAT: 'Acest produs nu poate fi returnat'\r\n};\r\n\r\nexport const EventDetailsFieldsCode = {\r\n CASENUMBER: 'caseNumber'\r\n};\r\n\r\nexport enum UploadSizeLimit {\r\n SizeLimit = 524288000,\r\n RenaultSelectionPhotoSizeLimit = 5242880\r\n}\r\n\r\nexport enum GTErrorCode {\r\n THE_VIN_NUMBER_SENT_DOES_NOT_DECODE_ANY_MODEL = '9'\r\n}\r\n\r\nexport enum LanguageCode {\r\n RO = 'ro',\r\n EN = 'en',\r\n CZ = 'cz'\r\n}\r\n\r\nexport enum FuelTypeEnum {\r\n E = 'E'\r\n}\r\n\r\nexport const allowedMavoVehicleStatuses = new Map([\r\n [\r\n VehicleStatusCodeEnum.INDISPONIBIL,\r\n [\r\n VehicleStatusCodeEnum.LICITATIE,\r\n VehicleStatusCodeEnum.COMANDA,\r\n VehicleStatusCodeEnum.AVIZ,\r\n VehicleStatusCodeEnum.FACTURAT\r\n ]\r\n ],\r\n [\r\n VehicleStatusCodeEnum.LICITATIE,\r\n [\r\n VehicleStatusCodeEnum.INDISPONIBIL,\r\n VehicleStatusCodeEnum.COMANDA,\r\n VehicleStatusCodeEnum.AVIZ,\r\n VehicleStatusCodeEnum.FACTURAT\r\n ]\r\n ],\r\n [\r\n VehicleStatusCodeEnum.COMANDA,\r\n [\r\n VehicleStatusCodeEnum.INDISPONIBIL,\r\n VehicleStatusCodeEnum.LICITATIE,\r\n VehicleStatusCodeEnum.AVIZ,\r\n VehicleStatusCodeEnum.FACTURAT\r\n ]\r\n ],\r\n [\r\n VehicleStatusCodeEnum.AVIZ,\r\n [\r\n VehicleStatusCodeEnum.INDISPONIBIL,\r\n VehicleStatusCodeEnum.LICITATIE,\r\n VehicleStatusCodeEnum.COMANDA,\r\n VehicleStatusCodeEnum.FACTURAT\r\n ]\r\n ],\r\n [\r\n VehicleStatusCodeEnum.FACTURAT,\r\n [\r\n VehicleStatusCodeEnum.INDISPONIBIL,\r\n VehicleStatusCodeEnum.LICITATIE,\r\n VehicleStatusCodeEnum.COMANDA,\r\n VehicleStatusCodeEnum.AVIZ\r\n ]\r\n ]\r\n]);\r\n\r\nexport enum MavoVehicleStatusCodeEnum {\r\n INDISPONIBIL = 'INDISPONIBIL',\r\n LICITATIE = 'LICITATIE',\r\n COMANDA = 'COMANDA',\r\n AVIZ = 'AVIZ',\r\n FACTURAT = 'FACTURAT'\r\n}\r\n\r\nexport enum MavoVehicleProvenanceType {\r\n RCI = 'RCI',\r\n DVS = 'DVS'\r\n}\r\n\r\nexport const mavoVehiclesForNirEnabled: string[] = [MavoVehicleStatusCodeEnum.INDISPONIBIL];\r\nexport const mavoVehicleStatuses = [\r\n VehicleStatusCodeEnum.INDISPONIBIL,\r\n VehicleStatusCodeEnum.LICITATIE,\r\n VehicleStatusCodeEnum.COMANDA,\r\n VehicleStatusCodeEnum.AVIZ,\r\n VehicleStatusCodeEnum.FACTURAT\r\n];\r\n\r\nexport enum MavoVehicelAttachementTypeCodeEnum {\r\n IMG = 'IMG',\r\n OTHER = 'OTHER'\r\n}\r\n\r\nexport enum MavoImageUploadSizeLimit {\r\n MaxSizeKB = 1024\r\n}\r\n\r\nexport const disabledNewMavoVehicleStatuses: string[] = [\r\n MavoVehicleStatusCodeEnum.LICITATIE,\r\n MavoVehicleStatusCodeEnum.COMANDA,\r\n MavoVehicleStatusCodeEnum.AVIZ,\r\n MavoVehicleStatusCodeEnum.FACTURAT\r\n];\r\nexport const enabledVinMavoVehicleStatuses: string[] = [MavoVehicleStatusCodeEnum.INDISPONIBIL];\r\nexport const disabledMavoVehicleStatuses: string[] = [\r\n MavoVehicleStatusCodeEnum.COMANDA,\r\n MavoVehicleStatusCodeEnum.AVIZ,\r\n MavoVehicleStatusCodeEnum.FACTURAT\r\n];\r\n\r\nexport enum MakeExceptionEnum {\r\n FIAT = 'FIAT',\r\n ALFA = 'ALFA ROMEO',\r\n LANCIA = 'LANCIA'\r\n}\r\n\r\nexport const MakeException = [\r\n MakeExceptionEnum.FIAT.toString(),\r\n MakeExceptionEnum.ALFA.toString(),\r\n MakeExceptionEnum.LANCIA.toString()\r\n];\r\nexport const RenaultGoldList = ['06', '05', '04'];\r\n\r\nexport enum MavoPersonTypeEnum {\r\n PF = 2,\r\n PJ = 1\r\n}\r\n\r\nexport enum MavoOrderStatusCodeEnum {\r\n TRANSMIS = 'TRANSMIS',\r\n CONFIRMAT = 'CONFIRMAT'\r\n}\r\n\r\nexport enum MavoVehicleInvoiceStatusEnum {\r\n VALIDA = 'VALIDA',\r\n STORNO = 'STORNO',\r\n STORNATA = 'STORNATA'\r\n}\r\n\r\nexport const OriginalPartShortNumberException = ['G0600', 'G1401', 'G2205', 'HG060'];\r\n\r\nexport enum AppointmentStatusCodeEnum {\r\n CONFIRMED = 'CONFIRMED',\r\n INITIATA = 'INITIATA',\r\n RESCHEDULED = 'RESCHEDULED',\r\n CANCELED = 'CANCELED'\r\n}\r\n\r\nexport enum InvoiceRangeCodeEnum {\r\n FACTURA_REPARATIE = 'FACTURA_REPARATIE',\r\n FACTURA_SERVICE = 'FACTURA_SERVICE',\r\n AVIZ = 'AVIZ',\r\n FACTURA = 'FACTURA'\r\n}\r\n\r\nexport const renaultMakeCodes = ['RENAULT', 'DACIA'];\r\n\r\nexport enum TariffCategoryCodeEnum {\r\n ADAOS = 'ADAOS',\r\n ADAOS_ASIGURATOR = 'ADAOS_ASIGURATOR',\r\n ADAOS_ALT_PART = 'ADAOS_ALT_PART',\r\n DISC = 'DISC',\r\n MAN = 'MAN'\r\n}\r\n\r\nexport enum AdvertOptionCodeEnum {\r\n MAVO = 'MAVO',\r\n REN = 'REN'\r\n}\r\n\r\nexport enum TariffTypeGroupCodeEnum {\r\n ADD_PARTS = 'ADD_PARTS',\r\n PSE_ALT = 'PSE_ALT'\r\n}\r\n\r\nexport enum RoleCodeEnum {\r\n ADMIN_COUNTRY_ORGANIZATION = 'ADMIN_COUNTRY_ORGANIZATION'\r\n}\r\n\r\nexport enum OwnStockCodeEnum {\r\n OWN_STOCK = 'STOC PROPRIU'\r\n}\r\n\r\nexport const includedTariffTypeGroupCodes = ['MAN', 'DISC'];\r\n\r\nexport enum CaseTypeCodeEnum {\r\n REPARATIE = 'REPARATIE',\r\n MAINTENANCE = 'REP'\r\n}\r\n\r\nexport enum CountryCodeEnum {\r\n CZ = 'CZ',\r\n RO = 'RO'\r\n}\r\n\r\nexport enum FilterTypeCodeEnum {\r\n DS = 'DS'\r\n}\r\n\r\nexport enum AppointmentCategoryTypeCodeEnum {\r\n MAINTENANCE = 'MAINTENANCE',\r\n REPAIR = 'REPAIR'\r\n}\r\n\r\n// List of codes to exclude\r\nexport const excludedCodes = [\r\n CaseStatusCodeEnum.OE.toString(),\r\n CaseStatusCodeEnum.AM.toString(),\r\n CaseStatusCodeEnum.SOLICITA_MODIFICARE_DEVIZ.toString(),\r\n CaseStatusCodeEnum.IN_ANALIZA.toString(),\r\n CaseStatusCodeEnum.COM_PI.toString(),\r\n CaseStatusCodeEnum.ACTUALIZEAZA_CALCULATIE.toString()\r\n];\r\n\r\nexport enum OrganizationCaseTypeStepCode {\r\n DOS_NOU = 'DOS_NOU'\r\n}\r\n\r\nexport const aquisitionWorkflowSectionSteps = [\r\n 'VALIDARE OFERTA',\r\n 'RED_DOSAR'\r\n];\r\n\r\nexport const aquisitionSteps = [\r\n 'OFERTA ACCEPTATA'\r\n];\r\n\r\nexport const smartBillInvoiceWorkflowSectionSteps = [\r\n 'S_TEP'\r\n];\r\n\r\nexport const excludedAdvertisers = ['REN', 'MAVO'];\r\n\r\nexport enum AppointmentPaymentStatus {\r\n COMPLETED = 'completed'\r\n}\r\n\r\nexport enum OrderNotificationTemplateEnum {\r\n VERIFIED_BY_SUPPLIER = 'VERIFIED_BY_SUPPLIER'\r\n}\r\n\r\nexport const hideButtonsSectionSteps = [\r\n 'CAZ_INCHIS'\r\n];\r\n\r\nexport const nontStockRoles = ['VD']\r\n\r\nexport const nonStockCheckedOERoles = ['USER ATM']\r\n\r\nexport enum MavoAuctionStatusEnum {\r\n TERMINATA = 'TERMINATA',\r\n STOPATA = 'STOPATA'\r\n}\r\n\r\nexport enum MavoLanguageTranslationEnum {\r\n RO = 'ro'\r\n}\r\n\r\nexport enum EInvoiceStatusEnum {\r\n VERIFICATION_SUCCESS = 'VERIFICATION_SUCCESS',\r\n VERIFICATION_FAILED = 'VERIFICATION_FAILED',\r\n ERROR = 'ERROR',\r\n PENDING = 'PENDING'\r\n}\r\n\r\nexport enum InvoiceTypeCodeEnum {\r\n FACTURA = \"380\",\r\n FACTURA_CORECTATA = \"384\"\r\n}\r\n\r\nexport enum AuctionOfferStatusEnum {\r\n AUCTION_WINNER = 'AUCTION_WINNER',\r\n AUCTION_LOSER = 'AUCTION_LOSER',\r\n AUCTION_OFFER_EXCEEDED = 'AUCTION_OFFER_EXCEEDED',\r\n AUCTION_LAST_BIDDER = 'AUCTION_LAST_BIDDER'\r\n}\r\n\r\nexport enum NotifySupportTemplateEnum {\r\n CASE_NOTIFY_SUPPORT = 'CASE_NOTIFY_SUPPORT',\r\n CASE_SUPPORT_RESPONSE = 'CASE_SUPPORT_RESPONSE',\r\n GENERAL_NOTIFY_SUPPORT = 'GENERAL_NOTIFY_SUPPORT'\r\n}","import { Action, Reducer } from 'redux';\r\nimport { WeatherForecastsAction } from '../actions/WeatherForecasts';\r\nimport { WeatherForecast } from '../../interfaces/WeatherForecast';\r\n\r\nexport interface WeatherForecastsState {\r\n isLoading: boolean;\r\n startDateIndex?: number;\r\n forecasts: WeatherForecast[];\r\n}\r\n\r\nconst initialState: WeatherForecastsState = {\r\n forecasts: [],\r\n isLoading: false\r\n};\r\n\r\nexport const WeatherForecastsReducer: Reducer = (\r\n state: WeatherForecastsState | undefined,\r\n incomingAction: Action\r\n): WeatherForecastsState => {\r\n if (state === undefined) {\r\n return initialState;\r\n }\r\n\r\n const action = incomingAction as WeatherForecastsAction;\r\n switch (action.type) {\r\n case 'REQUEST_WEATHER_FORECASTS':\r\n return {\r\n startDateIndex: action.startDateIndex,\r\n forecasts: state.forecasts,\r\n isLoading: true\r\n };\r\n case 'RECEIVE_WEATHER_FORECASTS':\r\n if (action.startDateIndex === state.startDateIndex) {\r\n return {\r\n startDateIndex: action.startDateIndex,\r\n forecasts: action.forecasts,\r\n isLoading: false\r\n };\r\n }\r\n break;\r\n }\r\n\r\n return state;\r\n};\r\n","import { Action, Reducer } from 'redux';\r\nimport { User } from 'oidc-client';\r\nimport { AppAction } from '../actions/App';\r\nimport * as ActionTypes from '../actions/ActionTypes';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { Appointment, Case, CaseComment } from '../../interfaces/Case';\r\nimport { CurrencyRate } from '../../interfaces/Vehicle';\r\n\r\nexport interface AppState {\r\n user: User | null;\r\n appUser: AppUser | null;\r\n showMessage: boolean;\r\n language: string;\r\n dateFormat: string;\r\n longDateFormat: string;\r\n tasks: Case[];\r\n comments: CaseComment[];\r\n newInCases: Case[];\r\n isCommentsLoading: boolean;\r\n isTasksLoading: boolean;\r\n isNewInCasesLoading: boolean;\r\n currencyRates: CurrencyRate[];\r\n newInAppointments: Appointment[];\r\n isNewInAppointmentsLoading: boolean;\r\n}\r\n\r\nconst initialState: AppState = {\r\n user: null,\r\n appUser: null,\r\n showMessage: false,\r\n language: '',\r\n dateFormat: '',\r\n longDateFormat: '',\r\n tasks: [],\r\n comments: [],\r\n newInCases: [],\r\n isCommentsLoading: false,\r\n isTasksLoading: false,\r\n isNewInCasesLoading: false,\r\n currencyRates: [],\r\n newInAppointments: [],\r\n isNewInAppointmentsLoading: false\r\n};\r\n\r\nexport const AppReducer: Reducer = (\r\n state: AppState | undefined,\r\n incomingAction: Action\r\n): AppState | undefined => {\r\n if (state === undefined) {\r\n return initialState;\r\n }\r\n\r\n const action = incomingAction as AppAction;\r\n\r\n switch (action.type) {\r\n case ActionTypes.APP_SET_USER:\r\n return {\r\n ...state,\r\n user: action.user,\r\n appUser: action.appUser\r\n };\r\n case ActionTypes.APP_DISPLAY_MESSAGE:\r\n return {\r\n ...state,\r\n showMessage: action.display\r\n };\r\n case ActionTypes.APP_REMOVE_USER:\r\n return {\r\n ...state,\r\n user: null,\r\n appUser: null\r\n };\r\n\r\n case ActionTypes.APP_SET_LANGUAGE:\r\n return {\r\n ...state,\r\n language: action.language,\r\n dateFormat: action.dateFormat,\r\n longDateFormat: action.longDateFormat\r\n };\r\n case ActionTypes.APP_LOAD_NOTIFICATION:\r\n return {\r\n ...state,\r\n tasks: action.tasks,\r\n comments: action.comments,\r\n newInCases: action.newInCases,\r\n newInAppointments: action.newInAppointments,\r\n isTasksLoading: false,\r\n isCommentsLoading: false,\r\n isNewInCasesLoading: false,\r\n isNewInAppointmentsLoading: false\r\n };\r\n case ActionTypes.APP_LOAD_TASKS:\r\n return {\r\n ...state,\r\n tasks: action.tasks,\r\n isTasksLoading: false\r\n };\r\n case ActionTypes.APP_LOAD_COMMENTS:\r\n return {\r\n ...state,\r\n comments: action.comments,\r\n isCommentsLoading: false\r\n };\r\n case ActionTypes.APP_REMOVE_COMMENT:\r\n const commentList = [...state.comments];\r\n const index = commentList.findIndex((item) => item.id === action.id);\r\n commentList.splice(index, 1);\r\n\r\n return {\r\n ...state,\r\n comments: commentList\r\n };\r\n case ActionTypes.APP_REMOVE_NEW_IN_CASE:\r\n const newInCases = [...state.newInCases];\r\n const indexNewIn = newInCases.findIndex((item) => item.id === action.id);\r\n newInCases.splice(indexNewIn, 1);\r\n\r\n return {\r\n ...state,\r\n newInCases: newInCases\r\n };\r\n case ActionTypes.APP_MARK_AS_VIEWED_NEW_IN_CASE:\r\n const cases = [...state.newInCases];\r\n const caseIndex = cases.findIndex((item) => item.id === action.id);\r\n cases[caseIndex].caseStatus.isViewed = true;\r\n \r\n return {\r\n ...state,\r\n newInCases: cases\r\n };\r\n case ActionTypes.APP_REMOVE_NEW_IN_APPOINTMENT:\r\n const newInAppointments = [...state.newInAppointments];\r\n const indexNewInAppointment = newInAppointments.findIndex((item) => item.id === action.id);\r\n newInAppointments.splice(indexNewInAppointment, 1);\r\n\r\n return {\r\n ...state,\r\n newInAppointments: newInAppointments\r\n };\r\n case ActionTypes.APP_MARK_AS_VIEWED_NEW_IN_APPOINTMENT:\r\n const appointments = [...state.newInAppointments];\r\n const appointmentIndex = appointments.findIndex((item) => item.id === action.id);\r\n appointments[appointmentIndex].appointmentStatusHistory.isViewed = true;\r\n\r\n return {\r\n ...state,\r\n newInAppointments: appointments\r\n };\r\n case ActionTypes.APP_REMOVE_TASK:\r\n const tasks = [...state.tasks];\r\n const indexTask = tasks.findIndex((item) => item.id === action.id);\r\n tasks.splice(indexTask, 1);\r\n\r\n return {\r\n ...state,\r\n tasks: tasks\r\n };\r\n case ActionTypes.APP_SET_NOTIFICATIONS_LOADERS:\r\n return {\r\n ...state,\r\n isCommentsLoading: action.isCommentsLoading,\r\n isTasksLoading: action.isTasksLoading,\r\n isNewInCasesLoading: action.isNewInCasesLoading,\r\n isNewInAppointmentsLoading: action.isNewInAppointmentsLoading\r\n };\r\n case ActionTypes.APP_SET_CURRENCY_RATES:\r\n return {\r\n ...state,\r\n currencyRates: action.currencyRates\r\n };\r\n }\r\n\r\n return state;\r\n};\r\n","import { Action, Reducer } from 'redux';\r\nimport { ThemeAction } from '../actions/ThemeOptions';\r\nimport * as ActionTypes from '../actions/ActionTypes';\r\n\r\nexport interface ThemeState {\r\n // Sidebar\r\n\r\n sidebarShadow: boolean;\r\n sidebarFixed: boolean;\r\n sidebarToggleMobile: boolean;\r\n // sidebarUserbox: boolean,\r\n sidebarToggle: boolean;\r\n sidebarHover: boolean;\r\n // Header\r\n\r\n headerFixed: boolean;\r\n headerShadow: boolean;\r\n headerSearchHover: boolean;\r\n\r\n // Main content\r\n\r\n contentBackground: string;\r\n themeConfiguratorToggle: boolean;\r\n\r\n // Page title\r\n\r\n pageTitleStyle: string;\r\n pageTitleBackground: string;\r\n pageTitleShadow: boolean;\r\n pageTitleBreadcrumb: boolean;\r\n pageTitleIconBox: boolean;\r\n pageTitleDescription: boolean;\r\n pageTitleBackButton: boolean;\r\n}\r\n\r\nconst initialState: ThemeState = {\r\n sidebarShadow: false,\r\n sidebarFixed: true,\r\n sidebarToggleMobile: false,\r\n // sidebarUserbox: true,\r\n sidebarToggle: false,\r\n sidebarHover: false,\r\n // Header\r\n\r\n headerFixed: true,\r\n headerShadow: true,\r\n headerSearchHover: false,\r\n\r\n // Main content\r\n\r\n contentBackground: '',\r\n themeConfiguratorToggle: false,\r\n\r\n // Page title\r\n\r\n pageTitleStyle: '',\r\n pageTitleBackground: '',\r\n pageTitleShadow: false,\r\n pageTitleBreadcrumb: false,\r\n pageTitleIconBox: false,\r\n pageTitleDescription: true,\r\n pageTitleBackButton: true\r\n};\r\n\r\nexport const ThemeOptionsReducer: Reducer = (\r\n state: ThemeState | undefined,\r\n incomingAction: Action\r\n): ThemeState | undefined => {\r\n if (state === undefined) {\r\n return initialState;\r\n }\r\n\r\n const action = incomingAction as ThemeAction;\r\n\r\n switch (action.type) {\r\n case ActionTypes.THEME_SET_SIDEBAR_HOVER:\r\n return {\r\n ...state,\r\n sidebarHover: action.hover\r\n };\r\n case ActionTypes.THEME_SET_SIDEBAR_TOGGLE:\r\n return {\r\n ...state,\r\n sidebarToggle: action.toggle\r\n };\r\n case ActionTypes.THEME_SET_SIDEBAR_TOGGLE_MOBILE:\r\n return {\r\n ...state,\r\n sidebarToggleMobile: action.toggle\r\n };\r\n }\r\n\r\n return state;\r\n};\r\n","import { Action, Reducer } from 'redux';\r\nimport { AppUserAction } from '../actions/AppUserAdmin';\r\nimport { AppuserList } from '../../interfaces/AppUser';\r\nimport * as ActionTypes from '../actions/ActionTypes';\r\n\r\nexport interface AppUserAdminState {\r\n userList: AppuserList;\r\n isLoading: boolean;\r\n}\r\n\r\nconst initialState: AppUserAdminState = {\r\n userList: {} as AppuserList,\r\n isLoading: false\r\n};\r\n\r\nexport const AppUserAdminReducer: Reducer = (\r\n state: AppUserAdminState | undefined,\r\n incomingAction: Action\r\n): AppUserAdminState => {\r\n if (state === undefined) {\r\n return initialState;\r\n }\r\n\r\n const action = incomingAction as AppUserAction;\r\n\r\n switch (action.type) {\r\n case ActionTypes.APPUSER_USER_GET_LIST_START:\r\n return {\r\n ...state,\r\n isLoading: true\r\n };\r\n case ActionTypes.APPUSER_USER_GET_LIST_END:\r\n return {\r\n ...state,\r\n userList: action.userList,\r\n isLoading: false\r\n };\r\n }\r\n\r\n return state;\r\n};\r\n","import { Action, Reducer } from 'redux';\r\nimport { CaseSettingsAction } from '../actions/CaseSettings';\r\nimport * as ActionTypes from '../actions/ActionTypes';\r\nimport { CaseSettings } from '../../interfaces/CaseSettings';\r\nimport { Case } from '../../interfaces/Case';\r\n\r\nexport interface CaseSettingsState {\r\n caseSettings: CaseSettings | null;\r\n isLoading: boolean;\r\n case: Case | null;\r\n}\r\n\r\nconst initialState: CaseSettingsState = {\r\n caseSettings: null,\r\n isLoading: false,\r\n case: null\r\n};\r\n\r\nexport const AppCaseSettingsReducer: Reducer = (\r\n state: CaseSettingsState | undefined,\r\n incomingAction: Action\r\n): CaseSettingsState | undefined => {\r\n if (state === undefined) {\r\n return initialState;\r\n }\r\n\r\n const action = incomingAction as CaseSettingsAction;\r\n\r\n switch (action.type) {\r\n case ActionTypes.CASE_SETTINGS_SET_CASE:\r\n return {\r\n ...state,\r\n caseSettings: action.caseSettings,\r\n case: action.case,\r\n isLoading: false\r\n };\r\n case ActionTypes.CASE_SETTINGS_SET_LOADING:\r\n return {\r\n ...state,\r\n isLoading: action.isLoading\r\n };\r\n case ActionTypes.CASE_SETTINGS_SET_CASE_VEHICLE:\r\n return {\r\n ...state,\r\n case: {\r\n ...state.case!,\r\n caseVehicle: action.caseVehicle\r\n }\r\n };\r\n case ActionTypes.CASE_SETTINGS_SET_CASE_EVENT:\r\n return {\r\n ...state,\r\n case: {\r\n ...state.case!,\r\n caseEvent: action.caseEvent\r\n }\r\n };\r\n case ActionTypes.CASE_SETTINGS_SET_CASE_VALUATION:\r\n return {\r\n ...state,\r\n case: {\r\n ...state.case!,\r\n caseValuation: action.caseValuation\r\n }\r\n };\r\n case ActionTypes.CASE_SETTINGS_SET_CASE_STATUS:\r\n return {\r\n ...state,\r\n case: {\r\n ...state.case!,\r\n caseStatus: action.caseStatus\r\n }\r\n };\r\n\r\n case ActionTypes.CASE_SETTINGS_ADD_CASE_PARTNER:\r\n return {\r\n ...state,\r\n case: {\r\n ...state.case!,\r\n casePartners: [...state.case!.casePartners, action.partner]\r\n }\r\n };\r\n case ActionTypes.CASE_SETTINGS_SET_CLIENT_DATA:\r\n return {\r\n ...state,\r\n case: {\r\n ...state.case!,\r\n caseClient: { ...action.caseClientData }\r\n }\r\n };\r\n case ActionTypes.CASE_SETTINGS_SET_VEHICLE_DATA:\r\n return {\r\n ...state,\r\n case: {\r\n ...state.case!,\r\n vehicleId: action.vehicleId\r\n }\r\n };\r\n case ActionTypes.CASE_SETTINGS_UPDATE_PARAMETERS:\r\n const index = state.case!.caseParameters.findIndex(\r\n (parameter) => parameter.id === action.caseParameter.id\r\n );\r\n const newCaseParameters = [...state.case!.caseParameters];\r\n\r\n newCaseParameters[index] = { ...action.caseParameter };\r\n\r\n return {\r\n ...state,\r\n case: {\r\n ...state.case!,\r\n caseParameters: newCaseParameters\r\n }\r\n };\r\n case ActionTypes.CASE_SETTINGS_UPDATE_TARIFF_VALUE:\r\n const indexTariffValue = state.case!.caseTariff.caseTariffValuesHistory.findIndex(\r\n (parameter) => parameter.id === action.tariffValue.id\r\n );\r\n const newTariffValues = [...state.case!.caseTariff.caseTariffValuesHistory];\r\n\r\n newTariffValues[indexTariffValue] = { ...action.tariffValue };\r\n\r\n return {\r\n ...state,\r\n case: {\r\n ...state.case!,\r\n caseTariff: {\r\n ...state.case!.caseTariff,\r\n caseTariffValuesHistory: newTariffValues\r\n }\r\n }\r\n };\r\n\r\n case ActionTypes.CASE_SETTINGS_SET_CASE_CALCULATION_HISTORY:\r\n return {\r\n ...state,\r\n case: {\r\n ...state.case!,\r\n caseCalculation: {\r\n ...action.caseCalculationHistory\r\n }\r\n }\r\n };\r\n\r\n case ActionTypes.CASE_SETTINGS_SET_CAR_IN_SERVICE:\r\n return {\r\n ...state,\r\n case: {\r\n ...state.case!,\r\n carInService: action.carInService,\r\n carInServiceDate: action.carInServiceDate\r\n }\r\n };\r\n\r\n }\r\n\r\n return state;\r\n};\r\n","import { Action, Reducer } from 'redux';\r\nimport { VehicleAction } from '../actions/Vehicle';\r\nimport * as ActionTypes from '../actions/ActionTypes';\r\nimport { Vehicle } from '../../interfaces/Vehicle';\r\n\r\nexport interface VehicleState {\r\n vehicle: Vehicle | null;\r\n}\r\n\r\nconst initialState: VehicleState = {\r\n vehicle: null\r\n};\r\n\r\nexport const VehicleReducer: Reducer = (\r\n state: VehicleState | undefined,\r\n incomingAction: Action\r\n): VehicleState | undefined => {\r\n if (state === undefined) {\r\n return initialState;\r\n }\r\n\r\n const action = incomingAction as VehicleAction;\r\n\r\n switch (action.type) {\r\n case ActionTypes.VEHICLE_SET_VEHICLE:\r\n if (action.vehicle === null)\r\n return {\r\n ...state,\r\n vehicle: null\r\n };\r\n\r\n return {\r\n ...state,\r\n vehicle: {\r\n ...action.vehicle\r\n }\r\n };\r\n case ActionTypes.VEHICLE_SET_VEHICLE_STATUS:\r\n return {\r\n ...state,\r\n vehicle: {\r\n ...state.vehicle!,\r\n currentStatus: { ...action.status }\r\n }\r\n };\r\n case ActionTypes.VEHICLE_RESET_STATE:\r\n return {\r\n ...state,\r\n vehicle: initialState.vehicle\r\n };\r\n case ActionTypes.VEHICLE_SET_VEHICLE_LOADING:\r\n return {\r\n ...state,\r\n vehicle: {\r\n ...state.vehicle!,\r\n loading: action?.loading\r\n }\r\n };\r\n }\r\n\r\n return state;\r\n};\r\n","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from '../actions/ActionTypes';\r\nimport { MavoVehicle, MavoVehicleAttachment, MavoVehicleOption, VehicleConditionInfo, VehicleOptionInfo } from '../../interfaces/Vehicle';\r\nimport { MavoVehicleAction } from '../actions/MavoVehicle';\r\n\r\nexport interface MavoVehicleState {\r\n mavoVehicle: MavoVehicle;\r\n}\r\n\r\nconst initialState: MavoVehicleState = {\r\n mavoVehicle: {\r\n id: 0,\r\n vin: '',\r\n make: null,\r\n makeId: null,\r\n model: null,\r\n modelId: null,\r\n versionItem: null,\r\n versionId: null,\r\n color: null,\r\n colorId: null,\r\n fuelType: null,\r\n fuelTypeId: null,\r\n bodyTypeId: null,\r\n bodyType: null,\r\n transmissionTypeId: null,\r\n transmissionType: null,\r\n provenance: null,\r\n provenanceId: null,\r\n firstRegistrationDate: null,\r\n fabricationYear: null,\r\n kilometersNr: null,\r\n power: null,\r\n horsePower: null,\r\n engineManufactureCode: null,\r\n accessories: null,\r\n isReserved: false,\r\n reservations: null,\r\n cylinderCapacity: null,\r\n supplier: null,\r\n location: null,\r\n htPurchaseRonPrice: null,\r\n ttcEvaluationEurPrice: null,\r\n nirNumber: null,\r\n nirDate: null,\r\n currentStatus: null,\r\n vehicleOptions: [] as MavoVehicleOption[],\r\n mavoVehicleAttachments: [] as MavoVehicleAttachment[],\r\n isMavoVehicle: true,\r\n vehicleType: null,\r\n vehicleTypeId: null,\r\n vehicleOptionInfo: {\r\n vehicleId: 0,\r\n engineCapacity: null,\r\n emissionsClass: null,\r\n doorCount: null,\r\n seatCount: null,\r\n driveType: null,\r\n registration: null,\r\n vehicleCondition: null,\r\n metallicColor: null,\r\n upholstery: null,\r\n upholsteryColor: null,\r\n previousOwnersCount: null,\r\n countryOfOrigin: null,\r\n alarm: false,\r\n antiTheft: false,\r\n abs: false,\r\n esp: false,\r\n driverFrontAirbag: false,\r\n passengerFrontAirbag: false,\r\n frontSideAirbags: false,\r\n frontCurtainAirbag: false,\r\n xenonHeadlights: false,\r\n alloyWheels: false,\r\n glassRoof: false,\r\n towHook: false,\r\n protectionFrame: false,\r\n steeringWheelControls: false,\r\n onBoardComputer: false,\r\n cruiseControl: false,\r\n lockableDifferential: false,\r\n particleFilter: false,\r\n electricMirrors: false,\r\n frontElectricWindows: false,\r\n rearElectricWindows: false,\r\n tintedWindows: false,\r\n heatedSeats: false,\r\n rainSensors: false,\r\n parkingSensors: false,\r\n powerSteering: false,\r\n sunroof: false,\r\n rightHandDrive: false,\r\n fogLights: false,\r\n airConditioning: false,\r\n radio: false,\r\n cdPlayer: false,\r\n videoScreen: false,\r\n gps: false\r\n } as VehicleOptionInfo,\r\n vehicleConditionInfo: {\r\n vehicleId: 0,\r\n frontWingLeftPaintId: null,\r\n frontWingLeftPaint: null,\r\n frontWingRightPaintId: null,\r\n frontWingRightPaint: null,\r\n rearWingLeftPaintId: null,\r\n rearWingLeftPaint: null,\r\n rearWingRightPaintId: null,\r\n rearWingRightPaint: null,\r\n frontDoorLeftPaintId: null,\r\n frontDoorLeftPaint: null,\r\n frontDoorRightPaintId: null,\r\n frontDoorRightPaint: null,\r\n rearDoorLeftPaintId: null,\r\n rearDoorLeftPaint: null,\r\n rearDoorRightPaintId: null,\r\n rearDoorRightPaint: null,\r\n hoodPaintId: null,\r\n hoodPaint: null,\r\n faceMaskPaintId: null,\r\n faceMaskPaint: null,\r\n frontBumperPaintId: null,\r\n frontBumperPaint: null,\r\n rearBumperPaintId: null,\r\n rearBumperPaint: null,\r\n trunkPaintId: null,\r\n trunkPaint: null,\r\n spoilerPaintId: null,\r\n spoilerPaint: null,\r\n roofPaintId: null,\r\n roofPaint: null,\r\n superstructurePaintId: null,\r\n superstructurePaint: null,\r\n \r\n // Tinichigerie + Vopsitorie (Bodywork + Painting)\r\n frontWingLeftBodyPaintId: null,\r\n frontWingLeftBodyPaint: null,\r\n frontWingRightBodyPaintId: null,\r\n frontWingRightBodyPaint: null,\r\n rearWingLeftBodyPaintId: null,\r\n rearWingLeftBodyPaint: null,\r\n rearWingRightBodyPaintId: null,\r\n rearWingRightBodyPaint: null,\r\n frontDoorLeftBodyPaintId: null,\r\n frontDoorLeftBodyPaint: null,\r\n frontDoorRightBodyPaintId: null,\r\n frontDoorRightBodyPaint: null,\r\n rearDoorLeftBodyPaintId: null,\r\n rearDoorLeftBodyPaint: null,\r\n rearDoorRightBodyPaintId: null,\r\n rearDoorRightBodyPaint: null,\r\n hoodBodyPaintId: null,\r\n hoodBodyPaint: null,\r\n faceMaskBodyPaintId: null,\r\n faceMaskBodyPaint: null,\r\n frontBumperBodyPaintId: null,\r\n frontBumperBodyPaint: null,\r\n rearBumperBodyPaintId: null,\r\n rearBumperBodyPaint: null,\r\n trunkBodyPaintId: null,\r\n trunkBodyPaint: null,\r\n spoilerBodyPaintId: null,\r\n spoilerBodyPaint: null,\r\n roofBodyPaintId: null,\r\n roofBodyPaint: null,\r\n superstructureBodyPaintId: null,\r\n superstructureBodyPaint: null,\r\n \r\n // Replacement & Painting (Inlcuire + vopsire)\r\n frontWingLeftReplacePaintId: null,\r\n frontWingLeftReplacePaint: null,\r\n frontWingRightReplacePaintId: null,\r\n frontWingRightReplacePaint: null,\r\n rearWingLeftReplacePaintId: null,\r\n rearWingLeftReplacePaint: null,\r\n rearWingRightReplacePaintId: null,\r\n rearWingRightReplacePaint: null,\r\n frontDoorLeftReplacePaintId: null,\r\n frontDoorLeftReplacePaint: null,\r\n frontDoorRightReplacePaintId: null,\r\n frontDoorRightReplacePaint: null,\r\n rearDoorLeftReplacePaintId: null,\r\n rearDoorLeftReplacePaint: null,\r\n rearDoorRightReplacePaintId: null,\r\n rearDoorRightReplacePaint: null,\r\n hoodReplacePaintId: null,\r\n hoodReplacePaint: null,\r\n faceMaskReplacePaintId: null,\r\n faceMaskReplacePaint: null,\r\n frontBumperReplacePaintId: null,\r\n frontBumperReplacePaint: null,\r\n rearBumperReplacePaintId: null,\r\n rearBumperReplacePaint: null,\r\n trunkReplacePaintId: null,\r\n trunkReplacePaint: null,\r\n spoilerReplacePaintId: null,\r\n spoilerReplacePaint: null,\r\n roofReplacePaintId: null,\r\n roofReplacePaint: null,\r\n superstructureReplacePaintId: null,\r\n superstructureReplacePaint: null,\r\n //Inlocuire/Reparatie\r\n frontLeftSideWindowToReplace: false,\r\n frontLeftSideWindowToRepair: false,\r\n frontRightSideWindowToReplace: false,\r\n frontRightSideWindowToRepair: false,\r\n \r\n rearLeftSideWindowToReplace: false,\r\n rearLeftSideWindowToRepair: false,\r\n rearRightSideWindowToReplace: false,\r\n rearRightSideWindowToRepair: false,\r\n \r\n leftSideMirrorToReplace: false,\r\n leftSideMirrorToRepair: false,\r\n rightSideMirrorToReplace: false,\r\n rightSideMirrorToRepair: false,\r\n \r\n leftWiperToReplace: false,\r\n leftWiperToRepair: false,\r\n rightWiperToReplace: false,\r\n rightWiperToRepair: false,\r\n \r\n leftProjectorToReplace: false,\r\n leftProjectorToRepair: false,\r\n rightProjectorToReplace: false,\r\n rightProjectorToRepair: false,\r\n \r\n leftTurnSignalToReplace: false,\r\n leftTurnSignalToRepair: false,\r\n rightTurnSignalToReplace: false,\r\n rightTurnSignalToRepair: false,\r\n \r\n leftHeadlightToReplace: false,\r\n leftHeadlightToRepair: false,\r\n rightHeadlightToReplace: false,\r\n rightHeadlightToRepair: false,\r\n \r\n leftBrakeLightsToReplace: false,\r\n leftBrakeLightsToRepair: false,\r\n rightBrakeLightsToReplace: false,\r\n rightBrakeLightsToRepair: false,\r\n \r\n rearWindshieldToReplace: false,\r\n rearWindshieldToRepair: false,\r\n \r\n windshieldToReplace: false,\r\n windshieldToRepair: false,\r\n \r\n hoodGrilleToReplace: false,\r\n hoodGrilleToRepair: false,\r\n \r\n //Mecanica\r\n motor: null,\r\n clutch: null,\r\n gearbox: null,\r\n steering: null,\r\n battery: null,\r\n exhaust: null,\r\n tires: null,\r\n driveShaft: null,\r\n leftCvJoints: null,\r\n rightCvJoints: null,\r\n leftShockAbsorbers: null,\r\n rightShockAbsorbers: null,\r\n frontBrakes: null,\r\n backBrakes: null,\r\n itpValidateDate: null,\r\n \r\n //Interior si accesorii\r\n leftSeatUpholstery: null,\r\n rightSeatUpholstery: null,\r\n rearSeatUpholstery: null,\r\n interiorMirror: null,\r\n firstAidKit: null, \r\n bulbKit: null, \r\n leftFrontHeadrest: null, \r\n rightFrontHeadrest: null,\r\n rearHeadrest: null,\r\n spareTireGood: false,\r\n spareTireReplace: false,\r\n frontFloorMats: false,\r\n fireExtinguisher: false,\r\n wheelWrench: false,\r\n rearFloorMats: false,\r\n reflectiveTriangle: false, \r\n carJack: false,\r\n } as VehicleConditionInfo\r\n } as unknown as MavoVehicle\r\n};\r\n\r\nexport const MavoVehicleReducer: Reducer = (\r\n state: MavoVehicleState | undefined,\r\n incomingAction: Action\r\n): MavoVehicleState | undefined => {\r\n if (state === undefined) {\r\n return initialState;\r\n }\r\n\r\n const action = incomingAction as MavoVehicleAction;\r\n\r\n switch (action.type) {\r\n case ActionTypes.MAVO_VEHICLE_SET_VEHICLE:\r\n if (action.mavoVehicle === null)\r\n return {\r\n ...state,\r\n mavoVehicle: initialState.mavoVehicle\r\n };\r\n\r\n return {\r\n ...state,\r\n mavoVehicle: {\r\n ...action.mavoVehicle\r\n }\r\n };\r\n case ActionTypes.MAVO_VEHICLE_SET_VEHICLE_STATUS:\r\n return {\r\n ...state,\r\n mavoVehicle: {\r\n ...state.mavoVehicle!,\r\n currentStatus: { ...action.status }\r\n }\r\n };\r\n }\r\n\r\n return state;\r\n};\r\n","import { Action, Reducer } from 'redux';\r\nimport * as ActionTypes from '../actions/ActionTypes';\r\nimport { VehicleAuctionAction } from '../actions/VehicleAuction';\r\nimport { MavoVehicleAuction } from '../../interfaces/Vehicle';\r\n\r\nexport interface VehicleAuctionState {\r\n mavoVehicleAuction: MavoVehicleAuction | null;\r\n}\r\n\r\nconst initialState: VehicleAuctionState = {\r\n mavoVehicleAuction: null\r\n};\r\n\r\nexport const VehicleAuctionReducer: Reducer = (\r\n state: VehicleAuctionState | undefined,\r\n incomingAction: Action\r\n): VehicleAuctionState | undefined => {\r\n if (state === undefined) {\r\n return initialState;\r\n }\r\n\r\n const action = incomingAction as VehicleAuctionAction;\r\n\r\n switch (action.type) {\r\n case ActionTypes.VEHICLE_SET_VEHICLE_AUCTION:\r\n if (action.mavoVehicleAuction === null)\r\n return {\r\n ...state,\r\n mavoVehicleAuction: null\r\n };\r\n\r\n return {\r\n ...state,\r\n mavoVehicleAuction: {\r\n ...action.mavoVehicleAuction\r\n }\r\n };\r\n }\r\n\r\n return state;\r\n};\r\n","import { Action, AnyAction, Reducer } from 'redux';\r\nimport * as ActionTypes from '../actions/ActionTypes';\r\nimport { AppointmentType } from '../../types/Agenda';\r\n\r\nexport interface InitialState {\r\n selectedRange: {\r\n start_date: Date;\r\n end_date: Date;\r\n } | null;\r\n appointments: AppointmentType[];\r\n selectedAppointment: AppointmentType | null;\r\n statusList: any,\r\n categoryType:any\r\n}\r\n\r\nconst initialState: InitialState = {\r\n selectedRange: null,\r\n appointments: [],\r\n selectedAppointment: null,\r\n statusList:{},\r\n categoryType:[]\r\n};\r\n\r\nexport const AgendaReducer: Reducer = (\r\n state: InitialState | undefined,\r\n incomingAction: Action\r\n): InitialState | undefined => {\r\n if (state === undefined) {\r\n return initialState;\r\n }\r\n\r\n const action = incomingAction as AnyAction;\r\n\r\n switch (action.type) {\r\n case ActionTypes.AGENDA_SET_SELECTED_RANGE:\r\n return {\r\n ...state,\r\n selectedRange: action.payload\r\n };\r\n\r\n case ActionTypes.AGENDA_SET_APPOINTMENTS:\r\n return {\r\n ...state,\r\n appointments: action.payload\r\n };\r\n\r\n case ActionTypes.AGENDA_SET_SELECTED_APPOINTMENT:\r\n return {\r\n ...state,\r\n selectedAppointment: action.payload\r\n };\r\n case ActionTypes.AGENDA_SET_STATUS_LIST:\r\n return {\r\n ...state,\r\n statusList:action.payload\r\n }\r\n case ActionTypes.AGENDA_SET_CATEGORY_TYPE:\r\n return {\r\n ...state,\r\n categoryType: action.payload\r\n }\r\n }\r\n\r\n return state;\r\n};\r\n","import { ApplicationState, AppThunkAction } from '.././';\r\nimport * as ActionTypes from './ActionTypes';\r\nimport { User } from 'oidc-client';\r\nimport { AppContext } from '../../context/Contexts';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { Language } from '../../interfaces/Organization';\r\nimport { Appointment, AppointmentFilters, Case, CaseComment, CaseFilters } from '../../interfaces/Case';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CurrencyRate } from '../../interfaces/Vehicle';\r\nimport isEqual from 'lodash/isEqual';\r\nimport { CountryCodeEnum, FilterTypeCodeEnum } from '../../helpers/Constants';\r\nimport { useSnackbar } from 'notistack';\r\n\r\ninterface AppSetUserAction {\r\n type: typeof ActionTypes.APP_SET_USER;\r\n user: User;\r\n appUser: AppUser;\r\n}\r\n\r\ninterface AppRemoveUserAction {\r\n type: typeof ActionTypes.APP_REMOVE_USER;\r\n}\r\n\r\ninterface AppDisplayMessageAction {\r\n type: typeof ActionTypes.APP_DISPLAY_MESSAGE;\r\n display: boolean;\r\n}\r\n\r\ninterface AppSetLanguageAction {\r\n type: typeof ActionTypes.APP_SET_LANGUAGE;\r\n language: string;\r\n dateFormat: string;\r\n longDateFormat: string;\r\n}\r\n\r\ninterface AppLoadUserNotifications {\r\n type: typeof ActionTypes.APP_LOAD_NOTIFICATION;\r\n newInCases: Case[];\r\n comments: CaseComment[];\r\n tasks: Case[];\r\n newInAppointments: Appointment[];\r\n}\r\n\r\ninterface AppLoadUserTasks {\r\n type: typeof ActionTypes.APP_LOAD_TASKS;\r\n tasks: Case[];\r\n}\r\n\r\ninterface AppLoadUserComments {\r\n type: typeof ActionTypes.APP_LOAD_COMMENTS;\r\n comments: CaseComment[];\r\n}\r\n\r\ninterface AppRemoveTask {\r\n type: typeof ActionTypes.APP_REMOVE_TASK;\r\n id: number;\r\n}\r\ninterface AppRemoveComment {\r\n type: typeof ActionTypes.APP_REMOVE_COMMENT;\r\n id: number;\r\n}\r\n\r\ninterface AppRemoveNewInCase {\r\n type: typeof ActionTypes.APP_REMOVE_NEW_IN_CASE;\r\n id: number;\r\n}\r\n\r\ninterface AppRemoveNewInAppointment {\r\n type: typeof ActionTypes.APP_REMOVE_NEW_IN_APPOINTMENT;\r\n id: number;\r\n}\r\n\r\ninterface AppSetNotificationsLoaders {\r\n type: typeof ActionTypes.APP_SET_NOTIFICATIONS_LOADERS;\r\n isCommentsLoading: boolean;\r\n isNewInCasesLoading: boolean;\r\n isTasksLoading: boolean;\r\n isNewInAppointmentsLoading: boolean;\r\n}\r\n\r\ninterface AppSetCurrencyRates {\r\n type: typeof ActionTypes.APP_SET_CURRENCY_RATES;\r\n currencyRates: CurrencyRate[];\r\n}\r\n\r\ninterface AppMarkAsViewedNewInCase {\r\n type: typeof ActionTypes.APP_MARK_AS_VIEWED_NEW_IN_CASE;\r\n id: number;\r\n}\r\n\r\ninterface AppMarkAsViewedNewInAppointment {\r\n type: typeof ActionTypes.APP_MARK_AS_VIEWED_NEW_IN_APPOINTMENT;\r\n id: number;\r\n}\r\n\r\nexport type AppAction =\r\n | AppSetUserAction\r\n | AppRemoveUserAction\r\n | AppDisplayMessageAction\r\n | AppSetLanguageAction\r\n | AppLoadUserNotifications\r\n | AppLoadUserTasks\r\n | AppRemoveComment\r\n | AppRemoveNewInCase\r\n | AppRemoveTask\r\n | AppLoadUserComments\r\n | AppSetNotificationsLoaders\r\n | AppSetCurrencyRates\r\n | AppRemoveNewInAppointment\r\n | AppMarkAsViewedNewInCase\r\n | AppMarkAsViewedNewInAppointment;\r\n\r\nconst LoadUserNotifications = async (\r\n dispatch: (Action: AppAction) => void,\r\n getState: () => ApplicationState,\r\n context: any\r\n) => {\r\n const caseService = (context as AppContext).caseService;\r\n const organizationService = (context as AppContext).organizationService;\r\n const appUserService = (context as AppContext).appUserService;\r\n const appState = getState().app;\r\n // Comment out this loading, since we are continuously pooling the notifications\r\n // dispatch({\r\n // type: ActionTypes.APP_SET_NOTIFICATIONS_LOADERS,\r\n // isCommentsLoading: true,\r\n // isNewInCasesLoading: true,\r\n // isTasksLoading: true\r\n // });\r\n const dateFrom = new Date(new Date().setMonth(new Date().getMonth() - 1));\r\n const dateTo = new Date();\r\n\r\n const [cases, caseNewComments, tasks, appointments] = await Promise.all([\r\n caseService.GetCases({ \r\n isNew: true, \r\n isAssignedToId: appState?.appUser?.organization?.country?.code?.toUpperCase() === CountryCodeEnum.CZ.toString() ? false : true ,\r\n dateFilterStartDate: new Date(dateFrom.setHours(0, 0, 0, 0)).toISOString(),\r\n dateFilterEndDate: new Date(dateTo.setHours(23, 59, 59, 999)).toISOString(),\r\n dateFilterCode: FilterTypeCodeEnum.DS.toString()\r\n } as any as CaseFilters),\r\n caseService.GetUserComments(),\r\n caseService.GetTaskList(),\r\n caseService.GetAppointments({ \r\n isNew: true, \r\n dateFilterStartDate: new Date(dateFrom.setHours(0, 0, 0, 0)).toISOString(), \r\n dateFilterEndDate: new Date(dateTo.setHours(23, 59, 59, 999)).toISOString()\r\n } as AppointmentFilters),\r\n ]);\r\n\r\n const org = cases.cases.map((item) => item.organizationOwnerId);\r\n const taskOrg = tasks.map((item) => item.organizationOwnerId);\r\n const appointmentOrg = appointments.appointments.map((item) => item.serviceId);\r\n org.push(...taskOrg);\r\n org.push(...appointmentOrg);\r\n\r\n const [orgOwners, users] = await Promise.all([\r\n organizationService.GetUserOrganizationsByIds(Array.from(new Set(org))),\r\n appUserService.GetUsersInfo(\r\n Array.from(\r\n new Set(\r\n caseNewComments.map((item) => (isNullOrUndefined(item) ? '' : item!.userId.toString()))\r\n )\r\n )\r\n )\r\n ]);\r\n\r\n cases.cases.forEach((cd) => {\r\n const organizationOwner = orgOwners.find((item) => item.id === cd.organizationOwnerId);\r\n cd.organizationOwner = isNullOrUndefined(organizationOwner) ? null : organizationOwner;\r\n });\r\n\r\n tasks.forEach((cd) => {\r\n const organizationOwner = orgOwners.find((item) => item.id === cd.organizationOwnerId);\r\n cd.organizationOwner = isNullOrUndefined(organizationOwner) ? null : organizationOwner;\r\n });\r\n\r\n appointments.appointments.forEach((ap) => {\r\n const organizationOwner = orgOwners.find((item) => item.id === ap.serviceId);\r\n ap.service = isNullOrUndefined(organizationOwner) ? null : organizationOwner;\r\n });\r\n\r\n for (const cc of caseNewComments) {\r\n const usr = users.find((item) => item.id === cc.userId.toString());\r\n cc.user = isNullOrUndefined(usr) ? null : usr;\r\n }\r\n\r\n const { newInCases, comments, tasks: stateTasks, newInAppointments } = getState().app || {};\r\n const updateNeeded =\r\n !isEqual(newInCases, cases.cases) ||\r\n !isEqual(comments, caseNewComments) ||\r\n !isEqual(stateTasks, tasks) ||\r\n !isEqual(newInAppointments, appointments.appointments);\r\n\r\n if (updateNeeded) {\r\n dispatch({\r\n type: ActionTypes.APP_LOAD_NOTIFICATION,\r\n newInCases: cases.cases,\r\n comments: caseNewComments,\r\n tasks: tasks,\r\n newInAppointments: appointments.appointments\r\n });\r\n }\r\n\r\n setTimeout(() => LoadUserNotifications(dispatch, getState, context), 60000);\r\n};\r\n\r\nexport const AppActionCreators = {\r\n SetUser: (enqueueSnackbar: any): AppThunkAction => async (dispatch, getState, context) => {\r\n const authService = (context as AppContext).authenticationService;\r\n const appUserService = (context as AppContext).appUserService;\r\n const translatorService = (context as AppContext).translatorService;\r\n const curentUser = await authService.getUserAsync();\r\n\r\n if (curentUser !== null) {\r\n localStorage.setItem('access_token', curentUser.access_token);\r\n \r\n await translatorService.GetLanguages();\r\n \r\n try {\r\n const appUser = await appUserService.GetProfile();\r\n dispatch({ type: ActionTypes.APP_SET_USER, user: curentUser, appUser: appUser });\r\n \r\n const languageCode = translatorService.GetLanguage();\r\n const language = appUser.organization!.gtOrganization!.languages!.find(\r\n (item) => item.code === languageCode\r\n ) as Language;\r\n \r\n dispatch({\r\n type: ActionTypes.APP_SET_LANGUAGE,\r\n language: languageCode,\r\n dateFormat: language.dateFormat,\r\n longDateFormat: language.longDateFormat\r\n });\r\n } catch (error) {\r\n console.log(error);\r\n enqueueSnackbar(\r\n translatorService.Tranlate('ERROR_INACTIVE_USER_MSG', 'Utilizator inactiv!'),\r\n { \r\n variant: 'error',\r\n autoHideDuration: 6000\r\n }\r\n );\r\n }\r\n\r\n // LoadUserNotifications(dispatch, getState, context);\r\n }\r\n },\r\n\r\n RemoveUser: (): AppThunkAction => async (dispatch, getState, context) => {\r\n dispatch({ type: ActionTypes.APP_REMOVE_USER });\r\n },\r\n Message:\r\n (isDisplayed: boolean): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({ type: ActionTypes.APP_DISPLAY_MESSAGE, display: isDisplayed });\r\n },\r\n SetLanguage: (): AppThunkAction => async (dispatch, getState, context) => {\r\n const translatorService = (context as AppContext).translatorService;\r\n const languageCode = translatorService.GetLanguage();\r\n\r\n const language = getState().app!.appUser!.organization!.gtOrganization!.languages!.find(\r\n (item) => item.code === languageCode\r\n ) as Language;\r\n\r\n dispatch({\r\n type: ActionTypes.APP_SET_LANGUAGE,\r\n language: languageCode,\r\n dateFormat: language.dateFormat,\r\n longDateFormat: language.longDateFormat\r\n });\r\n },\r\n LoadUserNotifications: (): AppThunkAction => async (dispatch, getState, context) => {\r\n LoadUserNotifications(dispatch, getState, context);\r\n },\r\n\r\n LoadTasks: (): AppThunkAction => async (dispatch, getState, context) => {\r\n const caseService = (context as AppContext).caseService;\r\n const organizationService = (context as AppContext).organizationService;\r\n\r\n dispatch({\r\n type: ActionTypes.APP_SET_NOTIFICATIONS_LOADERS,\r\n isCommentsLoading: false,\r\n isNewInCasesLoading: false,\r\n isTasksLoading: true,\r\n isNewInAppointmentsLoading: false\r\n });\r\n\r\n const [tasks] = await Promise.all([caseService.GetTaskList()]);\r\n\r\n const taskOrg = tasks.map((item) => item.organizationOwnerId);\r\n\r\n const [orgOwners] = await Promise.all([\r\n organizationService.GetUserOrganizationsByIds(Array.from(new Set(taskOrg)))\r\n ]);\r\n\r\n tasks.forEach((cd) => {\r\n const organizationOwner = orgOwners.find((item) => item.id === cd.organizationOwnerId);\r\n cd.organizationOwner = isNullOrUndefined(organizationOwner) ? null : organizationOwner;\r\n });\r\n\r\n dispatch({\r\n type: ActionTypes.APP_LOAD_TASKS,\r\n tasks: tasks\r\n });\r\n },\r\n\r\n LoadComments: (): AppThunkAction => async (dispatch, getState, context) => {\r\n const caseService = (context as AppContext).caseService;\r\n const appUserService = (context as AppContext).appUserService;\r\n\r\n dispatch({\r\n type: ActionTypes.APP_SET_NOTIFICATIONS_LOADERS,\r\n isCommentsLoading: true,\r\n isNewInCasesLoading: false,\r\n isTasksLoading: false,\r\n isNewInAppointmentsLoading: false\r\n });\r\n\r\n const [caseNewComments] = await Promise.all([caseService.GetUserComments()]);\r\n\r\n const [users] = await Promise.all([\r\n appUserService.GetUsersInfo(\r\n Array.from(\r\n new Set(\r\n caseNewComments.map((item) => (isNullOrUndefined(item) ? '' : item!.userId.toString()))\r\n )\r\n )\r\n )\r\n ]);\r\n\r\n for (const cc of caseNewComments) {\r\n const usr = users.find((item) => item.id === cc.userId.toString());\r\n cc.user = isNullOrUndefined(usr) ? null : usr;\r\n }\r\n\r\n dispatch({\r\n type: ActionTypes.APP_LOAD_COMMENTS,\r\n comments: caseNewComments\r\n });\r\n },\r\n RemoveTask:\r\n (id: number): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({\r\n type: ActionTypes.APP_REMOVE_TASK,\r\n id: id\r\n });\r\n },\r\n RemoveComment:\r\n (id: number): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({\r\n type: ActionTypes.APP_REMOVE_COMMENT,\r\n id: id\r\n });\r\n },\r\n RemoveNewInCase:\r\n (id: number): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({\r\n type: ActionTypes.APP_REMOVE_NEW_IN_CASE,\r\n id: id\r\n });\r\n },\r\n MarkAsViewedNewInCase:\r\n (id: number): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({\r\n type: ActionTypes.APP_MARK_AS_VIEWED_NEW_IN_CASE,\r\n id: id\r\n });\r\n },\r\n LoadCurrencyRates: (): AppThunkAction => async (dispatch, getState, context) => {\r\n const vehicleService = (context as AppContext).vehicleService;\r\n\r\n const rates = await vehicleService.GetCurrencyRates();\r\n\r\n dispatch({\r\n type: ActionTypes.APP_SET_CURRENCY_RATES,\r\n currencyRates: rates\r\n });\r\n },\r\n RemoveNewInAppointment:\r\n (id: number): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({\r\n type: ActionTypes.APP_REMOVE_NEW_IN_APPOINTMENT,\r\n id: id\r\n });\r\n },\r\n MarkAsViewedNewInAppointment:\r\n (id: number): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({\r\n type: ActionTypes.APP_MARK_AS_VIEWED_NEW_IN_APPOINTMENT,\r\n id: id\r\n });\r\n }\r\n};\r\n","import { AppThunkAction } from '.././';\r\nimport * as ActionTypes from './ActionTypes';\r\n\r\ninterface ThemeSetSidebarToggleAction {\r\n type: typeof ActionTypes.THEME_SET_SIDEBAR_TOGGLE;\r\n toggle: boolean;\r\n}\r\n\r\ninterface ThemeSetSidebarToggleMobileAction {\r\n type: typeof ActionTypes.THEME_SET_SIDEBAR_TOGGLE_MOBILE;\r\n toggle: boolean;\r\n}\r\n\r\ninterface ThemeSetSidebarHoverAction {\r\n type: typeof ActionTypes.THEME_SET_SIDEBAR_HOVER;\r\n hover: boolean;\r\n}\r\n\r\nexport type ThemeAction =\r\n | ThemeSetSidebarHoverAction\r\n | ThemeSetSidebarToggleAction\r\n | ThemeSetSidebarToggleMobileAction;\r\n\r\nexport const ThemeActionCreators = {\r\n setSidebarToggle:\r\n (toggle: boolean): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({ type: ActionTypes.THEME_SET_SIDEBAR_TOGGLE, toggle: toggle });\r\n },\r\n setSidebarToggleMobile:\r\n (toggle: boolean): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({ type: ActionTypes.THEME_SET_SIDEBAR_TOGGLE_MOBILE, toggle: toggle });\r\n },\r\n\r\n setSidebarHover:\r\n (hover: boolean): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({ type: ActionTypes.THEME_SET_SIDEBAR_HOVER, hover: hover });\r\n }\r\n};\r\n","import { AppThunkAction } from '..';\r\nimport * as ActionTypes from './ActionTypes';\r\nimport { AppContext } from '../../context/Contexts';\r\nimport { AppuserList, AppUser } from '../../interfaces/AppUser';\r\n\r\ninterface AppUserGetListStartAction {\r\n type: typeof ActionTypes.APPUSER_USER_GET_LIST_START;\r\n}\r\ninterface AppUserGetListEndAction {\r\n type: typeof ActionTypes.APPUSER_USER_GET_LIST_END;\r\n userList: AppuserList;\r\n}\r\n\r\ninterface AppUserEditAction {\r\n type: typeof ActionTypes.APPUSER_USER_EDIT;\r\n appUser: AppUser;\r\n}\r\n\r\nexport type AppUserAction = AppUserGetListStartAction | AppUserGetListEndAction | AppUserEditAction;\r\n\r\nexport const AppUserAdminActionCreators = {\r\n LoadUsers:\r\n (page: number, rowsPerPage: number): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n const service = (context as AppContext).appUserService;\r\n\r\n dispatch({ type: ActionTypes.APPUSER_USER_GET_LIST_START });\r\n\r\n const users = await service.GetAppUsers();\r\n\r\n dispatch({ type: ActionTypes.APPUSER_USER_GET_LIST_END, userList: users });\r\n },\r\n\r\n EditUser:\r\n (appUser: AppUser): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({ type: ActionTypes.APPUSER_USER_EDIT, appUser: appUser });\r\n }\r\n};\r\n","import { AppThunkAction } from '.././';\r\nimport * as ActionTypes from './ActionTypes';\r\nimport { AppContext } from '../../context/Contexts';\r\nimport { CaseSettings } from '../../interfaces/CaseSettings';\r\nimport {\r\n Case,\r\n CaseVehicleHistory,\r\n CaseEventHistory,\r\n CaseStatusHistory,\r\n CasePartnerHistory,\r\n CaseValuationHistory,\r\n CaseClient,\r\n CaseParameterHistory,\r\n CaseTariffValueHistory,\r\n CaseCalculationHistory\r\n} from '../../interfaces/Case';\r\nimport { WorkflowSectionStep } from '../../interfaces/Workflow';\r\n\r\ninterface CaseSettingsSetCaseAction {\r\n type: typeof ActionTypes.CASE_SETTINGS_SET_CASE;\r\n caseSettings: CaseSettings | null;\r\n case: Case;\r\n}\r\n\r\ninterface CaseSettingsSetCaseVehicleAction {\r\n type: typeof ActionTypes.CASE_SETTINGS_SET_CASE_VEHICLE;\r\n caseVehicle: CaseVehicleHistory;\r\n}\r\n\r\ninterface CaseSettingsSetCaseEventAction {\r\n type: typeof ActionTypes.CASE_SETTINGS_SET_CASE_EVENT;\r\n caseEvent: CaseEventHistory;\r\n}\r\ninterface CaseSettingsSetCaseStatusAction {\r\n type: typeof ActionTypes.CASE_SETTINGS_SET_CASE_STATUS;\r\n caseStatus: CaseStatusHistory;\r\n}\r\ninterface CaseSettingsSetCaseValuationAction {\r\n type: typeof ActionTypes.CASE_SETTINGS_SET_CASE_VALUATION;\r\n caseValuation: CaseValuationHistory;\r\n}\r\ninterface CaseSettingsSetLoadingAction {\r\n type: typeof ActionTypes.CASE_SETTINGS_SET_LOADING;\r\n isLoading: boolean;\r\n}\r\n\r\ninterface CaseSettingsAddPartnerAction {\r\n type: typeof ActionTypes.CASE_SETTINGS_ADD_CASE_PARTNER;\r\n partner: CasePartnerHistory;\r\n}\r\n\r\ninterface CaseSettingsSetClientDataAction {\r\n type: typeof ActionTypes.CASE_SETTINGS_SET_CLIENT_DATA;\r\n caseClientData: CaseClient;\r\n}\r\n\r\ninterface CaseSettingsSetVehicleDataAction {\r\n type: typeof ActionTypes.CASE_SETTINGS_SET_VEHICLE_DATA;\r\n vehicleId: number;\r\n}\r\n\r\ninterface CaseSettingsUpdateParametersAction {\r\n type: typeof ActionTypes.CASE_SETTINGS_UPDATE_PARAMETERS;\r\n caseParameter: CaseParameterHistory;\r\n}\r\n\r\ninterface CaseSettingsUpdateTariffValueAction {\r\n type: typeof ActionTypes.CASE_SETTINGS_UPDATE_TARIFF_VALUE;\r\n tariffValue: CaseTariffValueHistory;\r\n}\r\n\r\ninterface CaseSettingsSetCaseCalculationHistoryAction {\r\n type: typeof ActionTypes.CASE_SETTINGS_SET_CASE_CALCULATION_HISTORY;\r\n caseCalculationHistory: CaseCalculationHistory;\r\n}\r\n\r\ninterface CaseSettingsSetCarInServiceAction {\r\n type: typeof ActionTypes.CASE_SETTINGS_SET_CAR_IN_SERVICE;\r\n carInService: boolean;\r\n carInServiceDate: Date | null;\r\n}\r\n\r\nexport type CaseSettingsAction =\r\n | CaseSettingsSetCaseAction\r\n | CaseSettingsSetCaseStatusAction\r\n | CaseSettingsSetLoadingAction\r\n | CaseSettingsSetCaseVehicleAction\r\n | CaseSettingsSetCaseEventAction\r\n | CaseSettingsAddPartnerAction\r\n | CaseSettingsSetCaseValuationAction\r\n | CaseSettingsSetClientDataAction\r\n | CaseSettingsSetVehicleDataAction\r\n | CaseSettingsUpdateParametersAction\r\n | CaseSettingsUpdateTariffValueAction\r\n | CaseSettingsSetCaseCalculationHistoryAction\r\n | CaseSettingsSetCarInServiceAction;\r\n\r\nexport const CaseSettingsActionCreators = {\r\n SetCaseSettings:\r\n (caseId: number): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n const caseSettingsService = (context as AppContext).caseSettingsService;\r\n const caseService = (context as AppContext).caseService;\r\n\r\n dispatch({ type: ActionTypes.CASE_SETTINGS_SET_LOADING, isLoading: true });\r\n\r\n const curentCase = await caseService.GetCaseDetails(caseId);\r\n const currentCaseSettings = await caseSettingsService.GetCaseSettings(\r\n curentCase.caseWorkflow.workflowId\r\n );\r\n\r\n currentCaseSettings!.workflow.workflowSections!.forEach((section) => {\r\n section.workflowSectionSteps.forEach((step) => {\r\n step.isCurrent = function (caseStatusId: number) {\r\n const result = this.workflowSectionStepCaseStatuses.find(\r\n (cs) => cs.caseStatusId === caseStatusId\r\n );\r\n return result !== undefined;\r\n };\r\n });\r\n\r\n section.isCurrent = function (caseStatusId: number) {\r\n return (\r\n this.workflowSectionSteps.find((item) => item.isCurrent(caseStatusId)) !== undefined\r\n );\r\n };\r\n });\r\n\r\n dispatch({\r\n type: ActionTypes.CASE_SETTINGS_SET_CASE,\r\n caseSettings: currentCaseSettings,\r\n case: curentCase\r\n });\r\n },\r\n\r\n SetCaseClientData:\r\n (clientData: CaseClient): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({\r\n type: ActionTypes.CASE_SETTINGS_SET_CLIENT_DATA,\r\n caseClientData: clientData\r\n });\r\n },\r\n\r\n SetCaseVehicleData:\r\n (vehicleId: number): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({\r\n type: ActionTypes.CASE_SETTINGS_SET_VEHICLE_DATA,\r\n vehicleId: vehicleId\r\n });\r\n },\r\n\r\n UpdateCaseParameters:\r\n (caseParameterArg: CaseParameterHistory): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({\r\n type: ActionTypes.CASE_SETTINGS_UPDATE_PARAMETERS,\r\n caseParameter: caseParameterArg\r\n });\r\n },\r\n\r\n UpdateCaseTariffvalue:\r\n (tariffValue: CaseTariffValueHistory): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({\r\n type: ActionTypes.CASE_SETTINGS_UPDATE_TARIFF_VALUE,\r\n tariffValue: tariffValue\r\n });\r\n },\r\n\r\n SetCaseVehicle:\r\n (vehicle: CaseVehicleHistory): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({\r\n type: ActionTypes.CASE_SETTINGS_SET_CASE_VEHICLE,\r\n caseVehicle: vehicle\r\n });\r\n },\r\n\r\n SetCaseEvent:\r\n (event: CaseEventHistory): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({\r\n type: ActionTypes.CASE_SETTINGS_SET_CASE_EVENT,\r\n caseEvent: event\r\n });\r\n },\r\n\r\n SetCaseValuation:\r\n (valuation: CaseValuationHistory): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({\r\n type: ActionTypes.CASE_SETTINGS_SET_CASE_VALUATION,\r\n caseValuation: valuation\r\n });\r\n },\r\n\r\n SetCaseStatus:\r\n (caseStatus: CaseStatusHistory): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n if (caseStatus === null) {\r\n return;\r\n }\r\n const appUserService = (context as AppContext).appUserService;\r\n const users = await appUserService.GetUsersInfo(\r\n Array.from(new Set([caseStatus.assignedToId, caseStatus.userId]))\r\n );\r\n\r\n caseStatus.assignedTo = users.find((item) => item.id === caseStatus.assignedToId)!;\r\n caseStatus.user = users.find((item) => item.id === caseStatus.userId)!;\r\n\r\n dispatch({\r\n type: ActionTypes.CASE_SETTINGS_SET_CASE_STATUS,\r\n caseStatus: caseStatus\r\n });\r\n },\r\n\r\n AddPartner:\r\n (organizationId: number | null): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n if (organizationId === null) {\r\n return;\r\n }\r\n const orgService = (context as AppContext).organizationService;\r\n\r\n const state = getState();\r\n if (\r\n state.caseSettings!.case!.casePartners.find(\r\n (item) => item.organizationId === organizationId\r\n ) !== undefined\r\n ) {\r\n return;\r\n }\r\n\r\n const organization = await orgService.GetOrganization(organizationId);\r\n\r\n const firstPrtner = state.caseSettings!.case!.casePartners[0];\r\n\r\n dispatch({\r\n type: ActionTypes.CASE_SETTINGS_ADD_CASE_PARTNER,\r\n partner: {\r\n id: 0,\r\n caseWorkflowHistoryId: firstPrtner.caseWorkflowHistoryId,\r\n caseId: firstPrtner.caseWorkflowHistoryId,\r\n organization: organization,\r\n organizationId: organization.id,\r\n date: new Date(),\r\n user: state.app!.appUser,\r\n userId: state.app!.appUser!.id!\r\n }\r\n });\r\n },\r\n\r\n SetCaseCalculationHistory:\r\n (caseCalculationHistory: CaseCalculationHistory): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({\r\n type: ActionTypes.CASE_SETTINGS_SET_CASE_CALCULATION_HISTORY,\r\n caseCalculationHistory: caseCalculationHistory\r\n });\r\n },\r\n\r\n SetCarInService:\r\n (carInService: boolean, carInServiceDate: Date | null): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({\r\n type: ActionTypes.CASE_SETTINGS_SET_CAR_IN_SERVICE,\r\n carInService: carInService,\r\n carInServiceDate: carInServiceDate\r\n });\r\n },\r\n};\r\n\r\nconst isStepCurrent = (step: WorkflowSectionStep, caseStatusId: number): boolean => {\r\n const result = step.workflowSectionStepCaseStatuses.find(\r\n (cs) => cs.caseStatusId === caseStatusId\r\n );\r\n return result !== undefined;\r\n};\r\n","import { AppContext } from '../../context/Contexts';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { Vehicle, VehicleStatusHistory } from '../../interfaces/Vehicle';\r\nimport { AppThunkAction } from '.././';\r\nimport * as ActionTypes from './ActionTypes';\r\n\r\ninterface SetVehicleAction {\r\n type: typeof ActionTypes.VEHICLE_SET_VEHICLE;\r\n vehicle: Vehicle | null;\r\n}\r\ninterface SetVehicleStatusAction {\r\n type: typeof ActionTypes.VEHICLE_SET_VEHICLE_STATUS;\r\n status: VehicleStatusHistory;\r\n}\r\ninterface ResetVehicleStateAction {\r\n type: typeof ActionTypes.VEHICLE_RESET_STATE;\r\n}\r\ninterface SetVehicleLoadingAction {\r\n type: typeof ActionTypes.VEHICLE_SET_VEHICLE_LOADING;\r\n loading: boolean;\r\n}\r\n\r\nexport type VehicleAction =\r\n | SetVehicleAction\r\n | SetVehicleStatusAction\r\n | SetVehicleLoadingAction\r\n | ResetVehicleStateAction;\r\n\r\nexport const VehicleActionCreators = {\r\n setVehicle:\r\n (vehicleId: number): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({ type: ActionTypes.VEHICLE_SET_VEHICLE_LOADING, loading: true });\r\n const vehicleService = (context as AppContext).vehicleService;\r\n\r\n const vehicle = await vehicleService.GetVehicle(vehicleId);\r\n dispatch({ type: ActionTypes.VEHICLE_SET_VEHICLE, vehicle: vehicle });\r\n dispatch({ type: ActionTypes.VEHICLE_SET_VEHICLE_LOADING, loading: false });\r\n },\r\n\r\n setVehicleObject:\r\n (vehicle: Vehicle | null): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({ type: ActionTypes.VEHICLE_SET_VEHICLE, vehicle: vehicle });\r\n },\r\n\r\n changeVehicleStatus:\r\n (statusHis: VehicleStatusHistory): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({ type: ActionTypes.VEHICLE_SET_VEHICLE_STATUS, status: statusHis });\r\n },\r\n\r\n resetVehicleState: (): AppThunkAction => async (dispatch, getState, context) => {\r\n dispatch({ type: ActionTypes.VEHICLE_RESET_STATE });\r\n }\r\n};\r\n","import { WeatherForecastsReducer, WeatherForecastsState } from './reducers/WeatherForecasts';\r\nimport { AppReducer, AppState } from './reducers/App';\r\nimport { ThemeState, ThemeOptionsReducer } from './reducers/ThemeOptions';\r\nimport { AppUserAdminState, AppUserAdminReducer } from './reducers/AppUserAdmin';\r\nimport { CaseSettingsState, AppCaseSettingsReducer } from './reducers/CaseSettings';\r\nimport { VehicleState, VehicleReducer } from './reducers/Vehicle';\r\nimport { MavoVehicleReducer } from './reducers/MavoVehicle';\r\nimport { VehicleAuctionReducer, VehicleAuctionState } from './reducers/VehicleAuction';\r\nimport { AgendaReducer } from './reducers/Agenda';\r\n\r\nexport * from './reducers/WeatherForecasts';\r\nexport * from './actions/WeatherForecasts';\r\nexport * from './reducers/App';\r\nexport * from './actions/App';\r\nexport * from './reducers/ThemeOptions';\r\nexport * from './actions/ThemeOptions';\r\nexport * from './reducers/AppUserAdmin';\r\nexport * from './actions/AppUserAdmin';\r\nexport * from './reducers/CaseSettings';\r\nexport * from './actions/CaseSettings';\r\nexport * from './reducers/Vehicle';\r\nexport * from './actions/Vehicle';\r\n\r\n// state object\r\nexport interface ApplicationState {\r\n weatherForecasts: WeatherForecastsState | undefined;\r\n app: AppState | undefined;\r\n themeOptions: ThemeState | undefined;\r\n appUserAdmin: AppUserAdminState | undefined;\r\n caseSettings: CaseSettingsState | undefined;\r\n vehicle: VehicleState | undefined;\r\n mavoVehicle: VehicleState | undefined;\r\n mavoVehicleAuction: VehicleAuctionState | undefined;\r\n}\r\n\r\n// reducers\r\nexport const reducers = {\r\n weatherForecasts: WeatherForecastsReducer,\r\n app: AppReducer,\r\n themeOptions: ThemeOptionsReducer,\r\n appUserAdmin: AppUserAdminReducer,\r\n caseSettings: AppCaseSettingsReducer,\r\n vehicle: VehicleReducer,\r\n mavoVehicle: MavoVehicleReducer,\r\n mavoVehicleAuction: VehicleAuctionReducer,\r\n agenda: AgendaReducer\r\n};\r\n\r\n// This type can be used as a hint on action creators so that its 'dispatch' and 'getState' params are\r\n// correctly typed to match your store.\r\nexport interface AppThunkAction {\r\n (dispatch: (action: TAction) => void, getState: () => ApplicationState, context: any): void;\r\n}\r\n","import { AnyAction, applyMiddleware, combineReducers, compose, createStore } from 'redux';\r\nimport thunk, { ThunkDispatch } from 'redux-thunk';\r\nimport { connectRouter, routerMiddleware } from 'connected-react-router';\r\nimport { History } from 'history';\r\nimport { ApplicationState, reducers } from './';\r\nimport { AppContext } from '../context/Contexts';\r\nimport { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\r\nimport { store } from '..';\r\n\r\nexport default function configureStore(\r\n history: History,\r\n appcontext: AppContext,\r\n initialState?: ApplicationState\r\n) {\r\n const middleware = [thunk.withExtraArgument(appcontext), routerMiddleware(history)];\r\n\r\n const rootReducer = combineReducers({\r\n ...reducers,\r\n router: connectRouter(history)\r\n });\r\n\r\n const enhancers = [];\r\n const windowIfDefined = typeof window === 'undefined' ? null : (window as any);\r\n if (windowIfDefined && windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__) {\r\n enhancers.push(windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__());\r\n }\r\n\r\n return createStore(\r\n rootReducer,\r\n initialState,\r\n compose(applyMiddleware(...middleware), ...enhancers)\r\n );\r\n}\r\n\r\nexport type AppThunkDispatch = ThunkDispatch;\r\nexport const useAppDispatch = () => useDispatch();\r\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\r\n\r\nexport type RootState = ReturnType;","import * as React from 'react';\r\n\r\nimport { IAuthService } from '../../services/Interfaces/IAuthService';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { AppActionCreators, ApplicationState, AppState } from '../../store';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Button, Grid, IconButton, List, ListItem } from '@material-ui/core';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { withRouter } from 'react-router';\r\nimport moment from 'moment';\r\nimport StarBorderIcon from '@material-ui/icons/StarBorder';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { CountryCodeEnum } from '../../helpers/Constants';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\n\r\nexport interface ExternalCaseNewInNotificationProps {\r\n onClick?: () => void;\r\n}\r\n\r\ntype CaseNewInNotificationProps = { appState: AppState } & typeof AppActionCreators &\r\n RouteComponentProps &\r\n ExternalCaseNewInNotificationProps;\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\ninterface ICaseNewInNotificationState {}\r\n\r\nclass CaseNewInNotification extends React.PureComponent<\r\n CaseNewInNotificationProps,\r\n ICaseNewInNotificationState\r\n> {\r\n private authService!: IAuthService;\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appUserService!: IAppUserService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {} as ICaseNewInNotificationState;\r\n\r\n onClick = async (id: number, caseStatusId: number, moveToViewed: boolean, notNew: boolean) => {\r\n try {\r\n await this.caseService.SetCaseNotNew(id, caseStatusId, false, moveToViewed, notNew);\r\n\r\n this.props.MarkAsViewedNewInCase(id);\r\n\r\n const currentPath = this.props.history.location.pathname.toLowerCase();\r\n this.props.history.push('/cases/' + id);\r\n\r\n if (currentPath.indexOf('/cases/') !== -1) {\r\n this.props.history.go(0);\r\n }\r\n\r\n if (this.props.onClick !== undefined) {\r\n this.props.onClick();\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n };\r\n\r\n handleAddToTaskList = async (id: number, caseStatusId: number, addToTaskList: boolean, moveToViewed: boolean, notNew: boolean) => {\r\n try {\r\n await this.caseService.SetCaseNotNew(id, caseStatusId, addToTaskList, moveToViewed, notNew);\r\n\r\n if (notNew) {\r\n this.props.RemoveNewInCase(id);\r\n }\r\n\r\n if (addToTaskList) {\r\n this.props.LoadTasks();\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n };\r\n\r\n public render() {\r\n this.authService = (this.context as AppContext).authenticationService;\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.props.appState.isNewInCasesLoading && this.props.appState.newInCases.length === 0 ? (\r\n
\r\n
\r\n
\r\n {/* */}\r\n \r\n
\r\n
\r\n
\r\n ) : null}\r\n\r\n {!this.props.appState.isNewInCasesLoading && this.props.appState.newInCases.length !== 0 ? (\r\n \r\n {this.props.appState.newInCases.map((item, index) => (\r\n \r\n \r\n \r\n \r\n {index + 1}\r\n \r\n \r\n \r\n this.onClick(item.id, item.caseStatus.id, true, false)}\r\n style={{ cursor: 'pointer' }}\r\n >\r\n {item.id}\r\n \r\n
\r\n {item.caseStatus.caseStatus!.displayName}\r\n
\r\n
\r\n {isNullOrUndefined(item.caseEvent) ? '' : item.caseEvent.caseNumber}\r\n
\r\n
\r\n\r\n \r\n
{item.caseType!.displayName}
\r\n
\r\n {isNullOrUndefined(item.caseVehicle) ? '' : item.caseVehicle.plateNumber}\r\n
\r\n
\r\n \r\n
\r\n {this.props.appState.appUser?.organization?.country?.code?.toUpperCase() === CountryCodeEnum.CZ.toString() ? null : item.organizationOwner!.name}\r\n
\r\n
\r\n {moment\r\n .utc(item.caseStatus.date)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n
\r\n
\r\n \r\n {this.props.appState.appUser?.organization?.country?.code?.toUpperCase() === CountryCodeEnum.CZ.toString() ? null : (\r\n {\r\n this.handleAddToTaskList(item.id, item.caseStatus.id, true, false, true);\r\n }}\r\n >\r\n \r\n \r\n )}\r\n {\r\n this.handleAddToTaskList(item.id, item.caseStatus.id, false, false, true);\r\n }} \r\n >\r\n \r\n \r\n \r\n
\r\n
\r\n ))}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseNewInNotificationProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n AppActionCreators,\r\n mergeProps\r\n)(withRouter(CaseNewInNotification as any));\r\n","import * as React from 'react';\r\n\r\nimport { IAuthService } from '../../services/Interfaces/IAuthService';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { AppActionCreators, ApplicationState, AppState } from '../../store';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Button, Grid, IconButton, List, ListItem } from '@material-ui/core';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { withRouter } from 'react-router';\r\nimport StarBorderIcon from '@material-ui/icons/StarBorder';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport moment from 'moment';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { CountryCodeEnum } from '../../helpers/Constants';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\n\r\nexport interface ExternalCaseMessageNotificationProps {\r\n onClick?: () => void;\r\n}\r\n\r\ntype CaseMessageNotificationProps = { appState: AppState } & typeof AppActionCreators &\r\n ExternalCaseMessageNotificationProps &\r\n RouteComponentProps;\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\ninterface ICaseMessageNotificationState {}\r\n\r\nclass CaseMessageNotification extends React.PureComponent<\r\n CaseMessageNotificationProps,\r\n ICaseMessageNotificationState\r\n> {\r\n private authService!: IAuthService;\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appUserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {} as ICaseMessageNotificationState;\r\n\r\n onClick = async (id: number) => {\r\n try {\r\n await this.caseService.RemoveUserComment(id, false);\r\n this.props.RemoveComment(id);\r\n\r\n const currentPath = this.props.history.location.pathname.toLowerCase();\r\n this.props.history.push('/cases/' + id);\r\n\r\n if (currentPath.indexOf('/cases/') !== -1) {\r\n this.props.history.go(0);\r\n }\r\n if (this.props.onClick !== undefined) {\r\n this.props.onClick();\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n };\r\n\r\n handleAddToTaskList = async (id: number) => {\r\n try {\r\n await this.caseService.RemoveUserComment(id, true);\r\n this.props.RemoveComment(id);\r\n this.props.LoadTasks();\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n };\r\n\r\n handleCheck = async (id: number) => {\r\n try {\r\n await this.caseService.RemoveUserComment(id, false);\r\n this.props.RemoveComment(id);\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n };\r\n\r\n public render() {\r\n this.authService = (this.context as AppContext).authenticationService;\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n\r\n {!this.props.appState.isCommentsLoading && this.props.appState.comments.length === 0 ? (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n ) : null}\r\n\r\n {!this.props.appState.isCommentsLoading && this.props.appState.comments.length !== 0 ? (\r\n \r\n {this.props.appState.comments.map((item, index) => (\r\n \r\n \r\n \r\n \r\n this.onClick(isNullOrUndefined(item) ? 0 : item.caseId)}\r\n >\r\n {isNullOrUndefined(item) ? '' : item.caseId}\r\n \r\n
{item.case.caseStatus.caseStatus!.displayName}
\r\n
\r\n\r\n \r\n
\r\n {isNullOrUndefined(item.user)\r\n ? ''\r\n : item.user.firstName +\r\n ' ' +\r\n item.user.lastName +\r\n ' (' +\r\n item.user.organization!.hoName +\r\n ')'}\r\n
\r\n
\r\n {moment\r\n .utc(item.date)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n
\r\n
\r\n \r\n {this.props.appState.appUser?.organization?.country?.code?.toUpperCase() === CountryCodeEnum.CZ.toString() ? null : (\r\n {\r\n this.handleAddToTaskList(item.id);\r\n }}\r\n >\r\n \r\n \r\n )}\r\n \r\n
\r\n \r\n \r\n
\r\n {isNullOrUndefined(item) ? '' : item.text}\r\n
\r\n
\r\n \r\n {\r\n this.handleCheck(item.id);\r\n }}\r\n >\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n ))}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseMessageNotificationProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n AppActionCreators,\r\n mergeProps\r\n)(withRouter(CaseMessageNotification as any));\r\n","import * as React from 'react';\r\n\r\nimport { IAuthService } from '../../services/Interfaces/IAuthService';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { AppActionCreators, ApplicationState, AppState } from '../../store';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Button, Grid, IconButton, ListItem } from '@material-ui/core';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { withRouter } from 'react-router';\r\nimport moment from 'moment';\r\nimport StarIcon from '@material-ui/icons/Star';\r\nimport PerfectScrollbar from 'react-perfect-scrollbar';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nexport interface ExternalCaseNotificationsProps {\r\n onClick?: () => void;\r\n}\r\n\r\ntype CaseTaskProps = { appState: AppState } & typeof AppActionCreators &\r\n RouteComponentProps &\r\n ExternalCaseNotificationsProps;\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\ninterface ICaseTaskState {}\r\n\r\nclass CaseTasks extends React.PureComponent {\r\n private authService!: IAuthService;\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {} as ICaseTaskState;\r\n\r\n onClick = (id: number) => {\r\n const currentPath = this.props.history.location.pathname.toLowerCase();\r\n this.props.history.push('/cases/' + id);\r\n\r\n if (currentPath.indexOf('/cases/') !== -1) {\r\n this.props.history.go(0);\r\n }\r\n\r\n if (this.props.onClick !== undefined) {\r\n this.props.onClick();\r\n }\r\n };\r\n\r\n handleDeleteFromTaskList = async (id: number) => {\r\n try {\r\n await this.caseService.RemoveUserTask(id);\r\n\r\n this.props.RemoveTask(id);\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n };\r\n\r\n public render() {\r\n this.authService = (this.context as AppContext).authenticationService;\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n\r\n {!this.props.appState.isTasksLoading && this.props.appState.tasks.length === 0 ? (\r\n
\r\n
\r\n
\r\n {/* */}\r\n \r\n
\r\n
\r\n
\r\n ) : null}\r\n {!this.props.appState.isTasksLoading && this.props.appState.tasks.length !== 0 ? (\r\n \r\n {this.props.appState.tasks.map((item, index) => (\r\n \r\n \r\n \r\n this.onClick(item.id)}\r\n >\r\n {item.id}\r\n \r\n
{item.caseStatus.caseStatus!.displayName}
\r\n
\r\n {isNullOrUndefined(item.caseEvent) ? '' : item.caseEvent.caseNumber}\r\n
\r\n
\r\n\r\n \r\n
{isNullOrUndefined(item.caseType) ? '' : item.caseType.displayName}
\r\n
\r\n {isNullOrUndefined(item.caseVehicle) ? '' : item.caseVehicle.plateNumber}\r\n
\r\n
\r\n \r\n
\r\n {isNullOrUndefined(item.organizationOwner) ? '' : item.organizationOwner.name}\r\n
\r\n
\r\n {moment\r\n .utc(item.dateCreation)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n
\r\n
\r\n \r\n {\r\n this.handleDeleteFromTaskList(item.id);\r\n }}\r\n >\r\n \r\n \r\n \r\n
\r\n
\r\n ))}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n AppActionCreators\r\n)(withRouter(CaseTasks as any));\r\n","import * as React from 'react';\r\n\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { AppActionCreators, ApplicationState, AppState } from '../../store';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Button, Grid, IconButton, List, ListItem } from '@material-ui/core';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { withRouter } from 'react-router';\r\nimport moment from 'moment';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\n\r\nexport interface ExternalAppointmentNewInNotificationProps {\r\n onClick?: () => void;\r\n}\r\n\r\ntype AppointmentNewInNotificationProps = { appState: AppState } & typeof AppActionCreators &\r\n RouteComponentProps &\r\n ExternalAppointmentNewInNotificationProps;\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\ninterface IAppointmentNewInNotificationState {}\r\n\r\nclass AppointmentNewInNotification extends React.PureComponent<\r\n AppointmentNewInNotificationProps,\r\n IAppointmentNewInNotificationState\r\n> {\r\n private caseService!: ICaseService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {} as IAppointmentNewInNotificationState;\r\n\r\n onClick = async (id: number, appointmentStatusHistoryId: number, moveToViewed: boolean, notNew: boolean) => {\r\n try {\r\n await this.caseService.SetAppointmentNotNew(id, appointmentStatusHistoryId, moveToViewed, notNew);\r\n\r\n this.props.MarkAsViewedNewInAppointment(id);\r\n\r\n const currentPath = this.props.history.location.pathname.toLowerCase();\r\n this.props.history.push('/appointment/' + id);\r\n\r\n if (currentPath.indexOf('/appointment/') !== -1) {\r\n this.props.history.go(0);\r\n }\r\n\r\n if (this.props.onClick !== undefined) {\r\n this.props.onClick();\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n };\r\n\r\n IsAppointmentNotNew = async (id: number, appointmentStatusHistoryId: number, moveToViewed: boolean, notNew: boolean) => {\r\n try {\r\n await this.caseService.SetAppointmentNotNew(id, appointmentStatusHistoryId, moveToViewed, notNew);\r\n\r\n if (notNew) {\r\n this.props.RemoveNewInAppointment(id);\r\n }\r\n\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n };\r\n\r\n public render() {\r\n this.caseService = (this.context as AppContext).caseService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.props.appState.isNewInAppointmentsLoading && this.props.appState.newInAppointments.length === 0 ? (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n ) : null}\r\n\r\n {!this.props.appState.isNewInAppointmentsLoading && this.props.appState.newInAppointments.length !== 0 ? (\r\n \r\n {this.props.appState.newInAppointments.map((item, index) => (\r\n \r\n \r\n \r\n \r\n {index + 1}\r\n \r\n \r\n \r\n this.onClick(item.id, item.appointmentStatusHistory.id, true, false)}\r\n style={{ cursor: 'pointer' }}\r\n >\r\n {item.id}\r\n \r\n
\r\n {item.appointmentStatusHistory.appointmentStatus!.displayName}\r\n
\r\n
\r\n\r\n \r\n
\r\n {item.appointmentCategoryType!.displayName}\r\n
\r\n
\r\n {isNullOrUndefined(item.vehicle) ? '' : item.vehicle.plateNumber}\r\n
\r\n
\r\n \r\n
\r\n {moment\r\n .utc(item.appointmentStatusHistory.date)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n
\r\n
\r\n \r\n {\r\n this.IsAppointmentNotNew(item.id, item.appointmentStatusHistory.id, false, true);\r\n }}\r\n >\r\n \r\n \r\n \r\n
\r\n
\r\n ))}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalAppointmentNewInNotificationProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n AppActionCreators,\r\n mergeProps\r\n)(withRouter(AppointmentNewInNotification as any));\r\n","import { Grid, Card, Box } from '@material-ui/core';\r\nimport * as React from 'react';\r\nimport { ApplicationContext } from '../context/Contexts';\r\nimport { useContext } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport CaseNewInNotification from '../components/cases/CaseNewInNotification';\r\nimport CaseMessageNotification from '../components/cases/CaseMessageNotification';\r\nimport CaseTask from '../components/cases/CaseTask';\r\nimport PerfectScrollbar from 'react-perfect-scrollbar';\r\nimport { useState } from 'react';\r\nimport { Guid } from 'guid-typescript';\r\nimport AppointmentNewInNotification from './cases/AppointmentNewInNotification';\r\nimport { AppActionCreators, ApplicationState, AppState } from '../store';\r\nimport { withRouter } from 'react-router';\r\nimport { CountryCodeEnum } from '../helpers/Constants';\r\nimport { TranslatorService } from '../services/TranslatorService';\r\n\r\nconst Home = (props: any) => {\r\n const context = useContext(ApplicationContext);\r\n const translatorService = new TranslatorService();\r\n\r\n const [changeUID, setUID] = useState('');\r\n return (\r\n \r\n \r\n {props.appState.appUser?.organization?.country?.code?.toUpperCase() === CountryCodeEnum.CZ.toString() ? (\r\n <>\r\n \r\n \r\n \r\n
\r\n
\r\n {translatorService.Tranlate('APPOINTMENTS_NEW_ENTRIES', 'Programari')}\r\n
\r\n
\r\n
\r\n \r\n {\r\n setUID(Guid.create().toString());\r\n } }\r\n >\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {translatorService.Tranlate('CASE_NEW_ENTRIES', 'Dosare')}\r\n
\r\n
\r\n
\r\n \r\n {\r\n setUID(Guid.create().toString());\r\n } }\r\n >\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {translatorService.Tranlate('CASE_MESSAGES', 'Mesaje')}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n
\r\n
\r\n {translatorService.Tranlate('CASE_NEW_ENTRIES', 'Dosare')}\r\n
\r\n
\r\n
\r\n \r\n {\r\n setUID(Guid.create().toString());\r\n } }\r\n >\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {translatorService.Tranlate('APPOINTMENTS_NEW_ENTRIES', 'Programari')}\r\n
\r\n
\r\n
\r\n \r\n {\r\n setUID(Guid.create().toString());\r\n } }\r\n >\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {translatorService.Tranlate('CASE_MESSAGES', 'Mesaje')}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {translatorService.Tranlate('CASE_TASKS', 'Lista sarcini')}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n ) }\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: any\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n AppActionCreators,\r\n mergeProps\r\n)(withRouter(Home as any));","import React from 'react';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { IAuthService } from '../../services/Interfaces/IAuthService';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { AppState, ApplicationState, AppActionCreators } from '../../store';\r\nimport { connect } from 'react-redux';\r\nimport { Organization, OrganizationType } from '../../interfaces/Organization';\r\nimport { ITariffService } from '../../services/Interfaces/ITariffService';\r\nimport { ProviderContext, withSnackbar } from 'notistack';\r\n\r\ntype LogInProps = AppState & typeof AppActionCreators & ProviderContext;\r\n\r\nclass Login extends React.PureComponent<\r\n LogInProps,\r\n { user: any; api: Organization[]; organization: any }\r\n> {\r\n private authService!: IAuthService;\r\n private organizationService!: IOrganizationService;\r\n private tariffService!: ITariffService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n constructor(props: any) {\r\n super(props);\r\n }\r\n\r\n public componentDidMount() {\r\n this.authService = (this.context as AppContext).authenticationService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.tariffService = (this.context as AppContext).tariffService;\r\n\r\n this.getUser();\r\n }\r\n\r\n public login = () => {\r\n this.authService!.loginAsync();\r\n };\r\n\r\n public callApi = async () => {\r\n try {\r\n const result = await this.tariffService.GetTariffTypes(1);\r\n // this.setState({ api: result });\r\n\r\n console.log('Api return successfully data, check in section - Api response');\r\n } catch (error) {\r\n console.log('msg - ' + error);\r\n }\r\n };\r\n\r\n public addApi = async () => {\r\n try {\r\n //let result = await this.organizationService.AddOrganizationType(orgType);\r\n //this.setState({ organization: result });\r\n\r\n console.log('Api return successfully data, check in section - Api response');\r\n } catch (error) {\r\n console.log('msg - ' + error);\r\n }\r\n };\r\n\r\n public updateApi = async () => {\r\n try {\r\n const orgType: OrganizationType = {\r\n code: 'TEST',\r\n gtId: 1,\r\n id: 6,\r\n isActive: true,\r\n name: 'TEST',\r\n translations: [\r\n { language: 'ro-RO', name: 'TEST', id: 0 },\r\n { language: 'en-EN', name: 'TEST', id: 0 }\r\n ],\r\n displayName: ''\r\n };\r\n\r\n await this.organizationService.UpdateOrganizationType(orgType);\r\n // this.setState({ api: result });\r\n\r\n console.log('Api return successfully data, check in section - Api response');\r\n } catch (error) {\r\n console.log('msg - ' + error);\r\n }\r\n };\r\n\r\n public renewToken = () => {\r\n this.authService\r\n .renewTokenAsync()\r\n .then((user) => {\r\n console.log('Token has been sucessfully renewed. :-)');\r\n this.props.SetUser(this.props.enqueueSnackbar);\r\n })\r\n .catch((error) => {\r\n console.error(error);\r\n });\r\n };\r\n\r\n public logout = () => {\r\n this.authService.logoutAsync();\r\n };\r\n\r\n public getUser = () => {\r\n this.authService.getUserAsync().then((user) => {\r\n if (user) {\r\n console.log(user);\r\n console.log(user!.expires_at);\r\n console.log('User has been successfully loaded from store.');\r\n } else {\r\n console.info('You are not logged in.');\r\n }\r\n });\r\n };\r\n\r\n public render() {\r\n return (\r\n
\r\n
\r\n {this.props.user != null ? this.props.user.expires_at : ''}\r\n {this.props.user != null ? this.props.user.profile.name : ''}\r\n \r\n Login\r\n \r\n \r\n Get User info\r\n \r\n \r\n Call API\r\n \r\n\r\n \r\n Add API\r\n \r\n\r\n \r\n Update API\r\n \r\n \r\n Renew Token\r\n \r\n \r\n Logout\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect((state: ApplicationState) => state.app, AppActionCreators)(withSnackbar(Login as any));\r\n","import * as React from 'react';\r\nimport { Redirect } from 'react-router';\r\nimport { AppState, AppActionCreators, ApplicationState } from '../../store';\r\nimport { connect } from 'react-redux';\r\nimport { IAuthService } from '../../services/Interfaces/IAuthService';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { History } from 'history';\r\nimport { ProviderContext, withSnackbar } from 'notistack';\r\n\r\ntype LogInCallBackProps = AppState & typeof AppActionCreators & History & ProviderContext;\r\n\r\ninterface LogInCallBackState {\r\n result: string;\r\n}\r\n\r\nclass LogInCallBack extends React.PureComponent {\r\n private authService!: IAuthService;\r\n static contextType = ApplicationContext;\r\n state = {\r\n result: ''\r\n } as LogInCallBackState;\r\n\r\n public async componentDidMount() {\r\n this.authService = (this.context as AppContext).authenticationService;\r\n if (this.props.user === null && this.props.location!.search !== '') {\r\n try { \r\n const result = await this.authService.userManager.signinRedirectCallback();\r\n this.setState({ result: result.state });\r\n } catch (error) {\r\n console.error('Eroare la procesarea callback-ului de autentificare:', error);\r\n // Redirecționează utilizatorul către pagina principală în caz de eroare\r\n window.location.href = \"/\";\r\n }\r\n }\r\n this.props.SetUser(this.props.enqueueSnackbar);\r\n await this.authService.checkState();\r\n }\r\n \r\n\r\n public render() {\r\n if (this.props.user === null) {\r\n return null;\r\n }\r\n if (this.state.result !== '') {\r\n return ;\r\n }\r\n\r\n return ;\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.app,\r\n AppActionCreators\r\n)(withSnackbar(LogInCallBack as any));\r\n","import * as React from 'react';\r\nimport { AppState, AppActionCreators, ApplicationState } from '../../store';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { IAuthService } from '../../services/Interfaces/IAuthService';\r\nimport { History, LocationState } from 'history';\r\nimport { Redirect } from 'react-router';\r\nimport { ProviderContext, withSnackbar } from 'notistack';\r\n\r\ntype RenewCallBackProps = AppState & typeof AppActionCreators & History & ProviderContext;\r\n\r\nclass RenewCallBack extends React.PureComponent {\r\n private authService!: IAuthService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n public async componentDidMount() {\r\n if (this.props.user === null && this.props.location!.search === '') {\r\n this.props.SetUser(this.props.enqueueSnackbar);\r\n return;\r\n }\r\n\r\n this.authService = (this.context as AppContext).authenticationService;\r\n try {\r\n await this.authService.userManager.signinSilentCallback();\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n public render() {\r\n if (this.props.location!.search === '') {\r\n return ;\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.app,\r\n AppActionCreators\r\n)(withSnackbar(RenewCallBack as any));\r\n","import { ITranslatorService } from '../services/Interfaces/ITranslatorService';\r\n\r\nexport class MUITranslations {\r\n public static GetTranslations(translatorService: ITranslatorService): any {\r\n return {\r\n body: {\r\n noMatch: translatorService.Tranlate('NO_RECORDS_TO_DISPLAY', 'Nu exista date de afisat'),\r\n toolTip: translatorService.Tranlate('SORT', 'Sorteaza'),\r\n columnHeaderTooltip: (column: any) =>\r\n `${translatorService.Tranlate('SORT_BY', 'Sorteaza dupa')} ${column.label}`\r\n },\r\n pagination: {\r\n next: translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n previous: translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n rowsPerPage: translatorService.Tranlate('ROWS_PER_PAGE', 'Randuri pe pagina'),\r\n displayRows: translatorService.Tranlate('OF', 'din')\r\n },\r\n toolbar: {\r\n search: translatorService.Tranlate('SEARCH', 'Cauta'),\r\n downloadCsv: 'Download CSV',\r\n print: 'Print',\r\n viewColumns: translatorService.Tranlate('VIEW_COLUMNS', 'Vizualizare coloane'),\r\n filterTable: translatorService.Tranlate('FILTER_TABLE', 'Filtreaza')\r\n },\r\n filter: {\r\n all: translatorService.Tranlate('FILTER_ALL', 'Toate'),\r\n title: translatorService.Tranlate('FILTER_FILTERS', 'Filtre'),\r\n reset: translatorService.Tranlate('FILTER_RESET', 'Reseteaza')\r\n },\r\n viewColumns: {\r\n title: translatorService.Tranlate('SHOW_COLUMNS', 'Vizualizare coloane'),\r\n titleAria: translatorService.Tranlate('SHOW_COLUMNS_TITLE', 'Vizualizeaza/ascunde coloane')\r\n },\r\n selectedRows: {\r\n text: 'row(s) selected',\r\n delete: 'Delete',\r\n deleteAria: 'Delete Selected Rows'\r\n }\r\n };\r\n }\r\n\r\n public static GetDashboardTranslations(translatorService:ITranslatorService):any{\r\n return {\r\n technicalCondition:[\r\n { title: '', field: 'displayName' },\r\n {\r\n title: translatorService.Tranlate('DASHBOARD_INTERIOR', 'Interior'),\r\n field: 'byInConditionValue' \r\n },\r\n {\r\n title: translatorService.Tranlate('DASHBOARD_EXTERIOR', 'Exterior'),\r\n field: 'byOutCondition'\r\n },\r\n {\r\n title: translatorService.Tranlate('DASHBOARD_MECHANICAL', 'Mecanica'),\r\n field: 'byTehnicalConditionValue'\r\n }\r\n ],\r\n stockTable:[\r\n {\r\n title: translatorService.Tranlate('DASHBOARD_VEHICLE_COUNT','Numar vehicule'),\r\n field: 'value'\r\n },\r\n {\r\n title: translatorService.Tranlate('DASHBOARD_STATE', 'Status'),\r\n field: 'displayName'\r\n }\r\n ],\r\n topBuyers:[\r\n {\r\n title: translatorService.Tranlate('DASHBOARD_ORGANIZATION', 'Organizatie'),\r\n field: 'organizationName'\r\n },\r\n {\r\n title: translatorService.Tranlate('DASHBOARD_BUYER_NAME', 'Cumparator'),\r\n field: 'buyerName'\r\n }\r\n ],\r\n topTentaiveBuyers:[\r\n {\r\n title: translatorService.Tranlate('DASHBOARD_ORGANIZATION', 'Organizatie'),\r\n field: 'organizationName'\r\n },\r\n {\r\n title: translatorService.Tranlate('DASHBOARD_BUYER_NAME', 'Cumparator'),\r\n field: 'buyerName'\r\n },\r\n {\r\n title: translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_IN_PROGRESS_TABLE_HEADER',\r\n 'Achizitii in desfasurare'\r\n ),\r\n field: 'inProgressPurchasesCount'\r\n }\r\n ],\r\n groupedOfferAndSentEmail:[\r\n {\r\n label: 'date',\r\n value: 'offerGeneratedCount'\r\n },\r\n {\r\n label: 'date',\r\n value: 'emailSentCount'\r\n }\r\n ],\r\n advertListAndSoldVehicleListGrouped: [\r\n {\r\n label: 'date',\r\n value: 'advertCount'\r\n },\r\n {\r\n label: 'date',\r\n value: 'soldVehicleCount'\r\n }\r\n ],\r\n salesTable:[\r\n { title: translatorService.Tranlate('DASHBOARD_CAR_TYPE', 'Marca'), field: 'makeName' },\r\n { title: translatorService.Tranlate('DASHBOARD_MODEL', 'Model'), field: 'modelName' },\r\n { title: translatorService.Tranlate('DASHBOARD_QUANTITY', 'Nr. Unitati vandute'), field: 'numberOfUnitSold'}\r\n ],\r\n stockMap:[\r\n {\r\n title: translatorService.Tranlate('DASHBOARD_ORGANIZATION', 'Organizatie'),\r\n field: 'name'\r\n },\r\n {\r\n title: translatorService.Tranlate('CLIENT_DATA_FORM_ADDRESS', 'Adresa'),\r\n field: 'address'\r\n },\r\n {\r\n title: translatorService.Tranlate('DASHBOARD_VEHICLE_COUNT','Numar vehicule'),\r\n field: 'count'\r\n }\r\n ],\r\n\r\n }\r\n }\r\n}\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n AppUserAdminActionCreators,\r\n AppUserAdminState,\r\n AppState\r\n} from '../../../store';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta\r\n} from 'mui-datatables';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { IconButton, Box, Switch, Button, Tooltip } from '@material-ui/core';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../../services/Interfaces/IAppUserService';\r\nimport { AppUser } from '../../../interfaces/AppUser';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Organization } from '../../../interfaces/Organization';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\n\r\ntype UsersTabProps = {\r\n appUserAdminState: AppUserAdminState;\r\n appState: AppState;\r\n} & ProviderContext &\r\n typeof AppUserAdminActionCreators &\r\n RouteComponentProps;\r\n\r\ninterface IUsersTabState {\r\n users: AppUser[];\r\n isLoading: boolean;\r\n}\r\nclass UsersTab extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n users: [],\r\n isLoading: false\r\n } as IUsersTabState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadUsers();\r\n }\r\n );\r\n }\r\n\r\n loadUsers = async () => {\r\n const userList = await this.appUserService.GetAppUsers();\r\n\r\n this.setState({\r\n users: userList.users,\r\n isLoading: false\r\n });\r\n };\r\n\r\n handleUserActiveChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const usersClone = [...this.state.users];\r\n const updUser = usersClone.find((item) => item.id === id);\r\n\r\n if (updUser !== undefined) {\r\n updUser.isActive = event.target.checked;\r\n\r\n try {\r\n await this.appUserService.UpdateUser(updUser);\r\n this.setState({\r\n users: usersClone\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n onRowClick = (e: any, id: string) => {\r\n this.props.history.push('/admin/users/' + id);\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'email',\r\n label: this.translatorService.Tranlate('USERS_EMAIL_HEADER', 'Email'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.onRowClick(e, tableMeta.rowData[0])}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'lastName',\r\n label: this.translatorService.Tranlate('USERS_LAST_NAME_HEADER', 'Nume'),\r\n options: {\r\n filter: false\r\n }\r\n },\r\n {\r\n name: 'firstName',\r\n label: this.translatorService.Tranlate('USERS_FIRST_NAME_HEADER', 'Prenume'),\r\n options: {\r\n filter: false\r\n }\r\n },\r\n {\r\n name: 'organization',\r\n label: this.translatorService.Tranlate('USERS_ORGANIZATION_HEADER', 'Organizatie'),\r\n options: {\r\n customBodyRender: (value: Organization) => {\r\n return value.hoName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'updatedByUserFullName',\r\n label: this.translatorService.Tranlate('USERS_UPDATEDBY_HEADER', 'Modificat de')\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate('USERS_DATE_MODIFICATION_HEADER', 'Data MOdificare'),\r\n\r\n options: {\r\n sortDirection: 'desc',\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'isActive',\r\n label: this.translatorService.Tranlate('USERS_IS_ACTIVE_HEADER', 'Activ'),\r\n options: {\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(isActive: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names[0]) !== -1 && isActive === true) ||\r\n (filterVal.indexOf(this.names[1]) !== -1 && isActive === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleUserActiveChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n // responsive: \"stacked\",\r\n customToolbar: () => {\r\n return (\r\n \r\n {\r\n this.props.history.push('/admin/users/new');\r\n }}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appUserAdminState: state.appUserAdmin,\r\n appState: state.app\r\n }),\r\n AppUserAdminActionCreators // Selects which action creators are merged into the component's props\r\n)(withSnackbar(UsersTab as any));\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppUserAdminActionCreators, AppState } from '../../../store';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta\r\n} from 'mui-datatables';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { IconButton, Box, Switch, Button, Tooltip } from '@material-ui/core';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../../services/Interfaces/IAppUserService';\r\nimport { AppUserRole } from '../../../interfaces/AppUser';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\n\r\ntype RolesTabProps = ProviderContext & RouteComponentProps & { appState: AppState };\r\n\r\ninterface IRolesTabState {\r\n roles: AppUserRole[];\r\n isLoading: boolean;\r\n}\r\nclass RolesTab extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n roles: [],\r\n isLoading: false\r\n } as IRolesTabState;\r\n\r\n public async componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadRoles();\r\n }\r\n );\r\n }\r\n\r\n loadRoles = async () => {\r\n const roleList = await this.appUserService.GetAppUserRoles();\r\n\r\n this.setState({\r\n roles: roleList.roles,\r\n isLoading: false\r\n });\r\n };\r\n\r\n handleActiveChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const rolesClone = [...this.state.roles];\r\n const role = rolesClone.find((item) => item.id === id);\r\n\r\n if (role !== undefined) {\r\n role.isActive = event.target.checked;\r\n\r\n try {\r\n await this.appUserService.UpdateRole(role);\r\n this.setState({\r\n roles: rolesClone\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n onRowClick = (e: any, id: string) => {\r\n this.props.history.push('/admin/roles/' + id);\r\n };\r\n\r\n getColumns = () => {\r\n return [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'name',\r\n label: this.translatorService.Tranlate('ROLES_NAME_HEADER', 'Grup Permisiuni'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.onRowClick(e, tableMeta.rowData[0])}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate('ROLES_DATE_MODIFICATION_HEADER', 'Data Modificare'),\r\n\r\n options: {\r\n sortDirection: 'desc',\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'isActive',\r\n label: this.translatorService.Tranlate('ROLES_IS_ACTIVE_HEADER', 'Activ'),\r\n options: {\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(isActive: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names[0]) !== -1 && isActive === true) ||\r\n (filterVal.indexOf(this.names[1]) !== -1 && isActive === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleActiveChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n ];\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n // responsive: \"stacked\",\r\n customToolbar: () => {\r\n return (\r\n \r\n {\r\n this.props.history.push('/admin/roles/new');\r\n }}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {this.state.isLoading ? null : (\r\n \r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }), // Selects which state properties are merged into the component's props\r\n AppUserAdminActionCreators // Selects which action creators are merged into the component's props\r\n)(withSnackbar(RolesTab as any));\r\n","import React, { Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Grid, Box, Typography, Tabs, Tab, Card } from '@material-ui/core';\r\n\r\nfunction TabPanel(props) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired\r\n};\r\n\r\nconst LivePreviewExample = () => {\r\n const [value, setValue] = React.useState(0);\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n sasa\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default TabPanel;\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppUserAdminActionCreators, AppUserAdminState } from '../../../store';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport UsersTab from './UsersTab';\r\nimport RolesTab from './RolesTab';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport TabPanel from '../../_shared/Tabs';\r\nimport { Card, Tab, Tabs, Box, CardContent } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../../services/Interfaces/IAppUserService';\r\n\r\nexport interface ExternalAppUsersAdminProps {\r\n selectedTab: number;\r\n}\r\ntype AppUserAdminProps = AppUserAdminState &\r\n typeof AppUserAdminActionCreators &\r\n ExternalAppUsersAdminProps &\r\n RouteComponentProps<{ startDateIndex: string }>;\r\n\r\nclass AppUsersAdmin extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n selectedTab: 0\r\n };\r\n\r\n public componentDidMount() {\r\n if (this.props.match.path.toLowerCase() === '/admin/users') {\r\n this.setState({ selectedTab: 0 });\r\n }\r\n if (this.props.match.path.toLowerCase() === '/admin/roles') {\r\n this.setState({ selectedTab: 1 });\r\n }\r\n }\r\n\r\n handleChangeTab = async (event: React.ChangeEvent, newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.app, // Selects which state properties are merged into the component's props\r\n AppUserAdminActionCreators // Selects which action creators are merged into the component's props\r\n)(AppUsersAdmin as any);\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n AppUserAdminState,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Grid,\r\n TextField,\r\n Switch,\r\n FormControlLabel,\r\n Button,\r\n Box,\r\n Card,\r\n CardContent\r\n} from '@material-ui/core';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../../services/Interfaces/IAppUserService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { Organization } from '../../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { AppUser } from '../../../interfaces/AppUser';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\n\r\nexport interface ExternalEditUserProps {\r\n userChanged: () => Promise;\r\n}\r\n\r\ntype EditUserProps = { appState: AppState } & AppUserAdminState &\r\n ProviderContext &\r\n typeof AppUserAdminActionCreators &\r\n typeof AppActionCreators &\r\n RouteComponentProps<{ id: string }> &\r\n ExternalEditUserProps;\r\n\r\ninterface IEditUserState {\r\n organizations: Organization[];\r\n managers: AppUser[];\r\n userRoles: IReferential[];\r\n users: AppUser[];\r\n user: AppUser;\r\n countryList: IReferential[];\r\n costCenterList: IReferential[];\r\n}\r\n\r\nclass EditUser extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n organizations: [],\r\n managers: [] as AppUser[],\r\n users: [] as AppUser[],\r\n userRoles: [],\r\n user: {\r\n email: '',\r\n firstName: '',\r\n lastName: '',\r\n phoneNumber: '',\r\n isActive: true,\r\n organization: null,\r\n organizationId: 0,\r\n jobFunction: '',\r\n manager: null,\r\n managerId: '',\r\n role: null,\r\n roleId: null,\r\n id: null,\r\n isMavo: false,\r\n hideOrderPrices: false,\r\n country: null,\r\n countryId: null,\r\n costCenterId: null,\r\n costCenter: null,\r\n hasValidityDate: false,\r\n validityDate: null\r\n } as AppUser,\r\n countryList: [],\r\n costCenterList: []\r\n };\r\n\r\n public async componentDidMount() {\r\n const refRole = Referentials.referential.find((item) => item.code === ReferentialCode.UserRole);\r\n const countryRef = Referentials.referential.find((item) => item.code === ReferentialCode.Country);\r\n const costCenterRef = Referentials.referential.find((item) => item.code === ReferentialCode.CostCenter);\r\n const [org, users, userRoles, countryList, costCenterList] = await Promise.all([\r\n this.organizationService.GetOrganizations(),\r\n this.appUserService.GetAppUsers(),\r\n this.appReferentialService.Get(refRole!.baseUrl),\r\n this.appReferentialService.Get(countryRef!.baseUrl),\r\n this.appReferentialService.Get(costCenterRef!.baseUrl)\r\n ]);\r\n\r\n let user = this.state.user;\r\n\r\n if (this.props.match.params.id.toUpperCase() !== 'NEW') {\r\n try {\r\n user = await this.appUserService.GetAppUser(this.props.match.params.id);\r\n\r\n const organization = org.find((o) => o.id === user.organizationId);\r\n user.organization = organization === undefined ? null : organization;\r\n\r\n const manager = users.users.find((m) => m.id === user.managerId);\r\n user.manager = manager === undefined ? null : manager;\r\n\r\n user.role = null;\r\n if (!isNullOrUndefined(user.roleId)) {\r\n const role = userRoles.find((item) => item.id === user.roleId);\r\n user.role = isNullOrUndefined(role) ? null : role;\r\n }\r\n user.country = null;\r\n if (!isNullOrUndefined(user.countryId)) {\r\n const country = countryList.find((item) => item.id === user.countryId);\r\n user.country = isNullOrUndefined(country) ? null : country;\r\n }\r\n user.costCenter = null;\r\n if (!isNullOrUndefined(user.costCenterId)) {\r\n const costCenter = costCenterList.find((item) => item.id === user.costCenterId);\r\n user.costCenter = isNullOrUndefined(costCenter) ? null : costCenter;\r\n }\r\n } catch (error) {}\r\n }\r\n\r\n this.setState({\r\n organizations: org,\r\n users: users.users,\r\n user: user,\r\n userRoles: userRoles.filter((item) => item.isActive),\r\n managers: this.filterMangers(users.users, user.organization),\r\n countryList: countryList,\r\n costCenterList: costCenterList\r\n });\r\n }\r\n\r\n private handleTextChange = (event: React.ChangeEvent) => {\r\n let value: any;\r\n if (event.target.type === 'text') {\r\n value = event.currentTarget.value;\r\n }\r\n if (event.target.type === 'checkbox') {\r\n value = event.currentTarget.checked;\r\n }\r\n\r\n this.setState({\r\n ...this.state,\r\n user: {\r\n ...this.state.user,\r\n [event.target.id]: value\r\n }\r\n });\r\n };\r\n\r\n private handleAutocompleteChange = (\r\n property: string,\r\n propertyId: string,\r\n newValue: Organization | null | undefined | AppUser | IReferential\r\n ) => {\r\n this.setState({\r\n user: {\r\n ...this.state.user,\r\n [property]: newValue,\r\n [propertyId]: newValue === null || newValue === undefined ? null : newValue.id\r\n // gtId: newValue === null || newValue === undefined || property === \"manager\" ?\r\n // this.state.user.gtId : newValue.gtId\r\n }\r\n });\r\n };\r\n\r\n private handleOrganizationChange = (newValue: Organization | null) => {\r\n this.setState({\r\n user: {\r\n ...this.state.user,\r\n organization: newValue,\r\n organizationId: newValue === null ? null : newValue.id,\r\n gtId: newValue === null || newValue === undefined ? this.state.user.gtId : newValue.gtId,\r\n hoId:\r\n newValue === null || newValue === undefined\r\n ? this.state.user.hoId\r\n : isNullOrUndefined(newValue.hoId)\r\n ? newValue.id\r\n : newValue.hoId,\r\n manager: null,\r\n managerId: null\r\n },\r\n managers: this.filterMangers(this.state.users, newValue)\r\n });\r\n };\r\n \r\n\r\n private saveUser = async () => {\r\n try {\r\n const users = await this.appUserService.GetAppUsers(this.state.user.email);\r\n\r\n if (users.totalCount > 1) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_USER_EXISTS', 'Utilizatorul exista deja!'),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n if (users.totalCount === 1 && users.users[0].id !== this.state.user.id) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_USER_EXISTS', 'Utilizatorul exista deja!'),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n if (this.state.user.id !== null) {\r\n await this.appUserService.UpdateUser(this.state.user);\r\n } else {\r\n const newUser = await this.appUserService.AddUser(this.state.user);\r\n this.props.history.push('/admin/users/' + newUser.id);\r\n }\r\n\r\n this.props.userChanged();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n public filterMangers = (users: AppUser[], newOrganization: Organization | null | undefined) => {\r\n return newOrganization === null || newOrganization === undefined\r\n ? []\r\n : users.filter((value) => value.organization!.hoId === newOrganization!.hoId);\r\n };\r\n\r\n \r\n handleValidityDateChange = (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n user: {\r\n ...this.state.user,\r\n validityDate: new Date(date.format('YYYY-MM-DD'))\r\n }\r\n });\r\n };\r\n\r\n public renderForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n this.handleOrganizationChange(newValue)\r\n }\r\n getOptionLabel={(option: Organization) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleAutocompleteChange('manager', 'managerId', newValue)\r\n }\r\n getOptionLabel={(option: AppUser) => option.userName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n this.handleAutocompleteChange('role', 'roleId', newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleAutocompleteChange('country', 'countryId', newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleAutocompleteChange('costCenter', 'costCenterId', newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n {this.state.user.hasValidityDate ? (\r\n \r\n \r\n \r\n ) : null}\r\n \r\n {\r\n this.setState({\r\n user: {\r\n ...this.state.user,\r\n hasValidityDate: e.target.checked,\r\n validityDate: !e.target.checked ? null : this.state.user.validityDate\r\n }\r\n });\r\n }}\r\n color=\"primary\"\r\n id=\"hasValidityDate\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={this.translatorService.Tranlate('EDIT_USER_HAS_VALIDITY_DATE_FIELD', 'Cu perioada de valabilitate')}\r\n />\r\n\r\n this.handleTextChange(e)}\r\n color=\"primary\"\r\n id=\"isActive\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={this.translatorService.Tranlate('EDIT_USER_ISACTIVE_FIELD', 'Stare')}\r\n />\r\n\r\n this.handleTextChange(e)}\r\n color=\"primary\"\r\n id=\"isMavo\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={this.translatorService.Tranlate('EDIT_USER_ISMAVO_FIELD', 'User MAVO')}\r\n />\r\n this.handleTextChange(e)}\r\n color=\"primary\"\r\n id=\"hideOrderPrices\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={this.translatorService.Tranlate('EDIT_USER_HIDE_ORDER_PRICES_FIELD', 'Nu trimite email de confirmare comanda')}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n \r\n \r\n {this.renderForm()}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (stateProps: any, dispatchProps: any, ownProps: ExternalEditUserProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n//export default EditUser as any\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n userList: state.appUserAdmin,\r\n appState: state.app\r\n }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(EditUser as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { TextField, Card, Button, Box, IconButton, CardContent } from '@material-ui/core';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../../services/Interfaces/IAppUserService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { AppUser, AppUserRole } from '../../../interfaces/AppUser';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n SelectableRows,\r\n MUIDataTableOptions,\r\n MUIDataTableMeta\r\n} from 'mui-datatables';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\n\r\ninterface IUserDetailsUser {\r\n appUser: AppUser;\r\n}\r\n\r\ntype EditUserRolesProps = { appState: AppState } & ProviderContext &\r\n typeof AppUserAdminActionCreators &\r\n typeof AppActionCreators &\r\n RouteComponentProps<{ id: string }> &\r\n IUserDetailsUser;\r\n\r\ninterface IEditUserRolesState {\r\n isLoading: boolean;\r\n userRoles: AppUserRole[];\r\n selectedRole: AppUserRole | null;\r\n roles: AppUserRole[];\r\n}\r\n\r\nclass EditUserRoles extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: false,\r\n userRoles: [] as AppUserRole[],\r\n selectedRole: {} as AppUserRole,\r\n roles: [] as AppUserRole[]\r\n };\r\n\r\n public async componentDidMount() {\r\n if (this.props.appUser.id === null) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadUserRoles();\r\n }\r\n );\r\n }\r\n\r\n loadUserRoles = async () => {\r\n const [userRoleList, roles] = await Promise.all([\r\n this.appUserService.GetUserAppUserRoles(this.props.appUser.id, 1, 10000),\r\n this.appUserService.GetAppUserRoles()\r\n ]);\r\n\r\n const newroles = this.filterRoles(roles.roles, userRoleList.roles);\r\n this.setState({\r\n userRoles: userRoleList.roles,\r\n roles: newroles,\r\n isLoading: false\r\n });\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'name',\r\n label: this.translatorService.Tranlate('USER_ROLE_NAME_HEADER', 'Rol')\r\n },\r\n {\r\n name: 'dateCreation',\r\n label: this.translatorService.Tranlate('USER_ROLE_DATE_CREATION_HEADER', 'Data Creare'),\r\n\r\n options: {\r\n sortDirection: 'desc',\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'createdByUserFullName',\r\n label: this.translatorService.Tranlate('USER_ROL_CREATEDBY_HEADER', 'Creat de')\r\n },\r\n {\r\n name: '',\r\n options: {\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deleteRole(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n getOptions = () => {\r\n const options = {\r\n print: false,\r\n download: false,\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService)\r\n } as MUIDataTableOptions;\r\n\r\n return options;\r\n };\r\n\r\n addRole = async () => {\r\n const newRole = this.state.selectedRole;\r\n newRole.dateCreation = moment.utc().toISOString();\r\n newRole.createdByUserFullName =\r\n this.props.appState.appUser!.lastName + ' ' + this.props.appState.appUser!.firstName;\r\n\r\n const newUserRoles = [...this.state.userRoles, newRole];\r\n const newRoles = [...this.state.roles];\r\n newRoles.splice(\r\n newRoles.findIndex((i) => i.id === this.state.selectedRole.id),\r\n 1\r\n );\r\n try {\r\n await this.appUserService.AddAppUserRole({\r\n userId: this.props.appUser.id!,\r\n roleId: this.state.selectedRole.id!\r\n });\r\n // this.setState({\r\n // isLoading: true,\r\n // selectedRole: null\r\n // }, () => {\r\n // this.loadUserRoles();\r\n // });\r\n this.setState({ userRoles: newUserRoles, roles: newRoles, selectedRole: null });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n deleteRole = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const index = this.state.userRoles.findIndex((i) => i.id === tableMeta.rowData[0]);\r\n const deletedRole = this.state.userRoles[index];\r\n\r\n const newUserRoleArray = [...this.state.userRoles];\r\n newUserRoleArray.splice(index, 1);\r\n\r\n await this.appUserService.DeleteAppUserRole({\r\n userId: this.props.appUser.id!,\r\n roleId: deletedRole.id!\r\n });\r\n\r\n if (deletedRole.isActive) {\r\n this.setState({ userRoles: newUserRoleArray, roles: [...this.state.roles, deletedRole] });\r\n } else {\r\n this.setState({ userRoles: newUserRoleArray });\r\n }\r\n\r\n // this.setState({\r\n // isLoading: true,\r\n // selectedRole: null\r\n // }, () => {\r\n // this.loadUserRoles();\r\n // });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleAutocompleteChange = (newValue: AppUserRole | null) => {\r\n this.setState({ selectedRole: newValue });\r\n };\r\n\r\n filterRoles = (roles: AppUserRole[], appuserRoles: AppUserRole[]) => {\r\n return roles.filter(\r\n (item) => appuserRoles.find((r) => r.id === item.id) === undefined && item.isActive\r\n );\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.handleAutocompleteChange(newValue)\r\n }\r\n getOptionLabel={(option: AppUserRole) => option.name || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n return (\r\n \r\n {this.props.appUser.id !== null ? this.renderAddForm() : null}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }), // Selects which state properties are merged into the component's props\r\n { ...AppUserAdminActionCreators, ...AppActionCreators } // Selects which action creators are merged into the component's props\r\n)(withSnackbar(EditUserRoles as any));\r\n","import React from 'react';\r\nimport { AppUser } from '../../../interfaces/AppUser';\r\nimport { connect } from 'react-redux';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { Box, TextField, Button, CardContent, Card } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../../services/Interfaces/IAppUserService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { ApplicationState } from '../../../store';\r\n\r\ninterface IUserDetailsUser {\r\n appUser: AppUser;\r\n}\r\n\r\ntype ResetPassProps = IUserDetailsUser & RouteComponentProps<{ id: string }> & ProviderContext;\r\n\r\ninterface IResetPassState {\r\n isLoading: boolean;\r\n}\r\n\r\nclass ResetUserPass extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n public resetPass = async () => {\r\n try {\r\n if (this.props.appUser.id === null) {\r\n return;\r\n }\r\n\r\n await this.appUserService.ResetPassword(this.props.appUser.id);\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n public renderResetPassForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n \r\n {this.translatorService.Tranlate(\r\n 'ADMIN_EDIT_USER_RESETPASS_BTN',\r\n 'Trimite mail resetare parola'\r\n )}\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n return this.renderResetPassForm();\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.appUserAdmin // Selects which state properties are merged into the component's props\r\n)(withSnackbar(ResetUserPass as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppUserAdminActionCreators, AppUserAdminState } from '../../../store';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport NavigationIcon from '@material-ui/icons/Navigation';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport TabPanel from '../../_shared/Tabs';\r\nimport { Card, Tab, Tabs, Button, CardContent, Box } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../../services/Interfaces/IAppUserService';\r\nimport EditUser from './EditUser';\r\nimport EditUserRoles from './EditUserRoles';\r\nimport ResetPassword from './ResetPassword';\r\nimport { AppUser } from '../../../interfaces/AppUser';\r\n\r\ntype UserDetailsProps = AppUserAdminState &\r\n typeof AppUserAdminActionCreators &\r\n RouteComponentProps<{ id: string }>;\r\n\r\ninterface IUserDetailsState {\r\n user: AppUser;\r\n selectedTab: number;\r\n}\r\n\r\nclass UserDetails extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n selectedTab: 0,\r\n user: {\r\n email: '',\r\n firstName: '',\r\n lastName: '',\r\n phoneNumber: '',\r\n isActive: false,\r\n organization: {},\r\n organizationId: 0,\r\n jobFunction: '',\r\n id: null\r\n } as AppUser\r\n };\r\n\r\n public async componentDidMount() {\r\n await this.loadUser();\r\n }\r\n\r\n loadUser = async () => {\r\n let user = this.state.user;\r\n\r\n if (this.props.match.params.id.toUpperCase() !== 'NEW') {\r\n try {\r\n user = await this.appUserService.GetAppUser(this.props.match.params.id);\r\n } catch (error) {}\r\n }\r\n this.setState({\r\n user: user\r\n });\r\n };\r\n\r\n handleChangeTab = async (event: React.ChangeEvent, newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n {\r\n this.props.history.push('/admin/users');\r\n }}\r\n >\r\n \r\n {this.translatorService.Tranlate('EDIT_USER_BACK_TO_USERS_BTN', 'Utilizatori')}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n this.loadUser()} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.appUserAdmin, // Selects which state properties are merged into the component's props\r\n AppUserAdminActionCreators // Selects which action creators are merged into the component's props\r\n)(UserDetails as any);\r\n","import React, { Fragment } from 'react';\r\nimport { AppUserAdminActionCreators, ApplicationState, AppActionCreators } from '../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Card, Button, Box, IconButton, CardContent, Tabs, Tab } from '@material-ui/core';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../../services/Interfaces/IAppUserService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { AppUserRole, AppUserRoleClaim } from '../../../interfaces/AppUser';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n SelectableRows,\r\n MUIDataTableOptions,\r\n MUIDataTableMeta\r\n} from 'mui-datatables';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { RoleClaimsEnum } from '../../../helpers/Constants';\r\nimport TabPanel from '../../_shared/Tabs';\r\nimport NavigationIcon from '@material-ui/icons/Navigation';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\n\r\ntype EditRoleProps = ProviderContext & RouteComponentProps<{ id: string }>;\r\n\r\ninterface IEditRoleState {\r\n isLoading: boolean;\r\n roleClaims: AppUserRoleClaim[];\r\n selectedClaim: AppUserRoleClaim | null;\r\n role: AppUserRole | null;\r\n claims: AppUserRoleClaim[];\r\n}\r\n\r\nclass EditRole extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: false,\r\n roleClaims: [] as AppUserRoleClaim[],\r\n selectedClaim: {} as AppUserRoleClaim,\r\n role: {\r\n id: null,\r\n name: '',\r\n dateCreation: new Date(),\r\n isActive: true\r\n } as AppUserRole,\r\n claims: [] as AppUserRoleClaim[]\r\n };\r\n\r\n public async componentDidMount() {\r\n if (this.props.match.params.id.toUpperCase() !== 'NEW') {\r\n try {\r\n const role = await this.appUserService.GetAppUserRole(this.props.match.params.id);\r\n\r\n this.setState(\r\n {\r\n role: role,\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadRoleClaims();\r\n }\r\n );\r\n } catch (error) {}\r\n }\r\n }\r\n\r\n loadRoleClaims = async () => {\r\n const roleClaimsList = await this.appUserService.GetAppUserRoleClaims(\r\n this.state.role.id,\r\n 1,\r\n 10000\r\n );\r\n\r\n const newClaims = this.filterClaims(roleClaimsList.claims);\r\n this.setState({\r\n roleClaims: roleClaimsList.claims,\r\n isLoading: false,\r\n claims: newClaims,\r\n selectedClaim: null\r\n });\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'claimId',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'claimValue',\r\n label: ' ', //this.translatorService.Tranlate(\"ROLE_CLAIM_NAME_HEADER\", \"Nume\"),\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' })\r\n }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deleteClaim(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n getOptions = () => {\r\n const options = {\r\n print: false,\r\n download: false,\r\n filter: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n viewColumns: false,\r\n filterType: 'checkbox',\r\n textLabels: MUITranslations.GetTranslations(this.translatorService)\r\n } as MUIDataTableOptions;\r\n\r\n return options;\r\n };\r\n\r\n addClaim = async () => {\r\n const newClaim = this.state.selectedClaim;\r\n newClaim.roleId = this.state.role.id;\r\n\r\n try {\r\n await this.appUserService.AddRoleClaim(newClaim);\r\n this.setState({ isLoading: true }, async () => {\r\n await this.loadRoleClaims();\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n saveRole = async () => {\r\n try {\r\n const roles = await this.appUserService.GetAppUserRoles(this.state.role.name);\r\n\r\n if (roles.totalCount > 1) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_ROLE_EXISTS', 'Rolul exista deja!'),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n if (roles.totalCount === 1 && roles.roles[0].id !== this.state.role.id) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_ROLE_EXISTS', 'Rolul exista deja!'),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n if (this.state.role.id !== null) {\r\n await this.appUserService.UpdateRole(this.state.role);\r\n } else {\r\n const newRole = await this.appUserService.AddRole(this.state.role);\r\n this.props.history.push('/admin/roles/' + newRole.id);\r\n this.setState({ role: newRole }, () => this.loadRoleClaims());\r\n }\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n deleteClaim = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const index = this.state.roleClaims.findIndex((i) => i.claimValue === tableMeta.rowData[1]);\r\n const deletedClaim = this.state.roleClaims[index];\r\n const newRoleClaimsArray = [...this.state.roleClaims];\r\n newRoleClaimsArray.splice(index, 1);\r\n\r\n await this.appUserService.DeleteRoleClaim(deletedClaim);\r\n\r\n this.setState({\r\n roleClaims: newRoleClaimsArray,\r\n claims: this.filterClaims(newRoleClaimsArray)\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleAutocompleteChange = (newValue: AppUserRoleClaim | null) => {\r\n this.setState({ selectedClaim: newValue });\r\n };\r\n\r\n filterClaims = (appuserRoles: AppUserRoleClaim[]) => {\r\n const values = Object.values(RoleClaimsEnum);\r\n\r\n const roleClaims = values.map((item) => {\r\n return { claimType: 'role', claimValue: item };\r\n });\r\n\r\n return roleClaims.filter(\r\n (item) => appuserRoles.find((r) => r.claimValue === item.claimValue) === undefined\r\n ) as AppUserRoleClaim[];\r\n };\r\n\r\n rolNameChange = (e: React.ChangeEvent) => {\r\n this.setState({\r\n role: {\r\n ...this.state.role,\r\n name: e.target.value\r\n }\r\n });\r\n };\r\n\r\n public renderEditRoleForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n this.rolNameChange(e)}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n public renderAddForm() {\r\n if (this.state.role.id === null) {\r\n return;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.handleAutocompleteChange(newValue)\r\n }\r\n getOptionLabel={(option: AppUserRoleClaim) => option.claimValue || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public renderClaims() {\r\n if (this.state.role.id === null) {\r\n return;\r\n }\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {this.state.isLoading ? null : (\r\n \r\n )}\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {\r\n this.props.history.push('/admin/roles');\r\n }}\r\n >\r\n \r\n {this.translatorService.Tranlate(\r\n 'EDIT_ROL_BACK_TO_ROLS_BTN',\r\n 'Grupuri Permisiuni'\r\n )}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {this.renderEditRoleForm()}\r\n {this.renderAddForm()}\r\n {this.renderClaims()}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.appUserAdmin, // Selects which state properties are merged into the component's props\r\n { ...AppUserAdminActionCreators, ...AppActionCreators } // Selects which action creators are merged into the component's props\r\n)(withSnackbar(EditRole as any));\r\n","import React, { Fragment, ChangeEvent } from 'react';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Box, Switch, Card, TextField } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { ITranslation, IReferential, IReferentialConfig } from '../../../interfaces/IReferential';\r\nimport Autocomplete, { RenderInputParams } from '@material-ui/lab/Autocomplete';\r\nimport MaterialTable, { Icons, EditComponentProps, Column } from 'material-table';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { forwardRef } from 'react';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { Language } from '../../../interfaces/Organization';\r\nimport * as R from 'ramda';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport _ from 'lodash';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ntype CityListProps = { appState: AppState } & ProviderContext;\r\n\r\ninterface ICityListState {\r\n countryList: IReferential[];\r\n regionList: IReferential[];\r\n initialRegionList: IReferential[];\r\n referentials: IReferential[];\r\n filteredReferentials: IReferential[];\r\n isLoading: boolean;\r\n selectedReferential: IReferentialConfig | null;\r\n selectedCountry: IReferential | null;\r\n selectedRegion: IReferential | null;\r\n languages: Language[];\r\n}\r\n\r\nclass CityAppReferentials extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n referentials: [],\r\n isLoading: false,\r\n selectedReferential: null,\r\n languages: [] as Language[],\r\n countryList: [],\r\n regionList: [],\r\n dependentReferentialConfig: null,\r\n selectedCountry: null,\r\n selectedRegion: null,\r\n filteredReferentials: [],\r\n initialCountryList: [],\r\n initialRegionList: [],\r\n } as ICityListState;\r\n\r\n componentDidMount = () => {\r\n const referential = Referentials.referential.find(x => x.code === ReferentialCode.City) as IReferentialConfig;\r\n this.setState({\r\n isLoading: true,\r\n languages: this.activeLanguages(),\r\n },\r\n async () => {\r\n this.loadReferentialsList(referential);\r\n });\r\n };\r\n\r\n loadReferentialsList = async (value: IReferentialConfig | null) => {\r\n let referentialList: IReferential[] = [];\r\n let countryList: IReferential[] = [];\r\n let regionList: IReferential[] = [];\r\n if (value !== null && value.getUrl !== '') {\r\n try {\r\n referentialList = await this.appReferentialService.GetFromDB(value.getUrl);\r\n countryList = (await this.loadDependentReferentials(ReferentialCode.Country)).dependentReferentialList.filter(x => x.isActive === true);\r\n regionList = (await this.loadDependentReferentials(ReferentialCode.Region)).dependentReferentialList.filter(x => x.isActive === true);\r\n referentialList.forEach((refItem) => {\r\n this.state.languages.forEach((lang) => {\r\n const translation = refItem.translations.find((item) => item.language === lang.code);\r\n if (R.isNil(translation)) {\r\n refItem.translations.push({\r\n id: 0,\r\n name: '',\r\n language: lang.code,\r\n referentialTypeId: refItem.id\r\n } as ITranslation);\r\n }\r\n });\r\n });\r\n\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n const selectedCountry = this.state.selectedCountry ?? countryList[0];\r\n const selectedRegionList = regionList.filter((ref) => ref.dependencyId === selectedCountry.id);\r\n const selectedRegion = this.state.selectedRegion ?? selectedRegionList[0];\r\n \r\n this.setState({\r\n referentials: referentialList,\r\n isLoading: false,\r\n selectedReferential: value!,\r\n countryList: countryList, \r\n initialRegionList: regionList,\r\n selectedCountry: selectedCountry,\r\n selectedRegion: selectedRegion,\r\n regionList: selectedRegionList,\r\n filteredReferentials: referentialList.filter(\r\n (ref) => ref.dependencyId === selectedRegion?.id)\r\n });\r\n };\r\n\r\n handleCountryChange = (newValue: IReferential | null) => {\r\n if (R.isNil(newValue)) {\r\n this.setState({\r\n ...this.state,\r\n selectedCountry: newValue,\r\n filteredReferentials: this.state.referentials,\r\n selectedRegion: null\r\n });\r\n return;\r\n }\r\n\r\n const regionList = this.state.initialRegionList.filter((ref) => ref.dependencyId === newValue.id);\r\n this.setState({\r\n ...this.state,\r\n selectedCountry: newValue,\r\n regionList: regionList,\r\n selectedRegion: regionList.length ? regionList[0] : null,\r\n filteredReferentials: regionList.length ? this.state.referentials.filter(\r\n (ref) => ref.dependencyId === regionList[0].id) : []\r\n });\r\n };\r\n\r\n handleRegionChange = (newValue: IReferential | null) => {\r\n if (R.isNil(newValue)) {\r\n this.setState({\r\n ...this.state,\r\n selectedRegion: newValue,\r\n filteredReferentials: this.state.referentials\r\n });\r\n return;\r\n }\r\n\r\n const filteredReferentials = this.state.referentials.filter((ref) => ref.dependencyId === newValue.id);\r\n this.setState({\r\n ...this.state,\r\n selectedRegion: newValue,\r\n filteredReferentials: filteredReferentials\r\n });\r\n }\r\n\r\n loadDependentReferentials = async (dependency: string) => {\r\n const dependencyConfig = Referentials.referential.find(\r\n (r) => r.code === dependency\r\n ) as IReferentialConfig;\r\n const dependentReferentialList = await this.appReferentialService.GetFromDB(\r\n dependencyConfig.getUrl\r\n );\r\n return { dependentReferentialList, dependencyConfig };\r\n };\r\n\r\n handleIsActiveChange = async (event: ChangeEvent, rowData: any) => {\r\n const id = rowData.id;\r\n const newReferentials = [...this.state.filteredReferentials];\r\n const updatedReferential = newReferentials.find((ref) => ref.id === id);\r\n if (updatedReferential !== undefined) {\r\n updatedReferential.isActive = event.target.checked;\r\n\r\n try {\r\n await this.appReferentialService.Update(\r\n updatedReferential,\r\n this.state.selectedReferential!.updateUrl\r\n );\r\n this.setState({\r\n referentials: newReferentials\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n activeLanguages = () => {\r\n const activeLanguages =\r\n this.props.appState.appUser!.organization!.gtOrganization!.languages!.filter((language) => {\r\n if (language.isActive === true) {\r\n return language;\r\n }\r\n });\r\n activeLanguages.forEach((language) => {\r\n language.displayName =\r\n language.displayName.charAt(0).toUpperCase() + language.displayName.slice(1);\r\n });\r\n return activeLanguages;\r\n };\r\n\r\n handleLocListChange = (event: any, gridProps: any, code: string | null) => {\r\n let newLocList = [] as ITranslation[];\r\n if (gridProps.rowData.translations) {\r\n newLocList = gridProps.rowData.translations.map((loc: any) => {\r\n if (loc.language === code) {\r\n loc.name = event.target.value;\r\n }\r\n return loc;\r\n });\r\n }\r\n\r\n gridProps.onRowDataChange({\r\n ...gridProps.rowData,\r\n translations: newLocList\r\n });\r\n };\r\n\r\n getColumns = () => {\r\n return [\r\n {\r\n field: 'code',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_COD_HEADER', 'Cod'),\r\n searchable: true\r\n // initialEditValue: Guid.create().toString()\r\n } as Column,\r\n {\r\n field: 'translations',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_NAME_HEADER', 'Nume'),\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return rowData.translations.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find((language: any) => {\r\n return language.code === val.language;\r\n });\r\n return language ? (\r\n
\r\n {' '}\r\n
\r\n ) : null;\r\n });\r\n },\r\n customFilterAndSearch: (value, rowData) => {\r\n let matchFilter = false;\r\n rowData.translations.map((val: any) => {\r\n const findMatch = val.name.toLowerCase().indexOf(value.toLowerCase()) != -1;\r\n if (findMatch) {\r\n matchFilter = true;\r\n }\r\n });\r\n return matchFilter;\r\n },\r\n editComponent: (props: any) => {\r\n if (!R.isNil(props.value)) {\r\n return props.value.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find(\r\n (language: any) => language.code === val.language\r\n );\r\n\r\n return language ? (\r\n
\r\n this.handleLocListChange(e, props, val.language)}\r\n >\r\n
\r\n ) : null;\r\n });\r\n } else {\r\n //add\r\n const newLocList = [] as ITranslation[];\r\n for (let i = 0; i < this.state.languages!.length; i++) {\r\n const locListItem = {} as ITranslation;\r\n locListItem.language = this.state.languages[i].code;\r\n locListItem.name = '';\r\n newLocList.push(locListItem);\r\n }\r\n\r\n props.onChange(newLocList);\r\n\r\n return null;\r\n }\r\n }\r\n } as Column,\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_DATE_HEADER', 'Data'),\r\n defaultSort: 'desc',\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .format(this.props.appState.longDateFormat);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column,\r\n {\r\n field: 'isActive',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_ISACTIVE_HEADER', 'Stare'),\r\n render: (rowData: any) => {\r\n return (\r\n this.handleIsActiveChange(e, rowData)}\r\n value={rowData.isActive}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n },\r\n\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.checked)}\r\n />\r\n );\r\n }\r\n }\r\n ];\r\n\r\n };\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza')\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n public renderTypeList = () => {\r\n return (\r\n \r\n \r\n \r\n this.handleCountryChange(newValue)\r\n }\r\n getOptionLabel={(option) => option.displayName || ''}\r\n renderInput={(params: RenderInputParams) => (\r\n \r\n )}\r\n />\r\n \r\n this.handleRegionChange(newValue)\r\n }\r\n getOptionLabel={(option) => option.displayName || ''}\r\n renderInput={(params: RenderInputParams) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n );\r\n };\r\n\r\n onRowUpdate = (newData: IReferential, oldData?: IReferential): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (!this.validateRef(newData)) {\r\n reject();\r\n return;\r\n }\r\n\r\n if (oldData) {\r\n this.setState((prevState: ICityListState) => {\r\n const newReferentials = !R.isEmpty(this.state.filteredReferentials)\r\n ? [...this.state.filteredReferentials]\r\n : [...this.state.referentials];\r\n newReferentials[newReferentials.indexOf(oldData)] = newData;\r\n\r\n return { ...prevState, referentials: newReferentials };\r\n });\r\n\r\n try {\r\n await this.appReferentialService.Update(\r\n newData,\r\n this.state.selectedReferential!.updateUrl\r\n );\r\n await this.loadReferentialsList(this.state.selectedReferential);\r\n resolve();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n validateRef = (referential: IReferential): boolean => {\r\n if (referential.code === '' || referential.code === undefined || referential.code === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_CODE_EMPTY', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n const referentials = !R.isEmpty(this.state.filteredReferentials)\r\n ? this.state.filteredReferentials\r\n : this.state.referentials;\r\n let resultRef = referentials.find((item) => item.code === referential.code);\r\n if (referential.id !== undefined) {\r\n resultRef = referentials.find(\r\n (item) => item.code === referential.code && item.id !== referential.id\r\n );\r\n }\r\n if (resultRef !== undefined) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_CODE_UNIQUE', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n if (referential.translations === undefined) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_NAME', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n for (const item of referential.translations) {\r\n if (item.name === '' || item.name === undefined || item.name === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_NAME', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n onRowAdd = (newData: IReferential): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (!this.validateRef(newData)) {\r\n reject();\r\n return;\r\n }\r\n try {\r\n newData.name = newData.translations[0].name;\r\n newData.gtId = this.props.appState.appUser!.gtId!;\r\n if (!R.isNil(this.state.selectedRegion)) {\r\n newData.dependencyId = this.state.selectedRegion.id;\r\n }\r\n await this.appReferentialService.Add(newData, this.state.selectedReferential!.addUrl);\r\n await this.loadReferentialsList(this.state.selectedReferential);\r\n resolve();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n if (this.state.selectedReferential === null) {\r\n return;\r\n }\r\n\r\n return (\r\n this.onRowAdd(newData),\r\n onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData)\r\n }}\r\n />\r\n );\r\n };\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTypeList() : null}\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect((state: ApplicationState) => ({ appState: state.app }))(\r\n withSnackbar(CityAppReferentials as any)\r\n);\r\n","import React, { Fragment, ChangeEvent } from 'react';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Box, Switch, Card, TextField } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { ITranslation, IReferential, IReferentialConfig } from '../../../interfaces/IReferential';\r\nimport Autocomplete, { RenderInputParams } from '@material-ui/lab/Autocomplete';\r\nimport MaterialTable, { Icons, EditComponentProps, Column } from 'material-table';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { forwardRef } from 'react';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { Language } from '../../../interfaces/Organization';\r\nimport * as R from 'ramda';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport CityAppReferentials from './CityAppReferentials';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ntype ReferentialProps = { appState: AppState } & ProviderContext;\r\n\r\ninterface IReferentialState {\r\n dependentReferencials: IReferential[];\r\n referentials: IReferential[];\r\n filteredReferentials: IReferential[];\r\n isLoading: boolean;\r\n selectedReferential: IReferentialConfig | null;\r\n selectedDependentReferential: IReferential | null;\r\n dependentReferentialConfig: IReferentialConfig | null;\r\n languages: Language[];\r\n organizationTypeReferential: boolean;\r\n fuelTypeReferential: boolean;\r\n}\r\n\r\nclass AppReferentials extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n referentials: [],\r\n isLoading: false,\r\n selectedReferential: null,\r\n languages: [] as Language[],\r\n dependentReferencials: [],\r\n dependentReferentialConfig: null,\r\n selectedDependentReferential: null,\r\n filteredReferentials: [],\r\n organizationTypeReferential: false,\r\n fuelTypeReferential: false\r\n } as IReferentialState;\r\n\r\n componentDidMount = () => {\r\n this.setState({\r\n languages: this.activeLanguages()\r\n });\r\n };\r\n\r\n onTagsChange = (event: React.ChangeEvent, value: IReferentialConfig | null) => {\r\n if (value?.code === ReferentialCode.City) {\r\n this.setState(\r\n {\r\n selectedReferential: value!,\r\n dependentReferencials: [],\r\n dependentReferentialConfig: null,\r\n selectedDependentReferential: null\r\n }\r\n );\r\n return;\r\n }\r\n this.setState(\r\n {\r\n isLoading: true,\r\n dependentReferencials: [],\r\n dependentReferentialConfig: null,\r\n selectedDependentReferential: null,\r\n organizationTypeReferential: value?.code === ReferentialCode.OrganizationType ? true : false,\r\n fuelTypeReferential: value?.code === ReferentialCode.FuelType ? true : false\r\n },\r\n () => {\r\n this.loadReferentials(value);\r\n }\r\n );\r\n };\r\n\r\n handleDependentReferencial = (newValue: IReferential | null) => {\r\n if (R.isNil(newValue)) {\r\n this.setState({\r\n ...this.state,\r\n selectedDependentReferential: newValue,\r\n filteredReferentials: this.state.referentials\r\n });\r\n return;\r\n }\r\n\r\n const referentials = this.state.referentials.filter((ref) => ref.dependencyId === newValue.id);\r\n this.setState({\r\n ...this.state,\r\n selectedDependentReferential: newValue,\r\n filteredReferentials: referentials\r\n });\r\n };\r\n\r\n loadDependentReferentials = async (dependency: string) => {\r\n const dependencyConfig = Referentials.referential.find(\r\n (r) => r.code === dependency\r\n ) as IReferentialConfig;\r\n const dependentReferentialList = await this.appReferentialService.GetFromDB(\r\n dependencyConfig.getUrl\r\n );\r\n return { dependentReferentialList, dependencyConfig };\r\n };\r\n\r\n loadReferentials = async (value: IReferentialConfig | null) => {\r\n let referentialList: IReferential[] = [];\r\n let dependentReferencials: IReferential[] = [];\r\n let dependentReferentialConfig: IReferentialConfig | null = null;\r\n if (value !== null && value.getUrl !== '') {\r\n try {\r\n referentialList = await this.appReferentialService.GetFromDB(value.getUrl);\r\n\r\n if (!R.isNil(value.dependency)) {\r\n const { dependentReferentialList, dependencyConfig } =\r\n await this.loadDependentReferentials(value.dependency);\r\n dependentReferencials = dependentReferentialList.filter(x => x.isActive === true);\r\n dependentReferentialConfig = dependencyConfig;\r\n\r\n this.setState({\r\n filteredReferentials: referentialList.filter(\r\n (ref) =>\r\n ref.dependencyId === this.state.selectedDependentReferential?.id ??\r\n dependentReferencials[0].id\r\n ),\r\n dependentReferencials: dependentReferencials,\r\n dependentReferentialConfig: dependentReferentialConfig,\r\n selectedDependentReferential:\r\n this.state.selectedDependentReferential ?? dependentReferencials[0]\r\n });\r\n }\r\n\r\n referentialList.forEach((refItem) => {\r\n this.state.languages.forEach((lang) => {\r\n const translation = refItem.translations.find((item) => item.language === lang.code);\r\n if (R.isNil(translation)) {\r\n refItem.translations.push({\r\n id: 0,\r\n name: '',\r\n language: lang.code,\r\n referentialTypeId: refItem.id\r\n } as ITranslation);\r\n }\r\n });\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n console.log(this.state);\r\n console.log(this.state.selectedDependentReferential ?? dependentReferencials[0]);\r\n console.log(referentialList.filter(\r\n (ref) =>\r\n ref.dependencyId === this.state.selectedDependentReferential?.id ??\r\n dependentReferencials[0].id\r\n ));\r\n this.setState({\r\n referentials: referentialList,\r\n isLoading: false,\r\n selectedReferential: value!,\r\n selectedDependentReferential: this.state.selectedDependentReferential ?? dependentReferencials[0],\r\n filteredReferentials: referentialList.filter(\r\n (ref) =>\r\n ref.dependencyId === this.state.selectedDependentReferential?.id ??\r\n dependentReferencials[0].id\r\n )\r\n });\r\n };\r\n\r\n handleIsActiveChange = async (event: ChangeEvent, rowData: any) => {\r\n const id = rowData.id;\r\n const newReferentials = [...this.state.filteredReferentials];\r\n const updatedReferential = newReferentials.find((ref) => ref.id === id);\r\n if (updatedReferential !== undefined) {\r\n updatedReferential.isActive = event.target.checked;\r\n\r\n try {\r\n await this.appReferentialService.Update(\r\n updatedReferential,\r\n this.state.selectedReferential!.updateUrl\r\n );\r\n this.setState({\r\n referentials: newReferentials\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleIsRCRAvailableChange = async (event: ChangeEvent, rowData: any) => {\r\n const id = rowData.id;\r\n const newReferentials = [...this.state.filteredReferentials];\r\n const updatedReferential = newReferentials.find((ref) => ref.id === id);\r\n if (updatedReferential !== undefined) {\r\n updatedReferential.isRCRAvailable = event.target.checked;\r\n\r\n try {\r\n await this.appReferentialService.Update(\r\n updatedReferential,\r\n this.state.selectedReferential!.updateUrl\r\n );\r\n this.setState({\r\n referentials: newReferentials\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n\r\n activeLanguages = () => {\r\n const activeLanguages =\r\n this.props.appState.appUser!.organization!.gtOrganization!.languages!.filter((language) => {\r\n if (language.isActive === true) {\r\n return language;\r\n }\r\n });\r\n activeLanguages.forEach((language) => {\r\n language.displayName =\r\n language.displayName.charAt(0).toUpperCase() + language.displayName.slice(1);\r\n });\r\n return activeLanguages;\r\n };\r\n\r\n handleLocListChange = (event: any, gridProps: any, code: string | null) => {\r\n let newLocList = [] as ITranslation[];\r\n if (gridProps.rowData.translations) {\r\n newLocList = gridProps.rowData.translations.map((loc: any) => {\r\n if (loc.language === code) {\r\n loc.name = event.target.value;\r\n }\r\n return loc;\r\n });\r\n }\r\n\r\n gridProps.onRowDataChange({\r\n ...gridProps.rowData,\r\n translations: newLocList\r\n });\r\n };\r\n\r\n getColumns = () => {\r\n if (this.state.fuelTypeReferential) {\r\n return [\r\n {\r\n field: 'code',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_COD_HEADER', 'Cod'),\r\n searchable: true\r\n // initialEditValue: Guid.create().toString()\r\n } as Column,\r\n {\r\n field: 'translations',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_NAME_HEADER', 'Nume'),\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return rowData.translations.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find((language: any) => {\r\n return language.code === val.language;\r\n });\r\n return language ? (\r\n
\r\n {' '}\r\n
\r\n ) : null;\r\n });\r\n },\r\n customFilterAndSearch: (value, rowData) => {\r\n let matchFilter = false;\r\n rowData.translations.map((val: any) => {\r\n const findMatch = val.name.toLowerCase().indexOf(value.toLowerCase()) != -1;\r\n if (findMatch) {\r\n matchFilter = true;\r\n }\r\n });\r\n return matchFilter;\r\n },\r\n editComponent: (props: any) => {\r\n if (!R.isNil(props.value)) {\r\n return props.value.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find(\r\n (language: any) => language.code === val.language\r\n );\r\n\r\n return language ? (\r\n
\r\n this.handleLocListChange(e, props, val.language)}\r\n >\r\n
\r\n ) : null;\r\n });\r\n } else {\r\n //add\r\n const newLocList = [] as ITranslation[];\r\n for (let i = 0; i < this.state.languages!.length; i++) {\r\n const locListItem = {} as ITranslation;\r\n locListItem.language = this.state.languages[i].code;\r\n locListItem.name = '';\r\n newLocList.push(locListItem);\r\n }\r\n\r\n props.onChange(newLocList);\r\n\r\n return null;\r\n }\r\n }\r\n } as Column,\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_DATE_HEADER', 'Data'),\r\n defaultSort: 'desc',\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .format(this.props.appState.longDateFormat);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column,\r\n {\r\n field: 'isRCRAvailable',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_RCR_AVAILABLE_HEADER', 'Disponibil RCR'),\r\n render: (rowData: any) => {\r\n return (\r\n this.handleIsRCRAvailableChange(e, rowData)}\r\n value={rowData.isRCRAvailable}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n },\r\n\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.checked)}\r\n />\r\n );\r\n }\r\n },\r\n {\r\n field: 'isActive',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_ISACTIVE_HEADER', 'Stare'),\r\n render: (rowData: any) => {\r\n return (\r\n this.handleIsActiveChange(e, rowData)}\r\n value={rowData.isActive}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n },\r\n\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.checked)}\r\n />\r\n );\r\n }\r\n } \r\n ];\r\n } else if (this.state.organizationTypeReferential) {\r\n return [\r\n {\r\n field: 'code',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_COD_HEADER', 'Cod'),\r\n searchable: true\r\n // initialEditValue: Guid.create().toString()\r\n } as Column,\r\n {\r\n field: 'translations',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_NAME_HEADER', 'Nume'),\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return rowData.translations.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find((language: any) => {\r\n return language.code === val.language;\r\n });\r\n return language ? (\r\n
\r\n {' '}\r\n
\r\n ) : null;\r\n });\r\n },\r\n customFilterAndSearch: (value, rowData) => {\r\n let matchFilter = false;\r\n rowData.translations.map((val: any) => {\r\n const findMatch = val.name.toLowerCase().indexOf(value.toLowerCase()) != -1;\r\n if (findMatch) {\r\n matchFilter = true;\r\n }\r\n });\r\n return matchFilter;\r\n },\r\n editComponent: (props: any) => {\r\n if (!R.isNil(props.value)) {\r\n return props.value.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find(\r\n (language: any) => language.code === val.language\r\n );\r\n\r\n return language ? (\r\n
\r\n this.handleLocListChange(e, props, val.language)}\r\n >\r\n
\r\n ) : null;\r\n });\r\n } else {\r\n //add\r\n const newLocList = [] as ITranslation[];\r\n for (let i = 0; i < this.state.languages!.length; i++) {\r\n const locListItem = {} as ITranslation;\r\n locListItem.language = this.state.languages[i].code;\r\n locListItem.name = '';\r\n newLocList.push(locListItem);\r\n }\r\n\r\n props.onChange(newLocList);\r\n\r\n return null;\r\n }\r\n }\r\n } as Column,\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_DATE_HEADER', 'Data'),\r\n defaultSort: 'desc',\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .format(this.props.appState.longDateFormat);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column,\r\n {\r\n field: 'takeOrganizationTariff',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_TAKE_ORGANIZATION_TARIFF_HEADER', 'Tarif Organizatie'),\r\n render: (rowData: any) => {\r\n return (\r\n \r\n );\r\n },\r\n\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.checked)}\r\n />\r\n );\r\n }\r\n },\r\n {\r\n field: 'hideAlternative',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_HIDE_ALTERNATIVE_HEADER', 'Ascunde Alternative'),\r\n render: (rowData: any) => {\r\n return (\r\n \r\n );\r\n },\r\n\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.checked)}\r\n />\r\n );\r\n }\r\n },\r\n {\r\n field: 'hideInsurerCalculation',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_HIDE_INSURER_TARIFF_HEADER', 'Ascunde calculatie OE cu tarife asigurator'),\r\n render: (rowData: any) => {\r\n return (\r\n \r\n );\r\n },\r\n\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.checked)}\r\n />\r\n );\r\n }\r\n },\r\n {\r\n field: 'hideOrderPrices',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_HIDE_ORDER_PRICES_HEADER', 'Ascunde Preturi Comanda'),\r\n render: (rowData: any) => {\r\n return (\r\n \r\n );\r\n },\r\n\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.checked)}\r\n />\r\n );\r\n }\r\n },\r\n {\r\n field: 'hideOtherAttachments',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_HIDE_OTHER_ATTACHMENTS_HEADER', 'Ascunde Altele'),\r\n render: (rowData: any) => {\r\n return (\r\n \r\n );\r\n },\r\n\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.checked)}\r\n />\r\n );\r\n }\r\n },\r\n {\r\n field: 'isActive',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_ISACTIVE_HEADER', 'Stare'),\r\n render: (rowData: any) => {\r\n return (\r\n this.handleIsActiveChange(e, rowData)}\r\n value={rowData.isActive}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n },\r\n\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.checked)}\r\n />\r\n );\r\n }\r\n } \r\n ];\r\n } else {\r\n return [\r\n {\r\n field: 'code',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_COD_HEADER', 'Cod'),\r\n searchable: true\r\n // initialEditValue: Guid.create().toString()\r\n } as Column,\r\n {\r\n field: 'translations',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_NAME_HEADER', 'Nume'),\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return rowData.translations.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find((language: any) => {\r\n return language.code === val.language;\r\n });\r\n return language ? (\r\n
\r\n {' '}\r\n
\r\n ) : null;\r\n });\r\n },\r\n customFilterAndSearch: (value, rowData) => {\r\n let matchFilter = false;\r\n rowData.translations.map((val: any) => {\r\n const findMatch = val.name.toLowerCase().indexOf(value.toLowerCase()) != -1;\r\n if (findMatch) {\r\n matchFilter = true;\r\n }\r\n });\r\n return matchFilter;\r\n },\r\n editComponent: (props: any) => {\r\n if (!R.isNil(props.value)) {\r\n return props.value.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find(\r\n (language: any) => language.code === val.language\r\n );\r\n\r\n return language ? (\r\n
\r\n this.handleLocListChange(e, props, val.language)}\r\n >\r\n
\r\n ) : null;\r\n });\r\n } else {\r\n //add\r\n const newLocList = [] as ITranslation[];\r\n for (let i = 0; i < this.state.languages!.length; i++) {\r\n const locListItem = {} as ITranslation;\r\n locListItem.language = this.state.languages[i].code;\r\n locListItem.name = '';\r\n newLocList.push(locListItem);\r\n }\r\n\r\n props.onChange(newLocList);\r\n\r\n return null;\r\n }\r\n }\r\n } as Column,\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_DATE_HEADER', 'Data'),\r\n defaultSort: 'desc',\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .format(this.props.appState.longDateFormat);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column,\r\n {\r\n field: 'isActive',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_ISACTIVE_HEADER', 'Stare'),\r\n render: (rowData: any) => {\r\n return (\r\n this.handleIsActiveChange(e, rowData)}\r\n value={rowData.isActive}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n },\r\n\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.checked)}\r\n />\r\n );\r\n }\r\n }\r\n ];\r\n }\r\n };\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza')\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n public renderTypeList = () => {\r\n const ListsOFValueTypes = Referentials.referential;\r\n\r\n return (\r\n \r\n \r\n
\r\n option.name}\r\n style={{ width: '100%' }}\r\n onChange={this.onTagsChange}\r\n renderInput={(params: RenderInputParams) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n\r\n {this.state.dependentReferentialConfig && (\r\n \r\n \r\n this.handleDependentReferencial(newValue)\r\n }\r\n getOptionLabel={(option) => option.displayName || ''}\r\n renderInput={(params: RenderInputParams) => (\r\n \r\n )}\r\n />\r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n onRowUpdate = (newData: IReferential, oldData?: IReferential): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (!this.validateRef(newData)) {\r\n reject();\r\n return;\r\n }\r\n\r\n if (oldData) {\r\n this.setState((prevState: IReferentialState) => {\r\n const newReferentials = !R.isEmpty(this.state.filteredReferentials)\r\n ? [...this.state.filteredReferentials]\r\n : [...this.state.referentials];\r\n newReferentials[newReferentials.indexOf(oldData)] = newData;\r\n\r\n return { ...prevState, referentials: newReferentials };\r\n });\r\n\r\n try {\r\n await this.appReferentialService.Update(\r\n newData,\r\n this.state.selectedReferential!.updateUrl\r\n );\r\n await this.loadReferentials(this.state.selectedReferential);\r\n resolve();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n validateRef = (referential: IReferential): boolean => {\r\n if (referential.code === '' || referential.code === undefined || referential.code === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_CODE_EMPTY', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n const referentials = !R.isEmpty(this.state.filteredReferentials)\r\n ? this.state.filteredReferentials\r\n : this.state.referentials;\r\n let resultRef = referentials.find((item) => item.code === referential.code);\r\n if (referential.id !== undefined) {\r\n resultRef = referentials.find(\r\n (item) => item.code === referential.code && item.id !== referential.id\r\n );\r\n }\r\n if (resultRef !== undefined) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_CODE_UNIQUE', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n if (referential.translations === undefined) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_NAME', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n for (const item of referential.translations) {\r\n if (item.name === '' || item.name === undefined || item.name === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_NAME', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n onRowAdd = (newData: IReferential): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (!this.validateRef(newData)) {\r\n reject();\r\n return;\r\n }\r\n try {\r\n newData.name = newData.translations[0].name;\r\n newData.gtId = this.props.appState.appUser!.gtId!;\r\n if (!R.isNil(this.state.selectedDependentReferential)) {\r\n newData.dependencyId = this.state.selectedDependentReferential.id;\r\n }\r\n await this.appReferentialService.Add(newData, this.state.selectedReferential!.addUrl);\r\n await this.loadReferentials(this.state.selectedReferential);\r\n resolve();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n if (this.state.selectedReferential === null) {\r\n return;\r\n }\r\n\r\n return (\r\n this.onRowAdd(newData),\r\n onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData)\r\n }}\r\n />\r\n );\r\n };\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n {this.renderTypeList()}\r\n
\r\n \r\n
\r\n {!this.state.isLoading ? \r\n (this.state.selectedReferential !== null && this.state.selectedReferential.code === ReferentialCode.City ? (\r\n \r\n )\r\n : this.renderTable()\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect((state: ApplicationState) => ({ appState: state.app }))(\r\n withSnackbar(AppReferentials as any)\r\n);\r\n","export const mailPlaceHolders = [\r\n 'CaseId',\r\n 'CaseLink',\r\n 'CaseStatus',\r\n 'CurrentAssignee',\r\n 'CaseCreatedBy',\r\n 'AssignedBy',\r\n 'CaseType',\r\n 'CaseCreationDate',\r\n 'ClaimNumber',\r\n 'CarRegistrationNumber',\r\n 'Vin',\r\n 'CalculationDate',\r\n 'CalculationBy',\r\n 'CalculationAmount',\r\n 'ServiceInDate',\r\n 'ServiceOutDate',\r\n 'ServiceContractNumber',\r\n 'CaseRequestText',\r\n 'VehicleBrand',\r\n 'VehicleModel',\r\n 'VehicleFabricationDate',\r\n 'VehiclePowerKw',\r\n 'VehicleEngineSizeCc',\r\n 'VehicleEngineCode',\r\n 'OrganizationAddress',\r\n 'UserFirstName',\r\n 'UserLastName',\r\n 'UserPhoneNumber',\r\n 'UserName',\r\n 'ClientFirstName',\r\n 'ClientLastName',\r\n 'ClientCompanyName',\r\n 'ClientContactPerson',\r\n 'OrganizationName',\r\n 'OrganizationCity',\r\n 'OrganizationPhone',\r\n 'OrganizationLogo',\r\n 'VehicleVersion',\r\n 'VehicleEquipmentVersion',\r\n 'CaseClient',\r\n 'NumberOfKilometers',\r\n 'CostCenter',\r\n 'DeliveryAdress',\r\n 'AppointmentId',\r\n 'AppointmentLink',\r\n 'RcrEmployeeEmail',\r\n 'RcrEmployeePhone',\r\n 'RcrEmployeeFirstName',\r\n 'RcrEmployeeLastName',\r\n 'AlertTypeName',\r\n 'AlertExpirationDate',\r\n 'OrderId',\r\n 'OrderLink',\r\n 'NotificationClientFirstName',\r\n 'NotificationClientLastName',\r\n 'NotificationClientCompanyName',\r\n 'NotificationClientEmail',\r\n 'NotificationClientPhone',\r\n 'NotificationClientComment',\r\n 'NotificationClientCaseId',\r\n 'NotificationClientCaseLink',\r\n 'CaseComment'\r\n];\r\n","export const toBase64 = (file: File) =>\r\n new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = (error) => reject(error);\r\n });\r\n","import React, { Fragment, ChangeEvent } from 'react';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\n\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport {\r\n Box,\r\n Switch,\r\n Card,\r\n TextField,\r\n Button,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n IconButton,\r\n DialogContent,\r\n DialogActions,\r\n List,\r\n ListSubheader,\r\n ListItem,\r\n ListItemSecondaryAction,\r\n ListItemText\r\n} from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { ITranslation, IReferentialConfig } from '../../../interfaces/IReferential';\r\nimport { IAuthService } from '../../../services/Interfaces/IAuthService';\r\nimport Autocomplete, { RenderInputParams } from '@material-ui/lab/Autocomplete';\r\nimport MaterialTable, { Icons, EditComponentProps, Column } from 'material-table';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { forwardRef } from 'react';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { Language } from '../../../interfaces/Organization';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { EmailTemplate } from '../../../interfaces/Workflow';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { Editor } from 'react-draft-wysiwyg';\r\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\r\nimport { convertToRaw, EditorState, ContentState, convertFromHTML } from 'draft-js';\r\nimport draftToHtml from 'draftjs-to-html';\r\nimport htmlToDraft from 'html-to-draftjs';\r\nimport SubjectIco from '@material-ui/icons/Subject';\r\nimport { ICaseService } from '../../../services/Interfaces/ICaseService';\r\nimport { mailPlaceHolders } from '../mailPlaceHolders';\r\nimport { toBase64 } from '../../../utils/toBase64';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ntype OtherListsOfValuesProps = { appState: AppState } & ProviderContext;\r\n\r\ninterface IOtherListsOfValuesState {\r\n otherListsOfValues: EmailTemplate[];\r\n isLoading: boolean;\r\n selectedReferential: IReferentialConfig | null;\r\n languages: Language[];\r\n isDialogEmailTemplateOpen: boolean;\r\n emailTemplateId: number;\r\n selectedEmailBodyTemplate: EditorState;\r\n selectedEmailSubjectTemplate: string;\r\n}\r\n\r\nclass OtherListsOfValues extends React.PureComponent<\r\n OtherListsOfValuesProps,\r\n IOtherListsOfValuesState\r\n> {\r\n private authService!: IAuthService;\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n private worflowService!: IWorkflowService;\r\n private caseService!: ICaseService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n otherListsOfValues: [],\r\n isLoading: false,\r\n selectedReferential: null,\r\n languages: [] as Language[],\r\n isDialogEmailTemplateOpen: false,\r\n emailTemplateId: 0,\r\n selectedEmailBodyTemplate: EditorState.createEmpty(),\r\n selectedEmailSubjectTemplate: ''\r\n } as IOtherListsOfValuesState;\r\n\r\n componentDidMount = () => {\r\n this.setState({\r\n languages: this.activeLanguages()\r\n });\r\n };\r\n\r\n onTagsChange = (event: React.ChangeEvent, values: IReferentialConfig | null) => {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadReferentials(values);\r\n }\r\n );\r\n };\r\n\r\n loadReferentials = async (value: IReferentialConfig | null) => {\r\n let otherListsOfValues: EmailTemplate[] = [];\r\n if (value !== null && value.getUrl !== '') {\r\n try {\r\n otherListsOfValues = await this.worflowService.GetEmailTemplates();\r\n\r\n otherListsOfValues.forEach((refItem) => {\r\n this.state.languages.forEach((lang) => {\r\n const translation = refItem.translations.find((item) => item.language === lang.code);\r\n if (isNullOrUndefined(translation)) {\r\n refItem.translations.push({\r\n id: 0,\r\n name: '',\r\n language: lang.code,\r\n referentialTypeId: refItem.id\r\n } as ITranslation);\r\n }\r\n });\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n this.setState({\r\n otherListsOfValues: otherListsOfValues,\r\n isLoading: false,\r\n selectedReferential: value!\r\n });\r\n };\r\n\r\n handleIsActiveChange = async (event: ChangeEvent, rowData: any) => {\r\n const id = rowData.id;\r\n const newListsOfValues = [...this.state.otherListsOfValues];\r\n // let updatedValue = newListsOfValues.find(ref => ref.id === id);\r\n const index = newListsOfValues.findIndex((ref) => ref.id === id);\r\n if (newListsOfValues[index] !== undefined) {\r\n newListsOfValues[index].isActive = event.target.checked;\r\n\r\n try {\r\n await this.worflowService.UpdateEmailTemplate(newListsOfValues[index]);\r\n this.setState({\r\n otherListsOfValues: newListsOfValues\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n activeLanguages = () => {\r\n const activeLanguages =\r\n this.props.appState.appUser!.organization!.gtOrganization!.languages!.filter((language) => {\r\n if (language.isActive === true) {\r\n return language;\r\n }\r\n });\r\n activeLanguages.forEach((language) => {\r\n language.displayName =\r\n language.displayName.charAt(0).toUpperCase() + language.displayName.slice(1);\r\n });\r\n return activeLanguages;\r\n };\r\n\r\n handleLocListChange = (event: any, gridProps: any, code: string | null) => {\r\n let newLocList = [] as ITranslation[];\r\n if (gridProps.rowData.translations) {\r\n newLocList = gridProps.rowData.translations.map((loc: any) => {\r\n if (loc.language === code) {\r\n loc.name = event.target.value;\r\n }\r\n return loc;\r\n });\r\n }\r\n\r\n gridProps.onRowDataChange({\r\n ...gridProps.rowData,\r\n translations: newLocList\r\n });\r\n };\r\n\r\n onEmailTemplateClick = (\r\n e: any,\r\n id: number,\r\n bodyEmailTemplate: string,\r\n subjectEmailTemplate: string\r\n ) => {\r\n const blocksFromHTML = htmlToDraft(bodyEmailTemplate);\r\n const contentState = ContentState.createFromBlockArray(\r\n blocksFromHTML.contentBlocks,\r\n blocksFromHTML.entityMap\r\n );\r\n\r\n this.setState({\r\n isDialogEmailTemplateOpen: true,\r\n emailTemplateId: id,\r\n selectedEmailBodyTemplate: EditorState.createWithContent(contentState),\r\n selectedEmailSubjectTemplate: subjectEmailTemplate\r\n });\r\n };\r\n\r\n getColumns = () => {\r\n return [\r\n {\r\n field: 'code',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_COD_HEADER', 'Cod'),\r\n searchable: true,\r\n // initialEditValue: Guid.create().toString()\r\n render: (rowData: EmailTemplate) => {\r\n return (\r\n \r\n this.onEmailTemplateClick(e, rowData.id, rowData.body, rowData.subject)\r\n }\r\n >\r\n {rowData.code}\r\n \r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'translations',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_NAME_HEADER', 'Nume'),\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return rowData.translations.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find((language: any) => {\r\n return language.code === val.language;\r\n });\r\n return language ? (\r\n
\r\n {' '}\r\n
\r\n ) : null;\r\n });\r\n },\r\n customFilterAndSearch: (value, rowData) => {\r\n let matchFilter = false;\r\n rowData.translations.map((val: any) => {\r\n const findMatch = val.name.toLowerCase().indexOf(value.toLowerCase()) != -1;\r\n if (findMatch) {\r\n matchFilter = true;\r\n }\r\n });\r\n return matchFilter;\r\n },\r\n editComponent: (props: any) => {\r\n if (!isNullOrUndefined(props.value)) {\r\n return props.value.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find(\r\n (language: any) => language.code === val.language\r\n );\r\n\r\n return language ? (\r\n
\r\n this.handleLocListChange(e, props, val.language)}\r\n >\r\n
\r\n ) : null;\r\n });\r\n } else {\r\n //add\r\n const newLocList = [] as ITranslation[];\r\n for (let i = 0; i < this.state.languages!.length; i++) {\r\n const locListItem = {} as ITranslation;\r\n locListItem.language = this.state.languages[i].code;\r\n locListItem.name = '';\r\n newLocList.push(locListItem);\r\n }\r\n\r\n props.onChange(newLocList);\r\n\r\n return null;\r\n }\r\n }\r\n } as Column,\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_DATE_HEADER', 'Data'),\r\n defaultSort: 'desc',\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .format(this.props.appState.longDateFormat);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column,\r\n {\r\n field: 'isActive',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_ISACTIVE_HEADER', 'Stare'),\r\n render: (rowData: any) => {\r\n return (\r\n this.handleIsActiveChange(e, rowData)}\r\n value={rowData.isActive}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n },\r\n\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.checked)}\r\n />\r\n );\r\n }\r\n }\r\n ];\r\n };\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza')\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n public renderTypeList = () => {\r\n // const ListsOFValueTypes = Referentials.referential;\r\n const ListsOFValueTypes = [\r\n {\r\n name: 'Email Template',\r\n getUrl: 'string',\r\n updateUrl: 'string',\r\n addUrl: 'string'\r\n } as IReferentialConfig\r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n option.name}\r\n style={{ width: '100%' }}\r\n onChange={this.onTagsChange}\r\n renderInput={(params: RenderInputParams) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n onRowUpdate = (newData: EmailTemplate, oldData?: EmailTemplate): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (!this.validateRef(newData)) {\r\n reject();\r\n return;\r\n }\r\n\r\n if (oldData) {\r\n this.setState((prevState: IOtherListsOfValuesState) => {\r\n const newListOfValues = [...this.state.otherListsOfValues];\r\n newListOfValues[newListOfValues.indexOf(oldData)] = newData;\r\n\r\n return { ...prevState, otherListsOfValues: newListOfValues };\r\n });\r\n\r\n try {\r\n await this.worflowService.UpdateEmailTemplate(newData);\r\n // await this.loadReferentials(this.state.selectedReferential);\r\n resolve();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n validateRef = (referential: EmailTemplate): boolean => {\r\n if (referential.code === '' || referential.code === undefined || referential.code === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_CODE_EMPTY', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n let resultRef = this.state.otherListsOfValues.find((item) => item.code === referential.code);\r\n if (referential.id !== undefined) {\r\n resultRef = this.state.otherListsOfValues.find(\r\n (item) => item.code === referential.code && item.id !== referential.id\r\n );\r\n }\r\n if (resultRef !== undefined) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_CODE_UNIQUE', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n if (referential.translations === undefined) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_NAME', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n for (const item of referential.translations) {\r\n if (item.name === '' || item.name === undefined || item.name === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_NAME', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n onRowAdd = (newData: EmailTemplate): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (!this.validateRef(newData)) {\r\n reject();\r\n return;\r\n }\r\n try {\r\n newData.id = 0;\r\n newData.name = newData.translations[0].name;\r\n newData.gtId = this.props.appState.appUser!.gtId!;\r\n newData.body = '';\r\n newData.subject = '';\r\n\r\n const newItem = await this.worflowService.AddEmailTemplate(newData);\r\n const newListOfValues = [...this.state.otherListsOfValues];\r\n newListOfValues.push(newItem);\r\n this.setState({ otherListsOfValues: newListOfValues });\r\n //await this.loadReferentials(this.state.selectedReferential);\r\n resolve();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n if (this.state.selectedReferential === null) {\r\n return;\r\n }\r\n\r\n return (\r\n this.onRowAdd(newData),\r\n onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData)\r\n }}\r\n />\r\n );\r\n };\r\n\r\n closeDialog = () => {\r\n this.setState({ isDialogEmailTemplateOpen: false });\r\n };\r\n onEditorStateChange = (editorState: EditorState) => {\r\n this.setState({ selectedEmailBodyTemplate: editorState });\r\n };\r\n\r\n renderEditEmailTemplate = () => {\r\n return (\r\n this.onEditorStateChange(editorState)}\r\n toolbar={{\r\n options: [\r\n 'inline',\r\n 'blockType',\r\n 'fontSize',\r\n 'fontFamily',\r\n 'list',\r\n 'textAlign',\r\n 'colorPicker',\r\n 'link',\r\n 'emoji',\r\n 'history',\r\n 'image'\r\n ],\r\n image: {\r\n className: undefined,\r\n component: undefined,\r\n popupClassName: undefined,\r\n urlEnabled: false,\r\n uploadEnabled: true,\r\n alignmentEnabled: true,\r\n uploadCallback: async (file: File) => {\r\n const imageBase64String = await toBase64(file);\r\n return Promise.resolve({ data: { link: imageBase64String } });\r\n },\r\n previewImage: true,\r\n inputAccept: 'image/gif,image/jpeg,image/jpg,image/png,image/svg',\r\n alt: { present: false, mandatory: false },\r\n defaultSize: {\r\n height: '140',\r\n width: 'auto'\r\n }\r\n }\r\n }}\r\n />\r\n );\r\n };\r\n\r\n placeHolderClick = (text: string) => {\r\n const editorState = this.state.selectedEmailBodyTemplate;\r\n const newBlockMap = convertFromHTML('{{' + text + '}}');\r\n const contentState = editorState.getCurrentContent();\r\n const selectionState = editorState.getSelection();\r\n const key = selectionState.getAnchorKey();\r\n const blocksAfter = contentState\r\n .getBlockMap()\r\n .skipUntil(function (_, k) {\r\n return k === key;\r\n })\r\n .skip(1)\r\n .toArray();\r\n const blocksBefore = contentState\r\n .getBlockMap()\r\n .takeUntil(function (_, k) {\r\n return k === key;\r\n })\r\n .toArray();\r\n\r\n newBlockMap.contentBlocks = blocksBefore\r\n .concat([contentState.getBlockForKey(key)])\r\n .concat(newBlockMap.contentBlocks)\r\n .concat(blocksAfter);\r\n\r\n const newContentState = ContentState.createFromBlockArray(\r\n newBlockMap.contentBlocks,\r\n newBlockMap.entityMap\r\n );\r\n const newEditorState = EditorState.createWithContent(newContentState);\r\n this.setState({ selectedEmailBodyTemplate: newEditorState });\r\n };\r\n addPlaceholderToSubject = (text: string) => {\r\n this.setState({\r\n selectedEmailSubjectTemplate: this.state.selectedEmailSubjectTemplate + '{{' + text + '}}'\r\n });\r\n };\r\n\r\n renderMailPlaceHolders = () => {\r\n return (\r\n Placeholders}>\r\n {mailPlaceHolders.map((val, index) => (\r\n \r\n this.placeHolderClick(val)} />\r\n \r\n this.addPlaceholderToSubject(val)}>\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n );\r\n };\r\n\r\n saveEmailTemplateChanges = async () => {\r\n const id = this.state.emailTemplateId;\r\n const otherListsOfValues = [...this.state.otherListsOfValues];\r\n const index = otherListsOfValues.findIndex((item) => item.id === id);\r\n const emailBody = draftToHtml(\r\n convertToRaw(this.state.selectedEmailBodyTemplate.getCurrentContent())\r\n );\r\n\r\n otherListsOfValues[index] = {\r\n ...otherListsOfValues[index],\r\n body: emailBody,\r\n subject: this.state.selectedEmailSubjectTemplate\r\n };\r\n\r\n const data = otherListsOfValues.find((item) => item.id === id);\r\n await this.worflowService.UpdateEmailTemplate(data!);\r\n\r\n this.setState(\r\n {\r\n // isLoading: true,\r\n isDialogEmailTemplateOpen: false,\r\n otherListsOfValues: otherListsOfValues\r\n }\r\n // , async () => await this.loadData()\r\n );\r\n };\r\n\r\n syncClick = async () => {\r\n try {\r\n await this.caseService.SyncModels();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n syncUndocumentedModels = async () => {\r\n try {\r\n await this.caseService.SyncUndocumentedModels();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.worflowService = (this.context as AppContext).workflowService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n\r\n return (\r\n \r\n \r\n {this.renderTypeList()}\r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n \r\n fullScreen\r\n >\r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_ACTION_SEND_EMAIL_EDIT_EMAIL_TEMPLATE_MODAL_TITLE',\r\n 'Editeaza template-ul email-ului'\r\n )}\r\n \r\n \r\n \r\n this.closeDialog()}\r\n size={'small'}\r\n style={{ color: '#ffffff' }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n this.setState({ selectedEmailSubjectTemplate: e.target.value })\r\n }\r\n variant=\"outlined\"\r\n size=\"small\"\r\n />\r\n {this.renderEditEmailTemplate()}\r\n \r\n \r\n \r\n {this.renderMailPlaceHolders()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect((state: ApplicationState) => ({ appState: state.app }))(\r\n withSnackbar(OtherListsOfValues as any)\r\n);\r\n","export var primary = \"#5383ff\"\nexport var primaryLight = \"#495368\"\nexport var primaryDark = \"#09142a\"\nexport var secondary = \"#3d4977\"\nexport var inheritDefault1 = \"#fefefe\"\nexport var inheritDefault2 = \"#f8f9ff\"\nexport var second = \"#070919\"\nexport var indigo = \"#7420ff\"\nexport var purple = \"#793de6\"\nexport var pink = \"#fc26a4\"\nexport var red = \"#f83245\"\nexport var orange = \"#f4772e\"\nexport var yellow = \"#ffc926\"\nexport var green = \"#1bc943\"\nexport var teal = \"#18e1a5\"\nexport var cyan = \"#27dcf3\"\nexport default {\"primary\":\"#5383ff\",\"primaryLight\":\"#495368\",\"primaryDark\":\"#09142a\",\"secondary\":\"#3d4977\",\"inheritDefault1\":\"#fefefe\",\"inheritDefault2\":\"#f8f9ff\",\"second\":\"#070919\",\"indigo\":\"#7420ff\",\"purple\":\"#793de6\",\"pink\":\"#fc26a4\",\"red\":\"#f83245\",\"orange\":\"#f4772e\",\"yellow\":\"#ffc926\",\"green\":\"#1bc943\",\"teal\":\"#18e1a5\",\"cyan\":\"#27dcf3\"}\n","import { createMuiTheme } from '@material-ui/core';\r\nimport typography from './typography';\r\n\r\nimport vars from '!!sass-vars-to-js-loader!../assets/core/_variables-mui.scss';\r\n\r\nconst MuiTheme = createMuiTheme({\r\n palette: {\r\n primary: {\r\n main: vars.primary\r\n },\r\n grey: {\r\n 300: vars.inheritDefault1,\r\n A100: vars.inheritDefault2\r\n },\r\n secondary: {\r\n main: vars.secondary\r\n },\r\n error: {\r\n main: vars.red\r\n },\r\n success: {\r\n main: vars.green\r\n },\r\n warning: {\r\n main: vars.orange\r\n },\r\n helpers: {\r\n primary: vars.blue,\r\n main: 'rgba(25, 46, 91, .035)'\r\n },\r\n contrastThreshold: 3,\r\n tonalOffset: 0.1\r\n },\r\n shape: {\r\n borderRadius: '0.5rem'\r\n },\r\n overrides: {\r\n MuiButton: {\r\n text: {\r\n paddingLeft: '14px',\r\n paddingRight: '14px'\r\n },\r\n containedSizeSmall: {\r\n paddingLeft: '14px',\r\n paddingRight: '14px'\r\n },\r\n root: {\r\n textTransform: 'none',\r\n fontWeight: 'normal'\r\n }\r\n },\r\n MuiTooltip: {\r\n tooltip: {\r\n backgroundColor: vars.second,\r\n padding: '8px 16px',\r\n fontSize: '13px'\r\n },\r\n arrow: {\r\n color: vars.second\r\n }\r\n }\r\n },\r\n typography\r\n});\r\n\r\nexport default MuiTheme;\r\n","export default {\r\n h1: {\r\n fontWeight: 500,\r\n fontSize: '35px',\r\n lineHeight: '40px'\r\n },\r\n h2: {\r\n fontWeight: 500,\r\n fontSize: '29px',\r\n lineHeight: '32px'\r\n },\r\n h3: {\r\n fontWeight: 500,\r\n fontSize: '24px',\r\n lineHeight: '28px'\r\n },\r\n h4: {\r\n fontWeight: 500,\r\n fontSize: '20px',\r\n lineHeight: '24px'\r\n },\r\n h5: {\r\n fontWeight: 500,\r\n fontSize: '16px',\r\n lineHeight: '20px'\r\n },\r\n h6: {\r\n fontWeight: 500,\r\n fontSize: '14px',\r\n lineHeight: '20px'\r\n },\r\n subtitle1: {\r\n fontSize: '16px',\r\n lineHeight: '25px'\r\n },\r\n subtitle2: {\r\n fontWeight: 400,\r\n fontSize: '14px'\r\n },\r\n body1: {\r\n fontSize: '14px'\r\n },\r\n body2: {\r\n fontSize: '14px'\r\n },\r\n button: {\r\n fontSize: '14px'\r\n },\r\n caption: {\r\n fontSize: '12px'\r\n },\r\n overline: {\r\n fontSize: '12px',\r\n fontWeight: 500,\r\n textTransform: 'uppercase'\r\n }\r\n};\r\n","export default __webpack_public_path__ + \"static/media/Brand_Mark.4543c78d.png\";","import React, { Fragment } from 'react';\r\n\r\nimport clsx from 'clsx';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { IconButton, Box } from '@material-ui/core';\r\n\r\nimport { connect } from 'react-redux';\r\n\r\nimport projectLogo from '../../assets/images/carfix_newlogo.svg';\r\nimport projectLogoIcon from '../../assets/images/Brand_Mark.png';\r\n\r\nconst HeaderLogo = (props) => {\r\n const { sidebarToggle, sidebarHover } = props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {sidebarToggle ? (\r\n \r\n ) : (\r\n \"ClaimBox\r\n )}\r\n \r\n \r\n {/* Carolina */}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n sidebarToggle: state.themeOptions.sidebarToggle,\r\n sidebarHover: state.themeOptions.sidebarHover\r\n});\r\n\r\nexport default connect(mapStateToProps)(HeaderLogo);\r\n","export default __webpack_public_path__ + \"static/media/info.ba347ef9.svg\";","import React, { Fragment, useContext, useEffect } from 'react';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport PerfectScrollbar from 'react-perfect-scrollbar';\r\nimport { Hidden, IconButton, Box, Tabs, Tab, Popover, makeStyles } from '@material-ui/core';\r\nimport NotificationsActiveIcon from '@material-ui/icons/NotificationsActive';\r\nimport PollIcon from '@material-ui/icons/Poll';\r\nimport CaseNewInNotification from '../../components/cases/CaseNewInNotification';\r\nimport CaseMessageNotification from '../../components/cases/CaseMessageNotification';\r\nimport CaseTask from '../../components/cases/CaseTask';\r\nimport TabPanel from '../../components/_shared/Tabs';\r\nimport { connect } from 'react-redux';\r\nimport helpLogo from '../../assets/images/info.svg';\r\nimport MenuBookRoundedIcon from '@material-ui/icons/MenuBookRounded';\r\nimport AppointmentNewInNotification from '../../components/cases/AppointmentNewInNotification';\r\nimport { CountryCodeEnum } from '../../helpers/Constants';\r\nimport { withRouter } from 'react-router';\r\nimport { AppActionCreators } from '../../store';\r\nimport { useHistory } from 'react-router-dom'; // Import useHistory hook\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\nimport { useAppDispatch, useAppSelector } from '../../store/configureStore';\r\nimport {\r\n AGENDA_SET_SELECTED_RANGE\r\n} from '../../store/actions/ActionTypes';\r\nimport HelpRounded from '@material-ui/icons/HelpRounded';\r\n\r\n\r\nconst HeaderDots = (props) => {\r\n const context = useContext(ApplicationContext);\r\n const translatorService = new TranslatorService();\r\n\r\n const { appState, loadUserNotifications } = props;\r\n const history = useHistory(); // Initialize useHistory\r\n const dispatch = useAppDispatch();\r\n\r\n const [anchorEl1, setAnchorEl1] = React.useState(null);\r\n const [anchorEl2, setAnchorEl2] = React.useState(null);\r\n const [anchorEl3, setAnchorEl3] = React.useState(null);\r\n\r\n useEffect(() => {\r\n console.log('HeaderDots mounted');\r\n // Call loadUserNotifications on component mount\r\n loadUserNotifications();\r\n\r\n // Listen for navigation changes\r\n const unlisten = history.listen(() => {\r\n console.log('Navigation occurred');\r\n dispatch({\r\n type: AGENDA_SET_SELECTED_RANGE,\r\n payload: null\r\n });\r\n loadUserNotifications();\r\n });\r\n\r\n // Cleanup\r\n return () => {\r\n unlisten();\r\n };\r\n }, [loadUserNotifications, history]); // Include loadUserNotifications and history in the dependency array\r\n\r\n\r\n const handleClick1 = (event) => {\r\n setAnchorEl1(event.currentTarget);\r\n };\r\n const handleClose1 = () => {\r\n setAnchorEl1(null);\r\n };\r\n\r\n const handleClick2 = (event) => {\r\n setValue(0);\r\n setAnchorEl2(event.currentTarget);\r\n };\r\n const handleClose2 = () => {\r\n setAnchorEl2(null);\r\n };\r\n\r\n const handleClick3 = (event) => {\r\n setAnchorEl3(event.currentTarget);\r\n };\r\n const handleClose3 = () => {\r\n setAnchorEl3(null);\r\n };\r\n const open1 = Boolean(anchorEl1);\r\n const open2 = Boolean(anchorEl2);\r\n const open3 = Boolean(anchorEl3);\r\n\r\n const [value, setValue] = React.useState(0);\r\n const [countValue, setNewCasesCount] = React.useState(0);\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n };\r\n\r\n const useStyle = makeStyles({\r\n indicator: {\r\n width: '100% !important'\r\n }\r\n });\r\n const useStyle2 = makeStyles({\r\n indicator: {\r\n width: '33.33% !important'\r\n }\r\n });\r\n\r\n const useStyle3 = makeStyles({\r\n indicator: {\r\n width: '50% !important'\r\n }\r\n });\r\n\r\n const classes = useStyle();\r\n const classes2 = useStyle2();\r\n const classes3 = useStyle3();\r\n\r\n const checkSelectedTab = () => {\r\n let tabContainer = document.getElementById('tabs-container');\r\n let secondTabSelected = tabContainer\r\n .getElementsByTagName('button')[1]\r\n .getAttribute('aria-selected');\r\n let thirdTabSelected = tabContainer\r\n .getElementsByTagName('button')[2]\r\n .getAttribute('aria-selected');\r\n\r\n if (secondTabSelected === 'true') {\r\n document.getElementById('tabs-container').getElementsByTagName('span')[6].style.left = '33.33%';\r\n } else if (thirdTabSelected === 'true') {\r\n document.getElementById('tabs-container').getElementsByTagName('span')[6].style.left = '66.66%'; \r\n }\r\n };\r\n\r\n const checkSelectedTab2 = () => {\r\n let tabContainer = document.getElementById('tabs-container');\r\n let casesTabSelected = tabContainer\r\n .getElementsByTagName('button')[1]\r\n .getAttribute('aria-selected');\r\n\r\n if (casesTabSelected === 'true') {\r\n document.getElementById('tabs-container').getElementsByTagName('span')[4].style.left = '50%';\r\n }\r\n };\r\n\r\n return (\r\n \r\n
\r\n {props.appState.appUser?.organization?.country?.code?.toUpperCase() === CountryCodeEnum.CZ.toString() ? (\r\n \r\n \r\n \r\n
\r\n {props.appState.comments.length + props.appState.newInCases.filter(item => !item.caseStatus.isViewed).length + props.appState.newInAppointments.filter(item => !item.appointmentStatusHistory.isViewed).length}\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n
\r\n
\r\n \r\n
\r\n
\r\n ) : (\r\n \r\n \r\n \r\n
\r\n {props.appState.comments.length + props.appState.newInCases.filter(item => !item.caseStatus.isViewed).length + props.appState.newInAppointments.filter(item => !item.appointmentStatusHistory.isViewed).length}\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n
\r\n
\r\n \r\n
\r\n
\r\n )}\r\n \r\n {props.appState.appUser?.organization?.country?.code?.toUpperCase() === CountryCodeEnum.CZ.toString() ? null : (\r\n \r\n
\r\n {props.appState.tasks.length}\r\n
\r\n \r\n
\r\n )\r\n }\r\n {\r\n props.history.push('/user-manual');\r\n }} \r\n color=\"inherit\"\r\n className=\"btn-inverse mx-1 d-50\">\r\n \r\n \r\n {\r\n props.history.push('/general-notification');\r\n }} \r\n color=\"inherit\"\r\n className=\"btn-inverse mx-1 d-50\">\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n user: state.app.user,\r\n appState: state.app\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n loadUserNotifications: () => dispatch(AppActionCreators.LoadUserNotifications())\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(HeaderDots));\r\n","import React, { Fragment, useContext } from 'react';\r\n\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { Grid, Avatar, Box, Badge, Menu, Button, List, ListItem, Divider } from '@material-ui/core';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport { connect } from 'react-redux';\r\nimport { AppActionCreators } from '../../store';\r\nimport { withRouter } from 'react-router';\r\n\r\nconst StyledBadge = withStyles({\r\n badge: {\r\n backgroundColor: 'var(--success)',\r\n color: 'var(--success)',\r\n boxShadow: '0 0 0 2px #fff',\r\n '&::after': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n borderRadius: '50%',\r\n animation: '$ripple 1.2s infinite ease-in-out',\r\n border: '1px solid currentColor',\r\n content: '\"\"'\r\n }\r\n },\r\n '@keyframes ripple': {\r\n '0%': {\r\n transform: 'scale(.8)',\r\n opacity: 1\r\n },\r\n '100%': {\r\n transform: 'scale(2.4)',\r\n opacity: 0\r\n }\r\n }\r\n})(Badge);\r\n\r\nconst HeaderUserbox = (props) => {\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const context = useContext(ApplicationContext);\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const currentLanguage = () => {\r\n return props.appUser.organization.gtOrganization.languages.find(\r\n (item) => item.code === translatorService.GetLanguage()\r\n );\r\n };\r\n\r\n const activeLanguages = () => {\r\n let activeLanguages = props.appUser.organization.gtOrganization.languages.filter(\r\n (language) => language.isActive === true\r\n );\r\n\r\n activeLanguages.forEach((language) => {\r\n language.displayName =\r\n language.displayName.charAt(0).toUpperCase() + language.displayName.slice(1);\r\n });\r\n return activeLanguages;\r\n };\r\n\r\n let buttonLanguages = [];\r\n\r\n const languages = activeLanguages();\r\n for (let i = 0; i < languages.length; i++) {\r\n buttonLanguages.push(\r\n \r\n {\r\n translatorService.SetLanguage(languages[i].code);\r\n props.setLanguage();\r\n handleCloseMenu();\r\n window.location.reload();\r\n }}\r\n className=\"w-100 d-block text-center\"\r\n >\r\n { languages[i].displayName}\r\n \r\n \r\n );\r\n }\r\n\r\n const logout = async () => {\r\n const authService = context.authenticationService;\r\n handleClose();\r\n await authService.logoutAsync();\r\n };\r\n\r\n const translatorService = context.translatorService;\r\n const [anchorElMenu, setAnchorElMenu] = React.useState(null);\r\n\r\n const handleClickMenu = (event) => {\r\n setAnchorElMenu(event.currentTarget);\r\n };\r\n const handleCloseMenu = () => {\r\n setAnchorElMenu(null);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {/* src={avatar4} */}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {/* src={avatar4} */}\r\n \r\n \r\n
\r\n
\r\n {props.appUser ? props.appUser.lastName + ' ' + props.appUser.firstName : null}\r\n
\r\n
\r\n {props.appUser ? props.appUser.email : null}\r\n
\r\n
\r\n {props.appUser ? props.appUser.jobFunction : null}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {props.appUser ? props.appUser.organization.hoName : null}\r\n
\r\n
\r\n {props.appUser ? props.appUser.organization.name : null}\r\n
\r\n
\r\n \r\n \r\n \r\n {currentLanguage()?.displayName}\r\n\r\n \r\n \r\n
\r\n
\r\n \r\n {buttonLanguages}\r\n \r\n
\r\n
\r\n \r\n {\r\n props.history.push('/profile');\r\n handleClose();\r\n }}\r\n >\r\n {translatorService.Tranlate('PROFILE', 'Profil')}\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n};\r\nconst mapStateToProps = (state) => ({\r\n // sidebarToggle: state.themeOptions.sidebarToggle,\r\n // sidebarHover: state.themeOptions.sidebarHover,\r\n appUser: state.app.appUser,\r\n appState: state.app\r\n});\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setLanguage: () => dispatch(AppActionCreators.SetLanguage())\r\n});\r\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(HeaderUserbox));\r\n","import moment from 'moment';\r\nimport { Case } from '../interfaces/Case';\r\nimport { Vehicle } from '../interfaces/Vehicle';\r\nimport * as R from 'ramda';\r\n\r\nexport class VehicleHelper {\r\n public static GetPlateNumber(casee: Case | null, vehicle: Vehicle | null): string {\r\n if (!R.isNil(casee) && !R.isNil(casee.caseVehicle)) {\r\n return casee.caseVehicle.plateNumber!;\r\n }\r\n if (!R.isNil(vehicle)) {\r\n return vehicle.plateNumber;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n public static GetBrand(casee: Case | null, vehicle: Vehicle | null): string {\r\n let caseVehicleBrand = '';\r\n let vehicleBrand = '';\r\n if (!R.isNil(casee) && !R.isNil(casee.caseVehicle)) {\r\n caseVehicleBrand = !R.isNil(casee.caseVehicle.identifiedMake) ? casee.caseVehicle.identifiedMake : R.isNil(casee.caseVehicle.model) ? '' : casee.caseVehicle.model.brand;\r\n }\r\n if (!R.isNil(vehicle)) {\r\n vehicleBrand = R.isNil(vehicle.make) ? '' : vehicle.make.displayName;\r\n }\r\n\r\n return vehicleBrand || caseVehicleBrand;\r\n }\r\n\r\n public static GetModel(casee: Case | null, vehicle: Vehicle | null): string {\r\n let caseVehicleModel = '';\r\n let vehicleModel = '';\r\n if (!R.isNil(casee) && !R.isNil(casee.caseVehicle)) {\r\n caseVehicleModel =!R.isNil(casee.caseVehicle.identifiedModel) ? casee.caseVehicle.identifiedModel : R.isNil(casee.caseVehicle.model) ? '' : casee.caseVehicle.model.name;\r\n }\r\n if (!R.isNil(vehicle)) {\r\n vehicleModel = R.isNil(vehicle.model) ? '' : vehicle.model.name!;\r\n }\r\n\r\n return vehicleModel || caseVehicleModel;\r\n }\r\n\r\n public static GetUMC(casee: Case | null, vehicle: Vehicle | null): string {\r\n if (!R.isNil(casee) && !R.isNil(casee.caseVehicle)) {\r\n return R.isNil(casee.caseVehicle.model) ? '' : casee.caseVehicle.model.code;\r\n }\r\n if (!R.isNil(vehicle)) {\r\n return 'N/A';\r\n }\r\n\r\n return '';\r\n }\r\n\r\n public static GetVIN(casee: Case | null, vehicle: Vehicle | null): string {\r\n if (!R.isNil(casee) && !R.isNil(casee.caseVehicle)) {\r\n return R.isNil(casee.caseVehicle.vin) ? 'N/A' : casee.caseVehicle.vin;\r\n }\r\n if (!R.isNil(vehicle)) {\r\n return vehicle.vin;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n public static GetKmNr(casee: Case | null, vehicle: Vehicle | null): number {\r\n if (!R.isNil(casee) && !R.isNil(casee.caseVehicle)) {\r\n return R.isNil(casee.caseVehicle.numberOfKilometers)\r\n ? 0\r\n : casee.caseVehicle.numberOfKilometers;\r\n }\r\n if (!R.isNil(vehicle)) {\r\n return R.isNil(vehicle.kilometersNr) ? 0 : vehicle.kilometersNr;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n public static GetFirstRegistrationDate(\r\n casee: Case | null,\r\n vehicle: Vehicle | null,\r\n language: string\r\n ): string {\r\n const dateObj = this.GetFirstRegistrationDateObject(casee, vehicle);\r\n\r\n return R.isNil(dateObj) ? 'N/A' : dateObj.toLocaleDateString(language);\r\n }\r\n public static GetFirstRegistrationDateFormat(\r\n casee: Case | null,\r\n vehicle: Vehicle | null,\r\n format: string\r\n ): string {\r\n const dateObj = this.GetFirstRegistrationDateObject(casee, vehicle);\r\n\r\n return moment(dateObj).format(format);\r\n }\r\n\r\n public static GetFirstRegistrationDateObject(\r\n casee: Case | null,\r\n vehicle: Vehicle | null\r\n ): Date | null {\r\n if (!R.isNil(casee) && !R.isNil(casee.caseVehicle)) {\r\n return R.isNil(casee.caseVehicle.firstPlateDate)\r\n ? null\r\n : moment.utc(casee.caseVehicle.firstPlateDate).local().toDate();\r\n }\r\n if (!R.isNil(vehicle)) {\r\n return R.isNil(vehicle.firstRegistrationDate)\r\n ? null\r\n : moment.utc(vehicle.firstRegistrationDate).local().toDate();\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public static GetMakeDateObject(casee: Case | null, vehicle: Vehicle | null): Date | null {\r\n if (!R.isNil(casee) && !R.isNil(casee.caseVehicle)) {\r\n return R.isNil(casee.caseVehicle.registrationDate)\r\n ? null\r\n : moment.utc(casee.caseVehicle.registrationDate).local().toDate();\r\n }\r\n if (!R.isNil(vehicle)) {\r\n return R.isNil(vehicle.makeDate) ? null : moment.utc(vehicle.makeDate).local().toDate();\r\n }\r\n\r\n return new Date();\r\n }\r\n\r\n public static GetMakeDate(casee: Case | null, vehicle: Vehicle | null, language: string): string {\r\n const dateObj = this.GetMakeDateObject(casee, vehicle);\r\n\r\n return R.isNil(dateObj) ? 'N/A' : dateObj.toLocaleDateString(language);\r\n }\r\n\r\n public static GetMakeDateFormat(\r\n casee: Case | null,\r\n vehicle: Vehicle | null,\r\n format: string\r\n ): string | null {\r\n const dateObj = this.GetMakeDateObject(casee, vehicle);\r\n if (dateObj == null) return null;\r\n return moment(dateObj).format(format);\r\n }\r\n\r\n public static GetBrandModel(casee: Case | null, vehicle: Vehicle | null): string {\r\n return this.GetBrand(casee, vehicle) + ' ' + this.GetModel(casee, vehicle);\r\n }\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../store';\r\nimport { Case, CaseFilters, CaseList } from '../../interfaces/Case';\r\nimport { Organization } from '../../interfaces/Organization';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Box, Grid, ListItem } from '@material-ui/core';\r\nimport { withRouter } from 'react-router';\r\nimport moment from 'moment';\r\nimport { VehicleFilters, VehicleList } from '../../interfaces/Vehicle';\r\nimport * as R from 'ramda';\r\nimport { VehicleHelper } from '../../helpers/VehicleHelper';\r\nimport { RoleClaimsEnum } from '../../helpers/Constants';\r\nimport isNil from 'lodash/isNil';\r\nimport unionBy from 'lodash/unionBy';\r\n\r\ninterface Vehicle {\r\n id: number;\r\n plateNumber: string;\r\n name: string;\r\n vin: string;\r\n status?: string;\r\n firstRegistrationDate: string;\r\n cases: Case[];\r\n}\r\n\r\nexport interface ExternalSearchCaseProps {\r\n handleSearchPopverClose: () => void;\r\n searchValue: string;\r\n searchId: string;\r\n}\r\ntype SearchCaseProps = { appState: AppState } & ExternalSearchCaseProps & RouteComponentProps;\r\n\r\ninterface ISearchCaseState {\r\n vehicleList: Vehicle[];\r\n\r\n isLoading: boolean;\r\n}\r\n\r\nclass SearchCase extends React.PureComponent {\r\n private cbContext!: AppContext;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n vehicleList: [],\r\n isLoading: false\r\n } as ISearchCaseState;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n public async componentDidMount() {}\r\n\r\n async componentDidUpdate(prevProps: SearchCaseProps) {\r\n if (this.props.searchId !== prevProps.searchId) {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n this.loadCases\r\n );\r\n }\r\n }\r\n\r\n loadCases = async () => {\r\n const vehicles = await this.loadData();\r\n\r\n this.setState({\r\n isLoading: false,\r\n vehicleList: vehicles\r\n });\r\n };\r\n\r\n /**\r\n * Warning! dragons in here due to the API.\r\n * Case and Vehicle and kept in different databases and are accessed with different services.\r\n * Steps needed for searching are:\r\n * 1. Search by VIN, case id or registration number in Case DB => some cases are returned\r\n * 2. Search in Vehicle DB => some vehicles are returned\r\n * 3. Back to Case DB and grab all the cases associated with the vehicles found on step 2.\r\n * 4. In order to be safe, combine cases found on step 1 and step 3 and remove duplicates\r\n */\r\n loadData = async (): Promise => {\r\n const vehicleEmptyList = { vehicles: [], total: 0, page: 0 } as VehicleList;\r\n\r\n // Step 1 and 2 from the description above\r\n const [cases, vehicleExtensionList] = await Promise.all([\r\n this.cbContext.caseService.GetCases({ text: this.props.searchValue.replace(/\\s+/g, ''), countryCode: this.props.appState.appUser?.organization?.country?.code } as any as CaseFilters),\r\n this.cbContext.vehicleService.GetVehicles({\r\n text: this.props.searchValue.replace(/\\s+/g, '')\r\n } as any as VehicleFilters)\r\n ]);\r\n\r\n const vehicleList: VehicleList = {\r\n vehicles: vehicleExtensionList.vehicles.map(({ vehicle }) => vehicle),\r\n page: vehicleExtensionList.page,\r\n total: vehicleExtensionList.total\r\n };\r\n\r\n const vehicles = this.props.appState.user!.profile.role.includes(RoleClaimsEnum.Vehicle)\r\n ? vehicleList\r\n : vehicleEmptyList;\r\n\r\n const vehicleIds = vehicles.vehicles.map(({ id }) => id);\r\n if (vehicleIds.length) {\r\n // Step 3 from the description above\r\n const allCasesFromVehicles = await this.cbContext.caseService.GetCases({\r\n vehicleIds: vehicleIds,\r\n makeSearchText: '',\r\n modelSearchText: ''\r\n } as any as CaseFilters);\r\n\r\n // Step 4 from the description above\r\n cases.cases = unionBy(cases.cases, allCasesFromVehicles.cases, 'id');\r\n }\r\n\r\n const vehicleIdsFromCases = Array.from(\r\n new Set(cases.cases.filter((c) => c.vehicleId !== null).map((item) => item.vehicleId!))\r\n );\r\n const vehicleIdsFromVehicles = Array.from(new Set(vehicleIds));\r\n\r\n const orphaneVehiclesIds = vehicleIdsFromVehicles.filter(\r\n (vid) => vehicleIdsFromCases.find((item) => item === vid) === undefined\r\n );\r\n const orphaneCasesVehIds = vehicleIdsFromCases.filter(\r\n (vid) => vehicleIdsFromVehicles.find((item) => item === vid) === undefined\r\n );\r\n\r\n // We also need to check for vehicles which are not associated with a case => orphan vehicles\r\n // and cases which are not associated with a vehicle => orphan cases\r\n const [orphaneCases, orphaneVehicles] = await Promise.all([\r\n orphaneVehiclesIds.length === 0\r\n ? ({ cases: [], page: 0, total: 0 } as CaseList)\r\n : this.cbContext.caseService.GetCases({\r\n vehicleIds: orphaneVehiclesIds,\r\n makeSearchText: '',\r\n modelSearchText: ''\r\n } as any as CaseFilters),\r\n this.cbContext.vehicleService.GetVehicleList(orphaneCasesVehIds)\r\n ]);\r\n\r\n cases.cases.push(...orphaneCases.cases);\r\n vehicles.vehicles.push(...orphaneVehicles);\r\n\r\n let usersAssignedLIst: any[] = [];\r\n let orgOwners: Organization[] = [];\r\n\r\n if (cases.cases.length) {\r\n [usersAssignedLIst, orgOwners] = await Promise.all([\r\n this.cbContext.appUserService.GetUsersInfo(\r\n Array.from(new Set(cases.cases.map((item) => item.caseStatus.assignedToId)))\r\n ),\r\n this.cbContext.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(cases.cases.map((item) => item.organizationOwnerId)))\r\n )\r\n ]);\r\n }\r\n cases.cases.forEach((cd) => {\r\n const userAssignedTo = usersAssignedLIst.find(\r\n (item) => item.id === cd.caseStatus.assignedToId\r\n );\r\n const organizationOwner = orgOwners.find((item) => item.id === cd.organizationOwnerId);\r\n const vehicle = vehicles.vehicles.find((item) => item.id === cd.vehicleId);\r\n\r\n cd.caseStatus.assignedTo = R.isNil(userAssignedTo) ? null : userAssignedTo;\r\n cd.organizationOwner = R.isNil(organizationOwner) ? null : organizationOwner;\r\n cd.vehicle = R.isNil(vehicle) ? null : vehicle;\r\n });\r\n\r\n const vehiclesInStock = vehicles.vehicles.map((item) => {\r\n return {\r\n id: item.id,\r\n vin: item.vin,\r\n plateNumber: item.plateNumber,\r\n name: item.make && item.model ? `${item.make?.displayName} ${item.model?.displayName}` : '',\r\n status: item.currentStatus?.status?.displayName,\r\n firstRegistrationDate: item.firstRegistrationDate,\r\n cases: cases.cases.filter((i) => i.vehicle?.id === item.id)\r\n };\r\n });\r\n\r\n const caseVehicles = cases.cases\r\n .filter((i) => !i.vehicle && i.caseVehicle)\r\n .map((i) => i.caseVehicle);\r\n\r\n const vehiclesNotInStock = caseVehicles.map((item) => {\r\n return {\r\n id: -1,\r\n vin: item.vin || '',\r\n plateNumber: item.plateNumber || '',\r\n name: item.model ? `${item.model?.brand} ${item.model?.name}` : '',\r\n status: item.currentStatus?.status?.displayName,\r\n firstRegistrationDate: item.registrationDate ? item.registrationDate : '',\r\n cases: cases.cases.filter((i) => i.caseVehicle?.id === item.id)\r\n };\r\n });\r\n\r\n const caseWithNoVehicles = cases.cases.filter(\r\n (i) => isNil(i.caseVehicle) && isNil(i.vehicleId)\r\n );\r\n\r\n const emptyVehicles = [];\r\n if (caseWithNoVehicles.length)\r\n emptyVehicles.push({\r\n id: -1,\r\n vin: ' - ',\r\n plateNumber: ' - ',\r\n name: ' - ',\r\n status: undefined,\r\n firstRegistrationDate: '',\r\n cases: caseWithNoVehicles\r\n });\r\n\r\n return [...vehiclesInStock, ...vehiclesNotInStock, ...emptyVehicles];\r\n };\r\n\r\n onCaseClick = (id: number) => {\r\n if (!R.isNil(this.props.handleSearchPopverClose)) {\r\n this.props.handleSearchPopverClose();\r\n }\r\n\r\n const currentPath = this.props.history.location.pathname.toLowerCase();\r\n this.props.history.push('/cases/' + id);\r\n\r\n if (currentPath.indexOf('/cases/') !== -1) {\r\n this.props.history.go(0);\r\n }\r\n };\r\n\r\n onVehicleClick = (id: number) => {\r\n if (!id || id < 0) {\r\n return;\r\n }\r\n\r\n if (!R.isNil(this.props.handleSearchPopverClose)) {\r\n this.props.handleSearchPopverClose();\r\n }\r\n\r\n const currentPath = this.props.history.location.pathname.toLowerCase();\r\n this.props.history.push('/vehicle/' + id);\r\n\r\n if (currentPath.indexOf('/vehicle/') !== -1) {\r\n this.props.history.go(0);\r\n }\r\n };\r\n\r\n renderVehicles = (vehicles: Vehicle[]) => {\r\n return vehicles.map((item, index) => (\r\n
\r\n this.onVehicleClick(item.id)}\r\n >\r\n \r\n \r\n
{item.plateNumber}
\r\n
\r\n \r\n
{item.status}
\r\n
{item.vin}
\r\n
\r\n \r\n
{item.name}
\r\n
\r\n \r\n
\r\n
\r\n {item.firstRegistrationDate\r\n ? moment\r\n .utc(item.firstRegistrationDate)\r\n .local()\r\n .format(this.props.appState.dateFormat)\r\n : ' - '}\r\n
\r\n
\r\n
\r\n \r\n {this.renderCases(item.cases)}\r\n
\r\n ));\r\n };\r\n\r\n renderCases = (cases: Case[]) => {\r\n return cases.map((item, index) => (\r\n this.onCaseClick(item.id)}>\r\n \r\n \r\n
{item.id}
\r\n
\r\n {VehicleHelper.GetPlateNumber(item, item.vehicle)}\r\n
\r\n
\r\n \r\n
{item.caseType!.displayName}
\r\n
\r\n {R.isNil(item.caseEvent) ? '' : item.caseEvent.caseNumber}\r\n
\r\n
\r\n {VehicleHelper.GetVIN(item, item.vehicle)}\r\n
\r\n
\r\n\r\n \r\n
{item.organizationOwner!.name}
\r\n {/*
{item.createdByUser!.userName}
*/}\r\n
{item.caseStatus.assignedTo!.userName}
\r\n
\r\n \r\n
{item.caseStatus!.caseStatus!.displayName}
\r\n
\r\n {moment\r\n .utc(item.caseStatus!.date)\r\n .local()\r\n .format(this.props.appState.dateFormat)}\r\n
\r\n
\r\n
\r\n
\r\n ));\r\n };\r\n\r\n public render() {\r\n this.cbContext = this.context as AppContext;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n\r\n {!this.state.isLoading && this.state.vehicleList.length != 0 ? (\r\n \r\n {this.renderVehicles(this.state.vehicleList)}\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withRouter(SearchCase));\r\n","import * as R from 'ramda';\r\nimport { IReferential } from '../interfaces/IReferential';\r\nimport { CurrencyRate, Provenance } from '../interfaces/Vehicle';\r\nimport { CountryCodeEnum, ValuationLaguageId } from './Constants';\r\nimport Moment from 'moment';\r\nimport { isNullOrUndefined } from 'util';\r\nexport class Utils {\r\n public static GetValuationLanguageId(language: string): number {\r\n if (language === 'en') {\r\n return ValuationLaguageId.ro;\r\n }\r\n if (language === 'ro') {\r\n return ValuationLaguageId.ro;\r\n }\r\n if (language === 'nl') {\r\n return ValuationLaguageId.en;\r\n }\r\n\r\n return ValuationLaguageId.ro;\r\n }\r\n\r\n public static GetCurrencyRate(currencyRates: CurrencyRate[], currencyCode: string): number {\r\n const crrRate = currencyRates.find((item) => item.currency === currencyCode);\r\n if (R.isNil(crrRate)) {\r\n return 1;\r\n }\r\n\r\n return currencyRates.find((item) => item.currency === currencyCode)!.rate;\r\n }\r\n\r\n public static ConvertCurrencyWithRoundedRate(\r\n currencyRates: CurrencyRate[],\r\n fromCurrencyCode: string,\r\n toCurrencyCode: string,\r\n fromRate: number,\r\n value: number\r\n ): number {\r\n if (toCurrencyCode === fromCurrencyCode) {\r\n return value;\r\n }\r\n const toRate = parseFloat(this.GetCurrencyRate(currencyRates, toCurrencyCode).toFixed(2));\r\n return Number.parseFloat((value * (fromRate / toRate)).toFixed(2));\r\n }\r\n\r\n public static ConvertCurrency(\r\n currencyRates: CurrencyRate[],\r\n fromCurrencyCode: string,\r\n toCurrencyCode: string,\r\n value: number\r\n ): number {\r\n if (toCurrencyCode === fromCurrencyCode) {\r\n return value;\r\n }\r\n\r\n const fromRate = this.GetCurrencyRate(currencyRates, fromCurrencyCode);\r\n const toRate = this.GetCurrencyRate(currencyRates, toCurrencyCode);\r\n\r\n return Number.parseFloat((value * (fromRate / toRate)).toFixed(2));\r\n }\r\n\r\n /* eslint eqeqeq: 0 */\r\n public static GetIdOrNull = (model: IReferential | undefined | null): number | null =>\r\n model != undefined ? model.id : null;\r\n \r\n public static GetProvenanceIdOrNull = (model: Provenance | undefined | null): number | null =>\r\n model != undefined ? model.id : null;\r\n\r\n public static FormatDateString = (dateString: string): string => {\r\n return Moment.utc(dateString).local().format('YYYY/MM/DD hh:mm:ss');\r\n };\r\n public static FormatDate = (date: Date): string => {\r\n return Moment.utc(date).local().format('YYYY/MM/DD hh:mm:ss');\r\n };\r\n\r\n public static AddObjectToFormData = (formData: FormData, data: any, parentKey: string) => {\r\n if (data && typeof data === 'object' && !(data instanceof Date) && !(data instanceof File)) {\r\n Object.keys(data).forEach((key) => {\r\n Utils.AddObjectToFormData(formData, data[key], parentKey ? `${parentKey}[${key}]` : key);\r\n });\r\n } else {\r\n const value = data == null ? '' : data;\r\n\r\n formData.append(parentKey, value);\r\n }\r\n };\r\n\r\n public static getPriceWithoutVat = (priceWithVat: number, vatRate: number): number => {\r\n if (vatRate <= 0) {\r\n return priceWithVat;\r\n }\r\n\r\n return priceWithVat / (1 + vatRate / 100);\r\n };\r\n\r\n public static getPriceWithVat = (price: number, vatRate: number): number => {\r\n if (vatRate <= 0) {\r\n return price;\r\n }\r\n\r\n return price * (1 + vatRate / 100);\r\n };\r\n\r\n public static getPriceWithMarginVat = (\r\n sellingPrice: number,\r\n purchasePrice: number,\r\n vatRate: number\r\n ) => {\r\n if (sellingPrice <= purchasePrice) {\r\n return sellingPrice;\r\n }\r\n\r\n return sellingPrice + (sellingPrice - purchasePrice) * (vatRate / 100);\r\n };\r\n\r\n public static getMarginVat = (sellingPrice: number, purchasePrice: number, vatRate: number) => {\r\n if (sellingPrice <= purchasePrice) {\r\n return 0;\r\n }\r\n\r\n return (sellingPrice - purchasePrice) * (vatRate / 100);\r\n };\r\n\r\n public static removeVatFromPriceLabel = (label: string): string => {\r\n return label.replace(/ *\\([^)]*\\) */g, '').trim();\r\n };\r\n\r\n public static validatePlateNumber(plateNumber:string):boolean {\r\n const plateRegex = /^[A-Z]{1,2}[0-9]{2,3}[A-Z]{3}$/;\r\n\r\n return plateRegex.test(plateNumber);\r\n }\r\n\r\n \r\n public static countryNumberFormat(numString: string, country: IReferential | null): string {\r\n const countryCode = country?.code ?? CountryCodeEnum.RO.toString();\r\n if (countryCode == CountryCodeEnum.CZ.toString()) { \r\n // Convert the string to a decimal number\r\n const number = parseFloat(numString); \r\n // Check if conversion was successful\r\n if (isNaN(number)) {\r\n return \"Invalid number\";\r\n }\r\n \r\n // Specify options for number formatting\r\n const options: Intl.NumberFormatOptions = {\r\n style: 'decimal',\r\n minimumFractionDigits: 2,\r\n maximumFractionDigits: 2,\r\n };\r\n\r\n return number.toLocaleString('cs-CZ', options);\r\n }\r\n \r\n return numString;\r\n } \r\n}\r\n","import { Utils } from '../helpers/Utils';\r\nimport { IReferential } from '../interfaces/IReferential';\r\nimport { OrderPart, OrderPartDTO } from '../interfaces/Order';\r\nimport { isNullOrUndefined } from 'util';\r\nexport const pretUnitarFormat = (\r\n part: OrderPart | OrderPartDTO | undefined,\r\n pretOriginal: number,\r\n currencyCode: string,\r\n country: IReferential | null\r\n) => {\r\n if (part!.alternativePartQualityId === null) {\r\n return (\r\n Utils.countryNumberFormat((Math.round(pretOriginal * 100) / 100).toFixed(2), country) +\r\n ' ' +\r\n (!isNullOrUndefined(currencyCode) && currencyCode !== '' ? currencyCode : '')\r\n );\r\n } else {\r\n if (isNullOrUndefined(part!.alternativePrice)) {\r\n return 0;\r\n }\r\n return (\r\n Utils.countryNumberFormat((Math.round(part!.alternativePrice * 100) / 100).toFixed(2), country) +\r\n ' ' +\r\n (!isNullOrUndefined(currencyCode) && currencyCode !== '' ? currencyCode : '')\r\n );\r\n }\r\n};\r\n","import { OrderPart } from \"./Order\";\r\n\r\nexport class OrderParts {\r\n private _parts: OrderPart[];\r\n private _vat: number;\r\n\r\n public constructor(parts: OrderPart[], vat: number) {\r\n // Filtrare pentru a exclude piesele șterse\r\n this._parts = parts.filter(item => !item.isDeleted);\r\n this._vat = vat / 100;\r\n }\r\n\r\n // Metoda pentru a calcula prețul unei piese\r\n private getPrice(part: OrderPart): number {\r\n return part.alternativePartQualityId === null ? part.originalPrice\r\n : part.alternativePrice ?? 0;\r\n }\r\n\r\n // Metoda pentru a calcula discount-ul unei piese\r\n private getDiscount(part: OrderPart): number {\r\n const discount = part.alternativePartQualityId === null ? part.discount\r\n : part.alternativePartDiscount;\r\n return discount ? discount / 100 : 0;\r\n }\r\n\r\n // Calcularea sumei totale a pieselor fără discount\r\n public getAmountPart(): number {\r\n return this._parts.reduce((sum, part) =>\r\n sum + part.pieceNr * this.getPrice(part), 0);\r\n }\r\n\r\n // Calcularea sumei totale a pieselor cu discount\r\n public getAmountPartWithDiscount(): number {\r\n return this._parts.reduce((sum, part) =>\r\n sum + part.pieceNr * this.getPrice(part) * (1 - this.getDiscount(part)), 0);\r\n }\r\n\r\n // Calcularea totalului discountului\r\n public totalDiscount(): number {\r\n return this._parts.reduce((sum, part) =>\r\n sum + part.pieceNr * this.getPrice(part) * this.getDiscount(part), 0);\r\n }\r\n\r\n // Calcularea totalului fără TVA\r\n public totalWithoutVAT(): number {\r\n const totalParts = this.getAmountPart();\r\n const discount = this.totalDiscount();\r\n return totalParts - discount;\r\n }\r\n\r\n // Calcularea TVA-ului\r\n public totalVAT(): number {\r\n return this.totalWithoutVAT() * this._vat;\r\n }\r\n\r\n // Calcularea totalului final cu TVA\r\n public total(): number {\r\n const totalWithoutVAT = this.totalWithoutVAT();\r\n return totalWithoutVAT + this.totalVAT();\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { ApplicationState, AppState, CaseSettingsState, VehicleState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { IOrderService } from '../../services/Interfaces/IOrderService';\r\nimport {\r\n Box,\r\n Button,\r\n Card,\r\n CardContent,\r\n Dialog,\r\n DialogContent,\r\n DialogTitle,\r\n FormControlLabel,\r\n Grid,\r\n IconButton,\r\n Radio,\r\n TextField,\r\n Tooltip\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows,\r\n MUIDataTableColumnDef\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport {\r\n CaseAttachment,\r\n CaseCalculationAlternativePart,\r\n CaseCalculationPart,\r\n CaseCalculationSupplierAlternativePart,\r\n Model,\r\n NonStockPart,\r\n TariffPercentResponse,\r\n UpdateOrderInfoRequest\r\n} from '../../interfaces/Case';\r\nimport {\r\n Order,\r\n OrderPart,\r\n OrderPartDTO,\r\n OrderStatusChangeRequestDto,\r\n OrderStatusHistory,\r\n PartToBeOrdered,\r\n UpdateOrderAmountsRequestDto\r\n} from '../../interfaces/Order';\r\nimport { isNull, isNullOrUndefined } from 'util';\r\nimport moment from 'moment';\r\nimport 'moment/locale/en-gb';\r\nimport 'moment/locale/ro';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport {\r\n ReferentialCode,\r\n ParametreCode,\r\n OrganizationTypeCode,\r\n OrderStatusTypesCode,\r\n AttachmentTypeCode,\r\n OrderStatusCode,\r\n OrderPartStatus,\r\n SupplierCode,\r\n OwnStockCodeEnum,\r\n AdditionalInfoCode,\r\n AlternativeCode,\r\n RoleClaimsEnum,\r\n CarPartQualityTypeCode,\r\n OrderNotificationTemplateEnum\r\n} from '../../helpers/Constants';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport FileSaver from 'file-saver';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport { WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport * as R from 'ramda';\r\nimport { map } from 'ramda';\r\nimport { isUndefined, rest } from 'lodash';\r\nimport { red } from '@material-ui/core/colors';\r\nimport { pretUnitarFormat } from '../../utils/orderUtils';\r\nimport { OrganizationService } from '../../services/OrganizationService';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { Organization } from '../../interfaces/Organization';\r\nimport { AlignRight } from 'react-feather';\r\nimport _ from 'lodash';\r\nimport { VehicleHelper } from '../../helpers/VehicleHelper';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport { IWorkflowService } from '../../services/Interfaces/IWorkflowService';\r\nimport {MuiThemeProvider, createMuiTheme } from '@material-ui/core';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { OrderParts } from '../../interfaces/OrderParts';\r\nimport { EditComponentProps } from 'material-table';\r\n\r\nexport interface ExternalOrderDetailsProps {\r\n orderDetails: Order;\r\n onOrderChange: (order: Order) => void;\r\n hasRights: boolean;\r\n additionTariff: TariffPercentResponse;\r\n discountTariff: TariffPercentResponse;\r\n automatePlaceOrder: boolean;\r\n workflowAutomatePlaceOrder: boolean;\r\n automatePlaceOrderChange: () => Promise;\r\n}\r\n\r\ntype OrderDetailsProps = ExternalOrderDetailsProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n} & ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface IOrderDetailsState {\r\n userStartCode: string;\r\n isLoadingOrderDetails: boolean;\r\n orderpartsList: OrderPartDTO[];\r\n isChangeOrderStatusDialogOpen: boolean;\r\n changeOrderStatusComment: string;\r\n statuses: IReferential[];\r\n selectedStatus: IReferential;\r\n orderPartStatus: IReferential[];\r\n orderStatuses: IReferential[];\r\n selectedDisplayedStatus: string;\r\n attachments: CaseAttachment[];\r\n orderStatusHistory: OrderStatusHistory[];\r\n TVA: string;\r\n attachType: IReferential | null;\r\n partsLocationOrganization: Organization | null;\r\n caseCalculationPartsThatChangedDuringPlacingOrder: CaseCalculationSupplierAlternativePart[];\r\n organizationId: number | null;\r\n organizations: Organization[];\r\n showOrderPrice: boolean;\r\n costCenter: IReferential | null;\r\n executing: boolean;\r\n quality: IReferential | null;\r\n rowsExpanded: number[];\r\n partLoaders: boolean[];\r\n firstCasePartToBeOrdered: PartToBeOrdered | null;\r\n hasSupplierRole: boolean;\r\n model: Model | null;\r\n interventionType: IReferential | null;\r\n}\r\n\r\nclass OrderDetails extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private orderService!: IOrderService;\r\n private appReferentialService!: IReferentialService;\r\n private appUserService!: IAppUserService;\r\n private caseService!: ICaseService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n static contextType = ApplicationContext;\r\n \r\n state = {\r\n userStartCode: '',\r\n isLoadingOrderDetails: true,\r\n orderpartsList: [],\r\n isChangeOrderStatusDialogOpen: false,\r\n changeOrderStatusComment: '',\r\n statuses: [] as IReferential[],\r\n selectedStatus: this.props.orderDetails.orderStatus,\r\n orderPartStatus: [],\r\n orderStatuses: [],\r\n selectedDisplayedStatus: '',\r\n attachments: [],\r\n orderStatusHistory: [],\r\n TVA: '0',\r\n attachType: null,\r\n partsLocationOrganization: null,\r\n caseCalculationPartsThatChangedDuringPlacingOrder: [],\r\n organizationId: this.props.appState.appUser!.organizationId,\r\n organizations: [],\r\n showOrderPrice: false,\r\n costCenter: null,\r\n executing: false,\r\n quality: null,\r\n rowsExpanded: [],\r\n partLoaders: [],\r\n firstCasePartToBeOrdered: null,\r\n hasSupplierRole: false,\r\n model: null,\r\n interventionType: null\r\n } as IOrderDetailsState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoadingOrderDetails: true\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n }\r\n\r\n loadData = async () => {\r\n const refOrderStatus = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OrderStatus\r\n );\r\n const refOrderPartStatus = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OrderPartStatus\r\n );\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.AttachmentType\r\n );\r\n const refQualityPart = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CarPartCategory\r\n );\r\n\r\n const orderParts = this.props.orderDetails.orderParts;\r\n const [orderStatus, orderPartStatus, statusHist, attachmentTypes, caseEvent, partQualityTypes, casePartToBeOrdered, suppliersInit] = await Promise.all([\r\n this.appReferentialService.Get(refOrderStatus!.baseUrl),\r\n this.appReferentialService.Get(refOrderPartStatus!.baseUrl),\r\n this.orderService.GetOrderStatusHistories(this.props.orderDetails.id),\r\n this.appReferentialService.Get(ref!.baseUrl),\r\n this.caseService.GetCurrentEvent(this.props.orderDetails.caseId) ,\r\n this.appReferentialService.Get(refQualityPart!.baseUrl),\r\n orderParts && orderParts.length > 0 ? this.orderService.GetPartToBeOrdered(orderParts[0].casePartToBeOrderedId) : null,\r\n !this.props.orderDetails.supplier ? this.organizationService.GetUserOrganizationsByIds([this.props.orderDetails.supplierId]) : []\r\n ]);\r\n\r\n if (!this.props.orderDetails.supplier) {\r\n const supplier = suppliersInit.find((item) => item.id === this.props.orderDetails.supplierId);\r\n this.props.orderDetails.supplier = supplier === undefined ? null : supplier;\r\n }\r\n\r\n const modelId = this.props.caseSettingsState?.case?.caseVehicle?.modelId ?? this.props.orderDetails?.caseVehicle?.modelId;\r\n const model = modelId ? await this.caseService.GetModelById(modelId) : null;\r\n\r\n const [users] = await Promise.all([\r\n this.appUserService.GetUsersInfo(\r\n Array.from(new Set(statusHist.map((item) => item.createdBy)))\r\n )\r\n ]);\r\n\r\n statusHist.forEach((p) => {\r\n const user = users.find((item) => item.id === p.createdBy);\r\n p.createdByUser = user === undefined ? null : user;\r\n });\r\n\r\n let partsLocationOrganization = null;\r\n if (!isNullOrUndefined(this.props.orderDetails.partsLocationOrganizationId)) {\r\n partsLocationOrganization = await this.organizationService.GetOrganization(\r\n this.props.orderDetails.partsLocationOrganizationId!\r\n );\r\n }\r\n\r\n let costCenter = null;\r\n if (!R.isNil(caseEvent)) {\r\n if (!isNullOrUndefined(caseEvent.organizationId)) {\r\n costCenter = await this.workflowService.GetCostCenter(\r\n caseEvent.organizationId!\r\n );\r\n }\r\n }\r\n let orgList: Organization[] = [];\r\n if (!isNullOrUndefined(this.props.caseSettingsState.case)) {\r\n orgList = await this.organizationService.GetOrganizationsByHO(\r\n this.props.caseSettingsState.case!.organizationOwnerId,\r\n null\r\n );\r\n }\r\n const showOrderPrice = !this.props.appState.appUser!.organization!.organizationType!.hideOrderPrices;\r\n let TVA = '0';\r\n if (this.props.orderDetails.amountWithoutTVA !== 0) {\r\n TVA = (\r\n (this.props.orderDetails.amountTVA / this.props.orderDetails.amountWithoutTVA) *\r\n 100\r\n ).toFixed(0);\r\n } else {\r\n const caseParameterHistory = await this.caseService.GetCaseParameterHistory(this.props.orderDetails.caseId);\r\n const tvaParam = caseParameterHistory.find((item) => item.parameterCode === ParametreCode.TVA);\r\n if (tvaParam) {\r\n TVA = tvaParam.value;\r\n }\r\n }\r\n\r\n const startCode =\r\n this.props.appState.appUser!.organization!.organizationType!.code ===\r\n OrganizationTypeCode.SUPPLIER\r\n ? OrderStatusTypesCode.FZR\r\n : OrderStatusTypesCode.REP;\r\n\r\n const orderPartStatusFiltered = orderPartStatus.filter((item) => item.isActive === true);\r\n const partLoaders: boolean[] = [];\r\n const x = this.props.orderDetails.orderParts!.map((item) => {\r\n return { ...item } as OrderPartDTO;\r\n });\r\n for (let i = 0; i < x.length; i++) {\r\n partLoaders.push(false);\r\n }\r\n const hasSupplierRole = this.hasRight(RoleClaimsEnum.Supplier);\r\n this.setState({\r\n userStartCode: startCode,\r\n orderpartsList: x,\r\n statuses: orderStatus.filter((item) => item.isActive === true),\r\n orderStatuses: orderStatus.filter((item) => item.isActive === true),\r\n orderPartStatus: orderPartStatusFiltered,\r\n selectedDisplayedStatus: !isNullOrUndefined(this.props.orderDetails.orderStatus)\r\n ? this.props.orderDetails.orderStatus.displayName\r\n : '',\r\n selectedStatus: this.props.orderDetails.orderStatus!,\r\n orderStatusHistory: statusHist,\r\n TVA: TVA,\r\n isLoadingOrderDetails: false,\r\n attachType: attachmentTypes.find((item) => item.code === AttachmentTypeCode.OTHER)!,\r\n partsLocationOrganization: partsLocationOrganization,\r\n organizations: orgList,\r\n showOrderPrice: showOrderPrice,\r\n costCenter: costCenter,\r\n quality: partQualityTypes.find((item) => item.id === this.props.orderDetails.supplier?.categoryPartId) ?? null,\r\n rowsExpanded: this.props.orderDetails?.orderStatus?.code === OrderStatusCode.REP_VERIFICATA_DE_FURNIZOR && !hasSupplierRole ? x.map((row, index) => row.hasBeenVerifiedBySupplier ? index : null).filter(index => index !== null) as number[] : [],\r\n partLoaders: partLoaders,\r\n hasSupplierRole: hasSupplierRole,\r\n firstCasePartToBeOrdered: casePartToBeOrdered,\r\n model: model,\r\n interventionType: !R.isNil(caseEvent) ? caseEvent.interventionType : null\r\n });\r\n };\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n displayOtherOrderDetails = (value: any, row: any) => {\r\n const orderPart = this.state.orderpartsList.find((item) => item.id === row[0]);\r\n return (\r\n \r\n
\r\n {this.translatorService.Tranlate('ORDER_PART_DETAILS_STOCK_LABEL', 'Disponibil') +\r\n ': ' +\r\n (orderPart!.alternativePartQualityId === null\r\n ? orderPart!.availableStock\r\n : orderPart!.availableQuantity === null\r\n ? ''\r\n : orderPart!.availableQuantity)}\r\n
\r\n
\r\n {this.translatorService.Tranlate('ORDER_PART_DETAILS_LOCATION_LABEL', 'Locatie') +\r\n ': ' +\r\n (orderPart!.alternativePartQualityId === null\r\n ? this.isNull(orderPart!.location, '')\r\n : this.isNull(orderPart!.alternativePartStockLocation, ''))}\r\n
\r\n \r\n }\r\n >\r\n
\r\n {(isNullOrUndefined(value) || value === '' ? 'N/A' : value) + ' '}\r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n isNull = (value: any, nullValue: any) => {\r\n if (isNullOrUndefined(value)) {\r\n return nullValue;\r\n }\r\n\r\n return value;\r\n };\r\n\r\n displayDeliveryOrderDetails = (value: any, row: any) => {\r\n const orderPart = this.state.orderpartsList.find((item) => item.id === row[0]);\r\n return (\r\n \r\n {isNullOrUndefined(orderPart!.deliveryTime) ? '' : orderPart!.deliveryTime}\r\n {!isNullOrUndefined(orderPart?.prevVal) && (\r\n \r\n {this.translatorService.Tranlate(\r\n 'ORDER_PART_DETAILS_DELIVERY_TIME_LABEL11',\r\n 'Livrare valoare anterioara'\r\n ) +\r\n ': ' +\r\n (isNullOrUndefined(orderPart!.prevVal?.deliveryTime)\r\n ? ''\r\n : orderPart!.prevVal?.deliveryTime)}\r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n handleOECodeChange = (\r\n event: React.ChangeEvent, \r\n orderPart: OrderPart\r\n ) => {\r\n const orderParts = [...this.state.orderpartsList];\r\n const index = orderParts.findIndex((item) => item.id === orderPart.id);\r\n if (index !== -1) {\r\n const updatedOrderPart = { \r\n ...orderParts[index],\r\n toBeUpdated: true,\r\n guideNumber: event.target.value,\r\n // Reset fields when guideNumber is changed\r\n alternativePartQualityId: null,\r\n originalPrice: 0,\r\n producer: null,\r\n deliveryTime: null,\r\n validityTime: null,\r\n codeType: null,\r\n excludeFromOrder: null,\r\n orderCode: null,\r\n type: null,\r\n locationId: null,\r\n availableStock: null,\r\n location: null,\r\n remarks: null,\r\n alternativeGuideNumber: null,\r\n alternativePartCode: null,\r\n alternativePrice: 0,\r\n alternativePartStockQuantity: null,\r\n alternativePartStockLocation: null,\r\n alternativePartRemarks: null,\r\n productId: null,\r\n codEan: null,\r\n bundleItem: null,\r\n bundleNo: null,\r\n bundleQuantity: null,\r\n availableQuantity: null,\r\n supplierId: null,\r\n hasBeenVerifiedBySupplier: true,\r\n byOeCode: true\r\n };\r\n // Update the orderParts list\r\n orderParts[index] = updatedOrderPart;\r\n \r\n //Delete grouped parts\r\n const orderPart = orderParts[index];\r\n for (let i = 0; i < orderParts.length; i++) {\r\n if (orderPart.groupedUniqueId === orderParts[i].groupedUniqueId && orderPart.id !== orderParts[i].id) {\r\n orderParts[i].isDeleted = true;\r\n orderParts[i].toBeDeleted = true;\r\n orderParts[i].hasBeenVerifiedBySupplier = true;\r\n }\r\n }\r\n // Set the updated state\r\n this.setState({ \r\n orderpartsList: orderParts \r\n }, () => {\r\n this.updateAmount();\r\n });\r\n }\r\n };\r\n\r\n handleAMCodeChange = (\r\n event: React.ChangeEvent, \r\n orderPart: OrderPart\r\n ) => {\r\n const orderParts = [...this.state.orderpartsList];\r\n const index = orderParts.findIndex((item) => item.id === orderPart.id);\r\n\r\n if (index !== -1) {\r\n const updatedOrderPart = { \r\n ...orderParts[index],\r\n toBeUpdated: true,\r\n alternativeGuideNumber: event.target.value,\r\n // Reset fields when guideNumber is changed\r\n alternativePartQualityId: null,\r\n originalPrice: 0,\r\n producer: null,\r\n deliveryTime: null,\r\n validityTime: null,\r\n codeType: null,\r\n excludeFromOrder: null,\r\n orderCode: null,\r\n type: null,\r\n locationId: null,\r\n availableStock: null,\r\n location: null,\r\n remarks: null,\r\n alternativePartCode: null,\r\n alternativePrice: 0,\r\n alternativePartStockQuantity: null,\r\n alternativePartStockLocation: null,\r\n alternativePartRemarks: null,\r\n productId: null,\r\n codEan: null,\r\n bundleItem: null,\r\n bundleNo: null,\r\n bundleQuantity: null,\r\n availableQuantity: null,\r\n supplierId: null,\r\n hasBeenVerifiedBySupplier: true,\r\n byOeCode: false\r\n };\r\n \r\n // Update the orderParts list\r\n orderParts[index] = updatedOrderPart;\r\n\r\n //Delete grouped parts\r\n const orderPart = orderParts[index];\r\n for (let i = 0; i < orderParts.length; i++) {\r\n if (orderPart.groupedUniqueId === orderParts[i].groupedUniqueId && orderPart.id !== orderParts[i].id) {\r\n orderParts[i].isDeleted = true;\r\n orderParts[i].toBeDeleted = true;\r\n orderParts[i].hasBeenVerifiedBySupplier = true;\r\n }\r\n }\r\n // Set the updated state\r\n this.setState({ \r\n orderpartsList: orderParts \r\n }, () => {\r\n this.updateAmount();\r\n });\r\n }\r\n };\r\n\r\n handlePieceNrChange = (\r\n event: React.ChangeEvent, \r\n orderPart: OrderPart\r\n ) => {\r\n const orderParts = [...this.state.orderpartsList];\r\n const index = orderParts.findIndex((item) => item.id === orderPart.id);\r\n\r\n if (index !== -1) {\r\n const updatedOrderPart = { \r\n ...orderParts[index],\r\n pieceNr: event.target.value === null ? 0 : parseFloat(event.target.value),\r\n };\r\n // Update the orderParts list\r\n orderParts[index] = updatedOrderPart;\r\n\r\n const caseCalculationAlternativePartCopy = [...orderParts[index].alternativeParts];\r\n const alternativePartChecked = caseCalculationAlternativePartCopy.find(\r\n (item) =>\r\n item.originalPartId === orderParts[index].id &&\r\n item.selectedAlternativePart !== 9999999999999\r\n );\r\n \r\n if (!R.isNil(alternativePartChecked)) {\r\n const currentPacking = alternativePartChecked.packing?.split('|')[0];\r\n const secondItemOfPacking = alternativePartChecked.packing?.split('|')[1];\r\n if (currentPacking && secondItemOfPacking) {\r\n const currentPackingNumber = parseFloat(currentPacking);\r\n if (\r\n parseFloat(event.target.value) % currentPackingNumber != 0 ||\r\n parseFloat(event.target.value) < alternativePartChecked.minQty\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'MIN_PACKING_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie '\r\n ) +\r\n currentPackingNumber +\r\n this.translatorService.Tranlate('MIN_PACKING_MULTIPLE_ERROR_MSG', ' sau multiplul acesteia!'),\r\n { variant: 'error',\r\n autoHideDuration: 5000 }\r\n );\r\n }\r\n } else if (parseFloat(event.target.value) < alternativePartChecked.minQty) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'MIN_PACKING_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie '\r\n ) +\r\n alternativePartChecked.minQty +\r\n this.translatorService.Tranlate('MIN_PACKING_MULTIPLE_ERROR_MSG', ' sau multiplul acesteia!'),\r\n { variant: 'error',\r\n autoHideDuration: 5000 }\r\n );\r\n }\r\n if (\r\n !R.isNil(alternativePartChecked!.availableQuantity) &&\r\n alternativePartChecked!.availableQuantity < parseFloat(event.target.value)\r\n ) {\r\n this.validateOrigPartUnitsAdd(orderParts[index].id);\r\n } else {\r\n this.validateOrigPartUnitsRemove(orderParts[index].id);\r\n }\r\n }\r\n\r\n // Set the updated state\r\n this.setState({ \r\n orderpartsList: orderParts \r\n }, () => {\r\n this.updateAmount();\r\n });\r\n }\r\n };\r\n\r\n validateOrigPartUnitsAdd = (originalPartid: number) => {\r\n const labelParent = document.getElementsByClassName('id-' + originalPartid)[0] as HTMLElement;\r\n const identifylabel = labelParent.firstChild as any;\r\n const labelValidate = identifylabel.classList.add('Mui-error');\r\n\r\n const inputParent = document\r\n .getElementsByClassName('id-' + originalPartid)[0]\r\n .closest('div') as HTMLElement;\r\n const inputElement = inputParent.querySelector('input') as HTMLInputElement;\r\n const inputValidate = inputElement.classList.add('text-danger');\r\n\r\n return labelValidate && inputValidate;\r\n };\r\n\r\n validateOrigPartUnitsRemove = (originalPartid: number) => {\r\n const labelParent = document.getElementsByClassName('id-' + originalPartid)[0] as HTMLElement;\r\n const identifylabel = labelParent.firstChild as any;\r\n const labelValidate = identifylabel.classList.remove('Mui-error');\r\n\r\n const inputParent = document\r\n .getElementsByClassName('id-' + originalPartid)[0]\r\n .closest('div') as HTMLElement;\r\n const inputElement = inputParent.querySelector('input') as HTMLInputElement;\r\n const inputValidate = inputElement.classList.remove('text-danger');\r\n\r\n return labelValidate && inputValidate;\r\n };\r\n\r\n viewDeletePart = () : boolean => {\r\n if (this.props.orderDetails?.orderStatus?.code === OrderStatusCode.REP_DRAFT || this.props.orderDetails?.orderStatus?.code === OrderStatusCode.REP_REINTEROGATED_PARTS) {\r\n return true;\r\n }\r\n\r\n if (this.props.orderDetails?.orderStatus?.code === OrderStatusCode.REP_VERIFICATA_DE_FURNIZOR && this.state.rowsExpanded.length == 0) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n \r\n getPartsByColumns = (): MUIDataTableColumnDef[] => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: {\r\n /*display: 'excluded',*/\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n }, \r\n {\r\n name: 'guideNumber',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_OE_CODE_LABEL', 'Cod OE'),\r\n options: {\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n const part = this.state.orderpartsList.find((item) => item.id === tableMeta.rowData[0]);\r\n if (part === null) {\r\n return;\r\n }\r\n\r\n if (this.props.orderDetails?.orderStatus?.code === OrderStatusCode.FZR_VERIFICARE_LA_FURNIZOR) {\r\n if (!R.isNil(this.state.quality) && this.state.quality.code === CarPartQualityTypeCode.OE && this.state.hasSupplierRole) {\r\n return (\r\n this.handleOECodeChange(e, part!)}\r\n disabled={part!.excludeFromOrder ?? false}\r\n />\r\n )\r\n }\r\n }\r\n\r\n return part!.guideNumber;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'alternativeGuideNumber',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_SUPPLIER_CODE_LABEL', 'Cod Furnizor'),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n const part = this.state.orderpartsList.find((item) => item.id === tableMeta.rowData[0]);\r\n if (part === null) {\r\n return;\r\n }\r\n\r\n if (this.props.orderDetails?.orderStatus?.code === OrderStatusCode.FZR_VERIFICARE_LA_FURNIZOR) {\r\n if (!R.isNil(this.state.quality) && this.state.quality.code === CarPartQualityTypeCode.AM && this.state.hasSupplierRole) {\r\n return (\r\n this.handleAMCodeChange(e, part!)}\r\n disabled={part!.excludeFromOrder ?? false}\r\n />\r\n )\r\n }\r\n }\r\n \r\n return part!.alternativeGuideNumber;\r\n }\r\n }\r\n },\r\n {\r\n name: 'name',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_NAME_LABEL', 'Denumire'),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n const part = this.state.orderpartsList.find((item) => item.id === tableMeta.rowData[0]);\r\n\r\n if (this.state.hasSupplierRole && part?.alternativePartDescription) {\r\n return part!.alternativePartDescription;\r\n }\r\n\r\n if (!isNullOrUndefined(part!.alternativePartQualityId)) {\r\n return part!.alternativePartName;\r\n }\r\n\r\n return part!.name;\r\n }\r\n }\r\n },\r\n {\r\n name: 'carPartCategory.displayName',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_QUALITY_LABEL', 'Calitate'),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n const part = this.state.orderpartsList.find((item) => item.id === tableMeta.rowData[0]);\r\n if (part!.alternativePartQualityId === null) {\r\n return part!.carPartCategory!.displayName;\r\n } else {\r\n if (isNullOrUndefined(part!.alternativePartQuality)) {\r\n return '';\r\n }\r\n return part!.alternativePartQuality.displayName;\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'originalPrice',\r\n label: this.translatorService.Tranlate(\r\n 'ORDER_PART_DETAILS_ORIGINAL_PRICE_LABEL',\r\n 'Pret unitar'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n const part = this.state.orderpartsList.find((item) => item.id === tableMeta.rowData[0]);\r\n const order = this.props.orderDetails;\r\n\r\n if (\r\n !isNullOrUndefined(part?.prevVal) &&\r\n pretUnitarFormat(\r\n part!.prevVal,\r\n part!.prevVal!.originalPrice,\r\n this.props.orderDetails.currencyCode,\r\n this.props.appState.appUser?.organization?.country ?? null\r\n ) !== pretUnitarFormat(part, value, this.props.orderDetails.currencyCode, this.props.appState.appUser?.organization?.country ?? null)\r\n ) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n return this.state.showOrderPrice\r\n ? pretUnitarFormat(part, value, this.props.orderDetails.currencyCode, this.props.appState.appUser?.organization?.country ?? null)\r\n : '';\r\n }\r\n }\r\n },\r\n {\r\n name: 'pieceNr',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_PIECE_NR_LABEL', 'Unitati'),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n const part = this.state.orderpartsList.find((item) => item.id === tableMeta.rowData[0]);\r\n if (!isNullOrUndefined(part?.prevVal) && part?.prevVal.pieceNr !== value) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n if (this.props.orderDetails?.orderStatus?.code === OrderStatusCode.REP_VERIFICATA_DE_FURNIZOR && !this.state.hasSupplierRole && part!.hasBeenVerifiedBySupplier) {\r\n return (\r\n this.handlePieceNrChange(e, part!)}\r\n disabled={part!.excludeFromOrder ?? false}\r\n />\r\n )\r\n }\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'discount',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_DISCOUNT_LABEL', 'Discount (%)'),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n const part = this.state.orderpartsList.find((item) => item.id === tableMeta.rowData[0]);\r\n\r\n if (part!.alternativePartQualityId === null) {\r\n return part!.discount;\r\n } else {\r\n return part!.alternativePartDiscount;\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: '',\r\n label: this.translatorService.Tranlate(\r\n 'ORDER_PART_DETAILS_TOTAL_PRICE_LABEL',\r\n 'Pret total'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n const part = this.state.orderpartsList.find((item) => item.id === tableMeta.rowData[0]);\r\n const order = this.props.orderDetails;\r\n if (part!.alternativePartQualityId === null) {\r\n if (isNullOrUndefined(tableMeta.rowData[7])) {\r\n return this.state.showOrderPrice\r\n ? Utils.countryNumberFormat(\r\n (Math.round(tableMeta.rowData[6] * tableMeta.rowData[5] * 100) / 100).toFixed(\r\n 2\r\n ), \r\n this.props.appState.appUser?.organization?.country ?? null) +\r\n ' ' +\r\n (!isNullOrUndefined(this.props.orderDetails.currencyCode) &&\r\n this.props.orderDetails.currencyCode !== ''\r\n ? this.props.orderDetails.currencyCode\r\n : '')\r\n : '';\r\n }\r\n return this.state.showOrderPrice\r\n ? Utils.countryNumberFormat((\r\n Math.round(\r\n (tableMeta.rowData[6] * tableMeta.rowData[5] -\r\n (tableMeta.rowData[6] * tableMeta.rowData[5] * tableMeta.rowData[7]) /\r\n 100) *\r\n 100\r\n ) / 100\r\n ).toFixed(2), this.props.appState.appUser?.organization?.country ?? null) +\r\n ' ' +\r\n (!isNullOrUndefined(this.props.orderDetails.currencyCode) &&\r\n this.props.orderDetails.currencyCode !== ''\r\n ? this.props.orderDetails.currencyCode\r\n : '')\r\n : '';\r\n } else {\r\n if (isNullOrUndefined(part!.alternativePrice)) {\r\n return 0;\r\n }\r\n if (isNullOrUndefined(part!.alternativePartDiscount)) {\r\n return this.state.showOrderPrice\r\n ? Utils.countryNumberFormat((Math.round(tableMeta.rowData[6] * part!.alternativePrice * 100) / 100).toFixed(\r\n 2\r\n ), this.props.appState.appUser?.organization?.country ?? null) +\r\n ' ' +\r\n (!isNullOrUndefined(this.props.orderDetails.currencyCode) &&\r\n this.props.orderDetails.currencyCode !== ''\r\n ? this.props.orderDetails.currencyCode\r\n : '')\r\n : '';\r\n }\r\n return this.state.showOrderPrice\r\n ? Utils.countryNumberFormat((\r\n Math.round(\r\n (tableMeta.rowData[6] * part!.alternativePrice -\r\n (tableMeta.rowData[6] *\r\n part!.alternativePrice *\r\n part!.alternativePartDiscount) /\r\n 100) *\r\n 100\r\n ) / 100\r\n ).toFixed(2), this.props.appState.appUser?.organization?.country ?? null) +\r\n ' ' +\r\n (!isNullOrUndefined(this.props.orderDetails.currencyCode) &&\r\n this.props.orderDetails.currencyCode !== ''\r\n ? this.props.orderDetails.currencyCode\r\n : '')\r\n : '';\r\n }\r\n }\r\n }\r\n },\r\n {\r\n name: 'producer',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_PRODUCER_LABEL', 'Producator'),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return this.displayOtherOrderDetails(value, tableMeta.rowData);\r\n }\r\n }\r\n },\r\n {\r\n name: 'remarks',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_DELIVERY_TIME_LABEL', 'Livrare'),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return this.displayDeliveryOrderDetails(value, tableMeta.rowData);\r\n }\r\n }\r\n },\r\n {\r\n name: '',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_STATUS_LABEL', 'Status'),\r\n options: {\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n const partId = tableMeta.rowData[0];\r\n const part = this.state.orderpartsList.find((item) => item.id === partId);\r\n\r\n if (part == null) {\r\n return;\r\n }\r\n return part!.status!.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const part = this.state.orderpartsList.find((item) => item.id === id);\r\n if (part!.isDeleted) {\r\n return (\r\n \r\n {this.translatorService.Tranlate('ORDER_PART_DETAILS_DELETED_LABEL', 'Sters')}\r\n \r\n );\r\n }\r\n\r\n if (this.props.orderDetails.clientId !== this.props.appState.appUser!.organizationId) {\r\n return '';\r\n }\r\n\r\n return this.viewDeletePart() && (\r\n this.deleteOrderPart(e, tableMeta)}\r\n aria-label=\"delete\"\r\n color=\"inherit\"\r\n hidden={!this.props.hasRights}\r\n className=\"text-danger\"\r\n size=\"small\"\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState({ isChangeOrderStatusDialogOpen: false });\r\n };\r\n\r\n changeOrderStatusClick = async () => {\r\n if (this.props.orderDetails?.orderStatus?.code === OrderStatusCode.REP_VERIFICATA_DE_FURNIZOR) {\r\n const hasError = this.validateOrder();\r\n if (hasError) {\r\n return;\r\n }\r\n }\r\n\r\n this.setState({ isChangeOrderStatusDialogOpen: true });\r\n };\r\n\r\n getNextOrderStatus = (): IReferential | undefined => {\r\n if (this.props.orderDetails?.orderStatus?.code === OrderStatusCode.REP_DRAFT) {\r\n return this.state.statuses.find((item) => item.code === OrderStatusCode.REP_PLASATA);\r\n }\r\n\r\n if (this.props.orderDetails?.orderStatus?.code === OrderStatusCode.FZR_VERIFICARE_LA_FURNIZOR) {\r\n return this.state.statuses.find((item) => item.code === OrderStatusCode.REP_VERIFICATA_DE_FURNIZOR);\r\n }\r\n\r\n if (this.props.orderDetails?.orderStatus?.code === OrderStatusCode.REP_VERIFICATA_DE_FURNIZOR) {\r\n return this.state.rowsExpanded.length > 0 ? this.state.statuses.find((item) => item.code === OrderStatusCode.REP_REINTEROGATED_PARTS) : this.state.statuses.find((item) => item.code === OrderStatusCode.REP_PLASATA);\r\n }\r\n\r\n if (this.props.orderDetails?.orderStatus?.code === OrderStatusCode.REP_REINTEROGATED_PARTS) {\r\n return this.state.statuses.find((item) => item.code === OrderStatusCode.REP_PLASATA);\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n canChangeNextOrderStatus = () => {\r\n return (\r\n !this.props.hasRights ||\r\n !this.props.orderDetails?.orderStatus?.code?.includes(this.state.userStartCode) ||\r\n !(this.getNextOrderStatus() != undefined)\r\n );\r\n };\r\n\r\n getOrderButton = (order: Order) => {\r\n if (order.orderStatus?.code == OrderStatusCode.REP_VERIFICATA_DE_FURNIZOR.toString() && this.state.hasSupplierRole){\r\n return order.orderStatus?.displayName;\r\n }\r\n\r\n if (order.orderStatus?.code == 'REP_DRAFT') {\r\n return this.props.automatePlaceOrder ? this.translatorService.Tranlate('CASE_CAR_CALCULATIONS_CONFIRM_BUTTON', 'Confirma') \r\n : this.translatorService.Tranlate('ORDER_PART_PLACE_ORDER_LABEL', 'Lanseaza Comanda');\r\n } else {\r\n if (order.orderStatus?.code == OrderStatusCode.FZR_VERIFICARE_LA_FURNIZOR.toString()) {\r\n return this.translatorService.Tranlate('ORDER_DETAILS_SAVE_BUTTON', 'Salveaza');\r\n }\r\n\r\n if (order.orderStatus?.code == OrderStatusCode.REP_VERIFICATA_DE_FURNIZOR.toString()) {\r\n return this.state.rowsExpanded.length > 0 ? this.translatorService.Tranlate('ORDER_DETAILS_SAVE_BUTTON', 'Salveaza') : this.translatorService.Tranlate('ORDER_PART_PLACE_ORDER_LABEL', 'Lanseaza Comanda');\r\n }\r\n\r\n if (order.orderStatus?.code == OrderStatusCode.REP_REINTEROGATED_PARTS.toString()) {\r\n return this.translatorService.Tranlate('ORDER_PART_PLACE_ORDER_LABEL', 'Lanseaza Comanda');\r\n }\r\n\r\n return order.orderStatus?.displayName;\r\n }\r\n };\r\n\r\n renderOrderDetailsSection = () => {\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoadingOrderDetails ? (\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_VEHICAL_PLATE_NUMBER',\r\n 'Numar inmatriculare'\r\n )}\r\n {''}:\r\n {' '}\r\n {!R.isNil(this.props.caseSettingsState.case) ? this.props.caseSettingsState.case.caseVehicle.plateNumber : this.props.orderDetails.caseVehicle.plateNumber}\r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate('CALCULATION_DETAILS_VIN', 'VIN')}\r\n {''}:\r\n {' '}\r\n {!R.isNil(this.props.caseSettingsState.case) ? this.props.caseSettingsState.case.caseVehicle.vin : this.props.orderDetails.caseVehicle.vin}\r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_VEHICAL_NUMBER_OF_KM',\r\n 'Numar kilometri'\r\n )}\r\n {''}:\r\n {' '}\r\n {!R.isNil(this.props.caseSettingsState.case) ? this.props.caseSettingsState.case.caseVehicle.numberOfKilometers : this.props.orderDetails.caseVehicle.numberOfKilometers}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n this.props.automatePlaceOrder || this.props.workflowAutomatePlaceOrder ? this.changeOrderStatusSubmit() \r\n : this.changeOrderStatusClick()}\r\n color=\"inherit\"\r\n className=\"text-white bg-success mr-2\"\r\n disabled={this.canChangeNextOrderStatus()}\r\n >\r\n {this.getOrderButton(this.props.orderDetails)}\r\n {/*{this.state.selectedDisplayedStatus}*/}\r\n \r\n
\r\n {this.props.orderDetails.id} \r\n \r\n {!isNullOrUndefined(this.props.orderDetails.client)\r\n ? this.props.orderDetails.client.name\r\n : ''}\r\n \r\n \r\n {!isNullOrUndefined(this.props.orderDetails.supplier)\r\n ? ' - ' + (this.props.orderDetails.supplier.name.toUpperCase() == OwnStockCodeEnum.OWN_STOCK.toString() ? this.translatorService.Tranlate('CALCULATION_DETAILS_OWN_STOCK_HEADER', 'Stoc Propriu') : this.props.orderDetails.supplier.name)\r\n : ''}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {!isNullOrUndefined(this.state.partsLocationOrganization)\r\n ? this.translatorService.Tranlate(\r\n 'ORDER_PART_DETAILS_SUPPLIER_LABEL11',\r\n 'Adresa livrare:'\r\n ) +\r\n ' ' +\r\n this.state.partsLocationOrganization.name +\r\n '; ' +\r\n (!isNullOrUndefined(this.state.partsLocationOrganization.address)\r\n ? 'strada: ' + this.state.partsLocationOrganization.address\r\n : '')\r\n : ''}\r\n \r\n
\r\n
\r\n \r\n {!isNullOrUndefined(this.state.costCenter)\r\n ? this.translatorService.Tranlate(\r\n 'CASE_EVENT_COST_CENTER',\r\n 'Centru de cost'\r\n ) + ':' + \r\n ' ' +\r\n this.state.costCenter.name \r\n : ''}\r\n \r\n
\r\n
\r\n \r\n {!isNullOrUndefined(this.state.interventionType)\r\n ? this.translatorService.Tranlate('CASE_EVENT_INTERVENTION_TYPE_LABEL','Tip Interventie') + ':' + \r\n ' ' +\r\n this.state.interventionType.displayName \r\n : ''}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {!isNullOrUndefined(this.props.orderDetails.createdByUser)\r\n ? this.props.orderDetails.createdByUser.userName\r\n : ''}{' '}\r\n \r\n \r\n {moment\r\n .utc(this.props.orderDetails.date)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n ) : null}\r\n
\r\n );\r\n };\r\n\r\n interogateAlternativeParts = async (orderPart: OrderPart, index: number) => {\r\n try {\r\n this.interogate(orderPart, index);\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n interogate = async (orderPart: OrderPart, index: number) => {\r\n this.setState(\r\n {\r\n partLoaders: this.state.partLoaders.map((item, itemIndex) =>\r\n itemIndex === index ? true : item\r\n )\r\n },\r\n async () => {\r\n const alternativeParts = await this.caseService.InterogateCaseCalculationsAlternativePartsBySupplier(\r\n orderPart.id,\r\n !R.isNil(this.state.quality) && this.state.quality.code === CarPartQualityTypeCode.OE ? orderPart.guideNumber : orderPart.alternativeGuideNumber ?? \"\", \r\n this.props.additionTariff.value,\r\n this.props.discountTariff.value,\r\n this.props.caseSettingsState?.caseSettings?.workflow.id ?? this.props.orderDetails.case?.caseWorkflow?.workflowId,\r\n this.props.orderDetails.supplierId,\r\n this.props.orderDetails.partsLocationOrganizationId\r\n );\r\n\r\n [...alternativeParts].forEach((item, index) => {\r\n item.id = this.uuidToNumber();\r\n });\r\n\r\n const orderParts = [...this.state.orderpartsList];\r\n orderParts[index].alternativeParts = alternativeParts;\r\n\r\n this.setState({\r\n partLoaders: this.state.partLoaders.map((item, itemIndex) =>\r\n itemIndex === index ? false : item\r\n ),\r\n orderpartsList: orderParts\r\n });\r\n }\r\n );\r\n };\r\n\r\n uuidToNumber = (): number => {\r\n const uniqueId = uuid();\r\n const hexString = uniqueId.replace(/-/g, '');\r\n const numericValue = parseInt(hexString, 16);\r\n //number with 9 characters\r\n return numericValue % 1000000000;\r\n }\r\n\r\n handleAlternativePartChecked = (selected: number, id: number, partFromGroup: number) => {\r\n return selected === id || partFromGroup == id;\r\n };\r\n\r\n handleAlternativePartSelect = (\r\n id: number,\r\n orderPartIndex: number,\r\n originalPartid: number,\r\n alternativePart: CaseCalculationAlternativePart\r\n ) => {\r\n const orderParts = [...this.state.orderpartsList];\r\n\r\n orderParts[orderPartIndex] = {\r\n ...orderParts[orderPartIndex],\r\n alternativePrice: alternativePart.alternativePrice,\r\n alternativePartDiscount: alternativePart.alternativePartDiscount,\r\n alternativeGuideNumber: alternativePart.alternativeGuideNumber,\r\n alternativePartCode: alternativePart.alternativePartCode,\r\n alternativePartQuality: alternativePart.alternativePartQuality,\r\n alternativePartQualityId: alternativePart.alternativePartQualityId,\r\n alternativePartName: alternativePart.name,\r\n alternativePartStockLocation: alternativePart.stockLocation,\r\n alternativePartStockQuantity: alternativePart.availableQuantity,\r\n supplier: alternativePart.supplier,\r\n supplierId: alternativePart.supplierId,\r\n producer: alternativePart.producer,\r\n deliveryTime: alternativePart.deliveryTime,\r\n validityTime: alternativePart.validityTime?.toString() || null,\r\n codeType: alternativePart.codeType?.toString() || null,\r\n type: alternativePart.type?.toString() || null,\r\n orderCode: alternativePart.orderCode?.toString() || null,\r\n locationId: alternativePart.locationId || null,\r\n alternativePartRemarks: alternativePart.remarks,\r\n minQty: alternativePart.minQty,\r\n packing: alternativePart.packing,\r\n bundleItem: alternativePart.bundleItem,\r\n bundleNo: alternativePart.bundleNo,\r\n bundleQuantity: alternativePart.bundleQuantity,\r\n excludeFromOrder: alternativePart.excludeFromOrder,\r\n isChild: alternativePart.isChild,\r\n productId: alternativePart.productId || null,\r\n codEan: alternativePart.codEan?.toString() || null,\r\n alternativePriceWithoutDiscount: alternativePart.alternativePriceWithoutDiscount,\r\n availableQuantity: alternativePart.availableQuantity,\r\n toBeUpdated: true\r\n };\r\n console.log('Selected Part', orderParts[orderPartIndex]);\r\n\r\n const currentPacking = orderParts[orderPartIndex].packing?.split('|')[0];\r\n const secondItemOfPacking = orderParts[orderPartIndex].packing?.split('|')[1];\r\n \r\n const specificAlternativeParts = [...orderParts[orderPartIndex].alternativeParts];\r\n const findAlternativePartGroup = _.filter(specificAlternativeParts, function (object) {\r\n return (\r\n object.bundleNo != null &&\r\n object.bundleNo == orderParts[orderPartIndex].bundleNo &&\r\n object.alternativePartCode !=\r\n orderParts[orderPartIndex].alternativePartCode\r\n );\r\n });\r\n \r\n const idList: any = [];\r\n for (let i = 0; i < findAlternativePartGroup.length; i++) {\r\n idList.push(findAlternativePartGroup[i].id);\r\n }\r\n \r\n specificAlternativeParts.forEach((item) => {\r\n item.selectedAlternativePart =\r\n item.originalPartId === originalPartid\r\n ? item.id === id\r\n ? id\r\n : 9999999999999\r\n : item.selectedAlternativePart;\r\n item.partFromGroup =\r\n item.originalPartId === originalPartid\r\n ? idList.includes(item.id)\r\n ? item.id\r\n : 9999999999999\r\n : item.partFromGroup;\r\n if (\r\n item.originalPartId === originalPartid &&\r\n item.selectedAlternativePart !== 9999999999999\r\n ) {\r\n const initialCaseCalculationOriginalParts = {\r\n ...orderParts[orderPartIndex]\r\n };\r\n orderParts[orderPartIndex].package = [];\r\n if (currentPacking && secondItemOfPacking) {\r\n const currentPackingNumber = parseFloat(currentPacking);\r\n if (\r\n orderParts[orderPartIndex].pieceNr % currentPackingNumber !=\r\n 0 ||\r\n orderParts[orderPartIndex].pieceNr <\r\n orderParts[orderPartIndex].minQty\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'MIN_PACKING_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie '\r\n ) +\r\n currentPackingNumber +\r\n this.translatorService.Tranlate('MIN_PACKING_MULTIPLE_ERROR_MSG', ' sau multiplul acesteia!'),\r\n { variant: 'error',\r\n autoHideDuration: 5000 }\r\n );\r\n }\r\n } else if (\r\n orderParts[orderPartIndex].pieceNr <\r\n orderParts[orderPartIndex].minQty\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'MIN_PACKING_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie '\r\n ) +\r\n orderParts[orderPartIndex].minQty +\r\n this.translatorService.Tranlate('MIN_PACKING_MULTIPLE_ERROR_MSG', ' sau multiplul acesteia!'),\r\n { variant: 'error',\r\n autoHideDuration: 5000 }\r\n );\r\n }\r\n if (findAlternativePartGroup.length) {\r\n let displayPopup = true;\r\n let alternativePartString = '';\r\n for (let i = 0; i < findAlternativePartGroup.length; i++) {\r\n if (\r\n findAlternativePartGroup[i].alternativePartCode == AlternativeCode.TAXAMEDIU &&\r\n findAlternativePartGroup.length == 1\r\n ) {\r\n displayPopup = false;\r\n }\r\n alternativePartString +=\r\n findAlternativePartGroup[i].name +\r\n '(' +\r\n findAlternativePartGroup[i].alternativePrice +\r\n ' RON)' +\r\n '\\n';\r\n orderParts[orderPartIndex].package.push({\r\n ...initialCaseCalculationOriginalParts,\r\n id: 0,\r\n originalPrice: 0,\r\n alternativePrice: findAlternativePartGroup[i].alternativePrice,\r\n alternativePartDiscount: findAlternativePartGroup[i].alternativePartDiscount,\r\n alternativeGuideNumber: findAlternativePartGroup[i].alternativeGuideNumber,\r\n alternativePartCode: findAlternativePartGroup[i].alternativePartCode,\r\n alternativePartQuality: findAlternativePartGroup[i].alternativePartQuality,\r\n alternativePartQualityId: findAlternativePartGroup[i].alternativePartQualityId,\r\n alternativePartName: findAlternativePartGroup[i].name,\r\n alternativePartStockLocation: findAlternativePartGroup[i].stockLocation,\r\n alternativePartStockQuantity: findAlternativePartGroup[i].availableQuantity,\r\n supplier: findAlternativePartGroup[i].supplier,\r\n supplierId: findAlternativePartGroup[i].supplierId,\r\n producer: findAlternativePartGroup[i].producer,\r\n deliveryTime: findAlternativePartGroup[i].deliveryTime.toString(),\r\n validityTime: findAlternativePartGroup[i].validityTime?.toString() || null,\r\n codeType: findAlternativePartGroup[i].codeType?.toString() || null,\r\n type: findAlternativePartGroup[i].type?.toString() || null,\r\n orderCode: findAlternativePartGroup[i].orderCode?.toString() || null,\r\n locationId: findAlternativePartGroup[i].locationId || null,\r\n alternativePartRemarks: findAlternativePartGroup[i].remarks,\r\n minQty: findAlternativePartGroup[i].minQty,\r\n packing: findAlternativePartGroup[i].packing,\r\n bundleItem: findAlternativePartGroup[i].bundleItem,\r\n bundleNo: findAlternativePartGroup[i].bundleNo,\r\n bundleQuantity: findAlternativePartGroup[i].bundleQuantity,\r\n excludeFromOrder: true,\r\n productId: findAlternativePartGroup[i].productId || null,\r\n codEan: findAlternativePartGroup[i].codEan || null,\r\n alternativePriceWithoutDiscount: findAlternativePartGroup[i].alternativePriceWithoutDiscount,\r\n availableQuantity: findAlternativePartGroup[i].availableQuantity,\r\n hasBeenVerifiedBySupplier: true\r\n });\r\n }\r\n if (displayPopup) {\r\n this.props.enqueueSnackbar(\r\n ' Componente adaugate la comanda: \\n' + alternativePartString,\r\n {\r\n variant: 'error',\r\n style: { whiteSpace: 'pre-line' },\r\n autoHideDuration: 5000 \r\n }\r\n );\r\n }\r\n }\r\n\r\n if (!Number.isInteger(orderParts[orderPartIndex].pieceNr)) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'DECIMAL_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie un numar intreg fara zecimale'\r\n ),\r\n {\r\n variant: 'error',\r\n autoHideDuration: 5000 \r\n }\r\n );\r\n }\r\n\r\n if (\r\n item.availableQuantity !== null &&\r\n item.availableQuantity < orderParts[orderPartIndex].pieceNr\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ORDER_MAX_QUANTITY_ALERT_MSG',\r\n 'Cantitatea disponibila este insuficienta!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n }\r\n }\r\n });\r\n\r\n this.setState({\r\n orderpartsList: orderParts\r\n }, () => {\r\n this.updateAmount();\r\n });\r\n };\r\n\r\n getPackageFromOrderParts = (orderParts: OrderPart[]) => {\r\n const newOrderParts = [];\r\n for (let i = 0; i < orderParts.length; i++) {\r\n if (orderParts[i].package && orderParts[i].package.length) {\r\n for (let j = 0; j < orderParts[i].package.length; j++) {\r\n newOrderParts.push(orderParts[i].package[j]);\r\n }\r\n }\r\n }\r\n return newOrderParts;\r\n };\r\n\r\n\r\n clearSelectedAlternativeParts = async (originalPartId: number, index: number) => {\r\n const orderPartsCopy = [...this.state.orderpartsList];\r\n let alternativePartsCopy = [...this.state.orderpartsList[index].alternativeParts];\r\n alternativePartsCopy = alternativePartsCopy.map((item) => {\r\n item.selectedAlternativePart =\r\n item.originalPartId === originalPartId ? 9999999999999 : item.selectedAlternativePart;\r\n item.partFromGroup =\r\n item.originalPartId === originalPartId ? 9999999999999 : item.partFromGroup;\r\n return item;\r\n });\r\n\r\n orderPartsCopy[index] = {\r\n ...orderPartsCopy[index],\r\n alternativeParts: alternativePartsCopy\r\n }\r\n\r\n this.setState({\r\n orderpartsList: orderPartsCopy\r\n });\r\n };\r\n\r\n renderExpandedRow = (rowData: any, rowMeta: any) => {\r\n const index = rowMeta.dataIndex;\r\n const orderPart = this.state.orderpartsList[index];\r\n const alternativeParts = orderPart.alternativeParts ?? [];\r\n // Calculate the number of columns in the table\r\n const columnsCount = this.getPartsByColumns().length + 2;\r\n \r\n return (\r\n \r\n \r\n \r\n {\r\n await this.interogateAlternativeParts(\r\n orderPart,\r\n index\r\n );\r\n }}\r\n className=\"float-right mb-3\"\r\n variant=\"contained\"\r\n color=\"primary\"\r\n style={{\r\n backgroundColor: '#5383ff',\r\n padding: '6px 16px',\r\n fontSize: '14px',\r\n minWidth: '64px',\r\n boxSizing: 'border-box',\r\n transition: 'background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',\r\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\r\n fontWeight: 'normal',\r\n lineHeight: '1.75',\r\n borderRadius: '0.5rem',\r\n letterSpacing: '0.02857em',\r\n textTransform: 'none'\r\n }} \r\n >\r\n {this.translatorService.Tranlate('INTEROGATE', 'Interogheaza')}\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n {this.state.partLoaders[index] ? null : (\r\n
\r\n \r\n \r\n \r\n {/* Table headers */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* Display data rows */}\r\n {alternativeParts.length > 0 ? (\r\n alternativeParts.map((alternativePart : CaseCalculationAlternativePart, alternativePartindex) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })\r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n 0 &&\r\n alternativeParts.some(\r\n (el) => el.selectedAlternativePart !== 9999999999999\r\n )\r\n ? this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_CLEAR_LABEL',\r\n 'Goleste'\r\n )\r\n : ''\r\n }\r\n >\r\n
\r\n 0 &&\r\n alternativeParts.some(\r\n (el) => el.selectedAlternativePart !== 9999999999999\r\n )\r\n ? false\r\n : true\r\n }\r\n onClick={(e) =>\r\n this.clearSelectedAlternativeParts(orderPart!.id, index)\r\n }\r\n className=\"ml-1 min min-w-auto\"\r\n size=\"small\"\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
{this.translatorService.Tranlate('CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_CODE_LABEL', 'Cod')}{this.translatorService.Tranlate('ORDER_PART_DETAILS_NAME_LABEL', 'Denumire')}{this.translatorService.Tranlate('CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_PRICE_LABEL', 'Pret')}{this.translatorService.Tranlate('CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_QUALITY_LABEL', 'Calitate')}{this.translatorService.Tranlate('CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_DELIVERY_LABEL', 'Livrare')}{this.translatorService.Tranlate('CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_OWNER_LABEL_ACRONYM', 'Producator')}{this.translatorService.Tranlate('CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_SUPLIER_LABEL', 'Furnizor')}{this.translatorService.Tranlate('CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_QUANTITY_INFO_LABEL', 'Cant.')}{this.translatorService.Tranlate('CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_STOCK_LOCATION_LABEL', 'Locatie')}
\r\n \r\n this.handleAlternativePartSelect(\r\n alternativePart.id,\r\n index,\r\n orderPart.id,\r\n alternativePart\r\n )\r\n }\r\n disabled={\r\n alternativePart.isChild\r\n }\r\n value={alternativePart.id}\r\n id={alternativePart.id.toString()}\r\n name={orderPart.id.toString()}\r\n color=\"primary\" \r\n />\r\n {alternativePart.alternativeGuideNumber}\r\n {!R.isNil(alternativePart.remarks) && alternativePart.remarks !== '' ? (\r\n \r\n
\r\n {this.translatorService.Tranlate('CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_REMARKS_LABEL', 'Observatii')}\r\n
\r\n
{alternativePart.remarks}
\r\n \r\n }>\r\n
{alternativePart.name}
\r\n
\r\n ) : (\r\n
{alternativePart.name}
}\r\n >\r\n
{alternativePart.name}
\r\n \r\n )}\r\n
\r\n {R.isNil(alternativePart!.alternativePartDiscount)\r\n ? Utils.countryNumberFormat(\r\n (Math.round(alternativePart.alternativePrice * 100) / 100).toFixed(2),\r\n this.props.appState.appUser?.organization?.country ?? null\r\n )\r\n : Utils.countryNumberFormat(\r\n (\r\n Math.round(\r\n alternativePart.alternativePrice * (1 - alternativePart!.alternativePartDiscount / 100) * 100\r\n ) / 100\r\n ).toFixed(2),\r\n this.props.appState.appUser?.organization?.country ?? null\r\n )}\r\n {R.isNil(alternativePart.alternativePartQuality) ? '' : alternativePart.alternativePartQuality.code}\r\n \r\n {alternativePart.deliveryTime.toString().includes(\"in cazul in care piesa se afla in stocul extern\") ? (\r\n <>\r\n {alternativePart.deliveryTime.toString().split(\"in cazul in care piesa se afla in stocul extern\")[0]}\r\n in cazul in care piesa se afla in stocul extern\r\n \r\n ) : (\r\n alternativePart.deliveryTime\r\n )}\r\n \r\n }\r\n >\r\n
{alternativePart.deliveryTime.toString().includes(\"in cazul in care piesa se afla in stocul extern\") ? (\r\n <>\r\n {alternativePart.deliveryTime.toString().split(\"in cazul in care piesa se afla in stocul extern\")[0]}\r\n in cazul in care piesa se afla in stocul extern\r\n \r\n ) : (\r\n alternativePart.deliveryTime\r\n )}
\r\n \r\n
{alternativePart.producer}{!R.isNil(alternativePart.supplier) ? alternativePart.supplier!.name : ''}\r\n {alternativePart.quantityAdditionalInfo && alternativePart.availableQuantity ? (\r\n {alternativePart.quantityAdditionalInfo}}>\r\n
\r\n {alternativePart.availableQuantity}\r\n \r\n
\r\n
\r\n ) : (\r\n (alternativePart.supplierName?.toUpperCase() === SupplierCode.LKQ.toString().toUpperCase()\r\n ? (\r\n {isNaN(alternativePart.availableQuantity) ? null : alternativePart.availableQuantity > 5 ? '5+' : alternativePart.availableQuantity}\r\n )\r\n : {alternativePart.availableQuantity})\r\n )}\r\n
\r\n {alternativePart.stockLocation ? (\r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'ORDER_PART_DETAILS_LOCATION_LABEL',\r\n 'Locatie'\r\n ) +\r\n ': ' +\r\n alternativePart.stockLocation}\r\n
\r\n \r\n }\r\n >\r\n
\r\n \r\n {\r\n alternativePart.stockLocation.split(\r\n '\\n'\r\n )[0]\r\n }\r\n \r\n \r\n
\r\n \r\n ) : (\r\n alternativePart.stockLocation\r\n )}\r\n\r\n {!R.isNil(alternativePart.additionalInfo) && alternativePart.additionalInfo !== '' &&\r\n AdditionalInfoCode.PRODUS_NU_POATE_FI_RETURNAT ==\r\n alternativePart.additionalInfo ? (\r\n \r\n {alternativePart.additionalInfo}\r\n

\r\n ) : (\r\n ''\r\n )}\r\n
\r\n \r\n {this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista inregistrari de afisat'\r\n )}\r\n \r\n
\r\n
\r\n )}\r\n
\r\n
\r\n \r\n \r\n );\r\n };\r\n \r\n updateAmount = () => {\r\n const partList = new OrderParts(\r\n this.state.orderpartsList.concat(this.getPackageFromOrderParts(this.state.orderpartsList)),\r\n parseFloat(this.state.TVA)\r\n );\r\n \r\n const order = { ...this.props.orderDetails };\r\n order.amountWithoutTVA = partList.totalWithoutVAT();\r\n order.amountTVA = partList.totalVAT();\r\n order.amount = partList.total();\r\n\r\n this.props.onOrderChange(order);\r\n };\r\n\r\n getMuiTheme = () => createMuiTheme({\r\n overrides: {\r\n MuiTableCell: {\r\n paddingCheckbox: {\r\n padding: '0px'\r\n },\r\n },\r\n MUIDataTableSelectCell: {\r\n expandDisabled: {\r\n visibility: 'hidden',\r\n },\r\n }\r\n } as any\r\n });\r\n\r\n \r\n interogateAll = async () => {\r\n try {\r\n const parts = [...this.state.orderpartsList];\r\n for (const cp of parts) {\r\n const index = parts.indexOf(cp);\r\n if (cp.hasBeenVerifiedBySupplier) {\r\n await this.interogate(cp, index);\r\n }\r\n }\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n renderInterogateAllSection = () => {\r\n return (\r\n this.state.rowsExpanded.length > 0 ? (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoadingOrderDetails ? (\r\n \r\n \r\n \r\n
\r\n {\r\n this.interogateAll();\r\n }}\r\n >\r\n {this.translatorService.Tranlate('INTEROGATE', 'Interogheaza')}\r\n \r\n
\r\n
\r\n
\r\n
\r\n ) : null}\r\n
\r\n ) : null\r\n );\r\n } \r\n\r\n renderOrderPartsSection = () => {\r\n const options = {\r\n filter: false,\r\n sort: false,\r\n search: false,\r\n pagination: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n elevation: 0,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n // Folosește rowClassName pentru a aplica o clasă pe rânduri\r\n rowClassName: (rowData: any, rowIndex: number) => {\r\n const row = this.state.orderpartsList[rowIndex];\r\n // Aplică o clasă diferită pentru fiecare rând, în funcție de `hasBeenVerifiedBySupplier`\r\n return row && row.hasBeenVerifiedBySupplier ? 'verified-row' : 'unverified-row';\r\n },\r\n expandableRowsHeader: false,\r\n expandableRows: this.state.rowsExpanded.length > 0 ? true : false,\r\n // Prevent expand icon from rendering for rows that are not verified\r\n isRowExpandable: (dataIndex: number, expandedRow: any) => {\r\n const row = this.state.orderpartsList[dataIndex];\r\n return row && row.hasBeenVerifiedBySupplier; // Only allow expansion if verified\r\n },\r\n renderExpandableRow: (rowData: any, rowMeta: any) => {\r\n const row = this.state.orderpartsList[rowMeta.dataIndex];\r\n // Only render expandable content if the row is verified by the supplier\r\n if (row && row.hasBeenVerifiedBySupplier) {\r\n return this.renderExpandedRow(rowData, rowMeta);\r\n }\r\n return null; // No expandable content for unverified rows\r\n },\r\n rowsExpanded: this.state.rowsExpanded\r\n };\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoadingOrderDetails ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n
\r\n );\r\n }; \r\n\r\n checkIfOrderPartsChangedDuringOrderPlacement = async () => {\r\n const orderDatePlacement = new Date();\r\n let validityTimeOkay = true;\r\n const caseCalculationPartsThatChangedDuringPlacingOrder: CaseCalculationSupplierAlternativePart[] =\r\n [];\r\n\r\n this.state.orderpartsList.forEach((orderPart) => {\r\n orderPart.prevVal = null;\r\n });\r\n this.setState({\r\n caseCalculationPartsThatChangedDuringPlacingOrder: []\r\n });\r\n\r\n //Detect if the order part list was changed during the order placemenent\r\n (await Promise.all(\r\n this.state.orderpartsList.map(async (product) => {\r\n if (!product.isDeleted) {\r\n const freshOrderedParts =\r\n await this.caseService.InterogateCaseCalculationsAlternativePartsBySupplier(\r\n product.id,\r\n product.guideNumber,\r\n this.props.additionTariff.value,\r\n this.props.discountTariff.value,\r\n this.props.caseSettingsState?.caseSettings?.workflow.id ?? this.props.orderDetails.case?.caseWorkflow?.workflowId, this.props.orderDetails.supplierId,\r\n this.props.orderDetails.partsLocationOrganizationId\r\n );\r\n const changedOrderedProducts = freshOrderedParts.filter(\r\n (part) =>\r\n part.supplierId == product.supplierId &&\r\n part.producer == product.producer &&\r\n part.alternativeGuideNumber == product.alternativeGuideNumber &&\r\n part.name == product.alternativePartName &&\r\n part.alternativePartCode == product.alternativePartCode &&\r\n part.locationId == product.locationId\r\n );\r\n console.log('changedOrderedProducts', changedOrderedProducts);\r\n if (changedOrderedProducts.length == 1) {\r\n const changedOrderedProduct = changedOrderedProducts[0];\r\n if (\r\n changedOrderedProduct.alternativePriceWithoutDiscount !== product.alternativePrice ||\r\n changedOrderedProduct.deliveryTime !== product.deliveryTime ||\r\n changedOrderedProduct.validityTime !== product.validityTime ||\r\n changedOrderedProduct.type != product.type ||\r\n changedOrderedProduct.orderCode != product.orderCode\r\n ) {\r\n caseCalculationPartsThatChangedDuringPlacingOrder.push({\r\n prevVal: _.cloneDeep(product),\r\n newVal: _.cloneDeep(changedOrderedProduct)\r\n });\r\n product.prevVal = {\r\n ...product\r\n };\r\n if (product.alternativePrice != changedOrderedProduct.alternativePriceWithoutDiscount) {\r\n product.alternativePrice = changedOrderedProduct.alternativePriceWithoutDiscount;\r\n }\r\n if (product.deliveryTime != changedOrderedProduct.deliveryTime) {\r\n product.deliveryTime = changedOrderedProduct.deliveryTime;\r\n }\r\n if (product.type != changedOrderedProduct.type) {\r\n product.type = changedOrderedProduct.type;\r\n }\r\n if (product.orderCode != changedOrderedProduct.orderCode) {\r\n product.orderCode = changedOrderedProduct.orderCode;\r\n }\r\n if (product.validityTime != changedOrderedProduct.validityTime) {\r\n product.validityTime = changedOrderedProduct.validityTime;\r\n }\r\n }\r\n if (product.validityTime) {\r\n if (new Date(orderDatePlacement) > new Date(product.validityTime)) {\r\n validityTimeOkay = false;\r\n this.props.enqueueSnackbar(\r\n 'Codul: ' +\r\n changedOrderedProduct.alternativeGuideNumber +\r\n ' producator: ' +\r\n changedOrderedProduct.producer +\r\n ' furnizor: ' +\r\n this.props.orderDetails.supplier?.name +\r\n ' nu mai este valid. \\n' +\r\n 'A fost valid pana la : ' +\r\n moment\r\n .utc(changedOrderedProduct.validityTime)\r\n .local()\r\n .format(this.props.appState.longDateFormat),\r\n {\r\n variant: 'error'\r\n }\r\n );\r\n }\r\n }\r\n }\r\n }\r\n })\r\n )) || [];\r\n\r\n console.log(\r\n 'caseCalculationPartsThatChangedDuringPlacingOrder',\r\n caseCalculationPartsThatChangedDuringPlacingOrder\r\n );\r\n\r\n if (!validityTimeOkay) {\r\n return true;\r\n }\r\n\r\n if (caseCalculationPartsThatChangedDuringPlacingOrder.length > 0) {\r\n this.setState({\r\n caseCalculationPartsThatChangedDuringPlacingOrder:\r\n caseCalculationPartsThatChangedDuringPlacingOrder,\r\n isChangeOrderStatusDialogOpen: false,\r\n isLoadingOrderDetails: false\r\n });\r\n\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_SMTH', 'Produsele comandate au fost modificate'),\r\n {\r\n variant: 'error'\r\n }\r\n );\r\n\r\n //Update the order parts\r\n await Promise.all([\r\n caseCalculationPartsThatChangedDuringPlacingOrder.map(async (row) => {\r\n const part = row.newVal;\r\n const orderedPart = this.state.orderpartsList.filter(\r\n (product) =>\r\n part!.supplierId == product.supplierId &&\r\n part!.producer == product.producer &&\r\n part!.alternativeGuideNumber == product.alternativeGuideNumber &&\r\n part!.name == product.alternativePartName &&\r\n part.alternativePartCode == product.alternativePartCode\r\n )[0];\r\n await this.orderService.UpdateOrderPart(orderedPart!);\r\n })\r\n ]);\r\n\r\n const order = { ...this.props.orderDetails };\r\n const newOrder = await this.orderService.UpdateOrderAmounts({\r\n orderId: this.props.orderDetails.id,\r\n } as UpdateOrderAmountsRequestDto);\r\n\r\n order.amountWithoutTVA = newOrder!.amountWithoutTVA;\r\n order.amountTVA = newOrder!.amountTVA;\r\n order.amount = newOrder!.amount;\r\n\r\n this.props.onOrderChange(order);\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n updateSupplierOrder = async () => {\r\n try {\r\n const orderStatusHistory = [...this.state.orderStatusHistory];\r\n\r\n this.setState({ isLoadingOrderDetails: true, executing: true });\r\n\r\n const orderedPartsChanged = [...this.state.orderpartsList]\r\n .filter(orderPart => orderPart.hasBeenVerifiedBySupplier) \r\n .map(orderPart => ({\r\n ...orderPart,\r\n alternativePartQuality: null,\r\n carPartCategory: null,\r\n supplier: null,\r\n status: null\r\n }));\r\n\r\n if (orderedPartsChanged.length > 0) {\r\n const updateOrderInfoRequest = {\r\n orderId: this.props.orderDetails.id,\r\n calculationId: this.state.firstCasePartToBeOrdered?.caseCalculationHistoryId ?? 0,\r\n parts: orderedPartsChanged\r\n } as UpdateOrderInfoRequest;\r\n\r\n await this.caseService.UpdateOrderInfo(updateOrderInfoRequest);\r\n\r\n const vin = !R.isNil(this.props.caseSettingsState.case) ? this.props.caseSettingsState.case.caseVehicle.vin : this.props.orderDetails.caseVehicle.vin;\r\n const make = this.state.model ? this.state.model.brand : \"\";\r\n const model = this.state.model ? this.state.model.description : \"\";\r\n await Promise.all([\r\n orderedPartsChanged.map(async (orderPart) => {\r\n await this.caseService.AddNonStockPart({\r\n vin: vin,\r\n make: make,\r\n model: model,\r\n oeCode: orderPart.guideNumberBackup,\r\n oeSupplierCode: !R.isNil(this.state.quality) && this.state.quality.code === CarPartQualityTypeCode.OE ? orderPart.guideNumber : orderPart.alternativeGuideNumber ?? \"\",\r\n supplierId: this.props.orderDetails.supplierId\r\n } as NonStockPart);\r\n })\r\n ]);\r\n }\r\n\r\n const nextOrderStatus = this.getNextOrderStatus();\r\n const request = {\r\n statusId: nextOrderStatus?.id,\r\n comment: this.state.changeOrderStatusComment,\r\n orderId: this.props.orderDetails.id,\r\n attachments: this.state.attachments,\r\n partsLocationOrganizationId: this.props.orderDetails.partsLocationOrganizationId,\r\n workflowId: this.props.caseSettingsState?.caseSettings?.workflow.id ?? this.props.orderDetails.case?.caseWorkflow?.workflowId,\r\n partsOrganizationId: this.props.orderDetails.partsOrganizationId\r\n } as OrderStatusChangeRequestDto;\r\n await this.orderService.ChangeOrderStatus(request);\r\n\r\n const statusHistory = this.state.orderStatusHistory.find(x => x.orderStatus?.code == OrderStatusCode.FZR_VERIFICARE_LA_FURNIZOR);\r\n const notificationRequest = {\r\n orderId: this.props.orderDetails.id,\r\n orderComment: this.state.changeOrderStatusComment,\r\n caseId: this.props.orderDetails.caseId,\r\n template: OrderNotificationTemplateEnum.VERIFIED_BY_SUPPLIER,\r\n email: statusHistory ? statusHistory.createdByUser?.email ?? \"\" : \"\"\r\n }\r\n await this.caseService.SendVerifiedBySupplierOrderNotification(notificationRequest);\r\n\r\n const order = { ...this.props.orderDetails };\r\n order.orderStatus = nextOrderStatus!;\r\n order.orderStatusId = nextOrderStatus!.id;\r\n\r\n this.props.onOrderChange(order);\r\n\r\n orderStatusHistory.unshift({\r\n id: 1,\r\n orderId: this.props.orderDetails.id,\r\n orderStatusId: this.props.orderDetails.orderStatusId,\r\n orderStatus: nextOrderStatus!,\r\n date: new Date(),\r\n createdBy: this.props.appState.appUser!.id!,\r\n createdByUser: this.props.appState.appUser,\r\n comment: this.state.changeOrderStatusComment,\r\n attachments: this.state.attachments.length > 0 ? this.state.attachments : null\r\n });\r\n\r\n this.setState({\r\n orderStatusHistory: orderStatusHistory,\r\n isLoadingOrderDetails: false, \r\n isChangeOrderStatusDialogOpen: false, \r\n executing: false \r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.setState({ \r\n isLoadingOrderDetails: false,\r\n executing: false \r\n });\r\n console.log('Exception:' + ex);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n validateOrder = () : boolean => {\r\n const nonInterogatedParts = [...this.state.orderpartsList]\r\n .filter(orderPart => orderPart.hasBeenVerifiedBySupplier && !orderPart.supplierId);\r\n if (nonInterogatedParts.length > 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ORDER_PLEASE_SELECT_PART', 'Selectati piese pentru urmatoarele id-uri: ')\r\n + nonInterogatedParts.map(x => x.id).join(', '),\r\n {\r\n variant: 'error'\r\n }\r\n );\r\n return true;\r\n }\r\n\r\n const orderParts = [...this.state.orderpartsList.filter(x => x.hasBeenVerifiedBySupplier)];\r\n let validateError = 0;\r\n let errorString = '';\r\n let decimalError = false;\r\n orderParts.map((orderPart) => {\r\n [...orderPart.alternativeParts].map((item) => {\r\n if (item.originalPartId === orderPart.id) {\r\n if (item.selectedAlternativePart !== 9999999999999) {\r\n const filtercalculationParts = _.filter(\r\n [...orderParts],\r\n function (orderPartObject) {\r\n return (\r\n orderPartObject.alternativeGuideNumber == orderPart.alternativeGuideNumber &&\r\n orderPartObject.alternativePartCode == orderPart.alternativePartCode &&\r\n orderPartObject.supplierId == orderPart.supplierId\r\n );\r\n }\r\n );\r\n \r\n const currentPacking = item.packing?.split('|')[0];\r\n const secondItemOfPacking = item.packing?.split('|')[1];\r\n if (currentPacking && secondItemOfPacking) {\r\n const currentPackingNumber = parseFloat(currentPacking);\r\n if (filtercalculationParts && filtercalculationParts.length) {\r\n const pieceNr = _.sumBy(filtercalculationParts, 'pieceNr');\r\n console.log('filtercalculationParts');\r\n console.log(filtercalculationParts);\r\n console.log(pieceNr);\r\n if (pieceNr % currentPackingNumber == 0) {\r\n return;\r\n }\r\n }\r\n if (\r\n orderPart.pieceNr % currentPackingNumber != 0 ||\r\n orderPart.pieceNr < orderPart.minQty\r\n ) {\r\n errorString +=\r\n this.translatorService.Tranlate(\r\n 'MIN_PACKING_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie '\r\n ) +\r\n currentPackingNumber +\r\n this.translatorService.Tranlate('MIN_PACKING_MULTIPLE_ERROR_MSG', ' sau multiplul acesteia!') + ' \\n';\r\n this.validateOrigPartUnitsAdd(orderPart.id);\r\n return;\r\n }\r\n } else {\r\n if (orderPart.pieceNr < orderPart.minQty) {\r\n errorString +=\r\n this.translatorService.Tranlate(\r\n 'MIN_PACKING_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie '\r\n ) +\r\n orderPart.minQty +\r\n this.translatorService.Tranlate('MIN_PACKING_MULTIPLE_ERROR_MSG', ' sau multiplul acesteia!') + ' \\n';\r\n this.validateOrigPartUnitsAdd(orderPart.id);\r\n return;\r\n }\r\n }\r\n if (!Number.isInteger(orderPart.pieceNr)) {\r\n decimalError = true;\r\n this.validateOrigPartUnitsAdd(orderPart.id);\r\n return;\r\n }\r\n if (!R.isNil(item.availableQuantity) && item.availableQuantity < orderPart.pieceNr) {\r\n validateError++;\r\n this.validateOrigPartUnitsAdd(orderPart.id);\r\n } else {\r\n this.validateOrigPartUnitsRemove(orderPart.id);\r\n } \r\n \r\n }\r\n }\r\n });\r\n });\r\n\r\n if (errorString) {\r\n this.props.enqueueSnackbar(errorString, {\r\n variant: 'error',\r\n style: { whiteSpace: 'pre-line' }\r\n });\r\n return true;\r\n }\r\n\r\n if (decimalError) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'DECIMAL_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie un numar intreg fara zecimale'\r\n ),\r\n {\r\n variant: 'error'\r\n }\r\n );\r\n return true;\r\n }\r\n\r\n if (validateError > 0) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n return true;\r\n }\r\n\r\n\r\n return false;\r\n };\r\n\r\n updateOrderAfterInterogation = async () => {\r\n try {\r\n console.log('updateOrderAfterInterogation');\r\n const orderStatusHistory = [...this.state.orderStatusHistory];\r\n\r\n this.setState({ isLoadingOrderDetails: true, executing: true });\r\n\r\n const orderParts = this.state.orderpartsList.concat(this.getPackageFromOrderParts(this.state.orderpartsList));\r\n const orderedPartsChanged = [...orderParts]\r\n .filter(orderPart => orderPart.hasBeenVerifiedBySupplier) \r\n .map(orderPart => ({\r\n ...orderPart,\r\n alternativePartQuality: null,\r\n carPartCategory: null,\r\n supplier: null,\r\n status: null\r\n }));\r\n\r\n if (orderedPartsChanged.length > 0) {\r\n const updateOrderInfoRequest = {\r\n orderId: this.props.orderDetails.id,\r\n calculationId: this.state.firstCasePartToBeOrdered?.caseCalculationHistoryId ?? 0,\r\n parts: orderedPartsChanged\r\n } as UpdateOrderInfoRequest;\r\n await this.caseService.UpdateOrderInfo(updateOrderInfoRequest);\r\n }\r\n\r\n const nextOrderStatus = this.getNextOrderStatus();\r\n const request = {\r\n statusId: nextOrderStatus?.id,\r\n comment: this.state.changeOrderStatusComment,\r\n orderId: this.props.orderDetails.id,\r\n attachments: this.state.attachments,\r\n partsLocationOrganizationId: this.props.orderDetails.partsLocationOrganizationId,\r\n workflowId: this.props.caseSettingsState?.caseSettings?.workflow.id ?? this.props.orderDetails.case?.caseWorkflow?.workflowId,\r\n partsOrganizationId: this.props.orderDetails.partsOrganizationId\r\n } as OrderStatusChangeRequestDto;\r\n await this.orderService.ChangeOrderStatus(request);\r\n\r\n const order = await this.orderService.GetOrder(this.props.orderDetails.id, true);\r\n this.props.onOrderChange(order);\r\n\r\n orderStatusHistory.unshift({\r\n id: 1,\r\n orderId: this.props.orderDetails.id,\r\n orderStatusId: this.props.orderDetails.orderStatusId,\r\n orderStatus: nextOrderStatus!,\r\n date: new Date(),\r\n createdBy: this.props.appState.appUser!.id!,\r\n createdByUser: this.props.appState.appUser,\r\n comment: this.state.changeOrderStatusComment,\r\n attachments: this.state.attachments.length > 0 ? this.state.attachments : null\r\n });\r\n\r\n this.setState({\r\n orderStatusHistory: orderStatusHistory,\r\n isLoadingOrderDetails: false, \r\n isChangeOrderStatusDialogOpen: false, \r\n executing: false,\r\n rowsExpanded: [],\r\n orderpartsList: order.orderParts!.map((item) => {\r\n return { ...item } as OrderPartDTO;\r\n })\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.setState({ \r\n isLoadingOrderDetails: false,\r\n executing: false \r\n });\r\n console.log('Exception:' + ex);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n changeOrderStatusSubmit = async () => {\r\n if (this.props.orderDetails?.orderStatus?.code === OrderStatusCode.FZR_VERIFICARE_LA_FURNIZOR) {\r\n await this.updateSupplierOrder();\r\n return;\r\n }\r\n if (this.props.orderDetails?.orderStatus?.code === OrderStatusCode.REP_VERIFICATA_DE_FURNIZOR && this.state.rowsExpanded.length > 0) {\r\n const hasError = this.validateOrder();\r\n if (hasError) {\r\n return;\r\n }\r\n await this.updateOrderAfterInterogation();\r\n return;\r\n }\r\n\r\n if (this.props.orderDetails.interogatePartner && !this.props.orderDetails.partsLocationOrganizationId) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ORDER_WITHOUT_DELIVERY_ADRESS_MSG', 'Comanda nu poata fi lansata pentru ca nu are adresa de livrare!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n \r\n try {\r\n this.setState({ isLoadingOrderDetails: true, executing: true });\r\n const orderedPartsChanged = await this.checkIfOrderPartsChangedDuringOrderPlacement();\r\n console.log(\r\n 'Changed Order Part List ',\r\n this.state.caseCalculationPartsThatChangedDuringPlacingOrder\r\n );\r\n if (orderedPartsChanged) {\r\n this.setState({ executing: false });\r\n return;\r\n }\r\n const nextOrderStatus = this.getNextOrderStatus();\r\n const request = {\r\n statusId: nextOrderStatus?.id,\r\n comment: this.state.changeOrderStatusComment,\r\n orderId: this.props.orderDetails.id,\r\n attachments: this.state.attachments,\r\n partsLocationOrganizationId: this.props.orderDetails.partsLocationOrganizationId,\r\n workflowId: this.props.caseSettingsState?.caseSettings?.workflow.id ?? this.props.orderDetails.case?.caseWorkflow?.workflowId,\r\n partsOrganizationId: this.props.appState.appUser?.organizationId\r\n } as OrderStatusChangeRequestDto;\r\n\r\n await this.orderService.ChangeOrderStatus(request);\r\n\r\n await Promise.all([\r\n this.state.orderpartsList.map(async (product) => {\r\n const orderedPartStatus = this.state.orderPartStatus.find(\r\n (item) => item.code === OrderPartStatus.PROCESSING\r\n )!;\r\n if (!product.isDeleted) {\r\n product.status = orderedPartStatus;\r\n product.statusId = orderedPartStatus.id;\r\n await this.orderService.UpdateOrderPart(product!);\r\n }\r\n })\r\n ]);\r\n\r\n const orderStatusHistory = [...this.state.orderStatusHistory];\r\n\r\n const order = { ...this.props.orderDetails };\r\n order.orderStatus = nextOrderStatus!;\r\n order.orderStatusId = nextOrderStatus!.id;\r\n\r\n this.props.onOrderChange(order);\r\n\r\n orderStatusHistory.unshift({\r\n id: 1,\r\n orderId: this.props.orderDetails.id,\r\n orderStatusId: this.props.orderDetails.orderStatusId,\r\n orderStatus: nextOrderStatus!,\r\n date: new Date(),\r\n createdBy: this.props.appState.appUser!.id!,\r\n createdByUser: this.props.appState.appUser,\r\n comment: this.state.changeOrderStatusComment,\r\n attachments: this.state.attachments.length > 0 ? this.state.attachments : null\r\n });\r\n\r\n if (\r\n this.props.orderDetails.supplier?.name == SupplierCode.MATEROM ||\r\n this.props.orderDetails.supplier?.name == SupplierCode.ADTOTAL ||\r\n this.props.orderDetails.supplier?.name == SupplierCode.CONEX ||\r\n this.props.orderDetails.supplier?.name == SupplierCode.EUROEST ||\r\n this.props.orderDetails.supplier?.name == SupplierCode.LKQ || \r\n this.props.orderDetails.supplier?.name == SupplierCode.NESTE\r\n ) {\r\n const order = await this.orderService.GetOrder(this.props.orderDetails.id, false);\r\n if (order.supplierOrderNumber) {\r\n const proceedOrderStatus = this.state.orderStatuses.find(\r\n (item) => item.code === OrderStatusCode.FZR_COMANDA_CONFIRMATA\r\n );\r\n const request = {\r\n statusId: proceedOrderStatus?.id,\r\n comment: '',\r\n orderId: this.props.orderDetails.id,\r\n attachments: [],\r\n partsLocationOrganizationId: this.props.orderDetails.partsLocationOrganizationId,\r\n workflowId: this.props.caseSettingsState?.caseSettings?.workflow.id ?? this.props.orderDetails.case?.caseWorkflow?.workflowId,\r\n partsOrganizationId: this.props.appState.appUser?.organizationId\r\n } as OrderStatusChangeRequestDto;\r\n\r\n await this.orderService.ChangeOrderStatus(request);\r\n\r\n await Promise.all([\r\n this.state.orderpartsList.map(async (product) => {\r\n const orderedPartStatus = this.state.orderPartStatus.find(\r\n (item) => item.code === OrderPartStatus.PROCESSED\r\n )!;\r\n if (!product.isDeleted) {\r\n product.status = orderedPartStatus;\r\n product.statusId = orderedPartStatus.id;\r\n await this.orderService.UpdateOrderPart(product!);\r\n }\r\n })\r\n ]);\r\n\r\n await this.caseService.SendConfirmedOrderNotification(this.props.orderDetails.caseId, this.props.orderDetails.id);\r\n\r\n const order = { ...this.props.orderDetails };\r\n order.orderStatus = proceedOrderStatus!;\r\n order.orderStatusId = proceedOrderStatus!.id;\r\n\r\n this.props.onOrderChange(order);\r\n\r\n orderStatusHistory.unshift({\r\n id: 0,\r\n orderId: this.props.orderDetails.id,\r\n orderStatusId: this.props.orderDetails.orderStatusId,\r\n orderStatus: proceedOrderStatus!,\r\n date: new Date(),\r\n createdBy: this.props.appState.appUser!.id!,\r\n createdByUser: this.props.appState.appUser,\r\n comment: '',\r\n attachments: []\r\n });\r\n\r\n }\r\n }\r\n\r\n console.log(orderStatusHistory);\r\n\r\n await this.props.automatePlaceOrderChange();\r\n this.setState({\r\n orderStatusHistory: orderStatusHistory,\r\n isChangeOrderStatusDialogOpen: false,\r\n selectedDisplayedStatus: this.state.selectedStatus.displayName,\r\n changeOrderStatusComment: '',\r\n attachments: [],\r\n isLoadingOrderDetails: false,\r\n executing: false\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.setState({ \r\n isLoadingOrderDetails: false,\r\n executing: false \r\n });\r\n console.log('Exception:' + ex);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleAutocompleteOrderStatusChange = async (newValue: any | null) => {\r\n this.setState({\r\n selectedStatus: newValue\r\n });\r\n };\r\n\r\n handleOrderPartsStatusChange = async (part: OrderPart, newVal: IReferential | null) => {\r\n try {\r\n await this.orderService.ChangeOrderPartStatus(part.id, newVal!.id);\r\n const order = await this.orderService.GetOrder(this.props.orderDetails.id, false);\r\n\r\n const newArray = [...this.state.orderpartsList];\r\n const index = newArray.findIndex((item) => item.id === part.id);\r\n newArray[index] = {\r\n ...newArray[index],\r\n status: newVal,\r\n statusId: newVal !== null ? newVal.id : null\r\n };\r\n\r\n order.orderParts = newArray;\r\n\r\n this.props.onOrderChange(order);\r\n this.setState({\r\n orderpartsList: newArray\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleUploadAttachment = async (e: React.ChangeEvent) => {\r\n try {\r\n const attachments = [...this.state.attachments];\r\n\r\n attachments.push({\r\n id: 0,\r\n caseId: this.props.orderDetails.caseId,\r\n attachmentTypeId: this.state.attachType!.id,\r\n attachmentType: this.state.attachType,\r\n file: e.target.files![0],\r\n fileName: e.target.files![0].name,\r\n uploadDate: new Date(),\r\n carPhotos: false,\r\n originalFileName: e.target.files![0].name,\r\n caseRequestId: null,\r\n paymentId: null,\r\n serviceAppointmentId: null,\r\n caseClientId: null,\r\n isSelection: false\r\n });\r\n\r\n this.setState({\r\n attachments: attachments\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleDeleteAttachment = async (id: number, fileName: string) => {\r\n try {\r\n const attachments = [...this.state.attachments];\r\n const index = attachments.findIndex((item) => item.id === id);\r\n attachments.splice(index, 1);\r\n\r\n this.setState({\r\n attachments: attachments\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n renderAttachmentBox = () => {\r\n return (\r\n \r\n \r\n {this.state.attachments.length !== 0\r\n ? this.state.attachments.map((attach, index) => {\r\n return (\r\n
\r\n
\r\n this.downloadFile(attach.fileName, attach.originalFileName)}\r\n >\r\n {attach.originalFileName}\r\n \r\n
\r\n
\r\n this.handleDeleteAttachment(attach.id, attach.fileName)}\r\n disabled={false}\r\n >\r\n \r\n \r\n
\r\n
\r\n );\r\n })\r\n : null}\r\n
\r\n \r\n {\r\n return this.handleUploadAttachment(e);\r\n }}\r\n type=\"file\"\r\n />\r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n deleteOrderPart = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n const newArray = [...this.state.orderpartsList];\r\n const selectedPartIndex = newArray.findIndex((item) => item.id === id);\r\n const part = newArray[selectedPartIndex];\r\n const groupedParts = newArray.filter((item) => item.groupedUniqueId === part.groupedUniqueId);\r\n console.log('part', part);\r\n console.log('groupedParts', groupedParts);\r\n for (let i = 0; i < newArray.length; i++) {\r\n if (newArray[i].groupedUniqueId === part.groupedUniqueId) {\r\n await this.orderService.DeleteOrderPart(newArray[i].id);\r\n newArray[i].isDeleted = true;\r\n }\r\n }\r\n const order = await this.orderService.GetOrder(this.props.orderDetails.id, false);\r\n const orderStatusHistory = await this.orderService.GetOrderStatusHistories(\r\n this.props.orderDetails.id\r\n );\r\n\r\n order.orderParts = newArray;\r\n this.props.onOrderChange(order);\r\n this.setState({\r\n orderpartsList: newArray,\r\n orderStatusHistory: orderStatusHistory\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n renderChangeOrderStatusForm = () => {\r\n return (\r\n {\r\n this.changeOrderStatusSubmit();\r\n }}\r\n >\r\n
\r\n {\r\n !this.props.workflowAutomatePlaceOrder\r\n ? (\r\n ) => {\r\n this.setState({\r\n changeOrderStatusComment: e.target.value\r\n });\r\n }}\r\n variant=\"outlined\"\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n ): (\r\n ) => {\r\n this.setState({\r\n changeOrderStatusComment: e.target.value\r\n });\r\n }}\r\n variant=\"outlined\"\r\n />\r\n )\r\n }\r\n {this.renderAttachmentBox()}\r\n
\r\n \r\n {this.translatorService.Tranlate('CASE_COMMENT_SEND', 'Trimite')}\r\n \r\n \r\n );\r\n };\r\n\r\n downloadFile = async (fileName: string, origFileName: string) => {\r\n const fileBlob = await this.caseService.GetCaseAttachment(fileName);\r\n FileSaver.saveAs(fileBlob, origFileName);\r\n };\r\n\r\n showOrdeStatusTimelineHistory = () => {\r\n const orderStatusHistory = this.state.orderStatusHistory;\r\n\r\n if (orderStatusHistory.length === 0) {\r\n return (\r\n \r\n {this.translatorService.Tranlate(\r\n 'ORDER_DETAILS_HISTORY_NO_DATA',\r\n 'Nu exista date de afisat!'\r\n )}\r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n {orderStatusHistory.map((orderStatus, index) => (\r\n
\r\n
\r\n
\r\n

\r\n {' '}\r\n {orderStatus.orderStatus!.displayName}\r\n

\r\n

\r\n {moment\r\n .utc(orderStatus.date)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n {!isNullOrUndefined(orderStatus.createdByUser)\r\n ? '(' + orderStatus.createdByUser.userName + ')'\r\n : ''}\r\n

\r\n

{orderStatus.comment}

\r\n\r\n {orderStatus.attachments === null\r\n ? null\r\n : orderStatus.attachments.map((attach, index) => {\r\n return (\r\n
\r\n
\r\n \r\n this.downloadFile(attach.fileName, attach.originalFileName)\r\n }\r\n >\r\n {attach.originalFileName}\r\n \r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n ))}\r\n
\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.orderService = (this.context as AppContext).orderService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n \r\n const options = {\r\n filter: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n elevation: 0,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService)\r\n // responsive: \"stacked\",\r\n };\r\n\r\n return (\r\n \r\n {this.renderOrderDetailsSection()}\r\n {this.renderInterogateAllSection()}\r\n {this.renderOrderPartsSection()}\r\n \r\n
\r\n \r\n
\r\n\r\n {!this.state.isLoadingOrderDetails && this.state.showOrderPrice ? (\r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate('ORDER_DETAILS_TOTAL_TITLE', 'TOTAL COMANDA')}\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n

\r\n \r\n {this.translatorService.Tranlate(\r\n 'ORDER_DETAILS_TOTAL_NO_TVA_LABEL',\r\n 'Total fara TVA'\r\n ) + ': '}{' '}\r\n \r\n {Utils.countryNumberFormat(this.props.orderDetails.amountWithoutTVA.toFixed(2), this.props.appState.appUser?.organization?.country ?? null) +\r\n ' ' +\r\n (!isNullOrUndefined(this.props.orderDetails.currencyCode) &&\r\n this.props.orderDetails.currencyCode !== ''\r\n ? this.props.orderDetails.currencyCode\r\n : '')}\r\n

\r\n

\r\n \r\n {this.translatorService.Tranlate('ORDER_DETAILS_TVA_LABEL', 'TVA')}\r\n {this.state.TVA !== '' && !isNullOrUndefined(this.state.TVA)\r\n ? ' (' + this.state.TVA + '%)'\r\n : ''}\r\n :{' '}\r\n \r\n {Utils.countryNumberFormat(this.props.orderDetails.amountTVA.toFixed(2), this.props.appState.appUser?.organization?.country ?? null) +\r\n ' ' +\r\n (!isNullOrUndefined(this.props.orderDetails.currencyCode) &&\r\n this.props.orderDetails.currencyCode !== ''\r\n ? this.props.orderDetails.currencyCode\r\n : '')}\r\n

\r\n

\r\n \r\n {this.translatorService.Tranlate('ORDER_DETAILS_TOTAL_LABEL', 'Total') +\r\n ': '}\r\n \r\n {Utils.countryNumberFormat(this.props.orderDetails.amount.toFixed(2), this.props.appState.appUser?.organization?.country ?? null) +\r\n ' ' +\r\n (!isNullOrUndefined(this.props.orderDetails.currencyCode) &&\r\n this.props.orderDetails.currencyCode !== ''\r\n ? this.props.orderDetails.currencyCode\r\n : '')}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n ) : null}\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoadingOrderDetails ? (\r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate(\r\n 'ORDER_DETAILS_HISTORY_TITLE',\r\n 'ISTORIC COMANDA'\r\n )}\r\n \r\n
\r\n \r\n \r\n \r\n {this.showOrdeStatusTimelineHistory()}\r\n \r\n \r\n \r\n
\r\n ) : null}\r\n
\r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'ORDER_DETAILS_DIALOG_TITLE',\r\n 'Modificare stare comanda'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderChangeOrderStatusForm()}\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (stateProps: any, dispatchProps: any, ownProps: ExternalOrderDetailsProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n null,\r\n mergeProps\r\n)(withSnackbar(OrderDetails as any));\r\n","import * as React from 'react';\r\n\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../store';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Box, Grid, ListItem } from '@material-ui/core';\r\nimport { withRouter } from 'react-router';\r\nimport moment from 'moment';\r\nimport * as R from 'ramda';\r\n\r\nimport { Order, OrderFilters } from '../../interfaces/Order';\r\nimport { Dialog, DialogContent, DialogTitle, IconButton } from '@material-ui/core';\r\nimport OrderDetails from './OrderDetails';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport _ from 'lodash';\r\nimport { TariffPercentResponse } from '../../interfaces/Case';\r\n\r\ninterface Vehicle {\r\n id: number;\r\n plateNumber: string;\r\n name: string;\r\n vin: string;\r\n status?: string;\r\n firstRegistrationDate: string;\r\n orders: Order[];\r\n}\r\n\r\nexport interface ExternalSearchOrderProps {\r\n handleSearchPopverClose: () => void;\r\n searchValue: string;\r\n searchId: string;\r\n}\r\ntype SearchOrderProps = { appState: AppState } & ExternalSearchOrderProps & RouteComponentProps;\r\n\r\ninterface ISearchOrderState {\r\n vehicleList: Vehicle[];\r\n isLoading: boolean;\r\n orderList: Order[];\r\n isDialogOpen: boolean;\r\n selectedOrder: Order | null;\r\n}\r\n\r\nclass SearchOrder extends React.PureComponent {\r\n private cbContext!: AppContext;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n vehicleList: [],\r\n isLoading: false,\r\n orderList: [],\r\n isDialogOpen: false,\r\n selectedOrder: null\r\n } as ISearchOrderState;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n public async componentDidMount() {}\r\n\r\n async componentDidUpdate(prevProps: SearchOrderProps) {\r\n if (this.props.searchId !== prevProps.searchId) {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n this.loadOrders\r\n );\r\n }\r\n }\r\n\r\n loadOrders = async () => {\r\n const vehicles = await this.loadData();\r\n\r\n this.setState({\r\n isLoading: false,\r\n vehicleList: vehicles\r\n });\r\n };\r\n\r\n loadData = async (): Promise => {\r\n const [orders] = await Promise.all([\r\n this.cbContext.orderService.GetOrders({\r\n text: this.props.searchValue.replace(/\\s+/g, '')\r\n } as any as OrderFilters)\r\n ]);\r\n const orderList = orders.orders;\r\n this.setState({\r\n orderList: orderList\r\n });\r\n const orgIds = _.uniq(orderList.map(({ clientId }) => clientId));\r\n\r\n const assignedToList = _.uniq(orderList.map(({ createdBy }) => createdBy));\r\n const uniqueAssignedToList = assignedToList.filter((a, b) => assignedToList.indexOf(a) === b);\r\n\r\n const [users, orgEntities] = await Promise.all([\r\n this.cbContext.appUserService.GetUsersInfo(uniqueAssignedToList),\r\n orgIds.length == 0 ? [] : this.cbContext.organizationService.GetUserOrganizationsByIds(orgIds)\r\n ]);\r\n\r\n orders.orders.forEach((od) => {\r\n const client = orgEntities.find((item) => item.id === od.clientId);\r\n const user = users.find((item) => item.id === od.createdBy);\r\n\r\n od.createdByUser = R.isNil(user) ? null : user;\r\n od.client = R.isNil(client) ? null : client;\r\n });\r\n\r\n const orderVehicles = orders.orders.filter((i) => i.caseVehicle).map((i) => i.caseVehicle);\r\n const vehicles = orderVehicles.map((item) => {\r\n return {\r\n id: -1,\r\n vin: item.vin || '',\r\n plateNumber: item.plateNumber || '',\r\n name: item.model ? `${item.model?.brand} ${item.model?.name}` : '',\r\n numberOfKilometers: item.numberOfKilometers,\r\n status: item.currentStatus?.status?.displayName,\r\n firstRegistrationDate: item.registrationDate ? item.registrationDate : '',\r\n orders: orders.orders.filter((i) => i.caseVehicle?.id === item.id)\r\n };\r\n });\r\n\r\n return [...vehicles];\r\n };\r\n\r\n onOrderClick = async (id: number) => {\r\n const orderParts = await this.cbContext.orderService.GetOrderParts(id);\r\n const order = this.state.orderList.find((item) => item.id === id);\r\n order!.orderParts = orderParts;\r\n\r\n this.setState({\r\n isDialogOpen: true,\r\n selectedOrder: order!\r\n });\r\n };\r\n\r\n onVehicleClick = (id: number) => {\r\n if (!id || id < 0) {\r\n return;\r\n }\r\n\r\n if (!R.isNil(this.props.handleSearchPopverClose)) {\r\n this.props.handleSearchPopverClose();\r\n }\r\n\r\n const currentPath = this.props.history.location.pathname.toLowerCase();\r\n this.props.history.push('/vehicle/' + id);\r\n\r\n if (currentPath.indexOf('/vehicle/') !== -1) {\r\n this.props.history.go(0);\r\n }\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState({\r\n isDialogOpen: false,\r\n isLoading: true\r\n });\r\n };\r\n\r\n onOrderChange = (order: Order) => {\r\n this.setState({\r\n selectedOrder: \r\n {\r\n ...this.state.selectedOrder!,\r\n amount: order.amount,\r\n amountTVA: order.amountTVA,\r\n amountWithoutTVA: order.amountWithoutTVA,\r\n orderParts: [...order.orderParts!],\r\n orderStatus: order.orderStatus,\r\n orderStatusId: order.orderStatusId\r\n }\r\n });\r\n };\r\n\r\n renderVehicles = (vehicles: Vehicle[]) => {\r\n return vehicles.map((item, index) => (\r\n
\r\n this.onVehicleClick(item.id)}\r\n >\r\n \r\n \r\n
{item.plateNumber}
\r\n
\r\n \r\n
{item.status}
\r\n
{item.vin}
\r\n
\r\n \r\n
{item.name}
\r\n
\r\n \r\n
\r\n
\r\n {item.firstRegistrationDate\r\n ? moment\r\n .utc(item.firstRegistrationDate)\r\n .local()\r\n .format(this.props.appState.dateFormat)\r\n : ' - '}\r\n
\r\n
\r\n
\r\n \r\n {this.renderOrders(item.orders)}\r\n
\r\n ));\r\n };\r\n\r\n renderOrders = (orders: Order[]) => {\r\n return orders.map((item, index) => (\r\n this.onOrderClick(item.id)}>\r\n \r\n \r\n
{item.id}
\r\n
\r\n \r\n
{item.client!.displayName}
\r\n
{item.createdByUser!.userName}
\r\n
\r\n \r\n
{item.amount}
\r\n
{item.currencyCode}
\r\n
\r\n\r\n \r\n
{item!.orderStatus!.displayName}
\r\n
\r\n {moment\r\n .utc(item.date)\r\n .local()\r\n .format(this.props.appState.dateFormat)}\r\n
\r\n
\r\n
\r\n
\r\n ));\r\n };\r\n\r\n public render() {\r\n this.cbContext = this.context as AppContext;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n\r\n {!this.state.isLoading && !this.state.isDialogOpen && this.state.vehicleList.length != 0 ? (\r\n \r\n {this.renderVehicles(this.state.vehicleList)}\r\n \r\n ) : null}\r\n\r\n \r\n \r\n \r\n {this.cbContext.translatorService.Tranlate('ORDERS_DIALOG_TITLE', 'Detalii comanda')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.selectedOrder === null ? null : (\r\n {console.log('automatePlaceOrderChange')}} \r\n />\r\n )}\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withRouter(SearchOrder));\r\n","import React, { Fragment, useRef, useState, useContext } from 'react';\r\n\r\nimport { ClickAwayListener, InputBase, Popper, Paper } from '@material-ui/core';\r\n\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport SearchCase from '../../components/cases/SearchCase';\r\nimport SearchOrder from '../../components/orders/SearchOrder';\r\nimport { Guid } from 'guid-typescript';\r\n\r\nconst WAIT_INTERVAL = 750;\r\n\r\nconst HeaderSearch = () => {\r\n const searchRef = useRef(null);\r\n\r\n const handleKeyDown = (e) => {\r\n clearTimeout(timer);\r\n };\r\n\r\n const triggerChange = (e) => {\r\n setSearchId(Guid.create().toString());\r\n };\r\n\r\n const handleSearchChange = (event) => {\r\n setSearchValue(event.target.value);\r\n\r\n clearTimeout(timer);\r\n setTimer(setTimeout(triggerChange, WAIT_INTERVAL));\r\n\r\n if (event.target.value) {\r\n if (!openSearchPopover) {\r\n setOpenSearchPopover(true);\r\n }\r\n } else {\r\n setOpenSearchPopover(false);\r\n }\r\n };\r\n\r\n const handleSearchPopverClose = () => {\r\n setOpenSearchPopover(false);\r\n };\r\n\r\n const [openSearchPopover, setOpenSearchPopover] = useState(false);\r\n const [searchValue, setSearchValue] = useState('');\r\n const [searchId, setSearchId] = useState('');\r\n let [timer, setTimer] = useState(null);\r\n const context = useContext(ApplicationContext);\r\n const translatorService = context.translatorService;\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n
\r\n {window.location.href.indexOf('orders') == -1 ? \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n : \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n }\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default HeaderSearch;\r\n","import React, { Fragment } from 'react';\r\n\r\nimport clsx from 'clsx';\r\nimport { Link } from 'react-router-dom';\r\nimport { Hidden, IconButton, AppBar, Box } from '@material-ui/core';\r\nimport { connect } from 'react-redux';\r\nimport { ThemeActionCreators } from '../../store';\r\nimport projectLogo from '../../assets/images/carfix_newlogo.svg';\r\nimport HeaderLogo from '../../layout-components/HeaderLogo';\r\nimport HeaderDots from '../../layout-components/HeaderDots';\r\nimport HeaderUserbox from '../../layout-components/HeaderUserbox';\r\nimport HeaderSearch from '../../layout-components/HeaderSearch';\r\n\r\nimport MenuOpenRoundedIcon from '@material-ui/icons/MenuOpenRounded';\r\nimport MenuRoundedIcon from '@material-ui/icons/MenuRounded';\r\n\r\nconst Header = (props) => {\r\n const toggleSidebar = () => {\r\n setSidebarToggle(!sidebarToggle);\r\n };\r\n\r\n const toggleSidebarMobile = () => {\r\n setSidebarToggleMobile(!sidebarToggleMobile);\r\n };\r\n\r\n const {\r\n headerShadow,\r\n headerFixed,\r\n sidebarToggleMobile,\r\n setSidebarToggleMobile,\r\n setSidebarToggle,\r\n sidebarToggle,\r\n user\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n {!props.isCollapsedLayout && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!props.isCollapsedLayout && (\r\n \r\n \r\n {sidebarToggle ? (\r\n \r\n ) : (\r\n //style={{color:\"#1F2857\"}}\r\n )}\r\n \r\n \r\n )}\r\n {user != null ? : null}\r\n \r\n \r\n {user != null ? (\r\n \r\n \r\n \r\n \r\n \r\n {sidebarToggleMobile ? : }\r\n \r\n \r\n \r\n ) : null}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n headerShadow: state.themeOptions.headerShadow,\r\n headerFixed: state.themeOptions.headerFixed,\r\n sidebarToggleMobile: state.themeOptions.sidebarToggleMobile,\r\n sidebarToggle: state.themeOptions.sidebarToggle,\r\n user: state.app.user,\r\n appState: state.app\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setSidebarToggle: (enable) => dispatch(ThemeActionCreators.setSidebarToggle(enable)),\r\n setSidebarToggleMobile: (enable) => dispatch(ThemeActionCreators.setSidebarToggleMobile(enable))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(Header);\r\n","import React, { Fragment } from 'react';\r\nimport clsx from 'clsx';\r\nimport NavigationIcon from '@material-ui/icons/Navigation';\r\nimport { Hidden, Paper, Box, Button } from '@material-ui/core';\r\n\r\nimport DashboardTwoToneIcon from '@material-ui/icons/DashboardTwoTone';\r\n\r\nimport { connect } from 'react-redux';\r\n\r\n// function TabPanel(props) {\r\n// const { children, value, index, ...other } = props;\r\n\r\n// return (\r\n//
\r\n \r\n \r\n );\r\n};\r\n\r\nLeftSidebar.propTypes = {\r\n children: PropTypes.node\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n sidebarToggle: state.themeOptions.sidebarToggle,\r\n sidebarToggleMobile: state.themeOptions.sidebarToggleMobile,\r\n sidebarFixed: state.themeOptions.sidebarFixed,\r\n\r\n headerFixed: state.themeOptions.headerFixed,\r\n headerSearchHover: state.themeOptions.headerSearchHover,\r\n\r\n contentBackground: state.themeOptions.contentBackground,\r\n appState: state.app\r\n});\r\n\r\nexport default connect(mapStateToProps)(LeftSidebar);\r\n","import React from 'react';\r\nimport { ApplicationState, AppState } from '../../store';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Grid,\r\n TextField,\r\n Button,\r\n Box,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n DialogContentText,\r\n DialogActions\r\n} from '@material-ui/core';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { WrapperSimple } from '../../layout-components';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { IAuthService } from '../../services/Interfaces/IAuthService';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\ntype UserProfileProps = AppState & ProviderContext;\r\n\r\ninterface IUserProfileState {\r\n openModal: boolean;\r\n}\r\n\r\nclass UserProfile extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n private organizationService!: IOrganizationService;\r\n private authService!: IAuthService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n openModal: false\r\n };\r\n\r\n public handleClickOpenModal = () => {\r\n this.setState({ openModal: true });\r\n };\r\n public handleClickCloseModal = () => {\r\n this.setState({ openModal: false });\r\n };\r\n\r\n // apasa reseteaza parola\r\n // se trimite mail\r\n //apare mesaj Operatiune efectuata cu sucess\r\n // se deschide modalul\r\n // se apasa ok si se face delogarea\r\n public resetPassword = async () => {\r\n try {\r\n if (this.props.appUser!.id === null) {\r\n return;\r\n }\r\n await this.appUserService.ResetPassword('');\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n\r\n this.handleClickOpenModal();\r\n } catch {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n public logout = () => {\r\n this.setState({ openModal: false });\r\n return this.authService.logoutAsync();\r\n };\r\n\r\n public renderForm() {\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n \r\n {this.translatorService.Tranlate(\r\n 'ADMIN_USERS_TAB_USER_PASSWORD',\r\n 'Reseteaza parola'\r\n )}\r\n \r\n
\r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'ADMIN_USERS_TAB_USER_PASSWORD',\r\n 'Reseteaza parola'\r\n )}\r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'PROFILE_RESET_PASSWORD_MESSAGE',\r\n 'A fost trimis un mail de resetare a parolei. Dupa resetare va rugam sa va reautentificati!'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.authService = (this.context as AppContext).authenticationService;\r\n return this.renderForm();\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.app // Selects which state properties are merged into the component's props\r\n)(withSnackbar(UserProfile as any));\r\n","import React from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Box, TextField } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { OrganizationBankAccount, Currency } from '../../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MaterialTable, { Column, EditComponentProps, Icons } from 'material-table';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { forwardRef } from 'react';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ninterface IOrganizationBankAccountsState {\r\n bankAccounts: OrganizationBankAccount[];\r\n isLoading: boolean;\r\n currencyList: Currency[];\r\n}\r\n\r\nexport interface ExternalBankAccountsProps {\r\n organizationId: number;\r\n}\r\n\r\ntype OrganizationBankAccountsProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string }> &\r\n ExternalBankAccountsProps;\r\n\r\nclass OrganizationBankAccounts extends React.PureComponent<\r\n OrganizationBankAccountsProps,\r\n IOrganizationBankAccountsState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n bankAccounts: [],\r\n isLoading: true,\r\n currencyList: [] as Currency[]\r\n } as IOrganizationBankAccountsState;\r\n\r\n componentDidMount = () => {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadData();\r\n }\r\n );\r\n };\r\n\r\n loadData = async () => {\r\n try {\r\n const data = await this.organizationService.GetOrganizationBankAccounts(\r\n this.props.organizationId\r\n );\r\n const ref = Referentials.referential.find((item) => item.code === ReferentialCode.Currency);\r\n\r\n const currencyList = await this.appReferentialService.Get(ref!.baseUrl);\r\n\r\n this.setState({\r\n bankAccounts: data,\r\n isLoading: false,\r\n currencyList: currencyList.filter((item) => item.isActive === true) as any as Currency[]\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const lookup = this.state.currencyList.reduce(function (acc: any, cur: Currency, i: number) {\r\n acc[cur.id] = cur.displayName;\r\n\r\n return acc;\r\n }, {});\r\n\r\n return [\r\n {\r\n field: 'bank',\r\n title: this.translatorService.Tranlate('ORGANIZATION_BANK_ACCOUNTS_BANK_HEADER', 'Banca'),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'bankAccount',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_BANK_ACCOUNTS_BANK_ACCOUNT_HEADER',\r\n 'Bank Account'\r\n ),\r\n searchable: true,\r\n cellStyle: {\r\n minWidth: 250\r\n },\r\n editComponent: (props) => (\r\n props.onChange(e.target.value)}\r\n />\r\n )\r\n } as Column,\r\n {\r\n field: 'currencyId',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_BANK_ACCOUNTS_CURRENCY_HEADER',\r\n 'Moneda'\r\n ),\r\n initialEditValue: this.state.currencyList[0].id,\r\n lookup: lookup\r\n },\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_BANK_ACCOUNTS_DATE_MODIFICATION_HEADER',\r\n 'Data modificare'\r\n ),\r\n defaultSort: 'desc',\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .format(this.props.appState.longDateFormat);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column\r\n ];\r\n };\r\n\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n deleteTooltip: this.translatorService.Tranlate('DELETE', 'Sterge'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza'),\r\n deleteText: this.translatorService.Tranlate(\r\n 'DELETE_TEXT',\r\n 'Sigur doriti sa stergeti aceasta inregistrare?'\r\n )\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n\r\n onRowUpdate = (\r\n newData: OrganizationBankAccount,\r\n oldData?: OrganizationBankAccount\r\n ): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n newData.currency = null;\r\n await this.organizationService.UpdateOrganizationBankAccount(newData);\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n onRowDelete = (oldData: OrganizationBankAccount): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n await this.organizationService.RemoveOrganizationBankAccount(oldData.id);\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n onRowAdd = (newData: OrganizationBankAccount): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n try {\r\n newData.organizationId = this.props.organizationId;\r\n\r\n await this.organizationService.AddOrganizationBankAccount(newData);\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n return (\r\n this.onRowAdd(newData),\r\n onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData),\r\n onRowDelete: (oldData: any) => this.onRowDelete(oldData)\r\n }}\r\n />\r\n );\r\n };\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (stateProps: any, dispatchProps: any, ownProps: ExternalBankAccountsProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(OrganizationBankAccounts as any));\r\n","import React from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Box, Card, CardContent } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { DropzoneArea } from 'material-ui-dropzone';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\ninterface IOrganizationLogoState {\r\n isLoading: boolean;\r\n image: File;\r\n}\r\n\r\nexport interface ExternalOrganizationLogoProps {\r\n organizationId: number;\r\n}\r\n\r\ntype OrganizationLogoProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string }> &\r\n ExternalOrganizationLogoProps;\r\n\r\nclass OrganizationLogo extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: true\r\n } as IOrganizationLogoState;\r\n\r\n componentDidMount = () => {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadData();\r\n }\r\n );\r\n };\r\n\r\n handleUploadAttachment = async (files: File[]) => {\r\n if (files.length === 0) {\r\n return;\r\n }\r\n\r\n const img = new Image();\r\n img.src = window.URL.createObjectURL(files[0]);\r\n img.onload = async () => {\r\n // if (img.width === 158 && img.height === 66) {\r\n await this.saveImage(files);\r\n return;\r\n // }\r\n\r\n // this.props.enqueueSnackbar(\r\n // this.translatorService.Tranlate(\r\n // 'ERROR_INCORECT_FILE_SIZE',\r\n // 'Dimensiune imaginii este invalida'\r\n // ),\r\n // { variant: 'error' }\r\n // );\r\n // return true;\r\n };\r\n };\r\n\r\n saveImage = async (files: File[]) => {\r\n try {\r\n if (files.length === 0) {\r\n return;\r\n }\r\n\r\n await this.organizationService.AddLogo(this.props.organizationId, files![0]);\r\n\r\n this.setState({\r\n image: files![0]\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n loadData = async () => {\r\n try {\r\n const image = await this.organizationService.GetLogo(this.props.organizationId);\r\n\r\n if (image === null) {\r\n this.setState({\r\n isLoading: false\r\n });\r\n return;\r\n }\r\n\r\n this.setState({\r\n isLoading: false,\r\n image: new File([image], 'logo')\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n renderLogo = () => {\r\n return (\r\n \r\n \r\n \r\n
\r\n {isNullOrUndefined(this.state.image) ? (\r\n ''\r\n ) : (\r\n \"\"\r\n )}\r\n
\r\n this.handleUploadAttachment(files)}\r\n previewText=\"\"\r\n showAlerts={false}\r\n acceptedFiles={['image/*']}\r\n />\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderLogo() : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalOrganizationLogoProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(OrganizationLogo as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Box, Select, MenuItem } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport {\r\n Organization,\r\n OrganizationParameter,\r\n OrganizationToken\r\n} from '../../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { OrganizationTypeCode, RoleClaimsEnum } from '../../../helpers/Constants';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MaterialTable, { Column, EditComponentProps, Icons } from 'material-table';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { forwardRef } from 'react';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ninterface IOrganizationTokensState {\r\n tokens: OrganizationToken[];\r\n isLoading: boolean;\r\n supplierList: Organization[];\r\n}\r\n\r\nexport interface ExternalOrganizationTokenProps {\r\n organizationId: number;\r\n}\r\ntype OrganizationTokensProps = { appState: AppState } & ExternalOrganizationTokenProps &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass OrganizationTokens extends React.PureComponent<\r\n OrganizationTokensProps,\r\n IOrganizationTokensState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n tokens: [],\r\n isLoading: true,\r\n supplierList: []\r\n } as IOrganizationTokensState;\r\n\r\n componentDidMount = () => {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadData();\r\n }\r\n );\r\n };\r\n\r\n loadData = async () => {\r\n try {\r\n const [data, supplierList] = await Promise.all([\r\n this.organizationService.OrganizationToken.Get(this.props.organizationId),\r\n this.organizationService.GetHOOrganizationsByTypes([OrganizationTypeCode.SUPPLIER])\r\n ]);\r\n\r\n this.setState({\r\n tokens: data,\r\n isLoading: false,\r\n supplierList: supplierList.filter((item) => item.isActive === true)\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const lookup = this.state.supplierList.reduce(function (\r\n acc: any,\r\n cur: Organization,\r\n i: number\r\n ) {\r\n acc[cur.id] = cur.displayName;\r\n return acc;\r\n },\r\n {});\r\n\r\n return [\r\n {\r\n field: 'partnerId',\r\n title: this.translatorService.Tranlate('ORGANIZATION_TOKENS_PARTNER_HEADER', 'Partener'),\r\n searchable: true,\r\n lookup: lookup,\r\n render: (rowData: OrganizationToken) => {\r\n return rowData.partner!.displayName;\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.value)}\r\n >\r\n {this.state.supplierList.map((item) => (\r\n \r\n {item.displayName}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'token',\r\n title: this.translatorService.Tranlate('ORGANIZATION_TOKENS_TOKEN_HEADER', 'Token'),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'idLocation',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_TOKENS_TOKEN_HEADER_IDLOCATION',\r\n 'Id Locatie'\r\n ),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'serviceCode',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_TOKENS_TOKEN_HEADER_SERVICECODE',\r\n 'Code Service'\r\n ),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_PARAMETERS_MODIFIED_DATE_HEADER',\r\n 'Data modificare'\r\n ),\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .format(this.props.appState.longDateFormat);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column\r\n ];\r\n };\r\n\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n deleteTooltip: this.translatorService.Tranlate('DELETE', 'Sterge'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza'),\r\n deleteText: this.translatorService.Tranlate(\r\n 'DELETE_TEXT',\r\n 'Sigur doriti sa stergeti aceasta inregistrare?'\r\n )\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n\r\n onRowUpdate = (newData: OrganizationToken, oldData?: OrganizationToken): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n newData.partner = null;\r\n await this.organizationService.OrganizationToken.Update(newData);\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n onRowDelete = (oldData: OrganizationParameter): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n await this.organizationService.OrganizationToken.Remove(oldData.id);\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n onRowAdd = (newData: OrganizationToken): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n try {\r\n newData.organizationId = this.props.organizationId;\r\n\r\n await this.organizationService.OrganizationToken.Add(newData);\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n if (this.hasRight(RoleClaimsEnum.AdminService)) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n this.onRowAdd(newData),\r\n onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData),\r\n onRowDelete: (oldData: any) => this.onRowDelete(oldData)\r\n }}\r\n />\r\n );\r\n };\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (stateProps: any, dispatchProps: any, ownProps: OrganizationTokensProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(OrganizationTokens as any));\r\n","import React, { ChangeEvent, Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Grid, Button, Card, Tabs, Tab, CardContent, TextField, Box } from '@material-ui/core';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport {\r\n CountryBuffer,\r\n Organization,\r\n OrganizationLevelType,\r\n OrganizationType\r\n} from '../../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { WrapperSimple } from '../../../layout-components';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode, OrganizationLevelTypeCode, RoleCodeEnum, RoleClaimsEnum, OrganizationTypeCode } from '../../../helpers/Constants';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport TabPanel from '../../_shared/Tabs';\r\nimport OrganizationBankAccounts from './OrganizationBankAccounts';\r\nimport OrganizationLogo from './OrganizationLogo';\r\nimport OrganizationTokens from './OrganizationTokens';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Switch, FormControlLabel, Typography } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport * as R from 'ramda';\r\nimport NumberFormat from 'react-number-format';\r\nimport { count } from 'console';\r\n\r\ninterface IEditOrganizationState {\r\n organization: Organization;\r\n organizationLevelTypes: OrganizationLevelType[];\r\n parentOrganizations: Organization[];\r\n organizationTypes: OrganizationType[];\r\n selectedTab: number;\r\n countryList: IReferential[];\r\n regionList: IReferential[];\r\n cityList: IReferential[];\r\n isLoading: boolean;\r\n countryBuffers: CountryBuffer[];\r\n partQualityTypes: IReferential[];\r\n}\r\n\r\nexport interface ExternalEditOrganizationsProps {\r\n organizationChanged?: () => void;\r\n organizationId: number;\r\n}\r\n\r\ntype EditOrganizationProps = { appState: AppState } & ProviderContext &\r\n ExternalEditOrganizationsProps &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass EditOrganization extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n organization: {\r\n id: 0,\r\n name: '',\r\n organizationType: null,\r\n organizationLevelType: null,\r\n country: null,\r\n region: null,\r\n parent: null,\r\n gtId: this.props.appState.appUser!.gtId,\r\n isActive: true,\r\n newFeature: false,\r\n uploadFeature: false,\r\n mondayToFridayOpen: null,\r\n mondayToFridayClose: null,\r\n mondayToThursdayOpen: null,\r\n mondayToThursdayClose: null,\r\n fridayOpen: null,\r\n fridayClose: null,\r\n saturdayOpen: null,\r\n saturdayClose: null,\r\n cityInfo: null,\r\n bufferValue: 0,\r\n categoryPart: null,\r\n categoryPartId: null\r\n } as Organization,\r\n organizationLevelTypes: [] as OrganizationLevelType[],\r\n parentOrganizations: [] as Organization[],\r\n organizationTypes: [] as OrganizationType[],\r\n selectedTab: 0,\r\n countryList: [] as IReferential[],\r\n regionList: [] as IReferential[],\r\n cityList: [] as IReferential[],\r\n isLoading: true,\r\n isMondayToFridayOpenValid: true,\r\n countryBuffers: [] as CountryBuffer[],\r\n partQualityTypes: [] as IReferential[]\r\n };\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n public async componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n //let organization = this.state.organization;\r\n\r\n // if (this.props.organizationId !== 0) {\r\n // organization = ;\r\n // }\r\n\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OrganizationType\r\n );\r\n const countryRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.Country\r\n );\r\n const regionRef = Referentials.referential.find((item) => item.code === ReferentialCode.Region);\r\n const cityRef = Referentials.referential.find((item) => item.code === ReferentialCode.City);\r\n const refQualityPart = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CarPartCategory\r\n );\r\n\r\n const [organization, orgLevelList, orgTypes, countryList, regionList, cityList, countryBuffers, partQualityTypes] = await Promise.all([\r\n this.props.organizationId !== 0\r\n ? this.organizationService.GetOrganization(this.props.organizationId)\r\n : this.state.organization,\r\n this.organizationService.GetOrganizationLevels(hoId),\r\n this.appReferentialService.Get(ref!.baseUrl),\r\n this.appReferentialService.Get(countryRef!.baseUrl),\r\n this.appReferentialService.Get(regionRef!.baseUrl),\r\n this.appReferentialService.Get(cityRef!.baseUrl),\r\n this.organizationService.GetCountryBuffers(),\r\n this.appReferentialService.Get(refQualityPart!.baseUrl)\r\n ]);\r\n organization.hoId = hoId;\r\n const organizationLevelTypes = orgLevelList.map((item) => item.organizationLevelType);\r\n\r\n organization.categoryPart = organization.categoryPartId != null ? partQualityTypes.find((item) => item.id === organization.categoryPartId) ?? null : null\r\n this.setState(\r\n {\r\n organization: organization,\r\n organizationLevelTypes: organizationLevelTypes.filter(\r\n (item) => item.code !== OrganizationLevelTypeCode.HO\r\n ),\r\n organizationTypes: orgTypes as any as OrganizationType[],\r\n //parentOrganizations: [],\r\n regionList: regionList.filter((item) => item.isActive === true),\r\n countryList: countryList.filter((item) => item.isActive === true),\r\n cityList: cityList.filter((item) => item.isActive === true),\r\n isLoading: false,\r\n countryBuffers: countryBuffers,\r\n partQualityTypes: partQualityTypes\r\n },\r\n async () => {\r\n const organizations =\r\n this.props.organizationId === 0\r\n ? ([] as Organization[])\r\n : await this.organizationService.GetOrganizationsByHO(\r\n hoId,\r\n this.state.organization.organizationLevelTypeId\r\n );\r\n\r\n this.setState({\r\n parentOrganizations: organizations\r\n });\r\n }\r\n );\r\n\r\n ValidatorForm.addValidationRule('isTimeValid', (value) => {\r\n if (value) {\r\n return /^([01]?[0-9]|2[0-3]):[0-5][0-9]$/.test(value);\r\n }\r\n return true;\r\n });\r\n }\r\n\r\n private handleTextChange = (event: React.ChangeEvent) => {\r\n let value: any;\r\n if (event.target.type === 'text') {\r\n value = event.currentTarget.value;\r\n }\r\n this.setState({\r\n organization: {\r\n ...this.state.organization,\r\n [event.target.id]: value\r\n }\r\n });\r\n };\r\n\r\n private handleValueChange = (value: string) => {\r\n this.setState({\r\n organization: {\r\n ...this.state.organization,\r\n bufferValue: parseFloat(value)\r\n }\r\n });\r\n };\r\n\r\n private handleOrganizationLevelTypeChange = async (newValue: OrganizationLevelType | null) => {\r\n let orgs = [] as Organization[];\r\n if (newValue !== null) {\r\n orgs = await this.organizationService.GetOrganizationsByHO(\r\n this.state.organization.hoId,\r\n newValue.id\r\n );\r\n }\r\n this.setState({\r\n organization: {\r\n ...this.state.organization,\r\n organizationLevelType: newValue,\r\n organizationLevelTypeId: newValue !== null ? newValue!.id : 0,\r\n parent:\r\n newValue !== null && newValue.code === OrganizationLevelTypeCode.HO\r\n ? null\r\n : this.state.organization.parent,\r\n parentId:\r\n newValue !== null && newValue.code === OrganizationLevelTypeCode.HO\r\n ? null\r\n : this.state.organization.parentId\r\n },\r\n parentOrganizations: orgs\r\n });\r\n };\r\n\r\n private handleOrganizationTypeChange = (newValue: OrganizationType | null) => {\r\n this.setState({\r\n organization: {\r\n ...this.state.organization,\r\n organizationType: newValue,\r\n organizationTypeId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n private handleCountryChange = (newValue: IReferential | null) => {\r\n const countryId = newValue !== null ? newValue!.id : null;\r\n const countryBuffer = this.state.countryBuffers.find((item) => item.countryId === countryId);\r\n this.setState({\r\n organization: {\r\n ...this.state.organization,\r\n country: newValue,\r\n countryId: countryId,\r\n region: null,\r\n regionId: null,\r\n cityInfo: null,\r\n cityId: null,\r\n bufferValue: countryBuffer ? countryBuffer.value : null\r\n }\r\n });\r\n };\r\n\r\n private handleRegionChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n organization: {\r\n ...this.state.organization,\r\n region: newValue,\r\n regionId: newValue !== null ? newValue!.id : null,\r\n cityInfo: null,\r\n cityId: null\r\n }\r\n });\r\n };\r\n\r\n private handleCityInfoChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n organization: {\r\n ...this.state.organization,\r\n cityInfo: newValue,\r\n cityId: newValue !== null ? newValue!.id : null\r\n }\r\n });\r\n };\r\n\r\n private handleCategoryPartChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n organization: {\r\n ...this.state.organization,\r\n categoryPart: newValue,\r\n categoryPartId: newValue !== null ? newValue!.id : null\r\n }\r\n });\r\n };\r\n\r\n private handleOrganizationChange = (newValue: Organization | null) => {\r\n this.setState({\r\n organization: {\r\n ...this.state.organization,\r\n parent: newValue,\r\n parentId: newValue !== null ? newValue!.id : 0,\r\n organizationType: newValue !== null ? newValue.organizationType : null\r\n }\r\n });\r\n };\r\n\r\n public saveOrganization = async () => {\r\n try {\r\n if (this.state.organization.id === 0) {\r\n await this.organizationService.AddOrganization(this.state.organization);\r\n } else {\r\n await this.organizationService.UpdateOrganization(this.state.organization);\r\n }\r\n\r\n if (this.props.organizationChanged) {\r\n this.props.organizationChanged();\r\n }\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleInputChange = (event: ChangeEvent, fieldName: string) => {\r\n const hourValue = event.target.value.trim();\r\n this.setState({\r\n organization: {\r\n ...this.state.organization,\r\n [fieldName]: hourValue === '' ? null : hourValue\r\n }\r\n });\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n\r\n isValidTime = (value : string | null) => {\r\n if (value) {\r\n return /^([01]?[0-9]|2[0-3]):[0-5][0-9]$/.test(value);\r\n }\r\n return true;\r\n };\r\n\r\n private getRegionsOptions(): IReferential[] {\r\n const filteredRegions = this.state.regionList.filter(\r\n (region) => (this.state.organization.countryId && region.dependencyId) && region.dependencyId === this.state.organization.countryId\r\n );\r\n\r\n return filteredRegions || [];\r\n }\r\n\r\n private getCitiesOptions(): IReferential[] {\r\n const filteredCities = this.state.cityList.filter(\r\n (city) => (this.state.organization.regionId && city.dependencyId) && city.dependencyId === this.state.organization.regionId\r\n );\r\n\r\n return filteredCities || [];\r\n }\r\n\r\n public hasRole = (roleCode: string): boolean => {\r\n return this.props.appState.appUser?.userRole?.code === roleCode;\r\n };\r\n\r\n public renderForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.handleOrganizationLevelTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: OrganizationLevelType) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleOrganizationChange(newValue)\r\n }\r\n getOptionLabel={(option: Organization) => option.name || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleOrganizationTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: OrganizationType) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.setState({\r\n organization: {\r\n ...this.state.organization!,\r\n newFeature: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('COPY_CASE', 'Copiaza dosar')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n hidden={this.hasRight(RoleClaimsEnum.AdminCountryOrganization) || this.hasRight(RoleClaimsEnum.AdminService)}\r\n />\r\n \r\n this.setState({\r\n organization: {\r\n ...this.state.organization!,\r\n uploadFeature: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('UPLOAD_MESSAGE', 'Caracteristici Upload')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n hidden={this.hasRight(RoleClaimsEnum.AdminCountryOrganization) || this.hasRight(RoleClaimsEnum.AdminService)}\r\n />\r\n \r\n this.setState({\r\n organization: {\r\n ...this.state.organization!,\r\n showOrderDetails: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('ORDERS_DIALOG_TITLE', 'Detalii comanda')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n hidden={this.hasRight(RoleClaimsEnum.AdminCountryOrganization) || this.hasRight(RoleClaimsEnum.AdminService)}\r\n />\r\n\r\n \r\n this.setState({\r\n organization: {\r\n ...this.state.organization!,\r\n changeCaseStatusBasedCalculation: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('CHANGE_STATUS_BASED_CALCULATION', 'Stare calculatie')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n hidden={this.hasRight(RoleClaimsEnum.AdminCountryOrganization) || this.hasRight(RoleClaimsEnum.AdminService)}\r\n />\r\n \r\n this.setState({\r\n organization: {\r\n ...this.state.organization!,\r\n bulkNotification: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('NOTIFICATION_HISTORY_LABEL', 'Notificari cu istoric')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n hidden={this.hasRight(RoleClaimsEnum.AdminCountryOrganization) || this.hasRight(RoleClaimsEnum.AdminService)}\r\n />\r\n \r\n this.setState({\r\n organization: {\r\n ...this.state.organization!,\r\n isMavoPartener: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('MAVO_ORG_PARTNER', 'Partener Mavo')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n hidden={this.hasRight(RoleClaimsEnum.AdminCountryOrganization) || this.hasRight(RoleClaimsEnum.AdminService)}\r\n />\r\n \r\n this.setState({\r\n organization: {\r\n ...this.state.organization!,\r\n isCarfixPartener: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('CARFIX_ORG_PARTNER', 'Partener Carfix App')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n organization: {\r\n ...this.state.organization!,\r\n hasAppointmentWorkflow: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('CARFIX_ORG_APPOINTMENT_WORKFLOW', 'Programare simpla')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n organization: {\r\n ...this.state.organization!,\r\n hasRepairWorkflow: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('CARFIX_ORG_REPAIR_WORKFLOW', 'Flux Reparatie')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n organization: {\r\n ...this.state.organization!,\r\n hasMentainanceWorkflow: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('CARFIX_ORG_MAINTENANCE_WORKFLOW', 'Flux Mentenanta')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n organization: {\r\n ...this.state.organization!,\r\n includeToMvo: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('INCLUDE_TO_MVO_LABEL', 'Include in MVO')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n hidden={this.hasRight(RoleClaimsEnum.AdminCountryOrganization) || this.hasRight(RoleClaimsEnum.AdminService)}\r\n />\r\n \r\n this.setState({\r\n organization: {\r\n ...this.state.organization!,\r\n showCaseStatus: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('SHOW_CASE_STATUS_COLUMN_LABEL', 'Include Coloana Status')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n hidden={this.hasRight(RoleClaimsEnum.AdminCountryOrganization) || this.hasRight(RoleClaimsEnum.AdminService)}\r\n />\r\n \r\n this.setState({\r\n organization: {\r\n ...this.state.organization!,\r\n hideOrganizationOwnerWorkflows: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('HIDE_ORGANIZATION_OWNER_WORKFLOWS_COLUMN_LABEL', 'Ascunde fluxuri pe care nu este partener')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n hidden={this.hasRight(RoleClaimsEnum.AdminCountryOrganization) || this.hasRight(RoleClaimsEnum.AdminService)}\r\n />\r\n \r\n this.setState({\r\n organization: {\r\n ...this.state.organization!,\r\n hidePartnerTab: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('HIDE_ORGANIZATION_PARTNER_TAB_COLUMN_LABEL', 'Ascunde tab dosare partneri + intern')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n hidden={this.hasRight(RoleClaimsEnum.AdminCountryOrganization) || this.hasRight(RoleClaimsEnum.AdminService)}\r\n />\r\n \r\n this.setState({\r\n organization: {\r\n ...this.state.organization!,\r\n showMakeModelSearch: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('ORGANIZATION_SHOW_MAKE_MODEL_SEARCH_COLUMN_LABEL', 'Cautare dupa marca + model in dosare')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n hidden={this.hasRight(RoleClaimsEnum.AdminCountryOrganization) || this.hasRight(RoleClaimsEnum.AdminService)}\r\n />\r\n \r\n this.setState({\r\n organization: {\r\n ...this.state.organization!,\r\n hideLkqColumns: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('ORGANIZATION_HIDE_LKQ_COLUMN_LABEL', 'Ascunde coloane LKQ in dosare')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n hidden={this.hasRight(RoleClaimsEnum.AdminCountryOrganization) || this.hasRight(RoleClaimsEnum.AdminService)}\r\n />\r\n \r\n this.setState({\r\n organization: {\r\n ...this.state.organization!,\r\n hideOrderCurrencyColumn: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('ORGANIZATION_HIDE_ORDER_CURRENCY_COLUMN_LABEL', 'Ascunde coloana moneda in comenzi')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n hidden={this.hasRight(RoleClaimsEnum.AdminCountryOrganization) || this.hasRight(RoleClaimsEnum.AdminService)}\r\n />\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n this.handleCountryChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n\r\n \r\n \r\n this.handleRegionChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n this.handleCityInfoChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.handleValueChange(e.target.value)}\r\n label={this.translatorService.Tranlate(\r\n 'COUNTRY_BUFFER_ORGANIZATION_VALUE_LABEL',\r\n 'Nr. zile'\r\n )}\r\n validators={['minNumber:0']}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n \r\n {this.state.organization.organizationType && this.state.organization.organizationType!.code == OrganizationTypeCode.SUPPLIER && (\r\n \r\n \r\n this.handleCategoryPartChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n )}\r\n \r\n \r\n \r\n\r\n \r\n \r\n {/* Luni-Vineri */}\r\n \r\n {this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_WORK_PROGRAM_MONDAY_TO_FRIDAY_SECTION',\r\n 'Luni-Vineri')} \r\n \r\n \r\n ) => this.handleInputChange(e, 'mondayToFridayOpen')}\r\n error={!this.isValidTime(this.state.organization.mondayToFridayOpen)}\r\n helperText={!this.isValidTime(this.state.organization.mondayToFridayOpen) ? this.translatorService.Tranlate('INVALID_TIME_FORMAT', 'Invalid time format. Please enter a time in HH:mm format.') : \"\"}\r\n fullWidth\r\n validators={['isTimeValid']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('INVALID_TIME_FORMAT', 'Invalid time format. Please enter a time in HH:mm format.')\r\n ]}\r\n disabled={!!this.state.organization.mondayToThursdayOpen || !!this.state.organization.mondayToThursdayClose}\r\n />\r\n \r\n \r\n ) => this.handleInputChange(e, 'mondayToFridayClose')}\r\n error={!this.isValidTime(this.state.organization.mondayToFridayClose)}\r\n helperText={!this.isValidTime(this.state.organization.mondayToFridayClose) ? this.translatorService.Tranlate('INVALID_TIME_FORMAT', 'Invalid time format. Please enter a time in HH:mm format.') : \"\"}\r\n fullWidth\r\n validators={['isTimeValid']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('INVALID_TIME_FORMAT', 'Invalid time format. Please enter a time in HH:mm format.')\r\n ]}\r\n disabled={!!this.state.organization.mondayToThursdayOpen || !!this.state.organization.mondayToThursdayClose}\r\n />\r\n \r\n\r\n {/* Luni-Joi */}\r\n \r\n {this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_WORK_PROGRAM_MONDAY_TO_THURSDAY_SECTION',\r\n 'Luni-Joi')} \r\n \r\n \r\n ) => this.handleInputChange(e, 'mondayToThursdayOpen')}\r\n error={!this.isValidTime(this.state.organization.mondayToThursdayOpen)}\r\n helperText={!this.isValidTime(this.state.organization.mondayToThursdayOpen) ? this.translatorService.Tranlate('INVALID_TIME_FORMAT', 'Invalid time format. Please enter a time in HH:mm format.') : \"\"}\r\n fullWidth\r\n validators={['isTimeValid']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('INVALID_TIME_FORMAT', 'Invalid time format. Please enter a time in HH:mm format.')\r\n ]}\r\n disabled={!!this.state.organization.mondayToFridayOpen || !!this.state.organization.mondayToFridayClose}\r\n />\r\n \r\n \r\n ) => this.handleInputChange(e, 'mondayToThursdayClose')}\r\n error={!this.isValidTime(this.state.organization.mondayToThursdayClose)}\r\n helperText={!this.isValidTime(this.state.organization.mondayToThursdayClose) ? this.translatorService.Tranlate('INVALID_TIME_FORMAT', 'Invalid time format. Please enter a time in HH:mm format.') : \"\"}\r\n fullWidth\r\n validators={['isTimeValid']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('INVALID_TIME_FORMAT', 'Invalid time format. Please enter a time in HH:mm format.')\r\n ]}\r\n disabled={!!this.state.organization.mondayToFridayOpen || !!this.state.organization.mondayToFridayClose}\r\n />\r\n \r\n\r\n {/* Vineri */}\r\n \r\n {this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_WORK_PROGRAM_FRIDAY_SECTION',\r\n 'Vineri')} \r\n \r\n \r\n ) => this.handleInputChange(e, 'fridayOpen')}\r\n error={!this.isValidTime(this.state.organization.fridayOpen)}\r\n helperText={!this.isValidTime(this.state.organization.fridayOpen) ? this.translatorService.Tranlate('INVALID_TIME_FORMAT', 'Invalid time format. Please enter a time in HH:mm format.') : \"\"}\r\n fullWidth\r\n validators={['isTimeValid']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('INVALID_TIME_FORMAT', 'Invalid time format. Please enter a time in HH:mm format.')\r\n ]}\r\n disabled={!!this.state.organization.mondayToFridayOpen || !!this.state.organization.mondayToFridayClose}\r\n />\r\n \r\n \r\n ) => this.handleInputChange(e, 'fridayClose')}\r\n error={!this.isValidTime(this.state.organization.fridayClose)}\r\n helperText={!this.isValidTime(this.state.organization.fridayClose) ? this.translatorService.Tranlate('INVALID_TIME_FORMAT', 'Invalid time format. Please enter a time in HH:mm format.') : \"\"}\r\n fullWidth\r\n validators={['isTimeValid']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('INVALID_TIME_FORMAT', 'Invalid time format. Please enter a time in HH:mm format.')\r\n ]}\r\n disabled={!!this.state.organization.mondayToFridayOpen || !!this.state.organization.mondayToFridayClose}\r\n />\r\n \r\n\r\n {/* Sambata */}\r\n \r\n {this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_WORK_PROGRAM_SATURDAY_SECTION',\r\n 'Sambata')} \r\n \r\n \r\n ) => this.handleInputChange(e, 'saturdayOpen')}\r\n error={!this.isValidTime(this.state.organization.saturdayOpen)}\r\n helperText={!this.isValidTime(this.state.organization.saturdayOpen) ? this.translatorService.Tranlate('INVALID_TIME_FORMAT', 'Invalid time format. Please enter a time in HH:mm format.') : \"\"}\r\n fullWidth\r\n validators={['isTimeValid']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('INVALID_TIME_FORMAT', 'Invalid time format. Please enter a time in HH:mm format.')\r\n ]}\r\n />\r\n \r\n \r\n ) => this.handleInputChange(e, 'saturdayClose')}\r\n error={!this.isValidTime(this.state.organization.saturdayClose)}\r\n helperText={!this.isValidTime(this.state.organization.saturdayClose) ? this.translatorService.Tranlate('INVALID_TIME_FORMAT', 'Invalid time format. Please enter a time in HH:mm format.') : \"\"}\r\n fullWidth\r\n validators={['isTimeValid']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('INVALID_TIME_FORMAT', 'Invalid time format. Please enter a time in HH:mm format.')\r\n ]}\r\n />\r\n \r\n \r\n \r\n\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderForm() : null}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalEditOrganizationsProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(EditOrganization as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Organization } from '../../../interfaces/Organization';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport {\r\n Box,\r\n Switch,\r\n Button,\r\n Tooltip,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n Typography,\r\n Grid\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { isNullOrUndefined } from 'util';\r\nimport EditOrganization from './EditOrganization';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { RoleClaimsEnum } from '../../../helpers/Constants';\r\n\r\ninterface IOrganizationEntitiesState {\r\n organizations: Organization[];\r\n isLoading: boolean;\r\n isOpenDialog: boolean;\r\n selectedOrganizationId: number;\r\n}\r\n\r\ntype IOrganizationEntitiesPros = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass OrganizationEntities extends React.PureComponent<\r\n IOrganizationEntitiesPros,\r\n IOrganizationEntitiesState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n organizations: [],\r\n isLoading: false,\r\n isOpenDialog: false,\r\n selectedOrganizationId: 0\r\n } as IOrganizationEntitiesState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizations();\r\n }\r\n );\r\n }\r\n\r\n loadOrganizations = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n const orgList = await this.organizationService.GetOrganizationsByHO(hoId, null);\r\n\r\n this.setState({\r\n organizations: orgList,\r\n isLoading: false\r\n });\r\n };\r\n\r\n onRowClick = (e: any, id: number) => {\r\n this.editOrganization(id);\r\n };\r\n\r\n handleIsActiveChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newOrganizations = [...this.state.organizations];\r\n const updatedOrgIndex = newOrganizations.findIndex((o) => o.id === id);\r\n\r\n if (updatedOrgIndex >= 0) {\r\n newOrganizations[updatedOrgIndex] = {\r\n ...newOrganizations[updatedOrgIndex],\r\n isActive: event.target.checked\r\n };\r\n\r\n try {\r\n await this.organizationService.UpdateOrganization(newOrganizations[updatedOrgIndex]);\r\n\r\n this.setState({ organizations: newOrganizations });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n};\r\n\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'name',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_ORGANIZATION_NAME_HEADER',\r\n 'Organizatie'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.onRowClick(e, tableMeta.rowData[0])}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'organizationLevelType',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATION_ENTITIES_HIERARCHY_LEVEL',\r\n 'Nivel ierarhic'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: IReferential) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'parent',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_ORGANIZATION_PARENT_HEADER',\r\n 'Entitate Superioara'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Organization) => {\r\n return isNullOrUndefined(value) ? '' : value.name;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'isActive',\r\n label: this.translatorService.Tranlate('USERS_IS_ACTIVE_HEADER', 'Activ'),\r\n options: {\r\n sort: false,\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(isActive: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names[0]) !== -1 && isActive === true) ||\r\n (filterVal.indexOf(this.names[1]) !== -1 && isActive === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n <>\r\n this.handleIsActiveChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n { \r\n this.hasRight(RoleClaimsEnum.AdminCountryOrganization) || this.hasRight(RoleClaimsEnum.AdminService) ?\r\n (\r\n value ? this.translatorService.Tranlate('ORGANIZATION_ENTITY_ENABLED', 'Enabled') : \r\n this.translatorService.Tranlate('ORGANIZATION_ENTITY_DISABLED', 'Disabled')\r\n ) : \r\n (\r\n ''\r\n )\r\n }\r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n editOrganization = (id: number) => {\r\n this.setState({ isOpenDialog: true, selectedOrganizationId: id });\r\n };\r\n\r\n handleClose = (reload: boolean) => {\r\n if (reload) {\r\n this.setState({ isOpenDialog: false }, async () => {\r\n await this.loadOrganizations();\r\n });\r\n } else {\r\n this.setState({ isOpenDialog: false });\r\n }\r\n };\r\n\r\n \r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n // responsive: \"stacked\",\r\n customToolbar: () => {\r\n return (\r\n this.hasRight(RoleClaimsEnum.AdminService) ? null : (\r\n \r\n {\r\n this.setState({ selectedOrganizationId: 0, isOpenDialog: true });\r\n }}\r\n >\r\n \r\n \r\n \r\n ) \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'ORGANIZATION_EDIT_MODAL_TITLE',\r\n 'Editare Organizatie'\r\n )}\r\n \r\n \r\n \r\n this.handleClose(false)}\r\n size={'small'}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.handleClose(true)}\r\n />\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(OrganizationEntities as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { OrganizationLevelType, OrganizationLevel } from '../../../interfaces/Organization';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { Box, Button, IconButton, Card, CardContent } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\r\nimport KeyboardArrowUpIcon from '@material-ui/icons/KeyboardArrowUp';\r\n\r\ninterface IOrganizationHierarchyState {\r\n organizationLevels: OrganizationLevel[];\r\n isLoading: boolean;\r\n organizationLevelTypes: OrganizationLevelType[];\r\n selectedOrganizationLevelType: OrganizationLevelType | null;\r\n organizationId: number;\r\n}\r\n\r\ntype IOrganizationHierarchyPros = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass OrganizationHierarchy extends React.PureComponent<\r\n IOrganizationHierarchyPros,\r\n IOrganizationHierarchyState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n organizationLevels: [],\r\n isLoading: false,\r\n organizationLevelTypes: [],\r\n selectedOrganizationLevelType: null,\r\n organizationId: 0\r\n } as IOrganizationHierarchyState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizationLevels();\r\n }\r\n );\r\n }\r\n\r\n loadOrganizationLevels = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OrganizationLevel\r\n );\r\n\r\n const orgList = await this.organizationService.GetOrganizationLevels(hoId);\r\n const orgLevelTypes = await this.appReferentialService.Get(ref!.baseUrl);\r\n\r\n const filterLevels = this.filterLevelTypes(\r\n orgList,\r\n orgLevelTypes as any as OrganizationLevelType[]\r\n );\r\n\r\n this.setState({\r\n organizationLevels: orgList.sort(function (a, b) {\r\n return a.order - b.order;\r\n }),\r\n organizationLevelTypes: filterLevels,\r\n isLoading: false,\r\n organizationId: hoId\r\n });\r\n };\r\n\r\n filterLevelTypes = (orglevels: OrganizationLevel[], levelTypes: OrganizationLevelType[]) => {\r\n return levelTypes.filter(\r\n (item) =>\r\n orglevels.find((r) => r.organizationLevelTypeId === item.id) === undefined &&\r\n item.isActive === true\r\n ) as OrganizationLevelType[];\r\n };\r\n\r\n deleteOrgLevel = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.organizationService.RemoveOrganizationLevel(id);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadOrganizationLevels();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n moveUp = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const cloneArray = [...this.state.organizationLevels];\r\n const itemToMoveUpIndex = cloneArray.findIndex((item) => item.id === id);\r\n\r\n if (itemToMoveUpIndex === -1) {\r\n return;\r\n }\r\n if (cloneArray[itemToMoveUpIndex].order === 1) {\r\n return;\r\n }\r\n\r\n const itemToMoveDownIndex = cloneArray.findIndex(\r\n (item) => item.order === cloneArray[itemToMoveUpIndex].order - 1\r\n );\r\n\r\n cloneArray[itemToMoveUpIndex] = {\r\n ...cloneArray[itemToMoveUpIndex],\r\n order: cloneArray[itemToMoveUpIndex].order - 1\r\n };\r\n cloneArray[itemToMoveDownIndex] = {\r\n ...cloneArray[itemToMoveDownIndex],\r\n order: cloneArray[itemToMoveDownIndex].order + 1\r\n };\r\n\r\n try {\r\n await this.organizationService.UpdateOrganizationLevel(cloneArray[itemToMoveUpIndex]);\r\n await this.organizationService.UpdateOrganizationLevel(cloneArray[itemToMoveDownIndex]);\r\n\r\n this.setState({\r\n organizationLevels: cloneArray.sort(function (a, b) {\r\n return a.order - b.order;\r\n })\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n moveDown = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const cloneArray = [...this.state.organizationLevels];\r\n const itemToMoveIndex = cloneArray.findIndex((item) => item.id === id);\r\n\r\n if (itemToMoveIndex === -1) {\r\n return;\r\n }\r\n if (cloneArray[itemToMoveIndex].order === cloneArray.length) {\r\n return;\r\n }\r\n\r\n const itemToMoveToIndex = cloneArray.findIndex(\r\n (item) => item.order === cloneArray[itemToMoveIndex].order + 1\r\n );\r\n\r\n cloneArray[itemToMoveIndex] = {\r\n ...cloneArray[itemToMoveIndex],\r\n order: cloneArray[itemToMoveIndex].order + 1\r\n };\r\n cloneArray[itemToMoveToIndex] = {\r\n ...cloneArray[itemToMoveToIndex],\r\n order: cloneArray[itemToMoveToIndex].order - 1\r\n };\r\n\r\n try {\r\n await this.organizationService.UpdateOrganizationLevel(cloneArray[itemToMoveIndex]);\r\n await this.organizationService.UpdateOrganizationLevel(cloneArray[itemToMoveToIndex]);\r\n\r\n this.setState({\r\n organizationLevels: cloneArray.sort(function (a, b) {\r\n return a.order - b.order;\r\n })\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'organizationLevelType',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_ORGANIZATION_NAME_HEADER',\r\n 'Organizatie'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: IReferential) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'order',\r\n sortDirection: 'asc',\r\n label: this.translatorService.Tranlate('ORGANIZATION_HIERARCHY_ORDER_HEADER', 'Ord'),\r\n options: { sort: false }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n sortOrder: {\r\n name: 'order',\r\n direction: 'asc'\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n this.moveUp(e, tableMeta)}>\r\n \r\n \r\n this.moveDown(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deleteOrgLevel(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addOrgLevel = async () => {\r\n try {\r\n await this.organizationService.AddOrganizationLevel({\r\n order: this.state.organizationLevels.length + 1,\r\n organizationLevelTypeId: this.state.selectedOrganizationLevelType!.id,\r\n organizationId: this.state.organizationId\r\n } as OrganizationLevel);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedOrganizationLevelType: null\r\n },\r\n () => {\r\n this.loadOrganizationLevels();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleAutocompleteChange = (newValue: OrganizationLevelType | null) => {\r\n this.setState({ selectedOrganizationLevelType: newValue });\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.handleAutocompleteChange(newValue)\r\n }\r\n getOptionLabel={(option: OrganizationLevelType) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n // responsive: \"stacked\",\r\n // customToolbar: () => {\r\n // return (\r\n // \r\n // { this.props.history.push(\"/admin/users/new\") }}>\r\n // \r\n // \r\n // )\r\n // }\r\n };\r\n\r\n return (\r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(OrganizationHierarchy as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from '../../../store';\r\nimport { withSnackbar } from 'notistack';\r\nimport { Card, Tabs, Tab, CardContent, Box } from '@material-ui/core';\r\nimport TabPanel from '../../_shared/Tabs';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport OrganizationEntities from '../organizations/OrganizationEntities';\r\nimport OrganizationHierarchy from '../organizations/OrganizationHierarchy';\r\nimport { RoleClaimsEnum, RoleCodeEnum } from '../../../helpers/Constants';\r\n\r\ninterface IOrganizationDetailsTabState {\r\n selectedTab: number;\r\n}\r\nclass OrganizationDetailsTab extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = { selectedTab: 0 };\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(OrganizationDetailsTab as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withSnackbar } from 'notistack';\r\nimport { ApplicationState } from '../../../store';\r\nimport TreeView from '@material-ui/lab/TreeView';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\r\nimport TreeItem from '@material-ui/lab/TreeItem';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { Organization } from '../../../interfaces/Organization';\r\nimport { Typography, Box, CardContent, Card, Tabs, Tab } from '@material-ui/core';\r\nimport { IAppUserService } from '../../../services/Interfaces/IAppUserService';\r\nimport { AppUser } from '../../../interfaces/AppUser';\r\nimport { ScaleLoader } from 'react-spinners';\r\n\r\ninterface IOrganizationUsersState {\r\n hoOrganization: Organization | null;\r\n organizations: Organization[];\r\n users: AppUser[];\r\n ids: string[];\r\n isLoading: boolean;\r\n}\r\nclass OrganizationUsers extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appUserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n hoOrganization: null,\r\n organizations: [] as Organization[],\r\n users: [] as AppUser[],\r\n ids: [] as string[],\r\n isLoading: true\r\n };\r\n\r\n public async componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const [organizations, users] = await Promise.all([\r\n this.organizationService.GetOrganizationsByHO(hoId, null),\r\n this.appUserService.GetAppUsers()\r\n ]);\r\n\r\n const organization = organizations.find((item) => item.id === hoId);\r\n\r\n this.setState({\r\n hoOrganization: organization === undefined ? null : organization,\r\n organizations: organizations,\r\n ids: organizations.map((item) => item.id.toString()),\r\n users: users.users.filter(\r\n (user) =>\r\n user.organization!.hoId === organization!.id || user.organizationId === organization!.id\r\n ),\r\n isLoading: false\r\n });\r\n }\r\n\r\n renderTree = (nodes: Organization | null) => {\r\n if (nodes === null) {\r\n return;\r\n }\r\n\r\n const users = this.state.users.filter((u) => u.organization!.id === nodes.id);\r\n\r\n nodes.childOrganizations = this.state.organizations.filter(\r\n (item) => item.parentId === nodes.id\r\n );\r\n\r\n return (\r\n \r\n \r\n {nodes.name}\r\n \r\n \r\n }\r\n >\r\n {users.map((user) => {\r\n return (\r\n \r\n {user.lastName + ' ' + user.firstName}
\r\n \r\n );\r\n })}\r\n {Array.isArray(nodes.childOrganizations)\r\n ? nodes.childOrganizations.map((node) => this.renderTree(node))\r\n : null}\r\n \r\n );\r\n };\r\n\r\n render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n\r\n {this.state.isLoading ? null : (\r\n }\r\n defaultExpanded={this.state.ids}\r\n defaultExpandIcon={}\r\n >\r\n {this.renderTree(this.state.hoOrganization)}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(OrganizationUsers as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Box,\r\n TextField,\r\n Card,\r\n CardContent,\r\n Tabs,\r\n Tab,\r\n Switch,\r\n FormControlLabel,\r\n Chip\r\n} from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { OrganizationInterface } from '../../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MaterialTable, { Column, Icons } from 'material-table';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { forwardRef } from 'react';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ninterface IOrganizationInterfacesState {\r\n interfaces: OrganizationInterface[];\r\n isLoading: boolean;\r\n organizationId: number;\r\n}\r\n\r\ntype OrganizationInterfacesProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass OrganizationInterfaces extends React.PureComponent<\r\n OrganizationInterfacesProps,\r\n IOrganizationInterfacesState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n interfaces: [],\r\n isLoading: true,\r\n organizationId: 0\r\n } as IOrganizationInterfacesState;\r\n\r\n componentDidMount = () => {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadData();\r\n }\r\n );\r\n };\r\n\r\n loadData = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n try {\r\n const data = await this.organizationService.GetOrganizationInterfaces(hoId);\r\n\r\n this.setState({\r\n interfaces: data,\r\n isLoading: false,\r\n organizationId: hoId\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n return [\r\n {\r\n field: 'clientAccess',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_INTERFACE_CLIENT_ACCESS_HEADER',\r\n 'Acces client'\r\n ),\r\n render: (rowData: any) => {\r\n return (\r\n \r\n }\r\n label={''}\r\n />\r\n );\r\n },\r\n editComponent: (props) => (\r\n props.onChange(e.target.checked)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={''}\r\n />\r\n )\r\n } as Column,\r\n {\r\n field: 'supportsOAuth2',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_INTERFACE_CLIENT_OAUTH2_HEADER',\r\n 'OAuth2'\r\n ),\r\n render: (rowData: any) => {\r\n return (\r\n \r\n }\r\n label={''}\r\n />\r\n );\r\n },\r\n editComponent: (props) => (\r\n props.onChange(e.target.checked)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={''}\r\n />\r\n )\r\n } as Column,\r\n {\r\n field: 'aftSupplier',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_INTERFACE_AFT_SUPPLIER_HEADER',\r\n 'Uleiul Grupului'\r\n ),\r\n render: (rowData: any) => {\r\n return (\r\n \r\n }\r\n label={''}\r\n />\r\n );\r\n },\r\n editComponent: (props) => (\r\n props.onChange(e.target.checked)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={''}\r\n />\r\n )\r\n } as Column,\r\n {\r\n field: 'smallPartPercentage',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_SMALL_PART_PERCENTAGE_HEADER', 'Piese mici %'),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'code',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_CODE_HEADER', 'Cod'),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'url',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_URL_HEADER', 'URL'),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'port',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_PORT_HEADER', 'Port'),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'refreshTokenValidUntil',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_STATUS_HEADER', 'Status'),\r\n editable: 'never',\r\n render: (rowData: OrganizationInterface) => {\r\n if (!rowData.supportsOAuth2) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (!rowData.refreshTokenValidUntil) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (\r\n rowData.refreshTokenValidUntil &&\r\n moment.utc(rowData.refreshTokenValidUntil).isAfter(moment.utc())\r\n ) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n editComponent: (props: any) => {\r\n if (!props.rowData.supportsOAuth2) {\r\n return <>;\r\n }\r\n return (\r\n props.onChange(e.target.value)}\r\n />\r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'userName',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_UER_HEADER', 'Utilizator'),\r\n searchable: true,\r\n render: (props: OrganizationInterface) => {\r\n if (props.clientAccess) {\r\n return '-';\r\n }\r\n\r\n return props.userName;\r\n },\r\n editComponent: (props: any) => {\r\n if (props.rowData.clientAccess) {\r\n return <>;\r\n }\r\n\r\n return (\r\n props.onChange(e.target.value)}\r\n />\r\n );\r\n }\r\n },\r\n {\r\n field: 'password',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_PASSWORD_HEADER', 'Parola'),\r\n render: (props: OrganizationInterface) => {\r\n if (props.clientAccess) {\r\n return '-';\r\n }\r\n return '***';\r\n },\r\n editComponent: (props: any) => {\r\n if (props.rowData.clientAccess) {\r\n return <>;\r\n }\r\n\r\n return (\r\n props.onChange(e.target.value)}\r\n />\r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'customerId',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_INTERFACE_CUSTOMER_ID_HEADER',\r\n 'Client Id'\r\n ),\r\n searchable: true,\r\n render: (props: OrganizationInterface) => {\r\n if (props.clientAccess) {\r\n return '-';\r\n }\r\n\r\n if (props.supportsOAuth2) {\r\n return '***';\r\n }\r\n\r\n return props.customerId;\r\n },\r\n editComponent: (props: any) => {\r\n if (props.rowData.clientAccess) {\r\n return <>;\r\n }\r\n\r\n return (\r\n props.onChange(e.target.value)}\r\n />\r\n );\r\n }\r\n },\r\n {\r\n field: 'secondUser',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_INTERFACE_SECOND_USER_HEADER',\r\n 'Utilizator 2'\r\n ),\r\n searchable: true,\r\n render: (props: OrganizationInterface) => {\r\n if (props.clientAccess || props.supportsOAuth2) {\r\n return '-';\r\n }\r\n\r\n return props.secondUser;\r\n },\r\n editComponent: (props: any) => {\r\n if (props.rowData.clientAccess || props.supportsOAuth2) {\r\n return <>;\r\n }\r\n\r\n return (\r\n props.onChange(e.target.value)}\r\n />\r\n );\r\n }\r\n },\r\n {\r\n field: 'token',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_INTERFACE_TOKEN_HEADER',\r\n 'Token'\r\n ),\r\n searchable: true,\r\n render: (props: OrganizationInterface) => {\r\n if (props.clientAccess) {\r\n return '-';\r\n }\r\n\r\n if (props.supportsOAuth2) {\r\n return '***';\r\n }\r\n\r\n return props.token;\r\n },\r\n editComponent: (props: any) => {\r\n if (props.rowData.clientAccess || props.supportsOAuth2) {\r\n return <>;\r\n }\r\n\r\n return (\r\n props.onChange(e.target.value)}\r\n />\r\n );\r\n }\r\n }\r\n ];\r\n };\r\n\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n deleteTooltip: this.translatorService.Tranlate('DELETE', 'Sterge'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza'),\r\n deleteText: this.translatorService.Tranlate(\r\n 'DELETE_TEXT',\r\n 'Sigur doriti sa stergeti aceasta inregistrare?'\r\n )\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n\r\n onRowUpdate = (newData: OrganizationInterface, oldData?: OrganizationInterface): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n await this.organizationService.UpdateOrganizationInterface(newData);\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n onRowDelete = (oldData: OrganizationInterface): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n await this.organizationService.RemoveOrganizationInterface(oldData.id);\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n onRowAdd = (newData: OrganizationInterface): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n try {\r\n newData.organizationId = this.state.organizationId;\r\n\r\n await this.organizationService.AddOrganizationInterface(newData);\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n return (\r\n this.onRowAdd(newData),\r\n onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData),\r\n onRowDelete: (oldData: any) => this.onRowDelete(oldData)\r\n }}\r\n />\r\n );\r\n };\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: OrganizationInterfacesProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(OrganizationInterfaces as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Box, Select, MenuItem, Card, CardContent, Tabs, Tab } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { OrganizationParameter } from '../../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MaterialTable, { Column, EditComponentProps, Icons } from 'material-table';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { forwardRef } from 'react';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ninterface IOrganizationParametersState {\r\n parameters: OrganizationParameter[];\r\n isLoading: boolean;\r\n organizationId: number;\r\n parameterTypeList: IReferential[];\r\n}\r\n\r\ntype OrganizationParametersProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass OrganizationParameters extends React.PureComponent<\r\n OrganizationParametersProps,\r\n IOrganizationParametersState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n parameters: [],\r\n isLoading: true,\r\n organizationId: 0,\r\n parameterTypeList: []\r\n } as IOrganizationParametersState;\r\n\r\n componentDidMount = () => {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadData();\r\n }\r\n );\r\n };\r\n\r\n loadData = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n try {\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CompanyParameter\r\n );\r\n const [data, parameterList] = await Promise.all([\r\n this.organizationService.GetOrganizationParameters(hoId),\r\n this.appReferentialService.Get(ref!.baseUrl)\r\n ]);\r\n\r\n this.setState({\r\n parameters: data,\r\n isLoading: false,\r\n organizationId: hoId,\r\n parameterTypeList: parameterList.filter((item) => item.isActive === true)\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const lookup = this.state.parameterTypeList.reduce(function (\r\n acc: any,\r\n cur: IReferential,\r\n i: number\r\n ) {\r\n acc[cur.id] = cur.displayName;\r\n\r\n return acc;\r\n },\r\n {});\r\n\r\n return [\r\n {\r\n field: 'parameterId',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_PARAMETERS_PARAMETER_TYPE_HEADER',\r\n 'Parametru'\r\n ),\r\n searchable: true,\r\n lookup: lookup,\r\n render: (rowData: OrganizationParameter) => {\r\n return rowData.parameter!.displayName;\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.value)}\r\n >\r\n {this.state.parameterTypeList.map((item) => (\r\n \r\n {item.displayName}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'value',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_PARAMETERS_PARAMETER_VALUE_HEADER',\r\n 'Valoare'\r\n ),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'date',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_PARAMETERS_PARAMETER_DATE_HEADER',\r\n 'De la'\r\n ),\r\n defaultSort: 'desc',\r\n type: 'date',\r\n searchable: true,\r\n render: (rowData: OrganizationParameter) => {\r\n return moment(rowData.date).format(this.props.appState.dateFormat);\r\n }\r\n } as Column,\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_PARAMETERS_MODIFIED_DATE_HEADER',\r\n 'Data modificare'\r\n ),\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .format(this.props.appState.longDateFormat);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column\r\n ];\r\n };\r\n\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n deleteTooltip: this.translatorService.Tranlate('DELETE', 'Sterge'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza'),\r\n deleteText: this.translatorService.Tranlate(\r\n 'DELETE_TEXT',\r\n 'Sigur doriti sa stergeti aceasta inregistrare?'\r\n )\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n\r\n onRowUpdate = (newData: OrganizationParameter, oldData?: OrganizationParameter): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n if (moment.isDate(newData.date)) {\r\n newData.date = moment.utc(newData.date.toDateString()).local().toDate();\r\n }\r\n newData.parameter = null;\r\n await this.organizationService.UpdateOrganizationParameter(newData);\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n onRowDelete = (oldData: OrganizationParameter): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n await this.organizationService.RemoveOrganizationParameter(oldData.id);\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n onRowAdd = (newData: OrganizationParameter): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n try {\r\n newData.organizationId = this.state.organizationId;\r\n\r\n await this.organizationService.AddOrganizationParameter(newData);\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n return (\r\n this.onRowAdd(newData),\r\n onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData),\r\n onRowDelete: (oldData: any) => this.onRowDelete(oldData)\r\n }}\r\n />\r\n );\r\n };\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: OrganizationParametersProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(OrganizationParameters as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { OrganizationCaseType } from '../../../../interfaces/Organization';\r\nimport { ITranslatorService } from '../../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../../services/Interfaces/IOrganizationService';\r\nimport { Box, Button, IconButton, Card, CardContent } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IReferential } from '../../../../interfaces/IReferential';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../../helpers/Constants';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\r\nimport KeyboardArrowUpIcon from '@material-ui/icons/KeyboardArrowUp';\r\n\r\ninterface IOrganizationCaseState {\r\n organizationCases: OrganizationCaseType[];\r\n isLoading: boolean;\r\n organizationCaseTypes: IReferential[];\r\n selectedOrganizationCaseType: IReferential | null;\r\n organizationId: number;\r\n}\r\n\r\ntype IOrganizationCaseProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass OrganizationCaseTypeTab extends React.PureComponent<\r\n IOrganizationCaseProps,\r\n IOrganizationCaseState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n organizationCases: [],\r\n isLoading: false,\r\n organizationCaseTypes: [],\r\n selectedOrganizationCaseType: null,\r\n organizationId: 0\r\n } as IOrganizationCaseState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizationCases();\r\n }\r\n );\r\n }\r\n\r\n loadOrganizationCases = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n const ref = Referentials.referential.find((item) => item.code === ReferentialCode.CaseType);\r\n\r\n const [orgCaseList, orgCaseTypes] = await Promise.all([\r\n this.organizationService.GetOrganizationCaseType(hoId),\r\n this.appReferentialService.Get(ref!.baseUrl)\r\n ]);\r\n\r\n let organizationCases = orgCaseList.sort(function (a, b) {\r\n return a.order - b.order;\r\n });\r\n organizationCases = organizationCases.map((item: OrganizationCaseType) => {\r\n item.caseType = orgCaseTypes.find(\r\n (caseType: IReferential) => caseType.id === item.caseTypeId\r\n )!;\r\n return item;\r\n });\r\n\r\n this.setState({\r\n organizationCases: organizationCases,\r\n organizationCaseTypes: orgCaseTypes.filter((item) => item.isActive === true),\r\n isLoading: false,\r\n organizationId: hoId\r\n });\r\n };\r\n\r\n deleteOrgCase = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.organizationService.RemoveOrganizationCaseType(id);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadOrganizationCases();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n moveUp = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const cloneArray = [...this.state.organizationCases];\r\n const itemToMoveUpIndex = cloneArray.findIndex((item) => item.id === id);\r\n\r\n if (itemToMoveUpIndex === -1) {\r\n return;\r\n }\r\n if (cloneArray[itemToMoveUpIndex].order === 1) {\r\n return;\r\n }\r\n\r\n const itemToMoveDownIndex = cloneArray.findIndex(\r\n (item) => item.order === cloneArray[itemToMoveUpIndex].order - 1\r\n );\r\n\r\n cloneArray[itemToMoveUpIndex] = {\r\n ...cloneArray[itemToMoveUpIndex],\r\n order: cloneArray[itemToMoveUpIndex].order - 1\r\n };\r\n cloneArray[itemToMoveDownIndex] = {\r\n ...cloneArray[itemToMoveDownIndex],\r\n order: cloneArray[itemToMoveDownIndex].order + 1\r\n };\r\n\r\n try {\r\n await this.organizationService.UpdateOrganizationCaseType(cloneArray[itemToMoveUpIndex]);\r\n await this.organizationService.UpdateOrganizationCaseType(cloneArray[itemToMoveDownIndex]);\r\n\r\n this.setState({\r\n organizationCases: cloneArray.sort(function (a, b) {\r\n return a.order - b.order;\r\n })\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n moveDown = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const cloneArray = [...this.state.organizationCases];\r\n const itemToMoveIndex = cloneArray.findIndex((item) => item.id === id);\r\n\r\n if (itemToMoveIndex === -1) {\r\n return;\r\n }\r\n if (cloneArray[itemToMoveIndex].order === cloneArray.length) {\r\n return;\r\n }\r\n\r\n const itemToMoveToIndex = cloneArray.findIndex(\r\n (item) => item.order === cloneArray[itemToMoveIndex].order + 1\r\n );\r\n\r\n cloneArray[itemToMoveIndex] = {\r\n ...cloneArray[itemToMoveIndex],\r\n order: cloneArray[itemToMoveIndex].order + 1\r\n };\r\n cloneArray[itemToMoveToIndex] = {\r\n ...cloneArray[itemToMoveToIndex],\r\n order: cloneArray[itemToMoveToIndex].order - 1\r\n };\r\n\r\n try {\r\n await this.organizationService.UpdateOrganizationCaseType(cloneArray[itemToMoveIndex]);\r\n await this.organizationService.UpdateOrganizationCaseType(cloneArray[itemToMoveToIndex]);\r\n\r\n this.setState({\r\n organizationCases: cloneArray.sort(function (a, b) {\r\n return a.order - b.order;\r\n })\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseType',\r\n label: this.translatorService.Tranlate('ORGANIZATIONS_CASE_TYPE_HEADER', 'Tip dosar'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: IReferential) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'order',\r\n sortDirection: 'asc',\r\n label: this.translatorService.Tranlate('ORGANIZATION_CASE_ORDER_HEADER', 'Ord'),\r\n options: { sort: false }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n sortOrder: {\r\n name: 'order',\r\n direction: 'asc'\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n this.moveUp(e, tableMeta)}>\r\n \r\n \r\n this.moveDown(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deleteOrgCase(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addOrgCase = async () => {\r\n try {\r\n await this.organizationService.AddOrganizationCaseType({\r\n order: this.state.organizationCases.length + 1,\r\n caseTypeId: this.state.selectedOrganizationCaseType!.id,\r\n organizationId: this.state.organizationId\r\n } as OrganizationCaseType);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedOrganizationCaseType: null\r\n },\r\n () => {\r\n this.loadOrganizationCases();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleAutocompleteChange = (newValue: IReferential | null) => {\r\n this.setState({ selectedOrganizationCaseType: newValue });\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.handleAutocompleteChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(OrganizationCaseTypeTab as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n OrganizationCaseType,\r\n OrganizationCaseTypeStep\r\n} from '../../../../interfaces/Organization';\r\nimport { ITranslatorService } from '../../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../../services/Interfaces/IOrganizationService';\r\nimport { Box, Button, IconButton, Card, CardContent } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IReferential } from '../../../../interfaces/IReferential';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../../helpers/Constants';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\r\nimport KeyboardArrowUpIcon from '@material-ui/icons/KeyboardArrowUp';\r\n\r\ninterface IOrganizationCaseTypeStepState {\r\n organizationCaseTypeSteps: OrganizationCaseTypeStep[];\r\n isLoading: boolean;\r\n organizationCaseTypes: OrganizationCaseType[];\r\n organizationCaseStepTypes: IReferential[];\r\n selectedOrganizationCaseType: OrganizationCaseType | null;\r\n selectedOrganizationCaseStepType: IReferential | null;\r\n organizationId: number;\r\n}\r\n\r\ntype IOrganizationCaseTypeStepProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass OrganizationCaseTypeStepTab extends React.PureComponent<\r\n IOrganizationCaseTypeStepProps,\r\n IOrganizationCaseTypeStepState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n organizationCaseTypeSteps: [],\r\n isLoading: false,\r\n organizationCaseTypes: [],\r\n organizationCaseStepTypes: [],\r\n selectedOrganizationCaseType: null,\r\n selectedOrganizationCaseStepType: null,\r\n organizationId: 0\r\n } as IOrganizationCaseTypeStepState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizationSteps(null);\r\n }\r\n );\r\n }\r\n\r\n loadOrganizationSteps = async (caseTypeId: number | null) => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n const refCaseType = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CaseType\r\n );\r\n const refSteps = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.NewCaseSteps\r\n );\r\n\r\n const [orgCaseList, orgCaseTypes, orgStepList, orgStepTypes] = await Promise.all([\r\n this.organizationService.GetOrganizationCaseType(hoId),\r\n this.appReferentialService.Get(refCaseType!.baseUrl),\r\n caseTypeId === null ? [] : this.organizationService.GetOrganizationCaseTypeStep(caseTypeId),\r\n this.appReferentialService.Get(refSteps!.baseUrl)\r\n ]);\r\n\r\n const orgCaseList1 = orgCaseList.map((item: OrganizationCaseType) => {\r\n item.caseType = orgCaseTypes.find(\r\n (caseType: IReferential) => caseType.id === item.caseTypeId\r\n )!;\r\n return item;\r\n });\r\n\r\n this.setState({\r\n organizationCaseTypeSteps: orgStepList.sort(function (a, b) {\r\n return a.order - b.order;\r\n }),\r\n organizationCaseTypes: orgCaseList1,\r\n organizationCaseStepTypes: orgStepTypes.filter((item) => item.isActive === true),\r\n isLoading: false,\r\n organizationId: hoId\r\n });\r\n };\r\n\r\n reloadOrganizationSteps = async (caseTypeId: number | null) => {\r\n const [orgStepList] = await Promise.all([\r\n caseTypeId === null ? [] : this.organizationService.GetOrganizationCaseTypeStep(caseTypeId)\r\n ]);\r\n\r\n this.setState({\r\n organizationCaseTypeSteps: orgStepList.sort(function (a, b) {\r\n return a.order - b.order;\r\n }),\r\n isLoading: false\r\n });\r\n };\r\n\r\n deleteOrgLevel = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.organizationService.RemoveOrganizationCaseTypeStep(id);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.reloadOrganizationSteps(this.state.selectedOrganizationCaseType!.id);\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n moveUp = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const cloneArray = [...this.state.organizationCaseTypeSteps];\r\n const itemToMoveUpIndex = cloneArray.findIndex((item) => item.id === id);\r\n\r\n if (itemToMoveUpIndex === -1) {\r\n return;\r\n }\r\n if (cloneArray[itemToMoveUpIndex].order === 1) {\r\n return;\r\n }\r\n\r\n const itemToMoveDownIndex = cloneArray.findIndex(\r\n (item) => item.order === cloneArray[itemToMoveUpIndex].order - 1\r\n );\r\n\r\n cloneArray[itemToMoveUpIndex] = {\r\n ...cloneArray[itemToMoveUpIndex],\r\n order: cloneArray[itemToMoveUpIndex].order - 1\r\n };\r\n cloneArray[itemToMoveDownIndex] = {\r\n ...cloneArray[itemToMoveDownIndex],\r\n order: cloneArray[itemToMoveDownIndex].order + 1\r\n };\r\n\r\n try {\r\n await this.organizationService.UpdateOrganizationCaseTypeStep(cloneArray[itemToMoveUpIndex]);\r\n await this.organizationService.UpdateOrganizationCaseTypeStep(\r\n cloneArray[itemToMoveDownIndex]\r\n );\r\n\r\n this.setState({\r\n organizationCaseTypeSteps: cloneArray.sort(function (a, b) {\r\n return a.order - b.order;\r\n })\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n moveDown = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const cloneArray = [...this.state.organizationCaseTypeSteps];\r\n const itemToMoveIndex = cloneArray.findIndex((item) => item.id === id);\r\n\r\n if (itemToMoveIndex === -1) {\r\n return;\r\n }\r\n if (cloneArray[itemToMoveIndex].order === cloneArray.length) {\r\n return;\r\n }\r\n\r\n const itemToMoveToIndex = cloneArray.findIndex(\r\n (item) => item.order === cloneArray[itemToMoveIndex].order + 1\r\n );\r\n\r\n cloneArray[itemToMoveIndex] = {\r\n ...cloneArray[itemToMoveIndex],\r\n order: cloneArray[itemToMoveIndex].order + 1\r\n };\r\n cloneArray[itemToMoveToIndex] = {\r\n ...cloneArray[itemToMoveToIndex],\r\n order: cloneArray[itemToMoveToIndex].order - 1\r\n };\r\n\r\n try {\r\n await this.organizationService.UpdateOrganizationCaseTypeStep(cloneArray[itemToMoveIndex]);\r\n await this.organizationService.UpdateOrganizationCaseTypeStep(cloneArray[itemToMoveToIndex]);\r\n\r\n this.setState({\r\n organizationCaseTypeSteps: cloneArray.sort(function (a, b) {\r\n return a.order - b.order;\r\n })\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'organizationStep',\r\n label: this.translatorService.Tranlate('ORGANIZATIONS_CASE_STEP_HEADER', 'Pas'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: IReferential) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'order',\r\n sortDirection: 'asc',\r\n label: this.translatorService.Tranlate('ORGANIZATION_CASE_STEP_ORDER_HEADER', 'Ord'),\r\n options: { sort: false }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n sortOrder: {\r\n name: 'order',\r\n direction: 'asc'\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n this.moveUp(e, tableMeta)}>\r\n \r\n \r\n this.moveDown(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deleteOrgLevel(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addOrgStep = async () => {\r\n try {\r\n await this.organizationService.AddOrganizationCaseTypeStep({\r\n order: this.state.organizationCaseTypeSteps.length + 1,\r\n stepId: this.state.selectedOrganizationCaseStepType!.id,\r\n organizationCaseTypeId: this.state.selectedOrganizationCaseType!.id\r\n } as OrganizationCaseTypeStep);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedOrganizationCaseStepType: null\r\n },\r\n () => {\r\n this.reloadOrganizationSteps(this.state.selectedOrganizationCaseType!.id);\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleAutocompleteCaseChange = (newValue: any | null) => {\r\n this.setState(\r\n {\r\n selectedOrganizationCaseType: newValue,\r\n isLoading: true\r\n },\r\n () => {\r\n this.reloadOrganizationSteps(newValue === null ? null : newValue.id);\r\n }\r\n );\r\n };\r\n\r\n handleAutocompleteStepChange = (newValue: IReferential | null) => {\r\n this.setState({ selectedOrganizationCaseStepType: newValue });\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.handleAutocompleteCaseChange(newValue)\r\n }\r\n getOptionLabel={(option: OrganizationCaseType) => option.caseType!.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleAutocompleteStepChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(OrganizationCaseTypeStepTab as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { OrganizationCaseTypeStepForm } from '../../../../interfaces/Organization';\r\nimport { ITranslatorService } from '../../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../../services/Interfaces/IOrganizationService';\r\nimport { Box, Button, Card, CardContent, Grid } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IReferentialService } from '../../../../services/Interfaces/IReferentialService';\r\nimport * as monacoEditor from 'monaco-editor/esm/vs/editor/editor.api';\r\nimport { ControlledEditor } from '@monaco-editor/react';\r\nimport { WrapperSimple } from '../../../../layout-components';\r\nimport JSONSchemaForm from '@rjsf/material-ui';\r\n\r\ninterface IOrganizationFormDesignState {\r\n organizationForm: OrganizationCaseTypeStepForm;\r\n formData: any;\r\n isLoading: boolean;\r\n}\r\nexport interface ExternalOrganizationFormDesignProps {\r\n organizationFormId: number;\r\n}\r\n\r\ntype IOrganizationFormDesignProps = ExternalOrganizationFormDesignProps & {\r\n appState: AppState;\r\n} & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass EditOrganizationFormDesign extends React.PureComponent<\r\n IOrganizationFormDesignProps,\r\n IOrganizationFormDesignState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n organizationForm: {},\r\n formData: {},\r\n isLoading: false\r\n } as IOrganizationFormDesignState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizationFormDesign();\r\n }\r\n );\r\n }\r\n\r\n loadOrganizationFormDesign = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n let organizationForm = {} as OrganizationCaseTypeStepForm;\r\n if (this.props.organizationFormId !== 0) {\r\n organizationForm = await this.organizationService.GetOrganizationCaseTypeStepForm(\r\n this.props.organizationFormId\r\n );\r\n }\r\n\r\n // organizationForm.json2 = JSON.stringify(json2, null, 2);\r\n this.setState({\r\n organizationForm: organizationForm,\r\n isLoading: false\r\n });\r\n };\r\n handleEditorDidMountJsonSchema = (\r\n ev: monacoEditor.editor.IModelContentChangedEvent,\r\n value: string | undefined\r\n ) => {\r\n const orgFormDesign = { ...this.state.organizationForm };\r\n //= value ? value : \"\";\r\n const BAD_WORD = 'eval';\r\n const WORNING_MESSAGE = \" <- hey man, what's this?\";\r\n orgFormDesign.json1 =\r\n value !== undefined && value.includes(BAD_WORD) && !value.includes(WORNING_MESSAGE)\r\n ? value.replace(BAD_WORD, BAD_WORD + WORNING_MESSAGE)\r\n : value!.includes(WORNING_MESSAGE) && !value!.includes(BAD_WORD)\r\n ? value!.replace(WORNING_MESSAGE, '')\r\n : value!;\r\n\r\n this.setState({ organizationForm: orgFormDesign });\r\n };\r\n handleEditorDidMountUISchema = (\r\n ev: monacoEditor.editor.IModelContentChangedEvent,\r\n value: string | undefined\r\n ) => {\r\n const orgFormDesign = { ...this.state.organizationForm };\r\n orgFormDesign.json2 = value ? value : '';\r\n this.setState({ organizationForm: orgFormDesign });\r\n };\r\n // handleChandeFormData = (e: IChangeEvent) => {\r\n // // const formData = value ? value : \"\";\r\n // debugger\r\n // this.setState({ formData: e.formData })\r\n // }\r\n getSchema = () => {\r\n let json = {};\r\n\r\n if (Object.keys(this.state.organizationForm).length !== 0) {\r\n try {\r\n json = JSON.parse(this.state.organizationForm.json1);\r\n } catch (error) {}\r\n }\r\n return json;\r\n };\r\n\r\n getUISchema = () => {\r\n let json = {};\r\n\r\n if (Object.keys(this.state.organizationForm).length !== 0) {\r\n try {\r\n json = JSON.parse(this.state.organizationForm.json2);\r\n } catch (error) {}\r\n }\r\n return json;\r\n };\r\n\r\n save = async () => {\r\n try {\r\n await this.organizationService.UpdateOrganizationCaseTypeStepForm(\r\n this.state.organizationForm\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n \r\n \r\n \r\n */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* formData={this.state.formData} onChange={(e) => this.handleChandeFormData(e)} */}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalOrganizationFormDesignProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n null,\r\n mergeProps\r\n)(withSnackbar(EditOrganizationFormDesign as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Grid, Button, Card, Tabs, Tab, CardContent } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../../context/Contexts';\r\nimport { Language, OrganizationCaseTypeStepForm } from '../../../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../../../services/Interfaces/IOrganizationService';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { WrapperSimple } from '../../../../layout-components';\r\nimport { IReferentialService } from '../../../../services/Interfaces/IReferentialService';\r\nimport TabPanel from '../../../_shared/Tabs';\r\nimport EditOrganizationFormDesign from './EditOrganizationFormDesign';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { ITranslation } from '../../../../interfaces/IReferential';\r\n\r\ninterface IEditOrganizationFormState {\r\n organizationForm: OrganizationCaseTypeStepForm;\r\n selectedTab: number;\r\n languages: Language[];\r\n isLoading: boolean;\r\n}\r\n\r\nexport interface ExternalEditOrganizationFormsProps {\r\n organizationFormChanged?: (close: boolean) => void;\r\n organizationFormId: number;\r\n}\r\n\r\ntype EditOrganizationFormProps = { appState: AppState } & ProviderContext &\r\n ExternalEditOrganizationFormsProps &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass EditOrganizationForm extends React.PureComponent<\r\n EditOrganizationFormProps,\r\n IEditOrganizationFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n organizationForm: {} as OrganizationCaseTypeStepForm,\r\n selectedTab: 0,\r\n languages: [],\r\n isLoading: true\r\n } as IEditOrganizationFormState;\r\n\r\n public async componentDidMount() {\r\n // const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n let organizationForm = {} as OrganizationCaseTypeStepForm;\r\n const languages = this.activeLanguages();\r\n\r\n if (this.props.organizationFormId !== 0) {\r\n organizationForm = await this.organizationService.GetOrganizationCaseTypeStepForm(\r\n this.props.organizationFormId\r\n );\r\n }\r\n\r\n const formTranslations = organizationForm.translations;\r\n languages.forEach((language: Language, index: number) => {\r\n if (formTranslations.length === 0) {\r\n formTranslations.push({\r\n id: 0,\r\n referentialTypeId: organizationForm.id,\r\n name: null,\r\n language: language.code\r\n });\r\n } else {\r\n const indexTrans = formTranslations.findIndex((trans: ITranslation) => {\r\n return language.code === trans.language;\r\n });\r\n if (indexTrans === -1) {\r\n formTranslations.push({\r\n id: 0,\r\n referentialTypeId: organizationForm.id,\r\n name: null,\r\n language: language.code\r\n });\r\n }\r\n }\r\n });\r\n organizationForm.translations = [...formTranslations];\r\n\r\n this.setState({\r\n organizationForm: organizationForm,\r\n languages: languages,\r\n isLoading: false\r\n });\r\n }\r\n activeLanguages = () => {\r\n const activeLanguages =\r\n this.props.appState.appUser!.organization!.gtOrganization!.languages!.filter(\r\n (language) => language.isActive === true\r\n );\r\n\r\n activeLanguages.forEach((language) => {\r\n language.displayName =\r\n language.displayName.charAt(0).toUpperCase() + language.displayName.slice(1);\r\n });\r\n return activeLanguages;\r\n };\r\n\r\n handleFormNameChange = (event: any, code: string | null) => {\r\n let newFormTransList = [] as ITranslation[];\r\n if (this.state.organizationForm.translations) {\r\n newFormTransList = this.state.organizationForm.translations.map((loc: any) => {\r\n if (loc.language === code) {\r\n loc.name = event.target.value;\r\n }\r\n return loc;\r\n });\r\n }\r\n this.setState({\r\n organizationForm: {\r\n ...this.state.organizationForm,\r\n translations: newFormTransList\r\n }\r\n });\r\n };\r\n\r\n compare = (a: ITranslation, b: ITranslation) => {\r\n const bandA = a.language!.toUpperCase();\r\n const bandB = b.language!.toUpperCase();\r\n\r\n let comparison = 0;\r\n if (bandA > bandB) {\r\n comparison = -1;\r\n } else if (bandA < bandB) {\r\n comparison = 1;\r\n }\r\n return comparison;\r\n };\r\n\r\n renderNameTextFields = () => {\r\n if (Object.keys(this.state.organizationForm).length === 0) {\r\n return null;\r\n } else {\r\n const nameTextFieldsList = [] as any[];\r\n\r\n this.state\r\n .organizationForm!.translations.sort(this.compare)\r\n .forEach((item: ITranslation, index: number) => {\r\n nameTextFieldsList.push(\r\n this.handleFormNameChange(e, item.language)}\r\n label={item.language}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n );\r\n });\r\n return nameTextFieldsList;\r\n }\r\n };\r\n\r\n public saveOrganizationForm = async () => {\r\n try {\r\n await this.organizationService.UpdateOrganizationCaseTypeStepForm(\r\n this.state.organizationForm\r\n );\r\n\r\n if (this.props.organizationFormChanged) {\r\n this.props.organizationFormChanged(false);\r\n }\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n public renderForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n {this.renderNameTextFields()}\r\n \r\n\r\n
\r\n \r\n this.props.organizationFormChanged\r\n ? this.props.organizationFormChanged(true)\r\n : null\r\n }\r\n >\r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n */}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderForm() : null}\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalEditOrganizationFormsProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(EditOrganizationForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n OrganizationCaseType,\r\n OrganizationCaseTypeStep,\r\n OrganizationCaseTypeStepForm,\r\n OrganizationForm\r\n} from '../../../../interfaces/Organization';\r\nimport { ITranslatorService } from '../../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../../services/Interfaces/IOrganizationService';\r\nimport {\r\n Box,\r\n Button,\r\n IconButton,\r\n Card,\r\n CardContent,\r\n DialogTitle,\r\n Dialog,\r\n Grid,\r\n Typography,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IReferential } from '../../../../interfaces/IReferential';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../../helpers/Constants';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\r\nimport KeyboardArrowUpIcon from '@material-ui/icons/KeyboardArrowUp';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport EditOrganizationForm from './EditOrganizationForm';\r\n\r\ninterface IOrganizationCaseTypeStepFormState {\r\n organizationCaseTypes: OrganizationCaseType[];\r\n organizationCaseTypeStepForms: OrganizationCaseTypeStepForm[];\r\n isLoading: boolean;\r\n organizationCaseTypeSteps: OrganizationCaseTypeStep[];\r\n organizationCaseStepFormTypes: OrganizationForm[];\r\n selectedOrganizationCaseTypeStep: OrganizationCaseTypeStep | null;\r\n selectedOrganizationCaseStepFormType: OrganizationForm | null;\r\n selectedOrganizationCaseType: OrganizationCaseType | null;\r\n organizationId: number;\r\n organizationFormId: number;\r\n isOpenDialog: boolean;\r\n}\r\n\r\ntype IOrganizationCaseTypeStepFormProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass OrganizationCaseTypeStepFormTab extends React.PureComponent<\r\n IOrganizationCaseTypeStepFormProps,\r\n IOrganizationCaseTypeStepFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n organizationCaseTypeStepForms: [],\r\n organizationCaseTypes: [],\r\n isLoading: false,\r\n organizationCaseTypeSteps: [],\r\n organizationCaseStepFormTypes: [],\r\n\r\n selectedOrganizationCaseTypeStep: null,\r\n selectedOrganizationCaseStepFormType: null,\r\n selectedOrganizationCaseType: null,\r\n organizationId: 0,\r\n organizationFormId: 0,\r\n isOpenDialog: false\r\n } as IOrganizationCaseTypeStepFormState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizationForms(0);\r\n }\r\n );\r\n }\r\n\r\n loadOrganizationForms = async (caseTypeStepId: number) => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n const refCaseType = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CaseType\r\n );\r\n\r\n const [orgCaseList, orgCaseTypes, filterCaseTypeStepForms] = await Promise.all([\r\n this.organizationService.GetOrganizationCaseType(hoId),\r\n this.appReferentialService.Get(refCaseType!.baseUrl),\r\n this.organizationService.GetOrganizationForms()\r\n ]);\r\n\r\n const organizationCaseTypes = orgCaseList.map((item: OrganizationCaseType) => {\r\n item.caseType = orgCaseTypes.find(\r\n (caseType: IReferential) => caseType.id === item.caseTypeId\r\n )!;\r\n return item;\r\n });\r\n\r\n this.setState({\r\n organizationCaseTypes: organizationCaseTypes,\r\n organizationCaseStepFormTypes: filterCaseTypeStepForms,\r\n isLoading: false,\r\n organizationId: hoId\r\n });\r\n };\r\n\r\n reloadOrganizationForms = async (caseTypeStepId: number | null) => {\r\n if (caseTypeStepId === null) {\r\n this.setState({\r\n organizationCaseTypeStepForms: [],\r\n isLoading: false\r\n });\r\n return;\r\n }\r\n\r\n const orgCaseTypeStepFormList = await this.organizationService.GetOrganizationCaseTypeStepForms(\r\n caseTypeStepId\r\n ); //orgCaseList[0].id);\r\n\r\n this.setState({\r\n organizationCaseTypeStepForms: orgCaseTypeStepFormList.sort(function (a, b) {\r\n return a.order - b.order;\r\n }),\r\n isLoading: false\r\n });\r\n };\r\n\r\n deleteOrgLevel = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.organizationService.RemoveOrganizationCaseTypeStepForm(id);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.reloadOrganizationForms(this.state.selectedOrganizationCaseTypeStep!.id);\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n moveUp = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const cloneArray = [...this.state.organizationCaseTypeStepForms];\r\n const itemToMoveUpIndex = cloneArray.findIndex((item) => item.id === id);\r\n\r\n if (itemToMoveUpIndex === -1) {\r\n return;\r\n }\r\n if (cloneArray[itemToMoveUpIndex].order === 1) {\r\n return;\r\n }\r\n\r\n const itemToMoveDownIndex = cloneArray.findIndex(\r\n (item) => item.order === cloneArray[itemToMoveUpIndex].order - 1\r\n );\r\n\r\n cloneArray[itemToMoveUpIndex] = {\r\n ...cloneArray[itemToMoveUpIndex],\r\n order: cloneArray[itemToMoveUpIndex].order - 1\r\n };\r\n cloneArray[itemToMoveDownIndex] = {\r\n ...cloneArray[itemToMoveDownIndex],\r\n order: cloneArray[itemToMoveDownIndex].order + 1\r\n };\r\n\r\n try {\r\n await this.organizationService.UpdateOrganizationCaseTypeStepForm(\r\n cloneArray[itemToMoveUpIndex]\r\n );\r\n await this.organizationService.UpdateOrganizationCaseTypeStepForm(\r\n cloneArray[itemToMoveDownIndex]\r\n );\r\n\r\n this.setState({\r\n organizationCaseTypeStepForms: cloneArray.sort(function (a, b) {\r\n return a.order - b.order;\r\n })\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n moveDown = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const cloneArray = [...this.state.organizationCaseTypeStepForms];\r\n const itemToMoveIndex = cloneArray.findIndex((item) => item.id === id);\r\n\r\n if (itemToMoveIndex === -1) {\r\n return;\r\n }\r\n if (cloneArray[itemToMoveIndex].order === cloneArray.length) {\r\n return;\r\n }\r\n\r\n const itemToMoveToIndex = cloneArray.findIndex(\r\n (item) => item.order === cloneArray[itemToMoveIndex].order + 1\r\n );\r\n\r\n cloneArray[itemToMoveIndex] = {\r\n ...cloneArray[itemToMoveIndex],\r\n order: cloneArray[itemToMoveIndex].order + 1\r\n };\r\n cloneArray[itemToMoveToIndex] = {\r\n ...cloneArray[itemToMoveToIndex],\r\n order: cloneArray[itemToMoveToIndex].order - 1\r\n };\r\n\r\n try {\r\n await this.organizationService.UpdateOrganizationCaseTypeStepForm(\r\n cloneArray[itemToMoveIndex]\r\n );\r\n await this.organizationService.UpdateOrganizationCaseTypeStepForm(\r\n cloneArray[itemToMoveToIndex]\r\n );\r\n\r\n this.setState({\r\n organizationCaseTypeStepForms: cloneArray.sort(function (a, b) {\r\n return a.order - b.order;\r\n })\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n onRowClick = (e: any, id: number) => {\r\n this.setState({ isOpenDialog: true, organizationFormId: id });\r\n };\r\n\r\n handleClose = (close: boolean) => {\r\n // if (reload)\r\n // {\r\n // this.setState({isOpenDialog: false}, async () => { await this.loadOrganizationForms()})\r\n // }\r\n // else{\r\n this.setState({ isOpenDialog: !close });\r\n // }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'form',\r\n label: this.translatorService.Tranlate('ORGANIZATIONS_CASE_STEP_FORM_HEADER', 'Forma'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.onRowClick(e, tableMeta.rowData[0])}\r\n >\r\n {value.displayName}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'order',\r\n sortDirection: 'asc',\r\n label: this.translatorService.Tranlate('ORGANIZATION_CASE_STEP_FORM_ORDER_HEADER', 'Ord'),\r\n options: { sort: false }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n sortOrder: {\r\n name: 'order',\r\n direction: 'asc'\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n this.moveUp(e, tableMeta)}>\r\n \r\n \r\n this.moveDown(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deleteOrgLevel(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addOrgForm = async () => {\r\n try {\r\n const translations = this.state.selectedOrganizationCaseStepFormType!.translations;\r\n translations.forEach((item) => {\r\n item.id = 0;\r\n item.referentialTypeId = 0;\r\n });\r\n\r\n await this.organizationService.AddOrganizationCaseTypeStepForm({\r\n id: 0,\r\n order: this.state.organizationCaseTypeStepForms.length + 1,\r\n json1: this.state.selectedOrganizationCaseStepFormType!.json1,\r\n json2: this.state.selectedOrganizationCaseStepFormType!.json2,\r\n translations: translations,\r\n organizationCaseTypeStepId: this.state.selectedOrganizationCaseTypeStep!.id,\r\n formId: this.state.selectedOrganizationCaseStepFormType!.id\r\n } as OrganizationCaseTypeStepForm);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedOrganizationCaseStepFormType: null\r\n },\r\n () => {\r\n this.reloadOrganizationForms(this.state.selectedOrganizationCaseTypeStep!.id);\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleAutocompleteStepChange = (newValue: any | null) => {\r\n this.setState({ selectedOrganizationCaseTypeStep: newValue, isLoading: true }, () => {\r\n this.reloadOrganizationForms(newValue === null ? null : newValue.id);\r\n });\r\n };\r\n\r\n handleAutocompleteFormChange = (newValue: any | null) => {\r\n this.setState({ selectedOrganizationCaseStepFormType: newValue });\r\n };\r\n\r\n handleAutocompleteCaseChange = async (newValue: any | null) => {\r\n if (newValue === null) {\r\n this.setState(\r\n {\r\n selectedOrganizationCaseType: null,\r\n organizationCaseTypeSteps: [],\r\n selectedOrganizationCaseTypeStep: null,\r\n isLoading: true\r\n },\r\n () => {\r\n this.reloadOrganizationForms(newValue === null ? null : newValue.id);\r\n }\r\n );\r\n return;\r\n }\r\n const orgCaseTypeStepList = await this.organizationService.GetOrganizationCaseTypeStep(\r\n newValue.id\r\n );\r\n this.setState(\r\n {\r\n selectedOrganizationCaseType: newValue,\r\n organizationCaseTypeSteps: orgCaseTypeStepList,\r\n selectedOrganizationCaseTypeStep: null,\r\n isLoading: true\r\n },\r\n () => {\r\n this.reloadOrganizationForms(null);\r\n }\r\n );\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.handleAutocompleteCaseChange(newValue)\r\n }\r\n getOptionLabel={(option: OrganizationCaseType) => option.caseType!.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleAutocompleteStepChange(newValue)\r\n }\r\n getOptionLabel={(option: OrganizationCaseTypeStep) =>\r\n option.organizationStep!.displayName || ''\r\n }\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleAutocompleteFormChange(newValue)\r\n }\r\n getOptionLabel={(option: any) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'ORGANIZATION_EDIT_FORM_MODAL_TITLE',\r\n 'Configurare forma'\r\n )}\r\n \r\n \r\n \r\n this.handleClose(true)}\r\n size={'small'}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.handleClose(close)}\r\n />\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(OrganizationCaseTypeStepFormTab as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from '../../../../store';\r\nimport { withSnackbar } from 'notistack';\r\nimport { Card, Tabs, Tab, CardContent, Box } from '@material-ui/core';\r\nimport TabPanel from '../../../_shared/Tabs';\r\nimport { ITranslatorService } from '../../../../services/Interfaces/ITranslatorService';\r\nimport { IOrganizationService } from '../../../../services/Interfaces/IOrganizationService';\r\nimport { ApplicationContext, AppContext } from '../../../../context/Contexts';\r\nimport OrganizationCaseTypeTab from './OrganizationCaseTypeTab';\r\nimport OrganizationCaseTypeStepTab from './OrganizationCaseTypeStepTab';\r\nimport OrganizationCaseTypeStepFormTab from './OrganizationCaseTypeStepFormTab';\r\n\r\ninterface ICaseState {\r\n selectedTab: number;\r\n}\r\nclass OrganizationNewCaseType extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = { selectedTab: 0 };\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(OrganizationNewCaseType as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Button,\r\n Card,\r\n Box,\r\n Divider,\r\n Grid,\r\n IconButton,\r\n Tooltip,\r\n Slider,\r\n FormControlLabel,\r\n Switch\r\n} from '@material-ui/core';\r\nimport Autocomplete, { RenderInputParams } from '@material-ui/lab/Autocomplete';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { DateLaborService, Tariff, TariffType, TariffValue } from '../../../interfaces/Tariff';\r\nimport { ITariffService } from '../../../services/Interfaces/ITariffService';\r\nimport moment from 'moment';\r\n\r\nimport { MuiPickersUtilsProvider, DatePicker } from '@material-ui/pickers';\r\nimport NumberFormat from 'react-number-format';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { CountryCodeEnum, ReferentialCode, RoleClaimsEnum, TariffCategoryCodeEnum } from '../../../helpers/Constants';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport EditCircleTwoToneIcon from '@material-ui/icons/EditTwoTone';\r\nimport DeleteCircleTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport RemoveIcon from '@material-ui/icons/RemoveCircleOutlineTwoTone';\r\nimport MomentUtils from '@date-io/moment';\r\nimport 'moment/locale/en-gb';\r\nimport 'moment/locale/ro';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport _ from 'lodash';\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\ninterface TariffIntervalValue {\r\n start: number;\r\n end: number;\r\n value: number;\r\n}\r\n\r\ninterface IEditTarifLaborTabState {\r\n tariffValues: TariffValue[];\r\n isLoading: boolean;\r\n activeAction: number;\r\n\r\n selectedTariffTypes: TariffType[];\r\n selectedBrands: IReferential[];\r\n selectedDate: Date | null;\r\n selectedValue: number;\r\n selectedOfferValue: number;\r\n selectedMarginValue: number;\r\n isVehicleAge: boolean;\r\n selectedSliderValues: number[];\r\n selectedValues: number[];\r\n selectedOfferValues: number[];\r\n selectedMarginValues: number[];\r\n\r\n minDate: Date;\r\n tariffTypeList: TariffType[];\r\n brandList: IReferential[];\r\n insurerList: IReferential[];\r\n selectedInsurer: IReferential[];\r\n}\r\n\r\nexport interface ExternalEditTarifLaborTabProps {\r\n tariffId: number;\r\n tariffGroupTypeId: number;\r\n tariffGroupTypeName: string;\r\n tariffGroupTypeCode: string;\r\n currency: string;\r\n tariff: Tariff;\r\n}\r\n\r\ntype EditTarifLaborTabProps = { appState: AppState } & ProviderContext &\r\n ExternalEditTarifLaborTabProps &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nconst START = 0;\r\nconst END = 10;\r\nconst DEFAULT = 5;\r\nconst MAXLOBOURVALUE = 600;\r\n\r\nclass EditTarifLaborTabf extends React.PureComponent<\r\n EditTarifLaborTabProps,\r\n IEditTarifLaborTabState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n private tariffService!: ITariffService;\r\n\r\n momutil = new MomentUtils();\r\n static contextType = ApplicationContext;\r\n\r\n defaultBrand = {\r\n name: 'All', //this.translatorService.Tranlate(\"SELECT_ALL_OPTION\", \"Toate\"),\r\n displayName: 'All', //this.translatorService.Tranlate(\"SELECT_ALL_OPTION\", \"Toate\"),\r\n id: -1,\r\n isActive: true\r\n } as IReferential;\r\n\r\n defaultInsurer = {\r\n name: 'None', //this.translatorService.Tranlate('SELECT_NONE_OPTION', 'Niciunul'),\r\n displayName: 'None', //this.translatorService.Tranlate('SELECT_NONE_OPTION', 'Niciunul'),\r\n id: -1,\r\n isActive: true\r\n } as IReferential;\r\n\r\n state = {\r\n tariffValues: [] as TariffValue[],\r\n isLoading: true,\r\n isVehicleAge: false,\r\n activeAction: 0,\r\n selectedTariffTypes: [] as TariffType[],\r\n selectedBrands: [this.defaultBrand] as IReferential[],\r\n minDate: new Date(),\r\n tariffTypeList: [] as TariffType[],\r\n brandList: [] as IReferential[],\r\n insurerList: [] as IReferential[],\r\n selectedInsurer: [this.defaultInsurer] as IReferential[],\r\n selectedSliderValues: [DEFAULT] as number[],\r\n selectedValues: [0, 0] as number[],\r\n selectedOfferValues: [0, 0] as number[],\r\n selectedValue: 0,\r\n selectedOfferValue: 0,\r\n selectedMarginValue: 0,\r\n selectedMarginValues: [0, 0] as number[]\r\n } as IEditTarifLaborTabState;\r\n\r\n componentDidMount = () => {\r\n moment.locale(this.props.appState.language);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadData();\r\n }\r\n );\r\n\r\n \r\n ValidatorForm.addValidationRule('isGreaterThanZero', (value) => {\r\n if (value == 0) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n ValidatorForm.addValidationRule('isGratterThanMinValue', (value) => {\r\n if (value < MAXLOBOURVALUE) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n };\r\n\r\n compareName = (a: IReferential, b: IReferential) => {\r\n const nameA = a === null ? '' : a.displayName!.toUpperCase();\r\n const nameB = b === null ? '' : b.displayName!.toUpperCase();\r\n if (nameA < nameB) {\r\n return -1;\r\n }\r\n if (nameA > nameB) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n };\r\n\r\n loadData = async () => {\r\n try {\r\n this.defaultBrand.name = this.translatorService.Tranlate('SELECT_ALL_OPTION', 'Toate');\r\n this.defaultBrand.displayName = this.translatorService.Tranlate('SELECT_ALL_OPTION', 'Toate');\r\n\r\n this.defaultInsurer.name = this.translatorService.Tranlate('SELECT_NONE_OPTION', 'Niciunul');\r\n this.defaultInsurer.displayName = this.translatorService.Tranlate(\r\n 'SELECT_NONE_OPTION',\r\n 'Niciunul'\r\n );\r\n\r\n const brandRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CarBrands\r\n );\r\n const insurerRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.Insurer\r\n );\r\n\r\n const [tariffTypeList, brandList, insurerList, tariffValues] = await Promise.all([\r\n this.tariffService.GetTariffTypes(this.props.tariffGroupTypeId),\r\n this.appReferentialService.Get(brandRef!.baseUrl),\r\n this.appReferentialService.Get(insurerRef!.baseUrl),\r\n this.tariffService.GetTariffValues(this.props.tariffId, this.props.tariffGroupTypeId)\r\n ]);\r\n\r\n const brandList1 = brandList.sort(this.compareName);\r\n brandList.unshift(this.defaultBrand);\r\n \r\n const insurerList1 = _.cloneDeep(insurerList).sort(this.compareName);\r\n insurerList1.unshift(this.defaultInsurer);\r\n \r\n this.setState({\r\n tariffTypeList: tariffTypeList.filter((item) => item.isActive === true),\r\n tariffValues: tariffValues,\r\n brandList: brandList1.filter((item) => item.isActive === true),\r\n insurerList: insurerList1.filter((item) => item.isActive === true),\r\n isLoading: false\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleTariffTypeChange = (event: React.ChangeEvent, values: TariffType[]) => {\r\n this.setState({ selectedTariffTypes: values });\r\n };\r\n\r\n saveTariffValues = async (activeButton: number) => {\r\n const tariffValuesToSave = [] as TariffValue[];\r\n\r\n let date = new Date();\r\n if (moment.isDate(this.state.selectedDate)) {\r\n date = moment.utc(this.state.selectedDate.toDateString()).local().toDate();\r\n } else {\r\n date = moment.utc(this.state.selectedDate).local().toDate();\r\n }\r\n\r\n for (const tariffType of this.state.selectedTariffTypes) {\r\n for (const insurer of this.state.selectedInsurer) {\r\n for (const brand of this.state.selectedBrands) {\r\n if (this.state.isVehicleAge) {\r\n for (let i = 0; i < this.state.selectedSliderValues.length; i++) {\r\n const tariffValue = {\r\n brandId: brand.id === this.defaultBrand.id ? null : brand.id,\r\n tariffId: this.props.tariffId,\r\n tariffTypeId: tariffType.id,\r\n date: date,\r\n value: this.state.selectedValues[i],\r\n offerValue: this.state.selectedOfferValues[i],\r\n marginValue: this.state.selectedMarginValues[i],\r\n startVehicleYear: i === 0 ? null : this.state.selectedSliderValues[i - 1],\r\n endVehicleYear: this.state.selectedSliderValues[i],\r\n insurerId: insurer.id === this.defaultInsurer.id ? null : insurer.id\r\n } as TariffValue;\r\n tariffValuesToSave.push(tariffValue);\r\n\r\n if (i === this.state.selectedSliderValues.length - 1) {\r\n tariffValuesToSave.push({\r\n brandId: brand.id === this.defaultBrand.id ? null : brand.id,\r\n tariffId: this.props.tariffId,\r\n tariffTypeId: tariffType.id,\r\n date: date,\r\n value: this.state.selectedValues[i + 1],\r\n offerValue: this.state.selectedOfferValues[i + 1],\r\n marginValue: this.state.selectedMarginValues[i + 1], \r\n startVehicleYear: this.state.selectedSliderValues[i],\r\n endVehicleYear: null,\r\n insurerId: insurer.id === this.defaultInsurer.id ? null : insurer.id\r\n } as TariffValue);\r\n }\r\n }\r\n } else {\r\n const tariffValue = {\r\n brandId: brand.id === this.defaultBrand.id ? null : brand.id,\r\n tariffId: this.props.tariffId,\r\n tariffTypeId: tariffType.id,\r\n date: date,\r\n value: this.state.selectedValue,\r\n offerValue: this.state.selectedOfferValue,\r\n marginValue: this.state.selectedMarginValue,\r\n startVehicleYear: null,\r\n endVehicleYear: null,\r\n insurerId: insurer.id === this.defaultInsurer.id ? null : insurer.id\r\n } as TariffValue;\r\n tariffValuesToSave.push(tariffValue);\r\n }\r\n }\r\n }\r\n }\r\n if (activeButton === 1) {\r\n const dataLaborServices = this.structureTariffValuesAccordingToDate(); \r\n // Get tariffValues from the first element of dataLaborServices, or an empty array if not present\r\n const data = dataLaborServices.length > 0 ? dataLaborServices[0].tariffValues : [];\r\n console.log('tariffValuesToSave', tariffValuesToSave, 'dataLaborServices:', dataLaborServices, 'data:', data);\r\n if (tariffValuesToSave.length > 0) {\r\n const date = tariffValuesToSave[0].date;\r\n // Filter out items in 'data' that are not in 'tariffValuesToSave', and update their date\r\n const itemsToBeUpdated = data\r\n .filter(dataItem =>\r\n !tariffValuesToSave.some(saveItem => this.isMatchingItem(dataItem, saveItem))\r\n )\r\n .map(item => (\r\n {\r\n brandId: item.brandId,\r\n tariffId: item.tariffId,\r\n tariffTypeId: item.tariffTypeId,\r\n date: date,\r\n value: item.value,\r\n offerValue: item.offerValue,\r\n marginValue: item.marginValue,\r\n startVehicleYear: item.startVehicleYear,\r\n endVehicleYear: item.endVehicleYear,\r\n insurerId: item.insurerId\r\n } as TariffValue\r\n )); \r\n console.log('Items in data but not in tariffValuesToSave:', itemsToBeUpdated);\r\n // Add the items to 'tariffValuesToSave'\r\n tariffValuesToSave.push(...itemsToBeUpdated);\r\n console.log('tariffValuesToSave after adding items:', tariffValuesToSave);\r\n }\r\n }\r\n \r\n try {\r\n await this.tariffService.UpdateTariffValues(tariffValuesToSave);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedTariffTypes: []\r\n },\r\n () => {\r\n this.loadData();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n public isMatchingItem = (item1: TariffValue, item2 : TariffValue) : boolean => {\r\n return item1.tariffId === item2.tariffId &&\r\n item1.tariffTypeId === item2.tariffTypeId &&\r\n item1.insurerId === item2.insurerId &&\r\n (!item1.brandId || item1.brandId === item2.brandId || !item2.brandId);\r\n }\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n\r\n handleDateChange = (date: MaterialUiPickersDate | null, value?: string | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState({ selectedDate: date!.toDate() });\r\n };\r\n\r\n handleBrandChange = (newValue: IReferential[]) => {\r\n const allIndex = newValue.findIndex((item) => item.id === this.defaultBrand.id);\r\n\r\n if (allIndex === newValue.length - 1) {\r\n this.setState({ selectedBrands: [this.defaultBrand] });\r\n return;\r\n }\r\n if (allIndex === 0 && newValue.length > 1) {\r\n this.setState({ selectedBrands: [newValue[1]] });\r\n return;\r\n }\r\n\r\n this.setState({ selectedBrands: newValue });\r\n };\r\n\r\n handleInsurerChange = (newValue: IReferential[]) => {\r\n this.setState({ selectedInsurer: newValue });\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n decimalScale={2}\r\n isNumericString\r\n />\r\n );\r\n };\r\n\r\n handleValueChange = (event: React.ChangeEvent) => {\r\n if (event.target.value === '') {\r\n this.setState({ selectedValue: 0 });\r\n return;\r\n }\r\n\r\n this.setState({\r\n selectedValue: event.target.value === null ? 0 : parseFloat(event.target.value)\r\n });\r\n };\r\n\r\n handleOfferValueChange = (event: React.ChangeEvent) => {\r\n if (event.target.value === '') {\r\n this.setState({ selectedOfferValue: 0 });\r\n return;\r\n }\r\n this.setState({\r\n selectedOfferValue: event.target.value === null ? 0 : parseFloat(event.target.value)\r\n });\r\n };\r\n\r\n handleMarginValueChange = (event: React.ChangeEvent) => {\r\n if (event.target.value === '') {\r\n this.setState({ selectedMarginValue: 0 });\r\n return;\r\n }\r\n this.setState({\r\n selectedMarginValue: event.target.value === null ? 0 : parseFloat(event.target.value)\r\n });\r\n };\r\n\r\n handleValuesChange = (event: React.ChangeEvent, index: number) => {\r\n const newValues = [...this.state.selectedValues];\r\n if (event.target.value === '') {\r\n newValues[index] = 0;\r\n } else {\r\n newValues[index] = event.target.value === null ? 0 : parseFloat(event.target.value);\r\n }\r\n\r\n this.setState({ selectedValues: newValues });\r\n };\r\n\r\n handleOfferValuesChange = (event: React.ChangeEvent, index: number) => {\r\n const newValues = [...this.state.selectedOfferValues];\r\n if (event.target.value === '') {\r\n newValues[index] = 0;\r\n } else {\r\n newValues[index] = event.target.value === null ? 0 : parseFloat(event.target.value);\r\n }\r\n newValues[index] = event.target.value === null ? 0 : parseFloat(event.target.value);\r\n\r\n this.setState({ selectedOfferValues: newValues });\r\n };\r\n\r\n handleMarginValuesChange = (event: React.ChangeEvent, index: number) => {\r\n const newValues = [...this.state.selectedMarginValues];\r\n if (event.target.value === '') {\r\n newValues[index] = 0;\r\n } else {\r\n newValues[index] = event.target.value === null ? 0 : parseFloat(event.target.value);\r\n }\r\n newValues[index] = event.target.value === null ? 0 : parseFloat(event.target.value);\r\n\r\n this.setState({ selectedMarginValues: newValues });\r\n };\r\n\r\n handleChange = (event: any, newvalue: number | number[]) => {\r\n const newValues = newvalue as number[];\r\n\r\n this.setState({ selectedSliderValues: newValues });\r\n\r\n return;\r\n };\r\n\r\n getMarks = (total: number) => {\r\n const result: any[] = [];\r\n for (let i = 0; i <= total; i++) {\r\n result.push({\r\n value: i,\r\n label: i.toString()\r\n });\r\n }\r\n\r\n return result;\r\n };\r\n\r\n removeSliderValue = () => {\r\n if (this.state.selectedSliderValues.length === 1) {\r\n return;\r\n }\r\n\r\n const values = [...this.state.selectedSliderValues];\r\n const tValues = [...this.state.selectedValues];\r\n const tOfferValues = [...this.state.selectedOfferValues];\r\n const tMarginValues = [...this.state.selectedMarginValues];\r\n\r\n values.pop();\r\n tValues.pop();\r\n tOfferValues.pop();\r\n\r\n this.setState({\r\n selectedSliderValues: values,\r\n selectedValues: tValues,\r\n selectedOfferValues: tOfferValues,\r\n selectedMarginValues: tMarginValues\r\n });\r\n };\r\n\r\n addSliderValue = () => {\r\n this.setState({\r\n selectedSliderValues: [...this.state.selectedSliderValues, END],\r\n selectedValues: [...this.state.selectedValues, 0],\r\n selectedOfferValues: [...this.state.selectedOfferValues, 0],\r\n selectedMarginValues: [...this.state.selectedMarginValues, 0]\r\n });\r\n };\r\n\r\n getValidators() {\r\n const { tariffGroupTypeCode, tariff } = this.props;\r\n const isManType = tariffGroupTypeCode === TariffCategoryCodeEnum.MAN.toString();\r\n const isCzechRepublic = tariff?.owner?.country?.code?.toUpperCase() === CountryCodeEnum.CZ.toString();\r\n \r\n const validators = ['required'];\r\n \r\n if (isManType) {\r\n validators.push('isGreaterThanZero');\r\n if (isCzechRepublic) validators.push('isGratterThanMinValue');\r\n }\r\n \r\n return validators;\r\n }\r\n \r\n getErrorMessages() {\r\n const { tariffGroupTypeCode, tariff } = this.props;\r\n const isManType = tariffGroupTypeCode === TariffCategoryCodeEnum.MAN.toString();\r\n const isCzechRepublic = tariff?.owner?.country?.code?.toUpperCase() === CountryCodeEnum.CZ.toString();\r\n console.log(tariff.owner?.country);\r\n const messages = [\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ];\r\n \r\n if (isManType) {\r\n messages.push(\r\n this.translatorService.Tranlate(\r\n 'LABOR_VALUE_SHOULD_BE_GREATER_THAN_ZERO',\r\n 'Valoarea trebuie sa fie mai mare decat 0'\r\n )\r\n );\r\n \r\n if (isCzechRepublic) {\r\n messages.push(\r\n this.translatorService.Tranlate(\r\n 'LABOR_VALUE_CZ_SHOULD_BE_GREATER_THAN',\r\n `Valoarea trebuie sa fie mai mare decat ${MAXLOBOURVALUE}`\r\n )\r\n );\r\n }\r\n }\r\n \r\n return messages;\r\n } \r\n\r\n renderEditTariffValues = (activeButton: number) => {\r\n return (\r\n this.saveTariffValues(activeButton)} instantValidate={true}>\r\n \r\n \r\n \r\n \r\n \r\n {this.props.tariffGroupTypeCode === TariffCategoryCodeEnum.ADAOS.toString() ? null : (\r\n !this.hasRight(RoleClaimsEnum.AdminService) && (\r\n this.handleInsurerChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.name || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n )\r\n ) }\r\n option.displayName}\r\n value={this.state.selectedTariffTypes}\r\n onChange={(e: any, newValue: TariffType[]) => this.handleTariffTypeChange(e, newValue)}\r\n renderInput={(params: RenderInputParams) => (\r\n \r\n )}\r\n />\r\n {this.props.tariffGroupTypeCode === TariffCategoryCodeEnum.ADAOS.toString() || \r\n this.props.tariffGroupTypeCode === TariffCategoryCodeEnum.ADAOS_ASIGURATOR.toString() || \r\n this.props.tariffGroupTypeCode === TariffCategoryCodeEnum.ADAOS_ALT_PART.toString() || \r\n this.props.tariffGroupTypeCode === TariffCategoryCodeEnum.DISC ? null : (\r\n this.handleBrandChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.name || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n )}\r\n \r\n {this.props.tariffGroupTypeCode === TariffCategoryCodeEnum.ADAOS.toString() || \r\n this.props.tariffGroupTypeCode === TariffCategoryCodeEnum.ADAOS_ASIGURATOR.toString() || \r\n this.props.tariffGroupTypeCode === TariffCategoryCodeEnum.ADAOS_ALT_PART.toString() || \r\n this.props.tariffGroupTypeCode === TariffCategoryCodeEnum.DISC ? null :\r\n (\r\n
\r\n \r\n this.setState({\r\n isVehicleAge: e.currentTarget.checked\r\n })\r\n }\r\n color=\"primary\"\r\n id=\"isActive\"\r\n inputProps={{\r\n 'aria-label': 'primary checkbox'\r\n }}\r\n />\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'TARIFF_EDIT_LABOR_TAB_HAS_INTERVAL_LABEL',\r\n 'Stare'\r\n )}\r\n />\r\n
\r\n )}\r\n\r\n {!this.state.isVehicleAge ? null : (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n\r\n \r\n {!this.state.isVehicleAge\r\n ? null\r\n : this.state.selectedValues.map((value: number, index: number) => (\r\n \r\n \r\n ) =>\r\n this.handleValuesChange(e, index)\r\n }\r\n label={\r\n this.translatorService.Tranlate(\r\n 'TARIFF_EDIT_LABOR_TAB_VALUE_LABEL',\r\n 'Valoare'\r\n ) +\r\n '(' +\r\n index +\r\n ')'\r\n }\r\n validators={this.getValidators()}\r\n errorMessages={this.getErrorMessages()}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n \r\n \r\n {!this.hasRight(RoleClaimsEnum.AdminService) && (\r\n ) =>\r\n this.handleOfferValuesChange(e, index)\r\n }\r\n label={\r\n this.translatorService.Tranlate(\r\n 'TARIFF_EDIT_LABOR_TAB_OFFER_VALUE_LABEL',\r\n 'Valoare'\r\n ) +\r\n '(' +\r\n index +\r\n ')'\r\n }\r\n validators={this.getValidators()}\r\n errorMessages={this.getErrorMessages()}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n )}\r\n \r\n \r\n ))}\r\n \r\n\r\n {this.state.isVehicleAge ? null : (\r\n \r\n {\r\n this.props.tariffGroupTypeCode === TariffCategoryCodeEnum.ADAOS.toString() ? (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n {this.props.tariffGroupTypeCode === TariffCategoryCodeEnum.MAN.toString() ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n )}\r\n \r\n {!this.hasRight(RoleClaimsEnum.AdminService) && (\r\n \r\n )}\r\n \r\n \r\n )\r\n\r\n }\r\n \r\n \r\n )}\r\n
\r\n {\r\n this.setState({ activeAction: 0 });\r\n }}\r\n >\r\n {this.translatorService.Tranlate('TARIFF_EDIT_LABOR_TAB_CANCEL_BUTTON', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n structureTariffValuesAccordingToDate = () => {\r\n const dataLaborServices = [] as DateLaborService[];\r\n\r\n this.state.tariffValues.forEach((tariffValue: TariffValue) => {\r\n const index = dataLaborServices.findIndex(\r\n (item: DateLaborService) => item.date.toString() === tariffValue.date.toString()\r\n );\r\n\r\n if (index !== -1) {\r\n dataLaborServices[index].tariffValues.push(tariffValue);\r\n } else {\r\n dataLaborServices.push({\r\n date: tariffValue.date, \r\n tariffValues: [tariffValue]\r\n });\r\n }\r\n });\r\n //dataLaborServices = dataLaborServices.sort().reverse();\r\n\r\n return dataLaborServices;\r\n };\r\n\r\n renderTariffValues = (list: TariffValue[]) => {\r\n list = list.sort((a: TariffValue, b: TariffValue) => {\r\n return this.compareName(a.brand!, b.brand!);\r\n });\r\n return this.props.tariffGroupTypeCode == TariffCategoryCodeEnum.ADAOS.toString() ? (list.map((item) => (\r\n

\r\n {(item.brand === null ? this.defaultBrand.displayName : item.brand.displayName) +\r\n ' ' +\r\n this.renderVehicleAge(item) +\r\n ' - ' +\r\n item.value +\r\n ' (' +\r\n item.marginValue +\r\n ') ' + \r\n item.offerValue}\r\n

\r\n ))) : (list.map((item) => (\r\n

\r\n {(item.brand === null ? this.defaultBrand.displayName : item.brand.displayName) +\r\n ' ' +\r\n this.renderVehicleAge(item) +\r\n ' - ' +\r\n item.value +\r\n (\r\n !this.hasRight(RoleClaimsEnum.AdminService) ? (\r\n ' (' +\r\n item.offerValue +\r\n ')'\r\n ) : ''\r\n )}\r\n

\r\n )));\r\n };\r\n\r\n renderVehicleAge = (tv: TariffValue) => {\r\n if (tv.startVehicleYear === null && tv.endVehicleYear === null) {\r\n return '';\r\n }\r\n const start = tv.startVehicleYear === null ? '0' : tv.startVehicleYear;\r\n const end = tv.endVehicleYear === null ? '' : tv.endVehicleYear;\r\n\r\n return '(' + start + '<' + end + ')';\r\n };\r\n\r\n getDistinctTariffTypes = (tariffValues: TariffValue[]) => {\r\n return tariffValues\r\n .map((item) => item.tariffType)\r\n .filter((tt, index, arr) => arr.findIndex((i) => i.id === tt.id) == index);\r\n };\r\n\r\n getDistinctInsurer = (dateLS: DateLaborService) => {\r\n return _.map(_.groupBy(dateLS.tariffValues, 'insurerId'), \r\n (items, insurerId) => ({\r\n insurer: items[0].insurer,\r\n tariffValues: items,\r\n }));\r\n };\r\n\r\n deleteTariff = async (date: Date) => {\r\n try {\r\n const dateLocal = moment.utc(date.toDateString()).local().toDate();\r\n await this.tariffService.DeleteTariffValues(this.props.tariffId, dateLocal);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadData();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (err) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n showTimelineTariff = () => {\r\n const dataLaborServices = this.structureTariffValuesAccordingToDate();\r\n if (dataLaborServices.length === 0) {\r\n return (\r\n \r\n {this.translatorService.Tranlate(\r\n 'TARIFF_EDIT_LABOR_TAB_NO_DATA',\r\n 'Nu exista date de afisat!'\r\n )}\r\n \r\n );\r\n }\r\n\r\n return dataLaborServices.map((dateTariff) => (\r\n
\r\n
\r\n
\r\n

\r\n {moment(dateTariff.date).format(this.props.appState.dateFormat)}\r\n {moment(dateTariff.date).toDate() > new Date() ? (\r\n \r\n this.deleteTariff(moment(dateTariff.date).toDate())}\r\n >\r\n \r\n \r\n \r\n ) : null}\r\n

\r\n {this.getDistinctInsurer(dateTariff).map((item) => {\r\n return (\r\n <>\r\n

\r\n {item.insurer ? item.insurer!.displayName : this.translatorService.Tranlate('SELECT_NONE_OPTION', 'Niciunul')}\r\n

\r\n \r\n {this.getDistinctTariffTypes(item.tariffValues).map((tt) => {\r\n const tariffValues = item.tariffValues.filter(\r\n (item) => item.tariffTypeId === tt.id\r\n );\r\n\r\n return (\r\n \r\n
{tt.displayName}
\r\n {this.renderTariffValues(tariffValues)}\r\n
\r\n );\r\n })}\r\n
\r\n \r\n );\r\n })}\r\n \r\n
\r\n
\r\n ));\r\n };\r\n\r\n editInsertTarifLaborButton = (button: number) => {\r\n const dataLaborServices = this.structureTariffValuesAccordingToDate();\r\n\r\n if (button === 2) {\r\n this.setState({\r\n activeAction: button,\r\n selectedDate: new Date(),\r\n minDate: new Date()\r\n });\r\n } else {\r\n this.setState({\r\n activeAction: button,\r\n selectedDate: new Date(),\r\n minDate: new Date()\r\n });\r\n }\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.tariffService = (this.context as AppContext).tariffService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n \r\n {this.state.tariffValues.length > 0 ? (\r\n \r\n
\r\n \r\n this.editInsertTarifLaborButton(1)}\r\n >\r\n \r\n \r\n \r\n \r\n this.editInsertTarifLaborButton(2)}\r\n >\r\n \r\n \r\n \r\n
\r\n\r\n {this.state.activeAction !== 0\r\n ? this.renderEditTariffValues(this.state.activeAction)\r\n : null}\r\n
\r\n ) : (\r\n \r\n
\r\n \r\n this.editInsertTarifLaborButton(2)}\r\n >\r\n \r\n \r\n \r\n
\r\n\r\n {this.state.activeAction !== 0\r\n ? this.renderEditTariffValues(this.state.activeAction)\r\n : null}\r\n
\r\n )}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n {' '}\r\n {this.showTimelineTariff()}{' '}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalEditTarifLaborTabProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(EditTarifLaborTabf as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Button, Card, Tabs, Tab, CardContent, Box } from '@material-ui/core';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { Organization } from '../../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport TabPanel from '../../_shared/Tabs';\r\nimport { Tariff, TariffPartner } from '../../../interfaces/Tariff';\r\nimport { ITariffService } from '../../../services/Interfaces/ITariffService';\r\nimport { ParametreCode, ReferentialCode, RoleClaimsEnum, RoleCodeEnum, TariffCategoryCode, includedTariffTypeGroupCodes } from '../../../helpers/Constants';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport EditTariffLaborTab from './EditTariffLaborTab';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\n\r\ninterface IEditTariffState {\r\n tariff: Tariff;\r\n partnersTariff: Organization[];\r\n selectedTab: number;\r\n tariffTypeGroupList: IReferential[];\r\n hoOrganizations: Organization[];\r\n isUsed: boolean;\r\n currency: string;\r\n}\r\n\r\nexport interface ExternalEditTariffProps {\r\n tariffChanged?: () => void;\r\n tariffId: number;\r\n}\r\n\r\ntype EditTariffProps = { appState: AppState } & ProviderContext &\r\n ExternalEditTariffProps &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass EditTariff extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n private organizationService!: IOrganizationService;\r\n private tariffService!: ITariffService;\r\n private workflowService!: IWorkflowService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n tariff: {\r\n id: 0,\r\n name: '',\r\n owner: null,\r\n partner: null,\r\n gtId: this.props.appState.appUser!.gtId,\r\n tariffCategoryId: 0,\r\n isActive: true,\r\n tariffPartners: [] as TariffPartner[]\r\n } as Tariff,\r\n partnersTariff: [],\r\n selectedTab: 0,\r\n tariffTypeGroupList: [],\r\n hoOrganizations: [] as Organization[],\r\n isUsed: false,\r\n currency: ''\r\n } as IEditTariffState;\r\n\r\n public async componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n let tariff = this.state.tariff;\r\n\r\n const tariffCategoryRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.TariffCategory\r\n );\r\n const tariffGroupTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.TariffTypeGroup\r\n );\r\n\r\n const insurerRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.Insurer\r\n );\r\n\r\n const countryId = this.hasRight(RoleClaimsEnum.AdminCountryOrganization) || this.hasRight(RoleClaimsEnum.AdminService) ? this.props.appState.appUser!.countryId : null;\r\n const [\r\n organizations,\r\n tariffCategoryList,\r\n tariffGroupTypeList,\r\n insurerList,\r\n tariffPartners,\r\n hoOrganizations,\r\n workflowsCount\r\n ] = await Promise.all([\r\n this.organizationService.GetOrganizationsForTariffPartners(hoId, countryId),\r\n this.appReferentialService.Get(tariffCategoryRef!.baseUrl),\r\n this.appReferentialService.Get(tariffGroupTypeRef!.baseUrl),\r\n this.appReferentialService.Get(insurerRef!.baseUrl),\r\n this.tariffService.GetTariffPartners(this.props.tariffId),\r\n this.organizationService.GetHOOrganizations(countryId),\r\n this.workflowService.GetTariffWorkflowsCount(this.props.tariffId)\r\n ]);\r\n\r\n tariff.ownerId = hoId;\r\n\r\n if (this.props.tariffId !== 0) {\r\n tariff = await this.tariffService.GetTariff(this.props.tariffId);\r\n tariff.tariffPartners = tariffPartners;\r\n\r\n const partner = organizations.find((item) => item.id === tariff.partnerId);\r\n tariff.partner = partner !== undefined ? partner : null;\r\n\r\n tariff.tariffPartners.forEach((p) => {\r\n const partner = hoOrganizations.find((o) => o.id === p.partnerId);\r\n p.partner = partner !== undefined ? partner : null;\r\n });\r\n }\r\n\r\n const [owner, orgParameters] = await Promise.all([\r\n this.organizationService.GetOrganization(tariff.ownerId),\r\n this.organizationService.GetOrganizationParameters(tariff.ownerId)\r\n ]);\r\n tariff.owner = owner !== undefined ? owner : null;\r\n\r\n tariff.tariffCategoryId = tariffCategoryList.find(\r\n (item) => item.code === TariffCategoryCode.REP\r\n )!.id;\r\n\r\n console.log('tariff', tariff);\r\n\r\n console.log('parameters', orgParameters);\r\n const currency = orgParameters.find(\r\n (item) => item.parameter!.code === ParametreCode.CURRENCY\r\n );\r\n\r\n this.setState({\r\n tariff: tariff,\r\n partnersTariff: organizations.filter((item) => item.isActive === true),\r\n tariffTypeGroupList: this.hasRight(RoleClaimsEnum.AdminService) ? tariffGroupTypeList.filter((item) => includedTariffTypeGroupCodes.includes(item.code ?? \"\")) : tariffGroupTypeList.filter((item) => item.isActive === true),\r\n hoOrganizations: hoOrganizations,\r\n isUsed: workflowsCount > 0,\r\n currency: currency ? currency.value : ''\r\n });\r\n }\r\n\r\n public hasRole = (roleCode: string): boolean => {\r\n return this.props.appState.appUser?.userRole?.code === roleCode;\r\n };\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n private handleNameGUIChange = (event: React.ChangeEvent) => {\r\n let value: any;\r\n if (event.target.type === 'text') {\r\n value = event.currentTarget.value;\r\n }\r\n this.setState({\r\n tariff: {\r\n ...this.state.tariff,\r\n name: value\r\n }\r\n });\r\n };\r\n\r\n private handlePartnerTariffChange = (newValue: Organization | null) => {\r\n this.setState({\r\n tariff: {\r\n ...this.state.tariff,\r\n name:\r\n newValue === null ? '' : this.state.tariff.owner!.name + ' - ' + newValue!.displayName,\r\n partner: newValue,\r\n partnerId: newValue === null ? 0 : newValue!.id\r\n }\r\n });\r\n };\r\n\r\n private handleOtherPartnerTariffChange = (newValue: Organization[]) => {\r\n this.setState({\r\n tariff: {\r\n ...this.state.tariff,\r\n tariffPartners: newValue.map((item) => {\r\n return {\r\n id: 0,\r\n partner: item,\r\n partnerId: item.id,\r\n tariffId: this.props.tariffId\r\n } as TariffPartner;\r\n })\r\n }\r\n });\r\n };\r\n public saveTariff = async () => {\r\n try {\r\n if (!(await this.isValid(this.state.tariff))) {\r\n return;\r\n }\r\n\r\n if (this.props.tariffId === 0) {\r\n await this.tariffService.AddTariff(this.state.tariff);\r\n } else {\r\n await this.tariffService.UpdateTariff(this.state.tariff);\r\n }\r\n\r\n if (this.props.tariffChanged) {\r\n this.props.tariffChanged();\r\n }\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n public isValid = async (tariff: Tariff): Promise => {\r\n const tariffList = await this.tariffService.GetTariffs(tariff.ownerId);\r\n\r\n let filterList = tariffList.filter((item) => item.name === tariff.name);\r\n\r\n if (filterList.length > 1) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_TARIFF_EXISTS', 'Tariful exista deja!'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n if (filterList.length === 1 && filterList[0].id !== tariff.id) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_TARIFF_EXISTS', 'Tariful exista deja!'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n\r\n filterList = tariffList.filter(\r\n (item) => item.ownerId === tariff.ownerId && item.partnerId === tariff.partnerId\r\n );\r\n\r\n if (filterList.length > 1) {\r\n // this.props.enqueueSnackbar(\r\n // this.translatorService.Tranlate('ERROR_WARNING_TARIFF_EXISTS', 'Tariful exista deja!'),\r\n // { variant: 'warning' }\r\n // );\r\n return true;\r\n }\r\n if (filterList.length === 1 && filterList[0].id !== tariff.id) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_WARNING_TARIFF_EXISTS', 'Tariful exista deja!'),\r\n { variant: 'warning' }\r\n );\r\n return true;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n public renderForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.handlePartnerTariffChange(newValue)\r\n }\r\n getOptionLabel={(option: Organization) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n {\r\n !this.hasRight(RoleClaimsEnum.AdminService) && (\r\n \r\n )\r\n }\r\n {\r\n !this.hasRight(RoleClaimsEnum.AdminService) && (\r\n item.isActive)}\r\n value={this.state.tariff.tariffPartners.map((tp) => tp.partner!)}\r\n onChange={(e: any, newValue: Organization[]) =>\r\n this.handleOtherPartnerTariffChange(newValue)\r\n }\r\n getOptionLabel={(option: Organization) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n )\r\n }\r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_TARIFF_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n createTabTariffGroupType = () => {\r\n const dataToRender = [] as any;\r\n this.state.tariffTypeGroupList.forEach((item: IReferential, index: number) => {\r\n dataToRender.push();\r\n });\r\n return dataToRender;\r\n };\r\n\r\n createTabPanelTariffGroupType = () => {\r\n const dataToRender = [] as any;\r\n this.state.tariffTypeGroupList.forEach((item: IReferential, index: number) => {\r\n dataToRender.push(\r\n \r\n \r\n \r\n );\r\n });\r\n return dataToRender;\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.tariffService = (this.context as AppContext).tariffService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {this.createTabTariffGroupType()}\r\n \r\n \r\n \r\n \r\n {this.renderForm()}\r\n \r\n {this.createTabPanelTariffGroupType()}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (stateProps: any, dispatchProps: any, ownProps: ExternalEditTariffProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(EditTariff as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Button,\r\n Card,\r\n Tabs,\r\n Tab,\r\n CardContent,\r\n Box,\r\n Tooltip,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n DialogContent,\r\n Switch\r\n} from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { Tariff } from '../../../interfaces/Tariff';\r\nimport { Organization } from '../../../interfaces/Organization';\r\nimport { ITariffService } from '../../../services/Interfaces/ITariffService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { isNullOrUndefined } from 'util';\r\nimport moment from 'moment';\r\nimport EditTariff from './EditTariff';\r\nimport { RoleClaimsEnum } from '../../../helpers/Constants';\r\n\r\ninterface ITariffsState {\r\n selectedTab: number;\r\n tariffs: Tariff[];\r\n isLoading: boolean;\r\n isOpenDialog: boolean;\r\n organizationId: number;\r\n selectedTariffId: number;\r\n}\r\n\r\ntype ITariffsProps = { appState: AppState } & ProviderContext & RouteComponentProps<{ id: string }>;\r\n\r\nclass Tariffs extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private tariffService!: ITariffService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n state = {\r\n selectedTab: this.hasRight(RoleClaimsEnum.AdminService) ? 1 : 0,\r\n tariffs: [],\r\n isLoading: false,\r\n isOpenDialog: false,\r\n organizationId: 0,\r\n selectedTariffId: 0\r\n } as ITariffsState;\r\n\r\n componentDidMount = () => {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadData(this.hasRight(RoleClaimsEnum.AdminService) ? 1 : 0);\r\n }\r\n );\r\n };\r\n\r\n loadData = async (selectedTab: number) => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n try {\r\n const data = await this.tariffService.GetTariffs(hoId);\r\n const newTariffs = data.filter(\r\n (tariff: Tariff) =>\r\n (selectedTab === 0 && tariff.ownerId === hoId) ||\r\n (selectedTab === 1 && tariff.ownerId !== hoId)\r\n );\r\n\r\n this.setState({\r\n tariffs: newTariffs,\r\n isLoading: false,\r\n organizationId: hoId\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n editTariff = (id: number) => {\r\n this.setState({ isOpenDialog: true, selectedTariffId: id });\r\n };\r\n\r\n onRowClick = (e: any, id: number) => {\r\n this.editTariff(id);\r\n };\r\n\r\n handleIsActiveChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newTariffs = [...this.state.tariffs];\r\n const updatedTariffIndex = newTariffs.findIndex((o) => o.id === id);\r\n\r\n if (updatedTariffIndex >= 0) {\r\n newTariffs[updatedTariffIndex] = {\r\n ...newTariffs[updatedTariffIndex],\r\n isActive: event.target.checked\r\n };\r\n\r\n try {\r\n await this.tariffService.UpdateTariff(newTariffs[updatedTariffIndex]);\r\n\r\n this.setState({ tariffs: newTariffs });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'name',\r\n label: this.translatorService.Tranlate('TARIFFS_TARIFF_NAME_HEADER', 'Tarif'),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.onRowClick(e, tableMeta.rowData[0])}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'owner',\r\n label: this.translatorService.Tranlate('TARIFFS_TARIFF_OWNER_HEADER', 'Proprietar Tarif'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Organization) => {\r\n return isNullOrUndefined(value) ? '' : value.name;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'partner',\r\n label: this.translatorService.Tranlate('TARIFFS_TARIFF_PARTNER_HEADER', 'Partener Tarif'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Organization) => {\r\n return isNullOrUndefined(value) ? '' : value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'TARIFFS_TARIFF_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment(value).format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'isActive',\r\n label: this.translatorService.Tranlate('USERS_IS_ACTIVE_HEADER', 'Activ'),\r\n options: {\r\n sort: false,\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(isActive: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names[0]) !== -1 && isActive === true) ||\r\n (filterVal.indexOf(this.names[1]) !== -1 && isActive === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleIsActiveChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState(\r\n {\r\n selectedTab: newValue,\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadData(newValue);\r\n }\r\n );\r\n };\r\n\r\n handleClose = (reload: boolean) => {\r\n if (reload) {\r\n this.setState({ isOpenDialog: false }, async () => {\r\n await this.loadData(this.state.selectedTab);\r\n });\r\n } else {\r\n this.setState({ isOpenDialog: false });\r\n }\r\n };\r\n\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.tariffService = (this.context as AppContext).tariffService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n // responsive: \"stacked\",\r\n customToolbar: () => {\r\n if (this.hasRight(RoleClaimsEnum.AdminService)) {\r\n return null;\r\n }\r\n return (\r\n \r\n {\r\n this.setState({ selectedTariffId: 0, isOpenDialog: true });\r\n }}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('TARIFFS_EDIT_MODAL_TITLE', 'Editare Tarif')}\r\n \r\n \r\n \r\n this.handleClose(false)}\r\n size={'small'}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.handleClose(true)}\r\n />\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect((state: ApplicationState) => ({ appState: state.app }), {\r\n ...AppUserAdminActionCreators,\r\n ...AppActionCreators\r\n})(withSnackbar(Tariffs as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Button,\r\n Card,\r\n Tabs,\r\n Tab,\r\n CardContent,\r\n Box,\r\n Tooltip,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n DialogContent,\r\n Switch,\r\n TextField\r\n} from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { Workflow, WorkflowParameter } from '../../../interfaces/Workflow';\r\nimport {\r\n Organization,\r\n OrganizationCaseType,\r\n Language,\r\n OrganizationParameter\r\n} from '../../../interfaces/Organization';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { isNullOrUndefined } from 'util';\r\nimport moment from 'moment';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode, RoleClaimsEnum, RoleCodeEnum } from '../../../helpers/Constants';\r\nimport { IReferential, ITranslation } from '../../../interfaces/IReferential';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport NumberFormat from 'react-number-format';\r\n\r\ninterface IWorkflowsState {\r\n selectedTab: number;\r\n workflows: Workflow[];\r\n isLoading: boolean;\r\n organizationId: number;\r\n isDialogOpen: boolean;\r\n newWorkflow: Workflow;\r\n caseTypeList: IReferential[];\r\n}\r\n\r\ntype IWorkflowsProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass Workflows extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n private workflowService!: IWorkflowService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n selectedTab: 0,\r\n workflows: [],\r\n isLoading: false,\r\n organizationId: 0,\r\n isDialogOpen: false,\r\n newWorkflow: {\r\n id: 0,\r\n name: '',\r\n displayName: '',\r\n isActive: true,\r\n organizationOwnerId: 0,\r\n organizationOwner: null,\r\n caseType: null,\r\n caseTypeId: 0,\r\n translations: [],\r\n workflowParameters: [],\r\n workflowSections: [],\r\n workflowSteps: [],\r\n workflowPartners: [],\r\n workflowTariffs: [],\r\n workflowSuppliers: [],\r\n isPrcIntegration: false,\r\n isMvoIntegration: false,\r\n isCarfixIntegration: false,\r\n isDgpciIntegration: false\r\n } as unknown as Workflow,\r\n caseTypeList: []\r\n } as IWorkflowsState;\r\n\r\n componentDidMount = () => {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadData(0);\r\n }\r\n );\r\n };\r\n\r\n public hasRole = (roleCode: string): boolean => {\r\n return this.props.appState.appUser?.userRole?.code === roleCode;\r\n };\r\n \r\n loadData = async (selectedTab: number) => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n try {\r\n const ref = Referentials.referential.find((item) => item.code === ReferentialCode.CaseType);\r\n const [data, hoList, orgCaseTypes] = await Promise.all([\r\n this.workflowService.GetWorkflows(hoId),\r\n this.organizationService.GetHOOrganizations(this.hasRight(RoleClaimsEnum.AdminCountryOrganization) ? this.props.appState.appUser!.countryId : null),\r\n this.appReferentialService.Get(ref!.baseUrl)\r\n ]);\r\n\r\n data.forEach((value) => {\r\n const ho = hoList.find((org) => org.id === value.organizationOwnerId);\r\n value.organizationOwner = isNullOrUndefined(ho) ? null : ho;\r\n\r\n const workflowCaseType = orgCaseTypes.find((item) => item.id === value.caseTypeId);\r\n value.caseType = isNullOrUndefined(workflowCaseType) ? null : workflowCaseType;\r\n });\r\n\r\n const newWorkflows = data.filter(\r\n (workflow: Workflow) =>\r\n (selectedTab === 0 && workflow.organizationOwnerId === hoId) ||\r\n (selectedTab === 1 && workflow.organizationOwnerId !== hoId)\r\n );\r\n\r\n this.setState({\r\n workflows: newWorkflows,\r\n isLoading: false,\r\n organizationId: hoId\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n newWorkflow = async () => {\r\n const newWorkflow = { ...this.state.newWorkflow };\r\n newWorkflow.organizationOwnerId = this.state.organizationId;\r\n\r\n const ref = Referentials.referential.find((item) => item.code === ReferentialCode.CaseType);\r\n const [owner, parameters, orgCaseList, orgCaseTypes] = await Promise.all([\r\n this.organizationService.GetOrganization(newWorkflow.organizationOwnerId),\r\n this.organizationService.GetOrganizationParameters(newWorkflow.organizationOwnerId),\r\n this.organizationService.GetOrganizationCaseType(newWorkflow.organizationOwnerId),\r\n this.appReferentialService.Get(ref!.baseUrl)\r\n ]);\r\n\r\n newWorkflow.organizationOwner = owner !== undefined ? owner : ({} as Organization);\r\n\r\n const languages = this.activeLanguages();\r\n\r\n let organizationCases = orgCaseList.sort(function (a, b) {\r\n return a.order - b.order;\r\n });\r\n organizationCases = organizationCases.map((item: OrganizationCaseType) => {\r\n item.caseType = orgCaseTypes.find(\r\n (caseType: IReferential) => caseType.id === item.caseTypeId\r\n )!;\r\n return item;\r\n });\r\n\r\n const workflowTranslations = newWorkflow.translations;\r\n languages.forEach((language: Language, index: number) => {\r\n if (workflowTranslations.length === 0) {\r\n workflowTranslations.push({\r\n id: 0,\r\n referentialTypeId: 0,\r\n name: newWorkflow.organizationOwner!.name + ' - ',\r\n language: language.code\r\n });\r\n } else {\r\n const indexTrans = workflowTranslations.findIndex((trans: ITranslation) => {\r\n return language.code === trans.language;\r\n });\r\n if (indexTrans === -1) {\r\n workflowTranslations.push({\r\n id: 0,\r\n referentialTypeId: 0,\r\n name: newWorkflow.organizationOwner!.name + ' - ',\r\n language: language.code\r\n });\r\n }\r\n }\r\n });\r\n newWorkflow.translations = [...workflowTranslations];\r\n const activeLanguage = this.translatorService.GetLanguage();\r\n\r\n const workflowParametersData = parameters.map((item: OrganizationParameter) => {\r\n const workflowParameter = {\r\n id: 0,\r\n parameterId: item.parameterId,\r\n date: item.date,\r\n workflowId: 0,\r\n value: item.value\r\n } as WorkflowParameter;\r\n return workflowParameter;\r\n });\r\n newWorkflow.name =\r\n workflowTranslations.length === 0\r\n ? ''\r\n : workflowTranslations.find((item) => item.language === activeLanguage)!.name!;\r\n newWorkflow.displayName = newWorkflow.name;\r\n newWorkflow.workflowParameters = workflowParametersData;\r\n\r\n this.setState({\r\n newWorkflow: newWorkflow,\r\n caseTypeList: organizationCases.map((item) => item.caseType!),\r\n isDialogOpen: true\r\n });\r\n };\r\n\r\n onRowClick = async (e: any, workflowId: number, value: string) => {\r\n const workflow = this.state.workflows.find((item) => item.id === workflowId);\r\n if (workflow === undefined) {\r\n return;\r\n }\r\n this.props.history.push(\r\n '/admin/hoorganizations/' + workflow.organizationOwnerId + '/workflow/' + workflowId,\r\n value\r\n );\r\n };\r\n\r\n handleIsActiveChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newWorkflows = [...this.state.workflows];\r\n const updatedWorkflowIndex = newWorkflows.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowIndex >= 0) {\r\n newWorkflows[updatedWorkflowIndex] = {\r\n ...newWorkflows[updatedWorkflowIndex],\r\n isActive: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflow(newWorkflows[updatedWorkflowIndex]);\r\n\r\n this.setState({ workflows: newWorkflows });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleIsPrcIntegrationChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newWorkflows = [...this.state.workflows];\r\n const updatedWorkflowIndex = newWorkflows.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowIndex >= 0) {\r\n newWorkflows[updatedWorkflowIndex] = {\r\n ...newWorkflows[updatedWorkflowIndex],\r\n isPrcIntegration: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflow(newWorkflows[updatedWorkflowIndex]);\r\n\r\n this.setState({ workflows: newWorkflows });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleIsMvoIntegrationChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newWorkflows = [...this.state.workflows];\r\n const updatedWorkflowIndex = newWorkflows.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowIndex >= 0) {\r\n newWorkflows[updatedWorkflowIndex] = {\r\n ...newWorkflows[updatedWorkflowIndex],\r\n isMvoIntegration: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflow(newWorkflows[updatedWorkflowIndex]);\r\n\r\n this.setState({ workflows: newWorkflows });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleIsCarfixIntegrationChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newWorkflows = [...this.state.workflows];\r\n const updatedWorkflowIndex = newWorkflows.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowIndex >= 0) {\r\n newWorkflows[updatedWorkflowIndex] = {\r\n ...newWorkflows[updatedWorkflowIndex],\r\n isCarfixIntegration: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflow(newWorkflows[updatedWorkflowIndex]);\r\n\r\n this.setState({ workflows: newWorkflows });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleIsDgpciIntegrationChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newWorkflows = [...this.state.workflows];\r\n const updatedWorkflowIndex = newWorkflows.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowIndex >= 0) {\r\n newWorkflows[updatedWorkflowIndex] = {\r\n ...newWorkflows[updatedWorkflowIndex],\r\n isDgpciIntegration: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflow(newWorkflows[updatedWorkflowIndex]);\r\n\r\n this.setState({ workflows: newWorkflows });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleUseRoundUpChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newWorkflows = [...this.state.workflows];\r\n const updatedWorkflowIndex = newWorkflows.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowIndex >= 0) {\r\n newWorkflows[updatedWorkflowIndex] = {\r\n ...newWorkflows[updatedWorkflowIndex],\r\n useRoundUp: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflow(newWorkflows[updatedWorkflowIndex]);\r\n\r\n this.setState({ workflows: newWorkflows });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleAutomatePlaceOrderChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newWorkflows = [...this.state.workflows];\r\n const updatedWorkflowIndex = newWorkflows.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowIndex >= 0) {\r\n newWorkflows[updatedWorkflowIndex] = {\r\n ...newWorkflows[updatedWorkflowIndex],\r\n automatePlaceOrder: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflow(newWorkflows[updatedWorkflowIndex]);\r\n\r\n this.setState({ workflows: newWorkflows });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleAutomateGenerateOrderChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newWorkflows = [...this.state.workflows];\r\n const updatedWorkflowIndex = newWorkflows.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowIndex >= 0) {\r\n newWorkflows[updatedWorkflowIndex] = {\r\n ...newWorkflows[updatedWorkflowIndex],\r\n automateGenerateOrder: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflow(newWorkflows[updatedWorkflowIndex]);\r\n\r\n this.setState({ workflows: newWorkflows });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleB2BIntegrationChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newWorkflows = [...this.state.workflows];\r\n const updatedWorkflowIndex = newWorkflows.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowIndex >= 0) {\r\n newWorkflows[updatedWorkflowIndex] = {\r\n ...newWorkflows[updatedWorkflowIndex],\r\n b2BIntegration: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflow(newWorkflows[updatedWorkflowIndex]);\r\n\r\n this.setState({ workflows: newWorkflows });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleOrderConfirmationToServiceChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newWorkflows = [...this.state.workflows];\r\n const updatedWorkflowIndex = newWorkflows.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowIndex >= 0) {\r\n newWorkflows[updatedWorkflowIndex] = {\r\n ...newWorkflows[updatedWorkflowIndex],\r\n orderConfirmationToService: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflow(newWorkflows[updatedWorkflowIndex]);\r\n\r\n this.setState({ workflows: newWorkflows });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleChangeCaseStatusBasedCalculationChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newWorkflows = [...this.state.workflows];\r\n const updatedWorkflowIndex = newWorkflows.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowIndex >= 0) {\r\n newWorkflows[updatedWorkflowIndex] = {\r\n ...newWorkflows[updatedWorkflowIndex],\r\n changeCaseStatusBasedCalculation: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflow(newWorkflows[updatedWorkflowIndex]);\r\n\r\n this.setState({ workflows: newWorkflows });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleChangeSaveDocumentsChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newWorkflows = [...this.state.workflows];\r\n const updatedWorkflowIndex = newWorkflows.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowIndex >= 0) {\r\n newWorkflows[updatedWorkflowIndex] = {\r\n ...newWorkflows[updatedWorkflowIndex],\r\n saveDocuments: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflow(newWorkflows[updatedWorkflowIndex]);\r\n\r\n this.setState({ workflows: newWorkflows });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleIsEvaluationWorklfowChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newWorkflows = [...this.state.workflows];\r\n const updatedWorkflowIndex = newWorkflows.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowIndex >= 0) {\r\n newWorkflows[updatedWorkflowIndex] = {\r\n ...newWorkflows[updatedWorkflowIndex],\r\n isEvaluationWorkflow: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflow(newWorkflows[updatedWorkflowIndex]);\r\n\r\n this.setState({ workflows: newWorkflows });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleHideRenewAdvertChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newWorkflows = [...this.state.workflows];\r\n const updatedWorkflowIndex = newWorkflows.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowIndex >= 0) {\r\n newWorkflows[updatedWorkflowIndex] = {\r\n ...newWorkflows[updatedWorkflowIndex],\r\n hideRenewAdvert: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflow(newWorkflows[updatedWorkflowIndex]);\r\n\r\n this.setState({ workflows: newWorkflows });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n\r\n handleHideCommentsChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newWorkflows = [...this.state.workflows];\r\n const updatedWorkflowIndex = newWorkflows.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowIndex >= 0) {\r\n newWorkflows[updatedWorkflowIndex] = {\r\n ...newWorkflows[updatedWorkflowIndex],\r\n hideComments: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflow(newWorkflows[updatedWorkflowIndex]);\r\n\r\n this.setState({ workflows: newWorkflows });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleHasNonStockValidationChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newWorkflows = [...this.state.workflows];\r\n const updatedWorkflowIndex = newWorkflows.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowIndex >= 0) {\r\n newWorkflows[updatedWorkflowIndex] = {\r\n ...newWorkflows[updatedWorkflowIndex],\r\n hasNonStockValidation: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflow(newWorkflows[updatedWorkflowIndex]);\r\n\r\n this.setState({ workflows: newWorkflows });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleVQInterogation = async (\r\n value: string | null,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newWorkflows = [...this.state.workflows];\r\n const updatedWorkflowIndex = newWorkflows.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowIndex >= 0) {\r\n newWorkflows[updatedWorkflowIndex] = {\r\n ...newWorkflows[updatedWorkflowIndex],\r\n vqInterogationValue: value === null ? null : parseFloat(value)\r\n };\r\n\r\n this.setState({ workflows: newWorkflows });\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflow(newWorkflows[updatedWorkflowIndex]);\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n\r\n saveWorkflow = async () => {\r\n try {\r\n let workflowExist = -1;\r\n this.state.workflows.forEach((item: Workflow, index: number) => {\r\n if (\r\n item.caseTypeId === this.state.newWorkflow.caseTypeId &&\r\n item.organizationOwnerId === this.state.newWorkflow.organizationOwnerId\r\n ) {\r\n let indexFinded = -1;\r\n for (const i of item.translations) {\r\n indexFinded = Math.max(\r\n indexFinded,\r\n this.state.newWorkflow.translations.findIndex(\r\n (item) => item.language === i.language && item.name === i.name\r\n )\r\n );\r\n }\r\n workflowExist = indexFinded;\r\n return;\r\n } else {\r\n workflowExist = Math.max(workflowExist, -1);\r\n }\r\n });\r\n\r\n if (workflowExist !== -1) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_WORKFLOW_EXISTS', 'Fluxul exista deja!'),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n await this.workflowService.AddWorkflow(this.state.newWorkflow);\r\n\r\n this.closeDialog();\r\n\r\n await this.loadData(this.state.selectedTab);\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'displayName',\r\n label: this.translatorService.Tranlate('WORKFLOWS_WORKFLOW_NAME_HEADER', 'Flux'),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.onRowClick(e, tableMeta.rowData[0], value)}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'organizationOwner',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOWS_WORKFLOW_OWNER_HEADER',\r\n 'Proprietar Flux'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Organization) => {\r\n return isNullOrUndefined(value) ? '' : value.name;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseType',\r\n label: this.translatorService.Tranlate('WORKFLOWS_WORKFLOW_CASE_TYPE_HEADER', 'Tip Dosar'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: IReferential) => {\r\n return isNullOrUndefined(value) ? '' : value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOWS_WORKFLOW_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: Date) =>\r\n moment(value).toDate().toLocaleString(this.props.appState.language)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'isActive',\r\n label: this.translatorService.Tranlate('USERS_IS_ACTIVE_HEADER', 'Activ'),\r\n options: {\r\n sort: false,\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(isActive: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names[0]) !== -1 && isActive === true) ||\r\n (filterVal.indexOf(this.names[1]) !== -1 && isActive === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleIsActiveChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'isEvaluationWorkflow',\r\n label: this.translatorService.Tranlate(\r\n 'EVALUATION_WORKFLOW_HEADER',\r\n 'Flux Evaluare'\r\n ),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleIsEvaluationWorklfowChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'hideRenewAdvert',\r\n label: this.translatorService.Tranlate(\r\n 'HIDE_RENEW_ADVERT_WORKFLOW_HEADER',\r\n 'Ascunde anunturi Renew'\r\n ),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleHideRenewAdvertChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'isPrcIntegration',\r\n label: this.translatorService.Tranlate(\r\n 'PRC_INTEGRATION_WORKFLOW_HEADER',\r\n 'Flux Integrare PRC'\r\n ),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleIsPrcIntegrationChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'isMvoIntegration',\r\n label: this.translatorService.Tranlate(\r\n 'MVO_INTEGRATION_WORKFLOW_HEADER',\r\n 'Flux MVO'\r\n ),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleIsMvoIntegrationChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'isCarfixIntegration',\r\n label: this.translatorService.Tranlate(\r\n 'REPAIR_INTEGRATION_CARFIX_WORKFLOW_HEADER',\r\n 'Flux Integrare Carfix'\r\n ),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleIsCarfixIntegrationChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'isDgpciIntegration',\r\n label: this.translatorService.Tranlate(\r\n 'DGPCI_INTEGRATION_WORKFLOW_HEADER',\r\n 'Flux Integrare DGPCI'\r\n ),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleIsDgpciIntegrationChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'useRoundUp',\r\n label: this.translatorService.Tranlate(\r\n 'USER_ROUND_UP_WORKFLOW_HEADER',\r\n 'Cu/fara rotunjire ulei'\r\n ),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleUseRoundUpChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'automateGenerateOrder',\r\n label: this.translatorService.Tranlate(\r\n 'AUTOMATE_GENERATE_ORDER_WORKFLOW_HEADER',\r\n 'Automatizare generare comenzi'\r\n ),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleAutomateGenerateOrderChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'automatePlaceOrder',\r\n label: this.translatorService.Tranlate(\r\n 'AUTOMATE_PLACE_ORDER_WORKFLOW_HEADER',\r\n 'Automatizare comanda piese'\r\n ),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleAutomatePlaceOrderChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'hideComments',\r\n label: this.translatorService.Tranlate(\r\n 'HIDE_COMMENTS_WORKFLOW_HEADER',\r\n 'Ascunde tab comentarii'\r\n ),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleHideCommentsChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'hasNonStockValidation',\r\n label: this.translatorService.Tranlate(\r\n 'HAS_NON_STOCK_VALIDATION_WORKFLOW_HEADER',\r\n 'Verificare non-stock furnizori'\r\n ),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleHasNonStockValidationChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'orderConfirmationToService',\r\n label: this.translatorService.Tranlate(\r\n 'ORDER_CONFIRMATION_TO_SERVICE_WORKFLOW_HEADER',\r\n 'Notificare catre service'\r\n ),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleOrderConfirmationToServiceChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'b2BIntegration',\r\n label: this.translatorService.Tranlate(\r\n 'B2B_INTEGRATION_WORKFLOW_HEADER',\r\n 'Integrare calculatii B2B'\r\n ),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleB2BIntegrationChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'changeCaseStatusBasedCalculation',\r\n label: this.translatorService.Tranlate('CHANGE_STATUS_BASED_CALCULATION', 'Stare calculatie'),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleChangeCaseStatusBasedCalculationChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'saveDocuments',\r\n label: this.translatorService.Tranlate('SAVE_DOCUMENTS_LABEL', 'Salveaza documente'),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleChangeSaveDocumentsChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'vqInterogationValue',\r\n label: this.translatorService.Tranlate(\r\n 'VQ_INTEROGATION_VALUE_WORKFLOW_HEADER',\r\n 'Nr. apelari VQ'\r\n ), options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: number | null, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleVQInterogation(e.target.value, tableMeta)}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n isNumericString\r\n />\r\n );\r\n };\r\n\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState(\r\n {\r\n selectedTab: newValue,\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadData(newValue);\r\n }\r\n );\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState({ isDialogOpen: false });\r\n };\r\n\r\n activeLanguages = () => {\r\n const activeLanguages =\r\n this.props.appState.appUser!.organization!.gtOrganization!.languages!.filter(\r\n (language: any) => {\r\n if (language.isActive === true) {\r\n return language;\r\n }\r\n }\r\n );\r\n activeLanguages.forEach((language: any) => {\r\n language.displayName =\r\n language.displayName.charAt(0).toUpperCase() + language.displayName.slice(1);\r\n });\r\n return activeLanguages;\r\n };\r\n\r\n renderNameTextFields = () => {\r\n if (Object.keys(this.state.newWorkflow).length === 0) {\r\n return null;\r\n } else {\r\n const nameTextFieldsList = [] as any[];\r\n this.state.newWorkflow!.translations.forEach((item: ITranslation, index: number) => {\r\n nameTextFieldsList.push(\r\n \r\n this.handleWorkflowNameChange(e, item.language)}\r\n label={\r\n this.translatorService.Tranlate('EDIT_WORKFLOW_GUI_NAME_LABEL', 'Nume GUI') +\r\n ' - ' +\r\n item.language\r\n }\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n \r\n );\r\n });\r\n return nameTextFieldsList;\r\n }\r\n };\r\n\r\n handleWorkflowNameChange = (event: any, code: string | null) => {\r\n let newWorkflowTransList = [] as ITranslation[];\r\n if (this.state.newWorkflow.translations) {\r\n newWorkflowTransList = this.state.newWorkflow.translations.map((loc: any) => {\r\n if (loc.language === code) {\r\n loc.name = event.target.value;\r\n }\r\n return loc;\r\n });\r\n }\r\n this.setState({\r\n newWorkflow: {\r\n ...this.state.newWorkflow,\r\n translations: newWorkflowTransList,\r\n displayName: newWorkflowTransList[0].name!\r\n }\r\n });\r\n };\r\n\r\n handleWorkflowCaseTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n newWorkflow: {\r\n ...this.state.newWorkflow,\r\n caseType: newValue,\r\n caseTypeId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n // responsive: \"stacked\",\r\n customToolbar: () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLORS_NEW_WORKFLOW_MODAL_TITLE',\r\n 'Adauga flux'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.handleWorkflowCaseTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n {this.renderNameTextFields()}\r\n \r\n\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect((state: ApplicationState) => ({ appState: state.app }), {\r\n ...AppUserAdminActionCreators,\r\n ...AppActionCreators\r\n})(withSnackbar(Workflows as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { OrganizationFilterType } from '../../../interfaces/Organization';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { Box, Button, IconButton, Card, CardContent, Tabs } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { Tab } from '@material-ui/core';\r\n\r\ninterface IOrganizationFiltersState {\r\n organizationFilters: OrganizationFilterType[];\r\n isLoading: boolean;\r\n organizationFilterTypes: IReferential[];\r\n selectedOrganizationFilterType: IReferential | null;\r\n organizationId: number;\r\n}\r\n\r\ntype IOrganizationFiltersProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass OrganizationFilters extends React.PureComponent<\r\n IOrganizationFiltersProps,\r\n IOrganizationFiltersState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n organizationFilters: [],\r\n isLoading: false,\r\n organizationFilterTypes: [],\r\n selectedOrganizationFilterType: null,\r\n organizationId: 0\r\n } as IOrganizationFiltersState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizationFilters();\r\n }\r\n );\r\n }\r\n\r\n loadOrganizationFilters = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n const ref = Referentials.referential.find((item) => item.code === ReferentialCode.FilterType);\r\n\r\n const [orgFilterList, filterTypes] = await Promise.all([\r\n this.organizationService.GetOrganizationFilters(hoId),\r\n this.appReferentialService.Get(ref!.baseUrl)\r\n ]);\r\n\r\n let organizationFilters = orgFilterList;\r\n organizationFilters = organizationFilters.map((item: OrganizationFilterType) => {\r\n item.filterType = filterTypes.find(\r\n (filterType: IReferential) => filterType.id === item.filterTypeId\r\n )!;\r\n return item;\r\n });\r\n\r\n this.setState({\r\n organizationFilters: organizationFilters,\r\n organizationFilterTypes: filterTypes.filter((item) => item.isActive === true),\r\n isLoading: false,\r\n organizationId: hoId\r\n });\r\n };\r\n\r\n deleteOrgFilter = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.organizationService.RemoveOrganizationFilter(id);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadOrganizationFilters();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'filterType',\r\n label: this.translatorService.Tranlate('ORGANIZATION_FILTER_TYPE_LABEL', 'Tip dosar'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: IReferential) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deleteOrgFilter(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addOrgFilter = async () => {\r\n try {\r\n await this.organizationService.AddOrganizationFilter({\r\n filterTypeId: this.state.selectedOrganizationFilterType!.id,\r\n organizationId: this.state.organizationId\r\n } as OrganizationFilterType);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedOrganizationFilterType: null\r\n },\r\n () => {\r\n this.loadOrganizationFilters();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleAutocompleteChange = (newValue: IReferential | null) => {\r\n this.setState({ selectedOrganizationFilterType: newValue });\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.handleAutocompleteChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(OrganizationFilters as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Organization, OrganizationJobType } from '../../../interfaces/Organization';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { Box, Button, Card, CardContent, Tabs, Tab, IconButton } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport { isNullOrUndefined } from 'util';\r\nimport _ from 'lodash';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\n\r\ninterface IOrganizationJobTypesState {\r\n organizationJobTypes: OrganizationJobType[];\r\n isLoading: boolean;\r\n jobTypes: IReferential[];\r\n selectedJobType: IReferential[];\r\n organizationId: number;\r\n}\r\n\r\ntype IOrganizationJobTypesProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string;}>;\r\n\r\nclass OrganizationJobTypes extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n organizationJobTypes: [],\r\n isLoading: false,\r\n jobTypes: [],\r\n selectedJobType: [],\r\n organizationId: 0\r\n } as IOrganizationJobTypesState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizationJobTypes();\r\n }\r\n );\r\n }\r\n\r\n loadOrganizationJobTypes = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.JobType\r\n );\r\n\r\n const [organizationJobTypesList, jobTypes] = await Promise.all([\r\n this.organizationService.GetOrganizationJobTypes(hoId),\r\n this.appReferentialService.Get(ref!.baseUrl + '/all')\r\n ]);\r\n\r\n console.log('organizationJobTypesList', organizationJobTypesList);\r\n console.log('jobTypes', jobTypes);\r\n\r\n\r\n organizationJobTypesList.forEach((ojt) => {\r\n const jobType = jobTypes.find((item) => item.id === ojt.jobTypeId);\r\n\r\n ojt.jobType = isNullOrUndefined(jobType) ? null : jobType;\r\n });\r\n\r\n this.setState({\r\n organizationJobTypes: organizationJobTypesList,\r\n jobTypes: jobTypes.filter((item) => item.isActive === true),\r\n isLoading: false,\r\n organizationId: hoId\r\n });\r\n };\r\n\r\n \r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'jobType',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_TAB_JOB_TYPE',\r\n 'Job Type'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: Organization) => {\r\n return value ? value.displayName : \"\";\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_PARTNERS_TAB_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deleteOrgJobType(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n deleteOrgJobType = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.organizationService.RemoveOrganizationJobType(id);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadOrganizationJobTypes();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n addOrganizationJobType = async () => {\r\n try {\r\n if (\r\n this.state.organizationJobTypes.findIndex(\r\n (item) =>\r\n this.state.selectedJobType.findIndex((itemm) => itemm.id === item.jobTypeId) !==\r\n -1\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_PARTNER_EXISTS', 'Partenerul exista deja!'),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n const organizationJobTypes = [];\r\n for (const jobType of this.state.selectedJobType) {\r\n organizationJobTypes.push({\r\n id: 0,\r\n organizationId: this.state.organizationId,\r\n jobTypeId: jobType!.id,\r\n jobType: jobType\r\n } as OrganizationJobType);\r\n }\r\n\r\n await this.organizationService.AddOrganizationJobType(organizationJobTypes);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedJobType: []\r\n },\r\n () => {\r\n this.loadOrganizationJobTypes();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n\r\n handleOrganizationJobTypeChange = (newValue: any[]) => {\r\n this.setState({ selectedJobType: newValue });\r\n };\r\n\r\n renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n this.handleOrganizationJobTypeChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(OrganizationJobTypes as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Organization, OrganizationJobType, OrganizationMaintenancePackage } from '../../../interfaces/Organization';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { Box, Button, Card, CardContent, Tabs, Tab, IconButton } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport { isNullOrUndefined } from 'util';\r\nimport _ from 'lodash';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\n\r\ninterface IOrganizationMaintenancePackagesState {\r\n organizationMaintenancePackages: OrganizationMaintenancePackage[];\r\n isLoading: boolean;\r\n maintenancePackages: IReferential[];\r\n selectedMaintenancePackage: IReferential[];\r\n organizationId: number;\r\n}\r\n\r\ntype IOrganizationMaintenancePackagesProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string;}>;\r\n\r\nclass OrganizationMaintenancePackages extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n organizationMaintenancePackages: [],\r\n isLoading: false,\r\n maintenancePackages: [],\r\n organizationId: 0,\r\n selectedMaintenancePackage: []\r\n } as IOrganizationMaintenancePackagesState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizationMaintenancePackages();\r\n }\r\n );\r\n }\r\n\r\n loadOrganizationMaintenancePackages = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.MaintenancePackage\r\n );\r\n\r\n const [organizationMaintenancePackagesList, maintenancePackages] = await Promise.all([\r\n this.organizationService.GetOrganizationMaintenancePackages(hoId),\r\n this.appReferentialService.Get(ref!.baseUrl)\r\n ]);\r\n\r\n console.log('organizationMaintenancePackagesList', organizationMaintenancePackagesList);\r\n console.log('maintenancePackages', maintenancePackages);\r\n\r\n\r\n organizationMaintenancePackagesList.forEach((ojt) => {\r\n const maintenancePackage = maintenancePackages.find((item) => item.id === ojt.maintenancePackageId);\r\n\r\n ojt.maintenancePackage = isNullOrUndefined(maintenancePackage) ? null : maintenancePackage;\r\n });\r\n\r\n this.setState({\r\n organizationMaintenancePackages: organizationMaintenancePackagesList,\r\n maintenancePackages: maintenancePackages.filter((item) => item.isActive === true),\r\n isLoading: false,\r\n organizationId: hoId\r\n });\r\n };\r\n\r\n \r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'maintenancePackage',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_TAB_MAINTENANCE_PACKAGE',\r\n 'Pachet Mentenanta'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: Organization) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_PARTNERS_TAB_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deleteOrgMaintenancePackage(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n deleteOrgMaintenancePackage = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.organizationService.RemoveOrganizationMaintenancePackage(id);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadOrganizationMaintenancePackages();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n addOrganizationMaintenancePackage = async () => {\r\n try {\r\n if (\r\n this.state.organizationMaintenancePackages.findIndex(\r\n (item) =>\r\n this.state.selectedMaintenancePackage.findIndex((itemm) => itemm.id === item.maintenancePackageId) !==\r\n -1\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_PARTNER_EXISTS', 'Partenerul exista deja!'),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n const organizationMaintenancePackages = [];\r\n for (const maintenancePackage of this.state.selectedMaintenancePackage) {\r\n organizationMaintenancePackages.push({\r\n id: 0,\r\n organizationId: this.state.organizationId,\r\n maintenancePackageId: maintenancePackage!.id,\r\n maintenancePackage: maintenancePackage\r\n } as OrganizationMaintenancePackage);\r\n }\r\n\r\n await this.organizationService.AddOrganizationMaintenancePackage(organizationMaintenancePackages);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedMaintenancePackage: []\r\n },\r\n () => {\r\n this.loadOrganizationMaintenancePackages();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n\r\n handleOrganizationMaintenancePackageChange = (newValue: any[]) => {\r\n this.setState({ selectedMaintenancePackage: newValue });\r\n };\r\n\r\n renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n this.handleOrganizationMaintenancePackageChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(OrganizationMaintenancePackages as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport {\r\n Tooltip,\r\n Box,\r\n Button,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableMeta,\r\n MUIDataTableColumnOptions\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ICaseService } from '../../../services/Interfaces/ICaseService';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport moment from 'moment';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport EditOutlinedIcon from '@material-ui/icons/EditOutlined';\r\nimport * as R from 'ramda';\r\nimport { MaintenanceProducer } from '../../../interfaces/Case';\r\nimport { OrganizationOilViscosity } from '../../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport NumberFormat from 'react-number-format';\r\n\r\ninterface IOrganizationOilViscosityState {\r\n newOrganizationOilViscosity: OrganizationOilViscosity;\r\n oilViscosityList: IReferential[];\r\n organizationOilViscosityList: OrganizationOilViscosity[];\r\n isLoading: boolean;\r\n isDialogOpen: boolean;\r\n newOrganizationOilViscosityId: number | null;\r\n organizationId: number;\r\n}\r\ntype IOrganizationOilViscosityProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; }>;\r\n\r\nclass OrganizationOilViscosities extends React.PureComponent<\r\n IOrganizationOilViscosityProps,\r\n IOrganizationOilViscosityState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n private organizationService!: IOrganizationService;\r\n static contextType = ApplicationContext;\r\n private newOrganizationOilViscosity = {\r\n id: 0,\r\n organizationId: 0,\r\n oilViscosityId: 0,\r\n price: 0\r\n } as OrganizationOilViscosity;\r\n\r\n state = {\r\n organizationOilViscosityList: [],\r\n isLoading: false,\r\n selectedFilter: 0,\r\n isDialogOpen: false,\r\n newOrganizationOilViscosity: this.newOrganizationOilViscosity,\r\n oilViscosityList: [] as IReferential[],\r\n newOrganizationOilViscosityId: null,\r\n organizationId: 0\r\n } as IOrganizationOilViscosityState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizationOilViscosityList();\r\n }\r\n );\r\n }\r\n\r\n loadOrganizationOilViscosityList = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OilViscosity\r\n );\r\n\r\n const [organizationOilViscositiesList, oilViscosities] = await Promise.all([\r\n this.organizationService.GetOrganizationOilViscosities(hoId),\r\n this.appReferentialService.Get(ref!.baseUrl)\r\n ]);\r\n\r\n console.log('organizationOilViscositiesList', organizationOilViscositiesList);\r\n console.log('oilViscosities', oilViscosities);\r\n\r\n this.setState({\r\n organizationOilViscosityList: organizationOilViscositiesList,\r\n isLoading: false,\r\n oilViscosityList: oilViscosities,\r\n newOrganizationOilViscosity: { ...this.newOrganizationOilViscosity },\r\n organizationId: hoId\r\n });\r\n };\r\n\r\n private handleOilViscosityChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n newOrganizationOilViscosity: {\r\n ...this.state.newOrganizationOilViscosity,\r\n oilViscosity: newValue,\r\n oilViscosityId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n private handlePriceChange = (value: string) => {\r\n this.setState({\r\n newOrganizationOilViscosity: {\r\n ...this.state.newOrganizationOilViscosity,\r\n price: parseFloat(value)\r\n }\r\n });\r\n };\r\n\r\n public saveOrganizationOilViscosity = async () => {\r\n if (this.state.newOrganizationOilViscosityId === null) {\r\n try {\r\n if (\r\n this.state.organizationOilViscosityList.findIndex(\r\n (item) =>\r\n this.state.newOrganizationOilViscosity.oilViscosityId === item.oilViscosityId \r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_OIL_VISCOSITIES_EXISTS', 'Pretul pentru aceasta viscozitate exista deja!'),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n await this.organizationService.AddOrganizationOilViscosity({\r\n ...this.state.newOrganizationOilViscosity,\r\n organizationId : this.state.organizationId\r\n });\r\n await this.loadOrganizationOilViscosityList();\r\n this.closeDialog();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n \r\n } else {\r\n try {\r\n await this.organizationService.UpdateOrganizationOilViscosity(this.state.newOrganizationOilViscosity);\r\n await this.loadOrganizationOilViscosityList();\r\n this.closeDialog();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n \r\n public renderAddForm() {\r\n return (\r\n \r\n this.handlePriceChange(e.target.value)}\r\n label={this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_PRICE_LABEL',\r\n 'Pret'\r\n )}\r\n validators={['required', 'minNumber:1']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom,\r\n style: { fontWeight: 500 }\r\n }}\r\n />\r\n \r\n this.handleOilViscosityChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'oilViscosity',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_TAB_OIL_VISCOSITY',\r\n 'Viscozitate Ulei'\r\n ),\r\n options: {\r\n sort: true,\r\n customSort: (a: IReferential, b: IReferential) => {\r\n return a.name!.localeCompare(b.displayName!);\r\n },\r\n customBodyRender: (value: IReferential) => {\r\n return value ? value.displayName : '';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'price',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_TAB_OIL_VISCOSITY_PRICE',\r\n 'Pret'\r\n ) \r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate('USERS_DATE_MODIFICATION_HEADER', 'Data Modificare'),\r\n options: {\r\n filter: false,\r\n sortDirection: 'desc',\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n <>\r\n this.newOrganizationOilViscosityPopup(tableMeta.rowData[0])}\r\n >\r\n \r\n \r\n this.deleteOrganizationOilViscosity(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n }];\r\n return columns;\r\n };\r\n\r\n deleteOrganizationOilViscosity = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n await this.organizationService.RemoveOrganizationOilViscosity(id);\r\n await this.loadOrganizationOilViscosityList();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n newOrganizationOilViscosityPopup = async (organizationOilViscosityId: number | null) => {\r\n let newOrganizationOilViscosity: OrganizationOilViscosity;\r\n if (organizationOilViscosityId == null) {\r\n newOrganizationOilViscosity = { ...this.state.newOrganizationOilViscosity } as OrganizationOilViscosity;\r\n } else {\r\n newOrganizationOilViscosity = this.state.organizationOilViscosityList.find((item) => item.id === organizationOilViscosityId)!;\r\n }\r\n this.setState({\r\n isDialogOpen: true,\r\n newOrganizationOilViscosity: newOrganizationOilViscosity,\r\n newOrganizationOilViscosityId: organizationOilViscosityId\r\n });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState(\r\n { \r\n isDialogOpen: false, \r\n newOrganizationOilViscosity: this.newOrganizationOilViscosity\r\n }\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n // responsive: \"stacked\",\r\n customToolbar: () => {\r\n return (\r\n \r\n this.newOrganizationOilViscosityPopup(null)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n {this.state.isDialogOpen ? (\r\n \r\n \r\n \r\n \r\n \r\n {!this.state.newOrganizationOilViscosityId ? \r\n this.translatorService.Tranlate(\r\n 'ORGANIZATION_OIL_VISCOSITIES_ADD_MODAL_TITLE',\r\n 'Adauga Pret Viscozitate Ulei'\r\n ) : this.translatorService.Tranlate(\r\n 'ORGANIZATION_OIL_VISCOSITIES_UPDATE_MODAL_TITLE',\r\n 'Actualizeaza Pret Viscozitate Ulei'\r\n )} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(OrganizationOilViscosities as any));","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { OrganizationInvoiceRange} from '../../../interfaces/Organization';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { Box, Button, Card, CardContent, Tabs, Tab, IconButton, Dialog, DialogTitle, Grid, Typography, DialogContent, Tooltip } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport { isNullOrUndefined } from 'util';\r\nimport _ from 'lodash';\r\nimport { InvoiceRangeCodeEnum, RefConstants } from '../../../helpers/Constants';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport * as R from 'ramda';\r\nimport NumberFormat from 'react-number-format';\r\nimport EditOutlinedIcon from '@material-ui/icons/EditOutlined';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\n\r\ninterface IOrganizationInvoiceRangesState {\r\n organizationInvoiceRanges: OrganizationInvoiceRange[];\r\n isLoading: boolean;\r\n invoiceRangeTypes: IReferential[];\r\n invoiceRangeStatuses: IReferential[];\r\n organizationId: number;\r\n newOrganizationInvoiceRange: OrganizationInvoiceRange;\r\n newOrganizationInvoiceRangeId: number | null;\r\n isDialogOpen: boolean;\r\n}\r\n\r\ntype IOrganizationInvoiceRangesProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string;}>;\r\n\r\nclass OrganizationInvoiceRanges extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n private newOrganizationInvoiceRange = {\r\n id: 0,\r\n organizationId: 0,\r\n invoiceRangeTypeId: null,\r\n invoiceRangeType: null,\r\n firstSeries: null,\r\n startingNumber: null,\r\n currentNumber: null,\r\n endingNumber: null,\r\n lastSeries: null,\r\n invoiceRangeStatusId: null,\r\n invoiceRangeStatus: null\r\n } as unknown as OrganizationInvoiceRange;\r\n\r\n state = {\r\n organizationInvoiceRanges: [],\r\n isLoading: false,\r\n invoiceRangeTypes: [],\r\n invoiceRangeStatuses: [],\r\n organizationId: 0,\r\n newOrganizationInvoiceRange: this.newOrganizationInvoiceRange,\r\n newOrganizationInvoiceRangeId: null,\r\n isDialogOpen: false,\r\n } as IOrganizationInvoiceRangesState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizationInvoiceRanges();\r\n }\r\n );\r\n }\r\n\r\n loadOrganizationInvoiceRanges = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n const { invoiceRangeTypeRef, invoiceRangeStatusRef } = RefConstants;\r\n\r\n const [invoiceRangeTypes, invoiceRangeStatuses, organizationInvoiceRangesList] = await Promise.all([\r\n this.appReferentialService.Get(invoiceRangeTypeRef!.baseUrl),\r\n this.appReferentialService.Get(invoiceRangeStatusRef!.baseUrl),\r\n this.organizationService.GetOrganizationInvoiceRanges(hoId),\r\n ]);\r\n\r\n organizationInvoiceRangesList.forEach((ojt) => {\r\n const invoiceRangeType = invoiceRangeTypes.find((item) => item.id === ojt.invoiceRangeTypeId);\r\n const invoiceRangeStatus = invoiceRangeStatuses.find((item) => item.id === ojt.invoiceRangeStatusId);\r\n\r\n ojt.invoiceRangeType = isNullOrUndefined(invoiceRangeType) ? null : invoiceRangeType;\r\n ojt.invoiceRangeStatus = isNullOrUndefined(invoiceRangeStatus) ? null : invoiceRangeStatus;\r\n });\r\n\r\n this.setState({\r\n organizationInvoiceRanges: organizationInvoiceRangesList,\r\n invoiceRangeTypes: invoiceRangeTypes.filter((item) => item!.code === InvoiceRangeCodeEnum.FACTURA_SERVICE.toString()),\r\n invoiceRangeStatuses: invoiceRangeStatuses,\r\n isLoading: false,\r\n organizationId: hoId\r\n });\r\n };\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n private handleOrganizationInvoiceRangeTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n newOrganizationInvoiceRange: {\r\n ...this.state.newOrganizationInvoiceRange,\r\n invoiceRangeType: newValue,\r\n invoiceRangeTypeId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n \r\n private handleOrganizationInvoiceRangeStatusChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n newOrganizationInvoiceRange: {\r\n ...this.state.newOrganizationInvoiceRange,\r\n invoiceRangeStatus: newValue,\r\n invoiceRangeStatusId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n public saveOrganizationInvoiceRange = async () => {\r\n if (!R.isNil(this.state.newOrganizationInvoiceRange.startingNumber) && !R.isNil(this.state.newOrganizationInvoiceRange.endingNumber)) {\r\n if (this.state.newOrganizationInvoiceRange.endingNumber < this.state.newOrganizationInvoiceRange.startingNumber) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('INVOICE_RANGE_ENDING_NUMBER_ERROR', 'Numarul de sfarsit trebuie sa fie mai mare decat numarul de inceput!'), {\r\n variant: 'error'\r\n });\r\n return;\r\n }\r\n }\r\n\r\n if (this.state.newOrganizationInvoiceRangeId === null) {\r\n try {\r\n await this.organizationService.AddOrganizationInvoiceRange({\r\n ...this.state.newOrganizationInvoiceRange,\r\n organizationId: this.state.organizationId\r\n });\r\n\r\n await this.loadOrganizationInvoiceRanges();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n } else {\r\n try {\r\n\r\n await this.organizationService.UpdateOrganizationInvoiceRange({\r\n ...this.state.newOrganizationInvoiceRange,\r\n organizationId: this.state.organizationId\r\n });\r\n\r\n await this.loadOrganizationInvoiceRanges();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n \r\n \r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={0}\r\n />\r\n );\r\n };\r\n \r\n onChange =\r\n (fieldName: string, isNumber: boolean) => (e: any, newValue?: IReferential | null) => {\r\n isNumber\r\n ? this.setState({\r\n newOrganizationInvoiceRange: {\r\n ...this.state.newOrganizationInvoiceRange,\r\n [fieldName]: parseFloat(newValue || e.target.value)\r\n }\r\n })\r\n : this.setState({\r\n newOrganizationInvoiceRange: {\r\n ...this.state.newOrganizationInvoiceRange,\r\n [fieldName]: newValue || e.target.value\r\n }\r\n });\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n this.handleOrganizationInvoiceRangeTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n /> \r\n\r\n \r\n this.onChange('firstSeries', false)(e)\r\n }\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('ORGANIZATION_INVOICE_RANGE_FIRST_SERIES', 'Serie 1')}\r\n />\r\n\r\n this.onChange('startingNumber', true)(e)}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('ORGANIZATION_INVOICE_RANGE_STARTING_NUMBER', 'Numar inceput')}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n this.onChange('endingNumber', true)(e)}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('ORGANIZATION_INVOICE_RANGE_ENDING_NUMBER', 'Numar sfarsit')}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n error={!R.isNil(this.state.newOrganizationInvoiceRange.startingNumber) && !R.isNil(this.state.newOrganizationInvoiceRange.endingNumber) ? \r\n (this.state.newOrganizationInvoiceRange.endingNumber < this.state.newOrganizationInvoiceRange.startingNumber ? true : false) : false}\r\n helperText={\r\n !R.isNil(this.state.newOrganizationInvoiceRange.startingNumber) && !R.isNil(this.state.newOrganizationInvoiceRange.endingNumber) ? \r\n (this.state.newOrganizationInvoiceRange.endingNumber < this.state.newOrganizationInvoiceRange.startingNumber ? \r\n this.translatorService.Tranlate(\r\n 'ORGANIZATION_INVOICE_RANGE_ENDING_NUMBER_ERROR',\r\n 'Numarul de sfarsit trebuie sa fie mai mare decat numarul de inceput!'\r\n ) : '') : ''\r\n }\r\n />\r\n\r\n this.onChange('lastSeries', false)(e)}\r\n label={this.translatorService.Tranlate('ORGANIZATION_INVOICE_RANGE_LAST_SERIES', 'Serie 2')}\r\n />\r\n\r\n \r\n this.handleOrganizationInvoiceRangeStatusChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n /> \r\n\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n label: this.translatorService.Tranlate('INVOICE_RANGE_NR', 'NR'),\r\n options: {\r\n display: 'excluded',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'invoiceRangeType',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATION_INVOICE_RANGE_TYPE',\r\n 'Tip'\r\n ),\r\n options: {\r\n sort: true,\r\n customSort: (a: IReferential, b: IReferential) => {\r\n return a.displayName!.localeCompare(b.displayName!);\r\n },\r\n customBodyRender: (value: IReferential) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'firstSeries',\r\n label: this.translatorService.Tranlate('ORGANIZATION_INVOICE_RANGE_FIRST_SERIES', 'Serie 1'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'startingNumber',\r\n label: this.translatorService.Tranlate('ORGANIZATION_INVOICE_RANGE_STARTING_NUMBER', 'Numar inceput'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'currentNumber',\r\n label: this.translatorService.Tranlate('ORGANIZATION_INVOICE_RANGE_CURRENT_NUMBER', 'Numar curent'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: number | null, tableMeta: MUIDataTableMeta) => {\r\n return R.isNil(value) ? '' : value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'endingNumber',\r\n label: this.translatorService.Tranlate('ORGANIZATION_INVOICE_RANGE_ENDING_NUMBER', 'Numar sfarsit'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'lastSeries',\r\n label: this.translatorService.Tranlate('ORGANIZATION_INVOICE_RANGE_LAST_SERIES', 'Serie 2'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'invoiceRangeStatus',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATION_INVOICE_RANGE_STATUS',\r\n 'Status'\r\n ),\r\n options: {\r\n sort: true,\r\n customSort: (a: IReferential, b: IReferential) => {\r\n return a.displayName!.localeCompare(b.displayName!);\r\n },\r\n customBodyRender: (value: IReferential) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n const invoiceRange = this.state.organizationInvoiceRanges.find((item) => item.id === tableMeta.rowData[0]);\r\n\r\n return (\r\n <>\r\n this.newOrganizationInvoiceRatePopup(tableMeta.rowData[0])}\r\n >\r\n \r\n \r\n this.deleteOrganizationInvoiceRate(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n }];\r\n\r\n return columns;\r\n };\r\n\r\n deleteOrganizationInvoiceRate = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.organizationService.RemoveOrganizationInvoiceRange(id);\r\n\r\n await this.loadOrganizationInvoiceRanges();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n\r\n newOrganizationInvoiceRatePopup = async (organizationInvoiceRangeId: number | null) => {\r\n let newOrganizationInvoiceRange: OrganizationInvoiceRange;\r\n if (organizationInvoiceRangeId == null) {\r\n newOrganizationInvoiceRange = { ...this.state.newOrganizationInvoiceRange } as OrganizationInvoiceRange;\r\n } else {\r\n newOrganizationInvoiceRange = this.state.organizationInvoiceRanges.find((item) => item.id === organizationInvoiceRangeId)!;\r\n }\r\n this.setState({\r\n isDialogOpen: true,\r\n newOrganizationInvoiceRange: newOrganizationInvoiceRange,\r\n newOrganizationInvoiceRangeId: organizationInvoiceRangeId\r\n });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState(\r\n { \r\n isDialogOpen: false, \r\n newOrganizationInvoiceRange: this.newOrganizationInvoiceRange ,\r\n newOrganizationInvoiceRangeId: null\r\n }\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n customToolbar: () => {\r\n return (\r\n \r\n this.newOrganizationInvoiceRatePopup(null)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n {this.state.isDialogOpen ? (\r\n \r\n \r\n \r\n \r\n \r\n {!this.state.newOrganizationInvoiceRangeId ? \r\n this.translatorService.Tranlate(\r\n 'ORGANIZATION_INVOICE_RANGE_NEW_MODAL_TITLE',\r\n 'Adauga plaja facturi'\r\n ) : this.translatorService.Tranlate(\r\n 'ORGANIZATION_INVOICE_RANGE_UPDATE_MODAL_TITLE',\r\n 'Actualizeaza plaja facturi'\r\n )} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(OrganizationInvoiceRanges as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Grid, Button, Box } from '@material-ui/core';\r\nimport OrganizationDetailsTab from '../organizations/OrganizationDetailsTab';\r\nimport { AppContext, ApplicationContext } from '../../../context/Contexts';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport OrganizationUsers from '../organizations/OrganizationUsers';\r\nimport OrganizationInterfaces from '../organizations/OrganizationInterfaces';\r\nimport OrganizationParameters from '../organizations/OrganizationParameters';\r\nimport OrganizationNewCaseType from './organizationCase/OrganizationNewCaseType';\r\nimport OrganizationTariffs from '../tariffs/Tariffs';\r\nimport Workflows from '../workflows/Workflows';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { PageTitle } from '../../../layout-components';\r\nimport OrganizationFilters from '../../admin/organizations/OrganizationFilters';\r\nimport { Organization } from '../../../interfaces/Organization';\r\nimport OrganizationJobTypes from './OrganizationJobTypes';\r\nimport { RoleClaimsEnum } from '../../../helpers/Constants';\r\nimport OrganizationMaintenancePackages from './OrganizationMaintenancePackages';\r\nimport OrganizationOilViscosities from './OrganizationOilViscosities';\r\nimport OrganizationInvoiceRanges from './OrganizationInvoiceRanges';\r\n\r\ninterface IOrganizationAdminStateState {\r\n selectedTab: number;\r\n organization: Organization | null;\r\n}\r\n\r\ntype IOrganizationAdminProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass OrganizationAdmin extends React.PureComponent<\r\n IOrganizationAdminProps,\r\n IOrganizationAdminStateState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n selectedTab: 0,\r\n organization: null\r\n } as IOrganizationAdminStateState;\r\n\r\n componentDidMount = async () => {\r\n const orgId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(orgId)) {\r\n return;\r\n }\r\n const organizations = await this.organizationService.GetUserOrganizationsByIds([orgId]);\r\n\r\n this.setState({\r\n organization: organizations.length === 1 ? organizations[0] : null\r\n });\r\n };\r\n\r\n onButtonClick = (newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n public hasRole = (roleCode: string): boolean => {\r\n return this.props.appState.appUser?.userRole?.code === roleCode;\r\n };\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n return (\r\n \r\n {\r\n this.hasRight(RoleClaimsEnum.AdminService) ? (\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n \r\n this.onButtonClick(0)}\r\n >\r\n \r\n {this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_TAB_GENERAL_DATA',\r\n 'Date Generale'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {this.state.selectedTab === 0 ? (\r\n \r\n ) : null}\r\n {this.state.selectedTab === 1 ? (\r\n \r\n ) : null}\r\n {this.state.selectedTab === 2 ? : null}\r\n {this.state.selectedTab === 3 ? (\r\n \r\n ) : null}\r\n {this.state.selectedTab === 4 ? (\r\n \r\n ) : null}\r\n {this.state.selectedTab === 5 ? (\r\n \r\n ) : null}\r\n {this.state.selectedTab === 6 ? : null}\r\n {this.state.selectedTab === 7 ? (\r\n \r\n ) : null}\r\n {this.state.selectedTab === 8 ? (\r\n \r\n ) : null}\r\n {this.state.selectedTab === 9 ? (\r\n \r\n ) : null}\r\n {this.state.selectedTab === 10 ? (\r\n \r\n ) : null}\r\n {this.state.selectedTab === 11 ? (\r\n \r\n ) : null}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(OrganizationAdmin as any));\r\n","import React, { Fragment, ChangeEvent } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Organization,\r\n OrganizationType,\r\n OrganizationLevelType\r\n} from '../../../interfaces/Organization';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport {\r\n Box,\r\n Switch,\r\n Button,\r\n Tooltip,\r\n IconButton,\r\n Card,\r\n CardContent,\r\n Tabs,\r\n Tab,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport {\r\n OrganizationTypeCode,\r\n ReferentialCode,\r\n OrganizationLevelTypeCode,\r\n RoleCodeEnum,\r\n RoleClaimsEnum\r\n} from '../../../helpers/Constants';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\n\r\ninterface IHOOrganizationsState {\r\n organizations: Organization[];\r\n isLoading: boolean;\r\n selectedFilter: number;\r\n isDialogOpen: boolean;\r\n newHOOrg: Organization;\r\n organizationTypes: OrganizationType[];\r\n}\r\n\r\ntype HOOrganizationsProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\nclass HOOrganizations extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n private neworg = {\r\n name: '',\r\n id: 0,\r\n gtId: this.props.appState.appUser!.gtId,\r\n organizationTypeId: 0,\r\n organizationType: null,\r\n organizationLevelTypeId: 1,\r\n parent: null,\r\n isActive: true\r\n } as Organization;\r\n\r\n state = {\r\n organizations: [],\r\n isLoading: false,\r\n selectedFilter: 0,\r\n isDialogOpen: false,\r\n newHOOrg: this.neworg,\r\n organizationTypes: [] as OrganizationType[]\r\n } as IHOOrganizationsState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizations();\r\n }\r\n );\r\n }\r\n\r\n loadOrganizations = async () => {\r\n const orgList = await this.organizationService.GetHOOrganizations(this.hasRight(RoleClaimsEnum.AdminCountryOrganization) ? this.props.appState.appUser!.countryId : null);\r\n\r\n this.setState({\r\n organizations: orgList,\r\n isLoading: false,\r\n newHOOrg: { ...this.neworg }\r\n });\r\n };\r\n\r\n filterOrganizations = (orgList: Organization[]): Organization[] => {\r\n if (this.state.selectedFilter === 1) {\r\n orgList = orgList.filter((item) => item.organizationType!.code === OrganizationTypeCode.GT);\r\n }\r\n if (this.state.selectedFilter === 2) {\r\n orgList = orgList.filter((item) => item.organizationType!.code !== OrganizationTypeCode.GT);\r\n }\r\n\r\n return orgList;\r\n };\r\n\r\n newHOOrg = async () => {\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OrganizationType\r\n );\r\n const orgTypes = await this.appReferentialService.Get(ref!.baseUrl);\r\n\r\n this.setState({\r\n isDialogOpen: true,\r\n organizationTypes: orgTypes.filter(\r\n (item) => item.isActive === true\r\n ) as any as OrganizationType[]\r\n });\r\n };\r\n\r\n onRowClick = async (e: any, id: string, value: string) => {\r\n this.props.history.push('/admin/hoorganizations/' + id, value);\r\n };\r\n\r\n filterChange = (event: React.ChangeEvent, newValue: number) => {\r\n this.setState(\r\n { selectedFilter: newValue }\r\n // , async () => await this.loadOrganizations()\r\n );\r\n };\r\n\r\n handleIsActiveChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newOrganizations = [...this.state.organizations];\r\n const updatedOrgIndex = newOrganizations.findIndex((o) => o.id === id);\r\n\r\n if (updatedOrgIndex >= 0) {\r\n newOrganizations[updatedOrgIndex] = {\r\n ...newOrganizations[updatedOrgIndex],\r\n isActive: event.target.checked\r\n };\r\n\r\n try {\r\n await this.organizationService.UpdateOrganization(newOrganizations[updatedOrgIndex]);\r\n\r\n this.setState({ organizations: newOrganizations });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n public hasRole = (roleCode: string): boolean => {\r\n return this.props.appState.appUser?.userRole?.code === roleCode;\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'name',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_ORGANIZATION_NAME_HEADER',\r\n 'Organizatie'\r\n ),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.onRowClick(e, tableMeta.rowData[0], value)}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'organizationType',\r\n label: this.translatorService.Tranlate('ORGANIZATIONS_ORGANIZATION_TYPE_HEADER', 'Tip'),\r\n // customSort: (a:IReferential, b:IReferential) => { debugger; return a.name!.localeCompare(b.name!)},\r\n options: {\r\n sort: true,\r\n customSort: (a: IReferential, b: IReferential) => {\r\n debugger;\r\n return a.name!.localeCompare(b.name!);\r\n },\r\n customBodyRender: (value: OrganizationType) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'companyNumber',\r\n label: this.translatorService.Tranlate('ORGANIZATIONS_COMPANY_NUMBER_HEADER', 'CUI'),\r\n options: {\r\n filter: false\r\n }\r\n },\r\n {\r\n name: 'country',\r\n label: this.translatorService.Tranlate('ORGANIZATIONS_COUNTRY_HEADER', 'Tara'),\r\n options: {\r\n sort: true,\r\n customSort: (a: IReferential, b: IReferential) => {\r\n debugger;\r\n return a.name!.localeCompare(b.name!);\r\n },\r\n customBodyRender: (value: IReferential) => {\r\n return value ? value.displayName : '';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate('USERS_DATE_MODIFICATION_HEADER', 'Data Modificare'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'isActive',\r\n label: this.translatorService.Tranlate('USERS_IS_ACTIVE_HEADER', 'Activ'),\r\n options: {\r\n sortDirection: 'desc',\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(isActive: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names![0]) !== -1 && isActive === true) ||\r\n (filterVal.indexOf(this.names![1]) !== -1 && isActive === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleIsActiveChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n private handleTextChange = (event: React.ChangeEvent) => {\r\n let value: any;\r\n if (event.target.type === 'text') {\r\n value = event.currentTarget.value;\r\n }\r\n this.setState({\r\n newHOOrg: {\r\n ...this.state.newHOOrg,\r\n [event.target.id]: value\r\n }\r\n });\r\n };\r\n\r\n private handleOrganizationTypeChange = (newValue: OrganizationType | null) => {\r\n this.setState({\r\n newHOOrg: {\r\n ...this.state.newHOOrg,\r\n organizationType: newValue,\r\n organizationTypeId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n public saveOrganization = async () => {\r\n try {\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OrganizationLevel\r\n );\r\n const orgLevelTypes = await this.appReferentialService.Get(ref!.baseUrl);\r\n\r\n const hoType = orgLevelTypes.find((item) => item.code === OrganizationLevelTypeCode.HO);\r\n\r\n const newOrg = this.state.newHOOrg;\r\n\r\n if (hoType !== undefined) {\r\n newOrg.organizationLevelTypeId = hoType.id;\r\n newOrg.organizationLevelType = hoType as any as OrganizationLevelType;\r\n }\r\n\r\n if (this.hasRight(RoleClaimsEnum.AdminCountryOrganization) && this.props.appState.appUser?.countryId) {\r\n newOrg.countryId = this.props.appState.appUser?.countryId;\r\n }\r\n\r\n await this.organizationService.AddOrganization(this.state.newHOOrg);\r\n\r\n await this.loadOrganizations();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n public renderFilters = () => {\r\n return (\r\n \r\n \r\n \r\n , newValue: number) =>\r\n this.filterChange(event, newValue)\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n closeDialog = () => {\r\n this.setState({ isDialogOpen: false });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n // responsive: \"stacked\",\r\n customToolbar: () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n {this.renderFilters()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_NEW_HO_MODAL_TITLE',\r\n 'Adauga organizatie'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.handleOrganizationTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: OrganizationType) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(HOOrganizations as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { Box, Button, Grid, TextField } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport moment from 'moment';\r\nimport { CalculationTypeCode } from '../../../helpers/Constants';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ICaseService } from '../../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { CaseCalculationHistory } from '../../../interfaces/Case';\r\nimport FileSaver from 'file-saver';\r\n\r\ninterface IGtXMLState {\r\n caseId: string;\r\n isLoading: boolean;\r\n calculations: CaseCalculationHistory[];\r\n}\r\n\r\ntype GtXMLProps = { appState: AppState } & ProviderContext & RouteComponentProps<{ id: string }>;\r\n\r\nclass GtXML extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n caseId: '',\r\n calculations: [] as CaseCalculationHistory[]\r\n } as IGtXMLState;\r\n\r\n public componentDidMount() {\r\n this.setState({\r\n isLoading: false\r\n });\r\n }\r\n\r\n private handleTextChange = (event: React.ChangeEvent) => {\r\n this.setState({\r\n caseId: event.target.value\r\n });\r\n };\r\n\r\n renderCalculations = () => {\r\n return (\r\n \r\n {this.state.calculations.map((calc) => (\r\n \r\n this.downloadXml(calc.id)}\r\n >\r\n {calc.id}\r\n \r\n \r\n {moment.utc(calc.date).local().toDate().toLocaleString(this.props.appState.language)}\r\n \r\n \r\n {calc.amount}\r\n \r\n \r\n ))}\r\n \r\n );\r\n };\r\n\r\n downloadXml = async (id: number) => {\r\n const fileBlob = await this.caseService.GetCaseCalculationXML(\r\n Number.parseInt(this.state.caseId),\r\n id\r\n );\r\n\r\n FileSaver.saveAs(fileBlob, `GtResponse.xml`);\r\n };\r\n\r\n renderForms = () => {\r\n return (\r\n \r\n \r\n \r\n {this.renderCalculations()}\r\n \r\n );\r\n };\r\n\r\n loadCalculations = async () => {\r\n const calculations = await this.caseService.GetAdminCaseCalculationHistories(\r\n Number.parseInt(this.state.caseId)\r\n );\r\n\r\n this.setState({\r\n isLoading: false,\r\n calculations: calculations.filter(\r\n (item) => item.calculationType.code === CalculationTypeCode.ORG\r\n )\r\n });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderForms() : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(GtXML as any));\r\n","export const FormCode = {\r\n SEARCH_NOTICE: 'SEARCH_NOTICE',\r\n SEARCH_VEHICLE: 'SEARCH_VEHICLE',\r\n SEARCH_CLIENT: 'SEARCH_CLIENT',\r\n SEARCH_CLAIM_REVIEW: 'SEARCH_CLAIM_REVIEW',\r\n SELECT_WORKFLOW: 'SELECT_WORKFLOW',\r\n CASE_SUMMARY: 'F1',\r\n CASE_HISTORY: 'F7',\r\n CASE_CHANGE_WORKFLOW: 'F6',\r\n CASE_ATTACHMENTS: 'F4',\r\n CASE_CAR_PHOTOS: 'F5',\r\n CASE_CAR_DATA: 'F2',\r\n CASE_EVENT_DATA: 'F3',\r\n CASE_CALCULATIONS: 'F8',\r\n CASE_BACK_TO_SERVICE: 'F9',\r\n CASE_OTHER_SERVICE: 'F10',\r\n CASE_PAYMENT_DETAILS_SERVICE: 'F11',\r\n CASE_ORDER: 'F12',\r\n CASE_SERVICE_APPOINTMENT: 'F13',\r\n CASE_CLIENT_DATA: 'F14',\r\n CASE_CAR_DETAILS: 'F15',\r\n CASE_CAR_REPAIR_COST: 'F16',\r\n CASE_SALE_OFFER: 'F17',\r\n CASE_BUY_OFFER: 'F18',\r\n CASE_PAYMENT_DETAILS_WITH_CURRENCY: 'F19',\r\n CASE_VEHICLE_ADVERT: 'F20',\r\n CASE_VEHICLE_PB_ANUNT: 'PB_ANUNT',\r\n CASE_EVENT_DATE_FACT: 'F21',\r\n CASE_SOLD_CAR: 'F22',\r\n CASE_LKQ_APPOINTMENT:'F23',\r\n CASE_IN_OUT_REPORT: 'F24',\r\n CARFIX_CASE_CLIENT_DATA: 'F25',\r\n CARFIX_ANALYSIS_STEP: 'F26',\r\n CARFIX_BACK_TO_SERVICE_STEP: 'F27',\r\n CARFIX_APPOINTMENT_VALIDATION_STEP: 'F28',\r\n CARFIX_REPAIR_IN_PROGRESS_STEP: 'F29',\r\n CAR_IN_SERVICE: 'F30'\r\n};\r\n\r\nexport const SectionCode = {\r\n S1: 'S1',\r\n S2: 'S2',\r\n Calculatii: 'S3',\r\n Comenzi: 'S4',\r\n Constatare: 'S5',\r\n Reparatie: 'S6',\r\n Plati: 'S7',\r\n Cautare: 'Caut_are',\r\n Constatare_Efectuata: 'Cons_efct',\r\n Reconstatare: 'REC',\r\n Operati_speciale: 'OPE',\r\n Ofertare: 'OFR',\r\n Comanda_Piese: 'COM_PES',\r\n Inchidere_Dosar: 'IN_DOS',\r\n Oferte: 'S9',\r\n Anunturi: 'S10',\r\n Evaluare: 'S25',\r\n};\r\n","import { FormCode } from './FormCode';\r\nimport { Button } from 'reactstrap';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport React from 'react';\r\n\r\nexport class FormButton {\r\n public static GetButtons(\r\n code: string,\r\n translatorService: ITranslatorService,\r\n hasRights: boolean,\r\n executing: boolean\r\n ) {\r\n if (\r\n code === FormCode.SEARCH_CLIENT ||\r\n code === FormCode.SEARCH_NOTICE ||\r\n code === FormCode.SEARCH_CLAIM_REVIEW ||\r\n code === FormCode.SEARCH_VEHICLE\r\n ) {\r\n return (\r\n \r\n {translatorService.Tranlate('SEARCH_BTN', 'CAUTA')}\r\n \r\n );\r\n }\r\n if (code === FormCode.CASE_CAR_DATA || code === FormCode.CASE_EVENT_DATA) {\r\n return (\r\n \r\n {translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n );\r\n }\r\n if (code === FormCode.CASE_CAR_DATA) {\r\n return (\r\n \r\n {translatorService.Tranlate('SAVE_BTN', 'Salveaza')}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Button, Typography, Grid, Box } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { Workflow } from '../../interfaces/Workflow';\r\nimport { OrganizationTypeCode } from '../../helpers/Constants';\r\nimport { Organization, OrganizationCaseType } from '../../interfaces/Organization';\r\nimport { IWorkflowService } from '../../services/Interfaces/IWorkflowService';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { Case, ClientDto, VehicleDto } from '../../interfaces/Case';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport _ from 'lodash';\r\n\r\ninterface IWorkflowstate {\r\n scopeWorkflows: Workflow[];\r\n selectedWorkflow: Workflow | null;\r\n isLoading: boolean;\r\n}\r\nexport interface ExternalWorkflowsProps {\r\n selectedOrganizationCaseType: OrganizationCaseType | null;\r\n selectedNotice: { id: number; orgId: number; companyNumber: string } | null;\r\n selectedCase: Case | null;\r\n selectedVehicle: VehicleDto | null;\r\n selectedClient: ClientDto | null;\r\n workflows: Workflow[];\r\n caseStatuses: IReferential[];\r\n organization: Organization | null;\r\n}\r\n\r\ntype IWorkflowsProps = {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & typeof CaseSettingsActionCreators &\r\n ExternalWorkflowsProps &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass Workflows extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n scopeWorkflows: [],\r\n selectedWorkflow: null,\r\n isLoading: true\r\n } as IWorkflowstate;\r\n\r\n public async componentDidMount() {\r\n let scopeWorkflows = this.props.workflows.filter(\r\n (item) => item.caseTypeId === this.props.selectedOrganizationCaseType!.caseTypeId\r\n );\r\n\r\n if (!isNullOrUndefined(this.props.selectedNotice)) {\r\n scopeWorkflows = scopeWorkflows.filter(\r\n (item) => item.organizationOwnerId === this.props.selectedNotice!.orgId\r\n );\r\n if (\r\n !isNullOrUndefined(this.props.selectedNotice!.companyNumber) &&\r\n this.props.selectedNotice!.companyNumber !== ''\r\n ) {\r\n const organization = await this.organizationService.GetByCompanyNumber(\r\n this.props.selectedNotice.companyNumber\r\n );\r\n if (\r\n !isNullOrUndefined(organization) &&\r\n organization.organizationType!.code === OrganizationTypeCode.LEASING\r\n ) {\r\n scopeWorkflows = scopeWorkflows.filter(\r\n (item) =>\r\n item.organizationOwnerId === organization.id ||\r\n item.workflowPartners.findIndex(\r\n (item) => item.partnerId === organization.id && item.isActive\r\n ) !== -1\r\n );\r\n }\r\n }\r\n\r\n this.setState({\r\n scopeWorkflows: scopeWorkflows,\r\n isLoading: false\r\n });\r\n return;\r\n }\r\n\r\n if (this.props.organization == null) {\r\n this.setState({\r\n scopeWorkflows: scopeWorkflows,\r\n isLoading: false\r\n });\r\n return;\r\n }\r\n\r\n console.log('before scopeWorkflows', scopeWorkflows);\r\n console.log('organization', this.props.organization);\r\n\r\n //Acolo unde o organizatie are mai multe fluxuri de lucru dar are si parteneri,\r\n //parteneri care nu sunt adaugati pe toate aceste fluxuri trebuie sa avem posibilitatea de setare pentru afisare \r\n //sau nu a fluxurilor organizatiei proprietare\r\n if (this.props.organization.hideOrganizationOwnerWorkflows) {\r\n scopeWorkflows = scopeWorkflows.filter(\r\n (item) =>\r\n item.workflowPartners.findIndex(\r\n (item) => item.partnerId === this.props.organization!.id && item.isActive && !item.hideWorkflow\r\n ) !== -1\r\n );\r\n } else {\r\n scopeWorkflows = scopeWorkflows.filter(\r\n (item) =>\r\n //nu e partener pe fluxul de lucru\r\n item.workflowPartners.findIndex(\r\n (item) => item.partnerId === this.props.organization!.id\r\n ) === -1 \r\n ||\r\n //este partener pe fluxul de lucru si este activ si nu are flag-ul de ascundere setat\r\n item.workflowPartners.findIndex(\r\n (item) => item.partnerId === this.props.organization!.id && item.isActive && !item.hideWorkflow\r\n ) !== -1 \r\n );\r\n }\r\n console.log('after scopeWorkflows', scopeWorkflows);\r\n\r\n this.setState({\r\n scopeWorkflows: scopeWorkflows,\r\n isLoading: false\r\n });\r\n }\r\n\r\n createCase = async () => {\r\n if (isNullOrUndefined(this.state.selectedWorkflow)) {\r\n return;\r\n }\r\n\r\n console.log('selectedWorkflow', this.state.selectedWorkflow);\r\n console.log('is PRC Integration', this.state.selectedWorkflow.isPrcIntegration);\r\n try {\r\n this.setState({ isLoading: true });\r\n let newCase = this.props.selectedCase;\r\n if (this.props.selectedCase !== null) {\r\n console.log(this.props.selectedCase);\r\n await this.caseService.ChangeCaseWorkflow(\r\n this.state.selectedWorkflow.id,\r\n this.props.selectedCase.id,\r\n this.props.appState.appUser!.id!,\r\n this.props.selectedCase.caseStatus.caseStatusId\r\n );\r\n \r\n } else {\r\n console.log('Selected Vehicle', this.props.selectedVehicle);\r\n newCase = await this.caseService.CreateCase(\r\n this.state.selectedWorkflow.id,\r\n isNullOrUndefined(this.props.selectedNotice) ? null : this.props.selectedNotice.id,\r\n this.props.selectedVehicle,\r\n isNullOrUndefined(this.props.selectedClient) ? null : this.props.selectedClient.id\r\n \r\n );\r\n }\r\n\r\n this.props.history.push('/cases/' + newCase!.id, 'Case xx');\r\n } catch (ex) {\r\n this.setState({ isLoading: false });\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(ex.response.data, 'Eroare creare dosar!'),\r\n { \r\n variant: 'error' , \r\n autoHideDuration: 5000\r\n }\r\n );\r\n //console.log(ex.response.data);\r\n }\r\n };\r\n\r\n renderWorkflowList = () => {\r\n let selectedItem = -1;\r\n if (!isNullOrUndefined(this.state.selectedWorkflow)) {\r\n selectedItem = this.state.selectedWorkflow.id;\r\n }\r\n\r\n const organizations: Organization[] = [];\r\n this.state.scopeWorkflows.forEach((w) => {\r\n if (organizations.find((item) => item.id === w.organizationOwnerId) === undefined) {\r\n organizations.push(w.organizationOwner!);\r\n }\r\n });\r\n\r\n return organizations.map((org, index) => (\r\n \r\n \r\n {org.displayName}\r\n \r\n \r\n {this.state.scopeWorkflows\r\n .filter((w) => w.organizationOwnerId === org.id)\r\n .map((item, index) => (\r\n \r\n \r\n {\r\n this.setState({ selectedWorkflow: item });\r\n }}\r\n >\r\n {item.displayName}\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n ));\r\n };\r\n\r\n renderWorkflows = () => {\r\n return (\r\n \r\n {this.renderWorkflowList()}\r\n \r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ?
{this.renderWorkflows()}
: null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (stateProps: any, dispatchProps: any, ownProps: ExternalWorkflowsProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(Workflows as any));\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Button, IconButton, Modal, MuiThemeProvider, createMuiTheme } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { OrganizationCaseTypeStepForm } from '../../interfaces/Organization';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport DoubleArrowTwoTone from '@material-ui/icons/DoubleArrowTwoTone';\r\nimport { SearchVehicleFormData } from '../../interfaces/FormData';\r\nimport { FormButton } from '../../helpers/forms/FormButton';\r\nimport { VehicleDto } from '../../interfaces/Case';\r\nimport Form from '@rjsf/material-ui';\r\nimport { ISubmitEvent } from '@rjsf/core';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CaseTypeCode, VehicleStatusCodeEnum } from '../../helpers/Constants';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport moment from 'moment';\r\n\r\ninterface ISearchVehicleFormState {\r\n isLoading: boolean;\r\n isLoadingData: boolean;\r\n formData: SearchVehicleFormData;\r\n vehicleDtoList: VehicleDto[];\r\n modalOpen: boolean;\r\n modalMessage?: string;\r\n modalYesNoButtons: boolean;\r\n modalData?: any;\r\n}\r\n\r\nexport interface ExternalSearchVehicleFormProps {\r\n onVehicleSelected: (vehicleDto: VehicleDto) => void;\r\n organizationCaseTypeStepForm: OrganizationCaseTypeStepForm;\r\n searchInVehicleStock: boolean;\r\n}\r\n\r\ntype ISearchVehicleFormProps = ExternalSearchVehicleFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass SearchVehicleForm extends React.PureComponent<\r\n ISearchVehicleFormProps,\r\n ISearchVehicleFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n isLoading: true,\r\n isLoadingData: false,\r\n vehicleDtoList: [],\r\n formData: {} as SearchVehicleFormData,\r\n modalOpen: false,\r\n modalMessage: undefined,\r\n modalYesNoButtons: false,\r\n modalData: undefined\r\n } as ISearchVehicleFormState;\r\n\r\n public async componentDidMount() {\r\n this.setState({\r\n isLoading: false\r\n });\r\n }\r\n\r\n onSubmit = async () => {\r\n if (!this.state.formData.vin?.trim() && !this.state.formData.plateNumber?.trim()) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'SEARCH_NOTICE_EMPTY_FIELDS_MSG',\r\n 'Completati cel putin un criteriu de cautare'\r\n ),\r\n { variant: 'info' }\r\n );\r\n return;\r\n }\r\n\r\n if (this.state.formData.vin || this.state.formData.plateNumber) {\r\n this.setState({ isLoadingData: true });\r\n const vehicles = await this.caseService.SearchVehicle(\r\n this.state.formData.vin?.toUpperCase(),\r\n this.state.formData.plateNumber?.toUpperCase(),\r\n this.props.searchInVehicleStock\r\n );\r\n\r\n this.setState({\r\n isLoadingData: false,\r\n vehicleDtoList: vehicles\r\n });\r\n }\r\n };\r\n\r\n onRowlick = async (e: any, rowData: any[]) => {\r\n const currentVehicle = this.state.vehicleDtoList.find((v) => v.id === rowData[0]);\r\n\r\n if (currentVehicle?.status) {\r\n const vehicleStatus = currentVehicle.status.id;\r\n switch (vehicleStatus) {\r\n case VehicleStatusCodeEnum.Available:\r\n this.handleModalConfirmation(rowData);\r\n break;\r\n case VehicleStatusCodeEnum.Sold:\r\n this.handleOpenModal(\r\n this.translatorService.Tranlate(\r\n 'VEHICLE_SEARCH_FORM_VEHICLE_SOLD',\r\n 'Autovehiculul selectat este vandut.'\r\n ),\r\n undefined\r\n );\r\n break;\r\n case VehicleStatusCodeEnum.Repair:\r\n let message = this.translatorService.Tranlate(\r\n 'VEHICLE_SEARCH_FORM_VEHICLE_REPAIR',\r\n 'Autovehiculul selectat se afla in proces de reparatie'\r\n );\r\n\r\n if (\r\n currentVehicle.lastCase?.caseTypeCode === CaseTypeCode.CLAIM ||\r\n currentVehicle.lastCase?.caseTypeCode === CaseTypeCode.REP\r\n ) {\r\n message = `${this.translatorService.Tranlate(\r\n 'VEHICLE_SEARCH_FORM_VEHICLE_REPAIR_CASE',\r\n 'Autovehiculul selectat se afla in proces de reparatie pe dosarul'\r\n )} ${currentVehicle.lastCase.id}, ${this.translatorService.Tranlate(\r\n 'VEHICLE_SEARCH_FORM_VEHICLE_OPENED_BY',\r\n 'deschis de catre'\r\n )}\r\n ${currentVehicle.lastCase.createdByUserName}, \r\n ${moment\r\n .utc(currentVehicle.lastCase.dateCreation)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}.`;\r\n } else {\r\n message = `${this.translatorService.Tranlate(\r\n 'VEHICLE_SEARCH_FORM_VEHICLE_REPAIR',\r\n 'Autovehiculul selectat se afla in proces de reparatie'\r\n )} ${this.translatorService.Tranlate(\r\n 'VEHICLE_SEARCH_FORM_VEHICLE_OPENED_BY',\r\n 'deschis de catre'\r\n )}\r\n ${currentVehicle.status.userName}, \r\n ${moment\r\n .utc(currentVehicle.status.date)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}.`;\r\n }\r\n\r\n this.handleOpenModal(message, rowData, true);\r\n break;\r\n case VehicleStatusCodeEnum.Reserved:\r\n this.handleOpenModal(\r\n `${this.translatorService.Tranlate(\r\n 'VEHICLE_SEARCH_FORM_VEHICLE_RESERVED',\r\n 'Autovehiculul selectat a fost rezervat de catre'\r\n )} ${currentVehicle.status.userName}, \r\n ${moment\r\n .utc(currentVehicle.status.date)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}.`,\r\n rowData,\r\n true\r\n );\r\n break;\r\n case VehicleStatusCodeEnum.Aquisition:\r\n let message1 = this.translatorService.Tranlate(\r\n 'VEHICLE_SEARCH_FORM_VEHICLE_AQUISITION',\r\n 'Autovehiculul selectat se afla in proces de achizitie.'\r\n );\r\n\r\n if (currentVehicle.lastCase?.caseTypeCode === CaseTypeCode.AQUISITION) {\r\n message1 = `${this.translatorService.Tranlate(\r\n 'VEHICLE_SEARCH_FORM_VEHICLE_AQUISITION_CASE',\r\n 'Autovehiculul selectat se afla in proces de achizitie pe dosarul'\r\n )} ${currentVehicle.lastCase.id}, ${this.translatorService.Tranlate(\r\n 'VEHICLE_SEARCH_FORM_VEHICLE_OPENED_BY',\r\n 'deschis de catre'\r\n )} ${currentVehicle.lastCase.createdByUserName}, \r\n ${moment\r\n .utc(currentVehicle.lastCase.dateCreation)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}.`;\r\n }\r\n this.handleOpenModal(message1, undefined);\r\n break;\r\n case VehicleStatusCodeEnum.AcquisitionRefused:\r\n this.handleOpenModal(\r\n this.translatorService.Tranlate(\r\n 'VEHICLE_SEARCH_FORM_VEHICLE_AQUISITION_REFUSED',\r\n 'Autovehiculul selectat nu a fost achizitionat.'\r\n ),\r\n undefined\r\n );\r\n break;\r\n case VehicleStatusCodeEnum.ForSale:\r\n this.props.history.push('/cases/' + currentVehicle.lastCase.id);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n label: ' ',\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'vin',\r\n label: this.translatorService.Tranlate('VEHICLE_SEARCH_FORM_VEHICLE_VIN_LABEL', 'Vin')\r\n },\r\n {\r\n name: 'plateNumber',\r\n label: this.translatorService.Tranlate(\r\n 'VEHICLE_SEARCH_FORM_VEHICLE_PLATE_NUMBER_LABEL',\r\n 'Numar Inmatriculare'\r\n )\r\n },\r\n {\r\n name: 'make',\r\n label: this.translatorService.Tranlate('VEHICLE_SEARCH_FORM_VEHICLE_MAKE_LABEL', 'Marca')\r\n },\r\n {\r\n name: 'model',\r\n label: this.translatorService.Tranlate('VEHICLE_SEARCH_FORM_VEHICLE_MODEL_LABEL', 'Model')\r\n },\r\n {\r\n name: 'status.nameLocalized',\r\n label: this.translatorService.Tranlate('VEHICLE_SEARCH_FORM_VEHICLE_MODEL_STATUS', 'Status')\r\n },\r\n {\r\n name: 'registrationDate',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'class',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'region',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n handleCloseModal = () => {\r\n this.setState({\r\n modalOpen: false,\r\n modalMessage: undefined,\r\n modalYesNoButtons: false,\r\n modalData: undefined\r\n });\r\n };\r\n\r\n handleOpenModal = (modalMessage: string, modalData?: any[], modalYesNoButtons = false) => {\r\n this.setState({\r\n modalOpen: true,\r\n modalMessage,\r\n modalYesNoButtons,\r\n modalData\r\n });\r\n };\r\n\r\n handleModalConfirmation = (rowData: any[]) => {\r\n this.props.onVehicleSelected({\r\n id: rowData[0],\r\n vin: rowData[1],\r\n plateNumber: rowData[2],\r\n make: rowData[3],\r\n model: rowData[4],\r\n firstPlateDate: rowData[6],\r\n class: rowData[7],\r\n region: rowData[8]\r\n } as VehicleDto);\r\n };\r\n\r\n renderModal = () => {\r\n return (\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
{this.state.modalMessage}
\r\n {this.state.modalYesNoButtons && (\r\n
\r\n {' '}\r\n {this.translatorService.Tranlate(\r\n 'VEHICLE_SEARCH_FORM_VEHICLE_CONTINUE',\r\n 'Doriti sa continuati?'\r\n )}\r\n
\r\n )}\r\n
\r\n
\r\n {!this.state.modalYesNoButtons ? (\r\n \r\n Ok\r\n \r\n ) : (\r\n
\r\n this.handleModalConfirmation(this.state.modalData)}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_SEARCH_FORM_VEHICLE_YES', 'Da')}\r\n \r\n        \r\n \r\n {this.translatorService.Tranlate('VEHICLE_SEARCH_FORM_VEHICLE_NO', 'NU')}\r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n \r\n getMuiTheme = () => createMuiTheme({\r\n overrides: {\r\n MuiTableCell: {\r\n root: {\r\n '@media (max-width:599.98px)': { \r\n borderBottom: \"none\",\r\n padding: \"1px\",\r\n },\r\n },\r\n },\r\n MUIDataTableBodyCell: {\r\n stackedCommon: {\r\n '@media (max-width:599.98px)': { \r\n display: \"block\",\r\n width: \"100% !important\",\r\n whiteSpace: \"normal\",\r\n height: \"100%\",\r\n // fontSize: \"12px\",\r\n paddingLeft: \"5px\",\r\n paddingTop: \"5px\"\r\n },\r\n },\r\n cellHide:{\r\n fontWeight: \"bold\",\r\n paddingTop: \"15px\",\r\n }\r\n },\r\n MuiTableRow: {\r\n root: {\r\n borderBottom: \"1px solid rgba(224, 224, 224, 1)\"\r\n }\r\n }\r\n } as any\r\n });\r\n \r\n handleRowClick = async (rowData: any[], rowMeta: MUIDataTableMeta) => {\r\n rowData[0] = this.state.vehicleDtoList[rowMeta.rowIndex].id;\r\n await this.onRowlick(rowData, rowData);\r\n }\r\n\r\n renderResults = () => {\r\n const options = {\r\n filter: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n // responsive: \"stacked\",\r\n elevation: 0,\r\n search: false,\r\n viewColumns: false,\r\n pagination: false,\r\n onRowClick: this.handleRowClick as any\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n {this.state.isLoadingData ? (\r\n ''\r\n ) : (\r\n <>\r\n \r\n \r\n \r\n {this.renderModal()}\r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n renderSelectedForm = () => {\r\n let jsonSchema = {};\r\n let jsonGUI = {};\r\n try {\r\n jsonSchema = JSON.parse(this.props.organizationCaseTypeStepForm.json1);\r\n jsonGUI = JSON.parse(this.props.organizationCaseTypeStepForm.json2);\r\n } catch {\r\n console.log('json schema/gui error');\r\n }\r\n const schema = this.translatorService.TranslateSchema(jsonSchema);\r\n\r\n return (\r\n this.setState({ formData: e.formData })}\r\n onSubmit={async (e: ISubmitEvent) => await this.onSubmit()}\r\n transformErrors={this.translatorService.TranslateErrors}\r\n >\r\n
\r\n {FormButton.GetButtons(\r\n this.props.organizationCaseTypeStepForm.form.code,\r\n this.translatorService,\r\n true,\r\n false\r\n )}\r\n
\r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n\r\n return (\r\n \r\n {this.renderSelectedForm()}\r\n {this.state.isLoading ? '' : this.renderResults()}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalSearchVehicleFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(SearchVehicleForm as any));\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { IconButton } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { OrganizationCaseTypeStepForm } from '../../interfaces/Organization';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport DoubleArrowTwoTone from '@material-ui/icons/DoubleArrowTwoTone';\r\nimport { SearchClientFormData } from '../../interfaces/FormData';\r\nimport { FormButton } from '../../helpers/forms/FormButton';\r\nimport { ClientDto } from '../../interfaces/Case';\r\nimport Form from '@rjsf/material-ui';\r\nimport { ISubmitEvent } from '@rjsf/core';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { ReferentialCode } from '../../helpers/Constants';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { CNP } from 'romanian-personal-identity-code-validator';\r\nimport * as R from 'ramda';\r\nimport { Button } from 'reactstrap';\r\n\r\ninterface ISearchClientFormState {\r\n clientDtoList: ClientDto[];\r\n isLoading: boolean;\r\n isLoadingData: boolean;\r\n formData: SearchClientFormData;\r\n personTypes: IReferential[];\r\n displayNextActionBtn: boolean;\r\n}\r\n\r\nexport interface ExternalSearchClientFormProps {\r\n onClientSelected: (clientDto: ClientDto) => void;\r\n organizationCaseTypeStepForm: OrganizationCaseTypeStepForm;\r\n}\r\n\r\ntype ISearchClientFormProps = ExternalSearchClientFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass SearchClientForm extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n clientDtoList: [],\r\n isLoading: true,\r\n isLoadingData: false,\r\n vehicleDtoList: [],\r\n formData: {} as SearchClientFormData,\r\n personTypes: [],\r\n displayNextActionBtn: false\r\n } as ISearchClientFormState;\r\n\r\n public async componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: false\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n }\r\n\r\n loadData = async () => {\r\n const refpersonType = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.PersonType\r\n );\r\n const [personTypeList] = await Promise.all([\r\n this.appReferentialService.Get(refpersonType!.baseUrl)\r\n ]);\r\n\r\n this.setState({\r\n personTypes: personTypeList\r\n });\r\n };\r\n\r\n onSubmit = async () => {\r\n if (R.isNil(this.state.formData.cnpCui) && R.isNil(this.state.formData.personTypeId)) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'SEARCH_NOTICE_EMPTY_FIELDS_MSG',\r\n 'Completati cel putin un criteriu de cautare'\r\n ),\r\n { variant: 'info' }\r\n );\r\n return;\r\n }\r\n\r\n if (this.state.formData.personTypeId === 1) {\r\n if (!R.isNil(this.state.formData.cnpCui)) {\r\n const cnp = new CNP(this.state.formData.cnpCui);\r\n\r\n if (!cnp.isValid()) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('FRM_EVENT_DATA_PIN_ERROR', 'CNP invalid!'),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n }\r\n }\r\n\r\n this.setState({ isLoadingData: true });\r\n\r\n const clients = await this.caseService.SearchClient(\r\n this.state.formData.personTypeId,\r\n this.state.formData.cnpCui,\r\n this.state.formData.clientName\r\n );\r\n this.setState({\r\n isLoadingData: false,\r\n clientDtoList: clients,\r\n displayNextActionBtn: clients.length === 0\r\n });\r\n };\r\n\r\n onRowlick = async (e: any, rowData: any[]) => {\r\n const client = this.state.clientDtoList.find((item) => item.id === rowData[0]);\r\n this.props.onClientSelected(client!);\r\n };\r\n\r\n getColumns = () => {\r\n let columns;\r\n if (this.state.formData.personTypeId === 1) {\r\n columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n label: '',\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n await this.onRowlick(e, tableMeta.rowData)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'personType.displayName',\r\n label: this.translatorService.Tranlate(\r\n 'CLIENT_SEARCH_FORM_PERSON_TYPE_LABEL',\r\n 'Tip Persoana'\r\n ),\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'pin',\r\n label: this.translatorService.Tranlate('CLIENT_SEARCH_FORM_PIN_LABEL', 'CNP')\r\n },\r\n {\r\n name: 'firstName',\r\n label: this.translatorService.Tranlate('CLIENT_SEARCH_FORM_FIRST_NAME_LABEL', 'Nume'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta, updateValue: any) => {\r\n const client = this.state.clientDtoList.find(\r\n (item) => item.id === tableMeta.rowData[0]\r\n );\r\n return
{client!.firstName + ' ' + client!.lastName}
;\r\n }\r\n }\r\n },\r\n {\r\n name: 'lastName',\r\n label: this.translatorService.Tranlate('CLIENT_SEARCH_FORM_LAST_NAME_LABEL', 'Nume'),\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'email',\r\n label: this.translatorService.Tranlate('CLIENT_SEARCH_FORM_EMAIL_LABEL', 'E-mail')\r\n },\r\n {\r\n name: 'phone',\r\n label: this.translatorService.Tranlate('CLIENT_SEARCH_FORM_PHONE_LABEL', 'Telefon')\r\n }\r\n ];\r\n } else {\r\n columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n label: '',\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n await this.onRowlick(e, tableMeta.rowData)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'personType.displayName',\r\n label: this.translatorService.Tranlate(\r\n 'CLIENT_SEARCH_FORM_PERSON_TYPE_LABEL',\r\n 'Tip Persoana'\r\n ),\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'companyNumber',\r\n label: this.translatorService.Tranlate('CLIENT_SEARCH_FORM_COMPANY_NUMBER_LABEL', 'CUI')\r\n },\r\n {\r\n name: 'firstName',\r\n label: this.translatorService.Tranlate('CLIENT_SEARCH_FORM_FIRST_NAME_LABEL', 'Nume'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta, updateValue: any) => {\r\n const client = this.state.clientDtoList.find(\r\n (item) => item.id === tableMeta.rowData[0]\r\n );\r\n return
{client!.companyName}
;\r\n }\r\n }\r\n },\r\n {\r\n name: 'lastName',\r\n label: this.translatorService.Tranlate('CLIENT_SEARCH_FORM_LAST_NAME_LABEL', 'Nume'),\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'email',\r\n label: this.translatorService.Tranlate('CLIENT_SEARCH_FORM_EMAIL_LABEL', 'E-mail')\r\n },\r\n {\r\n name: 'phone',\r\n label: this.translatorService.Tranlate('CLIENT_SEARCH_FORM_PHONE_LABEL', 'Telefon')\r\n }\r\n ];\r\n }\r\n\r\n return columns;\r\n };\r\n\r\n renderResults = () => {\r\n const options = {\r\n filter: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n // responsive: \"stacked\",\r\n elevation: 0,\r\n search: false,\r\n viewColumns: false,\r\n pagination: false\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n {this.state.isLoadingData ? (\r\n ''\r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n handleArraySchema = (schema: any) => {\r\n if (R.isNil(schema.properties)) {\r\n return schema;\r\n }\r\n\r\n if (this.state.personTypes.length > 0) {\r\n for (const key of Object.keys(schema.properties)) {\r\n if (\r\n schema.properties[key].anyOf !== undefined &&\r\n schema.properties[key].anyOf[0].title === 'PERSON_TYPE_ENUM'\r\n ) {\r\n schema.properties[key].anyOf = this.state.personTypes.map((item) => {\r\n return {\r\n type: 'number',\r\n title: item.displayName,\r\n enum: [item.id]\r\n };\r\n });\r\n }\r\n }\r\n }\r\n\r\n return schema;\r\n };\r\n\r\n renderSelectedForm = () => {\r\n let jsonSchema = {};\r\n let jsonGUI = {};\r\n try {\r\n jsonSchema = JSON.parse(this.props.organizationCaseTypeStepForm.json1);\r\n jsonGUI = JSON.parse(this.props.organizationCaseTypeStepForm.json2);\r\n } catch {\r\n console.log('json schema/gui error');\r\n }\r\n let schema = this.translatorService.TranslateSchema(jsonSchema);\r\n schema = this.handleArraySchema(jsonSchema);\r\n\r\n return (\r\n this.setState({ formData: e.formData })}\r\n onSubmit={async (e: ISubmitEvent) => await this.onSubmit()}\r\n transformErrors={this.translatorService.TranslateErrors}\r\n >\r\n
\r\n {FormButton.GetButtons(\r\n this.props.organizationCaseTypeStepForm.form.code,\r\n this.translatorService,\r\n true,\r\n false\r\n )}\r\n {this.state.displayNextActionBtn ? (\r\n {\r\n this.props.onClientSelected({} as ClientDto);\r\n }}\r\n >\r\n {this.translatorService.Tranlate('SEARCH_NewClient', 'Client Nou')}\r\n \r\n ) : null}\r\n
\r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n return (\r\n \r\n {this.renderSelectedForm()}\r\n {this.state.isLoading ? '' : this.renderResults()}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalSearchClientFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(SearchClientForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { omit } from 'lodash';\r\nimport { ApplicationState, AppState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport {\r\n Tab,\r\n Tabs,\r\n Stepper,\r\n StepConnector,\r\n Step,\r\n StepLabel,\r\n AppBar,\r\n StepButton\r\n} from '@material-ui/core';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { ProviderContext, withSnackbar } from 'notistack';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport {\r\n Organization,\r\n OrganizationCaseType,\r\n OrganizationCaseTypeStep,\r\n OrganizationCaseTypeStepForm\r\n} from '../../interfaces/Organization';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { CaseStatusCodeEnum, GTErrorCode, OrganizationCaseTypeStepCode, ReferentialCode } from '../../helpers/Constants';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Card } from 'reactstrap';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport Form from '@rjsf/material-ui';\r\nimport { FormButton } from '../../helpers/forms/FormButton';\r\nimport { FormCode } from '../../helpers/forms/FormCode';\r\nimport { ISubmitEvent } from '@rjsf/core';\r\nimport { SearchCaseFormData, SearchNoticeFormData } from '../../interfaces/FormData';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n SelectableRows,\r\n MUIDataTableMeta\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport DoubleArrowTwoTone from '@material-ui/icons/DoubleArrowTwoTone';\r\nimport { IWorkflowService } from '../../services/Interfaces/IWorkflowService';\r\nimport { Workflow } from '../../interfaces/Workflow';\r\nimport Workflows from '../newCase/Workflows';\r\nimport moment from 'moment';\r\nimport SearchVehicleForm from './SearchVehicleForm';\r\nimport SearchClientForm from './searchClientForm';\r\nimport { CaseTypeCode } from '../../helpers/Constants';\r\nimport { Case, ClientDto, ModelData, Notice, VehicleDto } from '../../interfaces/Case';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { Button, Typography, Grid, Box, Dialog, DialogTitle, IconButton, DialogContent } from '@material-ui/core';\r\nimport * as R from 'ramda';\r\n\r\ntype NewCaseProps = AppState & ProviderContext & RouteComponentProps;\r\n\r\ninterface INewCaseState {\r\n selectedTab: number;\r\n isLoading: boolean;\r\n organizationCaseTypes: OrganizationCaseType[];\r\n selectedOrganizationCaseType: OrganizationCaseType | null;\r\n organizationSteps: OrganizationCaseTypeStep[];\r\n activeStep: number;\r\n organizationForms: OrganizationCaseTypeStepForm[];\r\n selectedTabForm: number;\r\n selectedOrganizationForm: OrganizationCaseTypeStepForm | null;\r\n noticeList: Notice[];\r\n claimReviewList: Case[];\r\n formData: any;\r\n workflows: Workflow[];\r\n selectedWorkflow: Workflow | null;\r\n selectedNotice: { id: number; orgId: number; companyNumber: string } | null;\r\n selectedVehicle: VehicleDto | null;\r\n selectedClient: ClientDto | null;\r\n selectedCase: Case | null;\r\n isDialogOpen: boolean;\r\n modelData: ModelData[];\r\n selectedModelData: ModelData | null;\r\n caseStatuses: IReferential[];\r\n organization: Organization | null;\r\n hideSaleNewWorkflow: boolean;\r\n}\r\nclass NewCase extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n private caseService!: ICaseService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n selectedTab: 0,\r\n isLoading: false,\r\n organizationCaseTypes: [],\r\n selectedOrganizationCaseType: null,\r\n organizationSteps: [],\r\n activeStep: 0,\r\n organizationForms: [],\r\n selectedTabForm: 0,\r\n selectedOrganizationForm: null,\r\n noticeList: [],\r\n claimReviewList: [],\r\n formData: null,\r\n workflows: [],\r\n selectedWorkflow: null,\r\n selectedNotice: null,\r\n selectedVehicle: null,\r\n selectedClient: null,\r\n selectedCase: null,\r\n isDialogOpen: false,\r\n modelData: [],\r\n selectedModelData: null,\r\n caseStatuses: [],\r\n organization: null,\r\n hideSaleNewWorkflow: true\r\n } as INewCaseState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseTypesStepsForms(null);\r\n }\r\n );\r\n }\r\n\r\n loadCaseTypesStepsForms = async (caseType: OrganizationCaseType | null) => {\r\n const hoId =\r\n this.props.appUser!.organization!.hoId === null\r\n ? this.props.appUser!.organizationId\r\n : this.props.appUser!.organization!.hoId;\r\n\r\n if (hoId === null) {\r\n return;\r\n }\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n const refCaseType = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CaseType\r\n );\r\n\r\n const refCaseStatus = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CaseStatus\r\n );\r\n\r\n const [orgCaseList, orgCaseTypes, caseStatuses, workflows, organization] = await Promise.all([\r\n this.organizationService.GetUserOrganizationCaseType(),\r\n this.appReferentialService.Get(refCaseType!.baseUrl),\r\n this.appReferentialService.Get(refCaseStatus!.baseUrl),\r\n this.workflowService.GetUserWorkflows(),\r\n R.isNil(this.props!.appUser!.organizationId) ? null :\r\n this.organizationService.GetOrganizationInfo(this.props!.appUser!.organizationId)\r\n ]);\r\n\r\n const owners = await this.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(workflows.map((item) => item.organizationOwnerId)))\r\n );\r\n workflows.forEach((w) => {\r\n const owner = owners.find((item) => item.id === w.organizationOwnerId);\r\n w.organizationOwner = isNullOrUndefined(owner) ? null : owner;\r\n });\r\n\r\n const organizationCaseTypes = orgCaseList.map((item: OrganizationCaseType) => {\r\n item.caseType = orgCaseTypes.find(\r\n (caseType: IReferential) => caseType.id === item.caseTypeId\r\n )!;\r\n\r\n return item;\r\n });\r\n\r\n if (caseType === null) {\r\n caseType = organizationCaseTypes.sort(function (a, b) {\r\n return a.order - b.order;\r\n })[0];\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: false,\r\n organizationCaseTypes: organizationCaseTypes.sort(function (a, b) {\r\n return a.order - b.order;\r\n }),\r\n selectedOrganizationCaseType: caseType,\r\n selectedTabForm: 0,\r\n noticeList: [],\r\n claimReviewList: [],\r\n workflows: workflows,\r\n caseStatuses: caseStatuses,\r\n organization: organization\r\n },\r\n async () => {\r\n await this.loadOrganizationSteps();\r\n }\r\n );\r\n };\r\n\r\n loadOrganizationSteps = async () => {\r\n if (isNullOrUndefined(this.state.selectedOrganizationCaseType)) {\r\n return;\r\n }\r\n\r\n let orgCaseTypeStepList = await this.organizationService.GetUserOrganizationCaseTypeStep(\r\n this.state.selectedOrganizationCaseType!.id\r\n );\r\n orgCaseTypeStepList = orgCaseTypeStepList.sort(function (a, b) {\r\n return a.order - b.order;\r\n });\r\n\r\n const orgCaseTypeStepFormList =\r\n this.state.activeStep > orgCaseTypeStepList.length - 1\r\n ? []\r\n : await this.organizationService.GetUserOrganizationCaseTypeStepForms(\r\n orgCaseTypeStepList[this.state.activeStep].id\r\n ); //orgCaseList[0].id);\r\n\r\n this.setState({\r\n isLoading: false,\r\n organizationSteps: orgCaseTypeStepList,\r\n organizationForms: orgCaseTypeStepFormList.sort(function (a, b) {\r\n return a.order - b.order;\r\n }),\r\n selectedTabForm: 0,\r\n //this.state.activeStep > orgCaseTypeStepList.length - 1 ? null :\r\n selectedOrganizationForm: orgCaseTypeStepFormList.sort(function (a, b) {\r\n return a.order - b.order;\r\n })[0],\r\n noticeList: [],\r\n claimReviewList: []\r\n });\r\n };\r\n\r\n loadOrganizationcaseTypeStepForms = async () => {\r\n const orgCaseTypeStepFormList =\r\n await this.organizationService.GetUserOrganizationCaseTypeStepForms(\r\n this.state.organizationSteps[this.state.activeStep].id\r\n ); //orgCaseList[0].id);\r\n\r\n this.setState({\r\n isLoading: false,\r\n organizationForms: orgCaseTypeStepFormList.sort(function (a, b) {\r\n return a.order - b.order;\r\n }),\r\n selectedOrganizationForm: orgCaseTypeStepFormList.sort(function (a, b) {\r\n return a.order - b.order;\r\n })[0],\r\n selectedTabForm: 0,\r\n noticeList: [],\r\n claimReviewList: []\r\n });\r\n };\r\n\r\n handleChangeTab = async (event: React.ChangeEvent, newValue: number) => {\r\n this.setState(\r\n {\r\n selectedTab: newValue,\r\n activeStep: 0,\r\n selectedOrganizationCaseType: this.state.organizationCaseTypes[newValue]\r\n },\r\n async () => {\r\n await this.loadOrganizationSteps();\r\n }\r\n );\r\n };\r\n\r\n renderCaseTypes = () => {\r\n const tabs = [] as any[];\r\n if (Object.keys(this.state.organizationCaseTypes).length !== 0) {\r\n this.state.organizationCaseTypes.forEach((item: OrganizationCaseType, index: number) => {\r\n tabs.push();\r\n });\r\n }\r\n\r\n return tabs;\r\n };\r\n\r\n renderForms = () => {\r\n const forms = [] as any[];\r\n if (Object.keys(this.state.organizationForms).length !== 0) {\r\n this.state.organizationForms.forEach((form: OrganizationCaseTypeStepForm, index: number) => {\r\n // const className = this.state.selectedOrganizationForm !== null && this.state.selectedOrganizationForm === form ? \"contained\" : \"outlined\";\r\n forms.push();\r\n });\r\n }\r\n\r\n return forms;\r\n };\r\n\r\n onSubmit = async (e: ISubmitEvent, code: string) => {\r\n if (code === FormCode.SEARCH_NOTICE) {\r\n const data = e.formData as SearchNoticeFormData;\r\n\r\n if (\r\n isNullOrUndefined(data.vin) &&\r\n isNullOrUndefined(data.plateNumber) &&\r\n isNullOrUndefined(data.noticeNumber) &&\r\n isNullOrUndefined(data.caseNumber)\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'SEARCH_NOTICE_EMPTY_FIELDS_MSG',\r\n 'Completati cel putin un criteriu de cautare'\r\n ),\r\n { variant: 'info' }\r\n );\r\n return;\r\n }\r\n\r\n const noticeList = await this.caseService.SearchNotice(\r\n isNullOrUndefined(data.vin) ? '' : data.vin,\r\n isNullOrUndefined(data.plateNumber) ? '' : data.plateNumber,\r\n isNullOrUndefined(data.noticeNumber) ? '' : data.noticeNumber,\r\n isNullOrUndefined(data.caseNumber) ? '' : data.caseNumber\r\n );\r\n\r\n if (noticeList.length === 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'SEARCH_NOTICE_RESULT_EMPTY_MSG',\r\n 'Nu au fost gasite notificari'\r\n ),\r\n { variant: 'info' }\r\n );\r\n }\r\n this.setState({ noticeList: noticeList, selectedNotice: null, selectedCase: null });\r\n }\r\n if (code === FormCode.SEARCH_CLAIM_REVIEW) {\r\n const data = e.formData as SearchCaseFormData;\r\n\r\n if (isNullOrUndefined(data.caseNumber) && isNullOrUndefined(data.cbCaseNumber)) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'SEARCH_NOTICE_EMPTY_FIELDS_MSG',\r\n 'Completati cel putin un criteriu de cautare'\r\n ),\r\n { variant: 'info' }\r\n );\r\n return;\r\n }\r\n\r\n const caseList = await this.caseService.SearchByCaseNumber(\r\n isNullOrUndefined(data.cbCaseNumber) ? 0 : Number.parseInt(data.cbCaseNumber),\r\n isNullOrUndefined(data.caseNumber) ? '' : data.caseNumber,\r\n );\r\n\r\n if (caseList.length === 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'SEARCH_CLAIM_REVIEW_RESULT_EMPTY_MSG',\r\n 'Nu au fost gasite constatari'\r\n ),\r\n { variant: 'info' }\r\n );\r\n }\r\n this.setState({ claimReviewList: caseList });\r\n }\r\n };\r\n\r\n renderSelectedForm = () => {\r\n const tabPanels = [] as any[];\r\n\r\n if (Object.keys(this.state.organizationForms).length !== 0) {\r\n this.state.organizationForms.forEach((item: OrganizationCaseTypeStepForm, index: number) => {\r\n if (\r\n item.form.code === FormCode.SEARCH_VEHICLE ||\r\n item.form.code === FormCode.SEARCH_CLIENT\r\n ) {\r\n this.renderStaticForm(tabPanels, item, index);\r\n } else {\r\n this.renderJsonForm(tabPanels, item, index);\r\n }\r\n });\r\n }\r\n return tabPanels;\r\n };\r\n\r\n renderStaticForm = (\r\n tabPanels = [] as any[],\r\n item: OrganizationCaseTypeStepForm,\r\n index: number\r\n ) => {\r\n tabPanels.push(\r\n \r\n
\r\n {item.form.code === FormCode.SEARCH_VEHICLE ? (\r\n \r\n ) : (\r\n ''\r\n )}\r\n {item.form.code === FormCode.SEARCH_CLIENT ? (\r\n \r\n ) : (\r\n ''\r\n )}\r\n
\r\n {this.renderFormResults(item.form.code)}\r\n \r\n
\r\n );\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState({\r\n isDialogOpen: false\r\n });\r\n };\r\n\r\n submitSelectedModelData = async () => {\r\n try {\r\n const isSaleCase = this.state.organizationCaseTypes[this.state.selectedTab]?.caseType?.code === CaseTypeCode.SALE; \r\n if (!isSaleCase) {\r\n if (this.state.selectedVehicle !== null) {\r\n this.setState(\r\n {\r\n selectedVehicle: {\r\n ...this.state.selectedVehicle, \r\n make: this.state.selectedModelData!.makeDescription, \r\n model: this.state.selectedModelData!.modelDescription\r\n }\r\n\r\n }\r\n );\r\n }\r\n }\r\n this.setState({\r\n isDialogOpen: false\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n handleAutocompleteModelDataChange = async (newValue: ModelData | null) => {\r\n this.setState({\r\n selectedModelData: newValue\r\n });\r\n };\r\n \r\n \r\n renderAddModelForm = () => {\r\n return (\r\n {\r\n this.submitSelectedModelData();\r\n }}\r\n >\r\n
\r\n \r\n this.handleAutocompleteModelDataChange(newValue)\r\n }\r\n getOptionLabel={(option: ModelData) => option.modelDescription || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n vinDecoder = async () => {\r\n try {\r\n const isSaleCase = this.state.organizationCaseTypes[this.state.selectedTab]?.caseType?.code === CaseTypeCode.SALE; \r\n console.log('isSaleCase', isSaleCase);\r\n if (!isSaleCase) {\r\n if (this.state.selectedVehicle !== null) {\r\n const value = this.state.selectedVehicle.vin;\r\n const [result, latestCaseVehicleHistory, vehicle] = await Promise.all([\r\n this.caseService.DecodeVin(value),\r\n this.caseService.GetLatestCaseVehicleHistory(value),\r\n this.caseService.GetVehicleFromVQRepo(value)\r\n ]); \r\n\r\n if (latestCaseVehicleHistory !== null) {\r\n this.setState(\r\n {\r\n selectedVehicle: {\r\n ...this.state.selectedVehicle, \r\n numberOfKilometers: latestCaseVehicleHistory.numberOfKilometers\r\n }\r\n }\r\n );\r\n } \r\n \r\n if (result.error !== null) {\r\n if (result.error.errorInfo.code == GTErrorCode.THE_VIN_NUMBER_SENT_DOES_NOT_DECODE_ANY_MODEL) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('THE_VIN_NUMBER_SENT_DOES_NOT_DECODE_ANY_MODEL', 'Din păcate autovehiculul selectat nu poate fi identificat în aplicație !'), {\r\n variant: 'warning',\r\n autoHideDuration: 5000\r\n });\r\n this.setState({\r\n selectedVehicle: null\r\n });\r\n return;\r\n }\r\n }\r\n \r\n if (result.responseInfo.vehicleInfoDec.modelList.modelData.length > 1) {\r\n if (vehicle === null) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SELECT_MODEL_DIALOG', 'Va rugam selectati modelul auto!'), {\r\n variant: 'warning',\r\n autoHideDuration: 5000\r\n });\r\n this.setState({\r\n isDialogOpen: true,\r\n modelData: result.responseInfo.vehicleInfoDec.modelList.modelData\r\n });\r\n } else {\r\n this.setState(\r\n {\r\n selectedVehicle: {\r\n ...this.state.selectedVehicle, \r\n make: vehicle.make, \r\n model: vehicle.model\r\n }\r\n }\r\n );\r\n }\r\n } else if (result.responseInfo.vehicleInfoDec.modelList.modelData.length === 1) {\r\n this.setState(\r\n {\r\n selectedVehicle: {\r\n ...this.state.selectedVehicle, \r\n make: result.responseInfo.vehicleInfoDec.modelList.modelData[0].makeDescription, \r\n model: result.responseInfo.vehicleInfoDec.modelList.modelData[0].modelDescription\r\n }\r\n\r\n }\r\n );\r\n }\r\n }\r\n }\r\n }catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n onVehicleSelected = async (vehicle: VehicleDto) => {\r\n const isSaleCase =\r\n this.state.organizationCaseTypes[this.state.selectedTab]?.caseType?.code ===\r\n CaseTypeCode.SALE;\r\n // on sale cases don't send the firstPlateDate as this field will be populated from DB\r\n const selectedVehicle = isSaleCase ? omit(vehicle, ['firstPlateDate']) : vehicle;\r\n this.setState(\r\n {\r\n selectedVehicle,\r\n hideSaleNewWorkflow: isSaleCase ? false : true,\r\n activeStep: this.state.activeStep + 1\r\n //isLoading: true\r\n },\r\n () => {\r\n this.loadOrganizationcaseTypeStepFormsAndVehicleInfo();\r\n }\r\n );\r\n };\r\n\r\n loadOrganizationcaseTypeStepFormsAndVehicleInfo = async () => {\r\n await Promise.all([this.loadOrganizationcaseTypeStepForms(), this.vinDecoder()]);\r\n }\r\n\r\n onClientSelected = (client: ClientDto) => {\r\n this.setState(\r\n {\r\n selectedClient: client,\r\n activeStep: this.state.activeStep + 1\r\n //isLoading:true\r\n },\r\n () => {\r\n this.loadOrganizationcaseTypeStepForms();\r\n }\r\n );\r\n };\r\n\r\n renderJsonForm = (tabPanels = [] as any[], item: OrganizationCaseTypeStepForm, index: number) => {\r\n let jsonSchema = {};\r\n let jsonGUI = {};\r\n try {\r\n jsonSchema = JSON.parse(item.json1);\r\n jsonGUI = JSON.parse(item.json2);\r\n } catch {\r\n console.log('json schema/gui error');\r\n }\r\n const schema = this.translatorService.TranslateSchema(jsonSchema);\r\n\r\n tabPanels.push(\r\n \r\n
\r\n this.setState({ formData: e.formData })}\r\n onSubmit={async (e: ISubmitEvent) => await this.onSubmit(e, item.form.code)}\r\n transformErrors={this.translatorService.TranslateErrors}\r\n >\r\n
{FormButton.GetButtons(item.form.code, this.translatorService, true, false)}
\r\n \r\n
\r\n {this.renderFormResults(item.form.code)}\r\n
\r\n );\r\n };\r\n\r\n renderSteps = () => {\r\n const { organizationSteps, organizationCaseTypes, selectedTab, hideSaleNewWorkflow } = this.state;\r\n \r\n // Early return if organizationSteps is empty\r\n if (!organizationSteps.length) return [];\r\n \r\n const caseType = organizationCaseTypes[selectedTab]?.caseType?.code?.toUpperCase();\r\n \r\n // Filter steps based on the condition for sale and hideSaleNewWorkflow\r\n const stepsToRender = (caseType === CaseTypeCode.SALE && hideSaleNewWorkflow)\r\n ? organizationSteps.filter((step: OrganizationCaseTypeStep) => step.organizationStep!.code !== OrganizationCaseTypeStepCode.DOS_NOU)\r\n : organizationSteps;\r\n \r\n return stepsToRender.map((step: OrganizationCaseTypeStep, index: number) => (\r\n \r\n \r\n {step.organizationStep!.displayName}\r\n \r\n \r\n ));\r\n };\r\n \r\n\r\n handleChangeTabForm = (event: React.ChangeEvent, newValue: number) => {\r\n this.setState({\r\n selectedTabForm: newValue,\r\n selectedOrganizationForm: this.state.organizationForms[newValue]\r\n });\r\n };\r\n\r\n renderNoticeResults = () => {\r\n const options = {\r\n filter: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n // responsive: \"stacked\",\r\n elevation: 0,\r\n search: false,\r\n viewColumns: false,\r\n pagination: false\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n\r\n renderClaimReviewResults = () => {\r\n const options = {\r\n filter: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n // responsive: \"stacked\",\r\n elevation: 0,\r\n search: false,\r\n viewColumns: false,\r\n pagination: false\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n\r\n renderFormResults = (code: string) => {\r\n if (code === FormCode.SEARCH_NOTICE) {\r\n return this.renderNoticeResults();\r\n }\r\n if (code === FormCode.SEARCH_CLAIM_REVIEW) {\r\n return this.renderClaimReviewResults();\r\n }\r\n if (code === FormCode.SELECT_WORKFLOW) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return '';\r\n };\r\n\r\n onNoticeClick = async (e: any, notice: { id: number; orgId: number; companyNumber: string }) => {\r\n this.setState(\r\n {\r\n selectedNotice: notice,\r\n activeStep: this.state.activeStep + 1\r\n //isLoading: true\r\n },\r\n () => {\r\n this.loadOrganizationcaseTypeStepForms();\r\n }\r\n );\r\n };\r\n\r\n onCaseClick = async (e: any, id: number) => {\r\n const casee = this.state.claimReviewList.find((item) => item.id === id);\r\n if (casee?.caseStatus?.caseStatus) {\r\n const caseStatus = casee?.caseStatus?.caseStatus?.code;\r\n // switch (caseStatus) {\r\n // case CaseStatusCodeEnum.PRELUAT_SERVICE:\r\n // this.props.enqueueSnackbar(\r\n // this.translatorService.Tranlate(\r\n // 'CASE_STATUS_PRELUAT_SERVICE_MSG',\r\n // 'Dosarul a fost preluat deja de service!'\r\n // ),\r\n // { variant: 'info' }\r\n // );\r\n // return;\r\n // default:\r\n // break;\r\n // }\r\n }\r\n\r\n this.setState(\r\n {\r\n selectedCase: casee === undefined ? null : casee,\r\n activeStep: this.state.activeStep + 1\r\n //isLoading: true\r\n },\r\n () => {\r\n this.loadOrganizationcaseTypeStepForms();\r\n }\r\n );\r\n };\r\n\r\n getNoticeColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'organizationOwnerId',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'companyNumber',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n label: '',\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n await this.onNoticeClick(e, {\r\n id: tableMeta.rowData[0],\r\n orgId: tableMeta.rowData[1],\r\n companyNumber: tableMeta.rowData[2]\r\n })\r\n }\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'noticeNumber',\r\n label: this.translatorService.Tranlate('NOTICE_NOTICE_NUMBER_HEADER', 'Numar avizare'),\r\n options: {}\r\n },\r\n {\r\n name: 'caseNumber',\r\n label: this.translatorService.Tranlate('NOTICE_CASE_NUMBER_HEADER', 'Numar Dosar'),\r\n options: {}\r\n },\r\n {\r\n name: 'policyNumber',\r\n label: this.translatorService.Tranlate('NOTICE_POLICY_NUMBER_HEADER', 'Numar Polita'),\r\n options: {}\r\n },\r\n {\r\n name: 'vin',\r\n label: this.translatorService.Tranlate('NOTICE_VIN_HEADER', 'Serie Sasiu'),\r\n options: {\r\n filter: false\r\n }\r\n },\r\n {\r\n name: 'plateNumber',\r\n label: this.translatorService.Tranlate('NOTICE_PLATE_NUMBER_HEADER', 'Numar inmatriculare'),\r\n options: {\r\n sort: true\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'claimBoxCaseNumber',\r\n label: this.translatorService.Tranlate(\r\n 'NOTICE_CLAIMBOX_CASE_NUMBER_HEADER',\r\n 'Numar dosar Claimbox'\r\n ),\r\n options: {}\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n getClaimReviewColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n label: '',\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n await this.onCaseClick(e, tableMeta.rowData[0])}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'id',\r\n label: this.translatorService.Tranlate(\r\n 'NOTICE_CLAIMBOX_CASE_NUMBER_HEADER',\r\n 'Numar dosar Claimbox'\r\n ),\r\n options: {}\r\n },\r\n // {\r\n // name: \"caseWorkflow.workflowDisplayName\",\r\n // label: this.translatorService.Tranlate(\"CLAIMREVIEW_WORKFLOW_OWNER_HEADER\", \"Proprietar Flux\")\r\n // },\r\n {\r\n name: 'caseVehicle.vin',\r\n label: this.translatorService.Tranlate('NOTICE_VIN_HEADER', 'Serie Sasiu'),\r\n options: {\r\n filter: false\r\n }\r\n },\r\n {\r\n name: 'caseVehicle.plateNumber',\r\n label: this.translatorService.Tranlate('NOTICE_PLATE_NUMBER_HEADER', 'Numar inmatriculare'),\r\n options: {\r\n sort: true\r\n }\r\n },\r\n {\r\n name: 'caseEvent.caseNumber',\r\n label: this.translatorService.Tranlate('NOTICE_CASE_NUMBER_HEADER', 'Numar Dosar'),\r\n options: {}\r\n },\r\n {\r\n name: 'caseEvent.policyNumber',\r\n label: this.translatorService.Tranlate('NOTICE_POLICY_NUMBER_HEADER', 'Numar Polita')\r\n },\r\n {\r\n name: 'caseStatus.caseStatus.displayName',\r\n label: this.translatorService.Tranlate('CLAIM_REVIEW_STATE_HEADER', 'Stare')\r\n },\r\n // {\r\n // name: \"createdBy\",\r\n // label: this.translatorService.Tranlate(\"CLAIM_REVIEW_CREATEDBY_HEADER\", \"Creat De\")\r\n // },\r\n {\r\n name: 'dateCreation',\r\n label: this.translatorService.Tranlate('CLAIM_REVIEW_DATE_CREATION_HEADER', 'Data Creare'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n
\r\n {moment.utc(value).local().format(this.props.dateFormat)}\r\n
\r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n handleStep = (step: number) => () => {\r\n this.setState(\r\n {\r\n activeStep: step\r\n //isLoading: true\r\n },\r\n () => {\r\n this.loadOrganizationcaseTypeStepForms();\r\n }\r\n );\r\n };\r\n\r\n renderStepper = () => {\r\n return (\r\n
\r\n }\r\n activeStep={this.state.activeStep}\r\n style={{ backgroundColor: 'transparent' }}\r\n >\r\n {this.renderSteps()}\r\n \r\n
\r\n );\r\n };\r\n\r\n renderTabForms = () => {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
\r\n \r\n \r\n {this.renderForms()}\r\n \r\n \r\n\r\n {this.renderSelectedForm()}\r\n
\r\n ) : null}\r\n\r\n {this.state.isDialogOpen ? (\r\n \r\n \r\n {this.translatorService.Tranlate('FRM_CAR_DATA_MODEL', 'Model Autovehicul')}\r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddModelForm()}\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n {/* {this.renderStepsButtons()} */}\r\n
\r\n );\r\n };\r\n\r\n renderCaseTypeTabPanel = () => {\r\n const tabs = [] as any[];\r\n if (Object.keys(this.state.organizationCaseTypes).length !== 0) {\r\n this.state.organizationCaseTypes.forEach((item: OrganizationCaseType, index: number) => {\r\n tabs.push(\r\n
\r\n \r\n {/* }> */}\r\n {/* */}\r\n {this.renderStepper()}\r\n {/* */}\r\n {this.renderTabForms()}\r\n \r\n
\r\n );\r\n });\r\n }\r\n\r\n return tabs;\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {this.renderCaseTypes()}\r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ?
{this.renderCaseTypeTabPanel()}
: null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.app // Selects which action creators are merged into the component's props\r\n)(withSnackbar(NewCase as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withSnackbar } from 'notistack';\r\nimport { ApplicationState } from '../../../store';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { Organization, OrganizationCaseType, Language } from '../../../interfaces/Organization';\r\nimport { Box, CardContent, Card, Tabs, Tab, Button, Grid } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport { Workflow } from '../../../interfaces/Workflow';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport { IReferential, ITranslation } from '../../../interfaces/IReferential';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\ninterface IWorkflowGeneralDataState {\r\n workflows: Workflow[];\r\n workflow: Workflow;\r\n caseTypeList: IReferential[];\r\n isLoading: boolean;\r\n}\r\nclass WorkflowGeneralData extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private workflowService!: IWorkflowService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n workflows: [],\r\n workflow: {} as Workflow,\r\n caseTypeList: [],\r\n isLoading: true\r\n } as IWorkflowGeneralDataState;\r\n\r\n public async componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n const languages = this.activeLanguages();\r\n\r\n const ref = Referentials.referential.find((item) => item.code === ReferentialCode.CaseType);\r\n const [workflows, workflow, orgCaseList, orgCaseTypes, owner] = await Promise.all([\r\n this.workflowService.GetWorkflows(hoId),\r\n this.workflowService.GetWorkflow(workflowId),\r\n this.organizationService.GetOrganizationCaseType(hoId),\r\n this.appReferentialService.Get(ref!.baseUrl),\r\n this.organizationService.GetOrganization(hoId)\r\n ]);\r\n\r\n let organizationCases = orgCaseList.sort(function (a, b) {\r\n return a.order - b.order;\r\n });\r\n organizationCases = organizationCases.map((item: OrganizationCaseType) => {\r\n item.caseType = orgCaseTypes.find(\r\n (caseType: IReferential) => caseType.id === item.caseTypeId\r\n )!;\r\n return item;\r\n });\r\n\r\n workflow.organizationOwnerId = hoId;\r\n const workflowCaseType = orgCaseTypes.find((item) => item.id === workflow.caseTypeId);\r\n workflow.caseType = isNullOrUndefined(workflowCaseType) ? null : workflowCaseType;\r\n\r\n workflow.organizationOwner = owner !== undefined ? owner : ({} as Organization);\r\n\r\n const workflowTranslations = workflow.translations;\r\n languages.forEach((language: Language, index: number) => {\r\n if (workflowTranslations.length === 0) {\r\n workflowTranslations.push({\r\n id: 0,\r\n referentialTypeId: workflow.id,\r\n name: workflow.organizationOwner!.name + ' - ',\r\n language: language.code\r\n });\r\n } else {\r\n const indexTrans = workflowTranslations.findIndex((trans: ITranslation) => {\r\n return language.code === trans.language;\r\n });\r\n if (indexTrans === -1) {\r\n workflowTranslations.push({\r\n id: 0,\r\n referentialTypeId: workflow.id,\r\n name: workflow.organizationOwner!.name + ' - ',\r\n language: language.code\r\n });\r\n }\r\n }\r\n });\r\n workflow.translations = [...workflowTranslations];\r\n\r\n this.setState({\r\n workflows: workflows,\r\n workflow: workflow === undefined ? ({} as Workflow) : workflow,\r\n caseTypeList: organizationCases.map((item) => item.caseType!),\r\n isLoading: false\r\n });\r\n }\r\n\r\n handleWorkflowCaseTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n workflow: {\r\n ...this.state.workflow,\r\n caseType: newValue,\r\n caseTypeId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n saveWorkflow = async () => {\r\n try {\r\n let workflowExist = -1;\r\n this.state.workflows.forEach((item: Workflow, index: number) => {\r\n if (\r\n item.caseTypeId === this.state.workflow.caseTypeId &&\r\n item.organizationOwnerId === this.state.workflow.organizationOwnerId &&\r\n item.id !== this.state.workflow.id\r\n ) {\r\n let indexFinded = -1;\r\n for (const i of item.translations) {\r\n indexFinded = Math.max(\r\n indexFinded,\r\n this.state.workflow.translations.findIndex(\r\n (item) => item.language === i.language && item.name === i.name\r\n )\r\n );\r\n }\r\n workflowExist = Math.max(workflowExist, indexFinded);\r\n return;\r\n } else {\r\n workflowExist = Math.max(workflowExist, -1);\r\n }\r\n });\r\n if (workflowExist !== -1) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_WORKFLOW_EXISTS', 'Fluxul exista deja!'),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n if (Number.parseInt(this.props.match.params.workflowId) === 0) {\r\n await this.workflowService.AddWorkflow(this.state.workflow);\r\n } else {\r\n await this.workflowService.UpdateWorkflow(this.state.workflow);\r\n }\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n activeLanguages = () => {\r\n const activeLanguages =\r\n this.props.appState.appUser!.organization!.gtOrganization!.languages!.filter(\r\n (language: any) => {\r\n if (language.isActive === true) {\r\n return language;\r\n }\r\n }\r\n );\r\n activeLanguages.forEach((language: any) => {\r\n language.displayName =\r\n language.displayName.charAt(0).toUpperCase() + language.displayName.slice(1);\r\n });\r\n return activeLanguages;\r\n };\r\n\r\n handleWorkflowNameChange = (event: any, code: string | null) => {\r\n let newWorkflowTransList = [] as ITranslation[];\r\n if (this.state.workflow.translations) {\r\n newWorkflowTransList = this.state.workflow.translations.map((loc: any) => {\r\n if (loc.language === code) {\r\n loc.name = event.target.value;\r\n }\r\n return loc;\r\n });\r\n }\r\n this.setState({\r\n workflow: {\r\n ...this.state.workflow,\r\n translations: newWorkflowTransList\r\n }\r\n });\r\n };\r\n\r\n renderNameTextFields = () => {\r\n if (Object.keys(this.state.workflow).length === 0) {\r\n return null;\r\n } else {\r\n const nameTextFieldsList = [] as any[];\r\n this.state.workflow!.translations.forEach((item: ITranslation, index: number) => {\r\n nameTextFieldsList.push(\r\n \r\n this.handleWorkflowNameChange(e, item.language)}\r\n label={\r\n this.translatorService.Tranlate('EDIT_WORKFLOW_GUI_NAME_LABEL', 'Nume GUI') +\r\n ' - ' +\r\n item.language\r\n }\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n \r\n );\r\n });\r\n return nameTextFieldsList;\r\n }\r\n };\r\n\r\n render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n\r\n {this.state.isLoading ? null : (\r\n \r\n \r\n\r\n \r\n this.handleWorkflowCaseTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n {this.renderNameTextFields()}\r\n \r\n
\r\n \r\n
\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n null\r\n)(withSnackbar(WorkflowGeneralData as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Box, Select, MenuItem, Card, CardContent, Tabs, Tab } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { WorkflowParameter } from '../../../interfaces/Workflow';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MaterialTable, { Column, EditComponentProps, Icons } from 'material-table';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { forwardRef } from 'react';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ninterface IWorkflowParametersState {\r\n parameters: WorkflowParameter[];\r\n isLoading: boolean;\r\n workflowId: number;\r\n parameterTypeList: IReferential[];\r\n}\r\n\r\ntype WorkflowParametersProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass WorkflowParameters extends React.PureComponent<\r\n WorkflowParametersProps,\r\n IWorkflowParametersState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n parameters: [],\r\n isLoading: true,\r\n workflowId: 0,\r\n parameterTypeList: []\r\n } as IWorkflowParametersState;\r\n\r\n componentDidMount = () => {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadData();\r\n }\r\n );\r\n };\r\n\r\n loadData = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n if (isNaN(hoId) || isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n try {\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CompanyParameter\r\n );\r\n const [data, parameterList] = await Promise.all([\r\n this.workflowService.GetWorkflowParameters(workflowId),\r\n this.appReferentialService.Get(ref!.baseUrl)\r\n ]);\r\n\r\n data.forEach((item) => {\r\n const param = parameterList.find((par) => par.id === item.parameterId);\r\n item.parameter = isNullOrUndefined(param) ? null : param;\r\n });\r\n\r\n this.setState({\r\n parameters: data,\r\n isLoading: false,\r\n workflowId: workflowId,\r\n parameterTypeList: parameterList.filter((item) => item.isActive === true)\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const lookup = this.state.parameterTypeList.reduce(function (\r\n acc: any,\r\n cur: IReferential,\r\n i: number\r\n ) {\r\n acc[cur.id] = cur.displayName;\r\n\r\n return acc;\r\n },\r\n {});\r\n\r\n return [\r\n {\r\n field: 'parameterId',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_PARAMETERS_PARAMETER_TYPE_HEADER',\r\n 'Parametru'\r\n ),\r\n searchable: true,\r\n lookup: lookup,\r\n render: (rowData: WorkflowParameter) => {\r\n return rowData.parameter!.displayName;\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.value)}\r\n >\r\n {this.state.parameterTypeList.map((item) => (\r\n \r\n {item.displayName}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'value',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_PARAMETERS_PARAMETER_VALUE_HEADER',\r\n 'Valoare'\r\n ),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'date',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_PARAMETERS_PARAMETER_DATE_HEADER',\r\n 'De La'\r\n ),\r\n defaultSort: 'desc',\r\n type: 'date',\r\n searchable: true,\r\n render: (rowData: WorkflowParameter) => {\r\n return moment(rowData.date).format(this.props.appState.dateFormat);\r\n }\r\n } as Column,\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_PARAMETERS_MODIFIED_DATE_HEADER',\r\n 'Data Modificare'\r\n ),\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .format(this.props.appState.longDateFormat);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column\r\n ];\r\n };\r\n\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n deleteTooltip: this.translatorService.Tranlate('DELETE', 'Sterge'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza'),\r\n deleteText: this.translatorService.Tranlate(\r\n 'DELETE_TEXT',\r\n 'Sigur doriti sa stergeti aceasta inregistrare?'\r\n )\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n\r\n onRowUpdate = (newData: WorkflowParameter, oldData?: WorkflowParameter): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n if (\r\n isNullOrUndefined(newData.parameterId) ||\r\n isNullOrUndefined(newData.value) ||\r\n newData.value === '' ||\r\n isNullOrUndefined(newData.date)\r\n ) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n return;\r\n }\r\n\r\n if (moment.isDate(newData.date)) {\r\n newData.date = moment.utc(newData.date.toDateString()).local().toDate();\r\n }\r\n // newData.parameter = null;\r\n await this.workflowService.UpdateWorkflowParameter(newData);\r\n // await this.loadData();\r\n const parameters = [...this.state.parameters];\r\n const index = parameters.findIndex((item) => item.id === newData.id);\r\n parameters[index] = newData;\r\n this.setState({ parameters: parameters });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n onRowDelete = (oldData: WorkflowParameter): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n const parameters = [...this.state.parameters];\r\n const index = parameters.findIndex((item) => item.id === oldData.id);\r\n parameters.splice(index, 1);\r\n await this.workflowService.RemoveWorkflowParameter(oldData.id);\r\n //await this.loadData();\r\n this.setState({ parameters: parameters });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n onRowAdd = (newData: WorkflowParameter): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n try {\r\n if (\r\n isNullOrUndefined(newData.parameterId) ||\r\n isNullOrUndefined(newData.value) ||\r\n newData.value === '' ||\r\n isNullOrUndefined(newData.date)\r\n ) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n return;\r\n }\r\n\r\n newData.workflowId = this.state.workflowId;\r\n newData.id = 0;\r\n\r\n await this.workflowService.AddWorkflowParameter(newData);\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n return (\r\n this.onRowAdd(newData),\r\n onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData),\r\n onRowDelete: (oldData: any) => this.onRowDelete(oldData)\r\n }}\r\n />\r\n );\r\n };\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (stateProps: any, dispatchProps: any, ownProps: WorkflowParametersProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(WorkflowParameters as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { OrganizationType } from '../../../interfaces/Organization';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { Box, Button, IconButton, Card, CardContent, Tabs, Tab } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { WorkflowPartnerType } from '../../../interfaces/Workflow';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\ninterface IWorkflowOrganizationTypesState {\r\n workflowOrganizationTypes: WorkflowPartnerType[];\r\n isLoading: boolean;\r\n organizationTypes: OrganizationType[];\r\n selectedOrganizationType: OrganizationType | null;\r\n workflowId: number;\r\n}\r\n\r\ntype IWorkflowOrganizationTypesProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass WorkflowOrganizationTypes extends React.PureComponent<\r\n IWorkflowOrganizationTypesProps,\r\n IWorkflowOrganizationTypesState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n workflowOrganizationTypes: [],\r\n isLoading: false,\r\n organizationTypes: [],\r\n selectedOrganizationType: null,\r\n workflowId: 0\r\n } as IWorkflowOrganizationTypesState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadWorkflowOrganizationTypes();\r\n }\r\n );\r\n }\r\n\r\n loadWorkflowOrganizationTypes = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OrganizationType\r\n );\r\n const [orgTypes, workflowOrgTypes] = await Promise.all([\r\n this.appReferentialService.Get(ref!.baseUrl),\r\n this.workflowService.GetWorkflowOrganizationTypes(workflowId)\r\n ]);\r\n\r\n workflowOrgTypes.forEach((item) => {\r\n const type = orgTypes.find((orgType) => orgType.id === item.organizationTypeId);\r\n item.organizationType = isNullOrUndefined(type) ? null : type;\r\n });\r\n\r\n this.setState({\r\n workflowOrganizationTypes: workflowOrgTypes,\r\n organizationTypes: orgTypes.filter(\r\n (item) => item.isActive === true\r\n ) as any as OrganizationType[],\r\n isLoading: false,\r\n workflowId: workflowId\r\n });\r\n };\r\n\r\n deleteWorkflowOrgType = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.workflowService.RemoveWorkflowOrganizationType(id);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadWorkflowOrganizationTypes();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'organizationType',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_ORGANIZATION_TYPE_TAB_ORG_TYPE_HEADER',\r\n 'Tip Organizatie'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: OrganizationType) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_ORGANIZATION_TYPE_TAB_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().toDate().toLocaleString(this.props.appState.language)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deleteWorkflowOrgType(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addWorkflowOrgType = async () => {\r\n try {\r\n if (\r\n this.state.workflowOrganizationTypes.findIndex(\r\n (item) => item.organizationTypeId === this.state.selectedOrganizationType!.id\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_MSG_ORGANIZATION_TYPE_EXISTS',\r\n 'Tipul de organizatie exista deja!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n await this.workflowService.AddWorkflowOrganizationType({\r\n id: 0,\r\n organizationTypeId: this.state.selectedOrganizationType!.id,\r\n workflowId: this.state.workflowId\r\n } as WorkflowPartnerType);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedOrganizationType: null\r\n },\r\n () => {\r\n this.loadWorkflowOrganizationTypes();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleOrganizationTypeChange = (newValue: OrganizationType | null) => {\r\n this.setState({ selectedOrganizationType: newValue });\r\n };\r\n\r\n renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.handleOrganizationTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: OrganizationType) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(WorkflowOrganizationTypes as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Organization } from '../../../interfaces/Organization';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { Box, Button, Card, CardContent, Tabs, Tab, Switch } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { WorkflowPartner } from '../../../interfaces/Workflow';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport { isNullOrUndefined } from 'util';\r\nimport _ from 'lodash';\r\nimport { RoleClaimsEnum, RoleCodeEnum } from '../../../helpers/Constants';\r\n\r\ninterface IWorkflowPartnersState {\r\n workflowPartners: WorkflowPartner[];\r\n isLoading: boolean;\r\n workflowOwnerList: Organization[];\r\n // selectedWorkflowOwner: Organization | null,\r\n workflowPartnerList: Organization[];\r\n selectedWorkflowPartner: Organization[];\r\n workflowId: number;\r\n}\r\n\r\ntype IWorkflowPartnersProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass WorkflowPartners extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n workflowPartners: [],\r\n isLoading: false,\r\n workflowOwnerList: [],\r\n // selectedWorkflowOwner: null,\r\n workflowPartnerList: [],\r\n selectedWorkflowPartner: [],\r\n workflowId: 0\r\n } as IWorkflowPartnersState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadWorkflowPartners();\r\n }\r\n );\r\n }\r\n \r\n public hasRole = (roleCode: string): boolean => {\r\n return this.props.appState.appUser?.userRole?.code === roleCode;\r\n };\r\n\r\n loadWorkflowPartners = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n const [workflowPartnersList, workflowOrgTypes, organizations] = await Promise.all([\r\n this.workflowService.GetWorkflowPartners(workflowId),\r\n this.workflowService.GetWorkflowOrganizationTypes(workflowId),\r\n this.organizationService.GetHOOrganizations(this.hasRight(RoleClaimsEnum.AdminCountryOrganization) ? this.props.appState.appUser!.countryId : null),\r\n ]);\r\n\r\n const workflowOwner = organizations.find((item) => item.id === hoId);\r\n\r\n //let workflowPartners = [] as Organization[];\r\n\r\n workflowPartnersList.forEach((wp) => {\r\n const partner = organizations.find((item) => item.id === wp.partnerId);\r\n\r\n wp.partner = isNullOrUndefined(partner) ? null : partner;\r\n });\r\n\r\n const partners = _.cloneDeep(organizations);\r\n if (\r\n !isNullOrUndefined(workflowOwner) &&\r\n isNullOrUndefined(partners.find((item) => item.id === workflowOwner!.id))\r\n ) {\r\n partners.push(workflowOwner);\r\n }\r\n\r\n this.setState({\r\n workflowPartners: workflowPartnersList,\r\n //workflowOwnerList: workflowOwners.filter(item => item.isActive === true),\r\n workflowPartnerList: partners.filter((item) => item.isActive === true),\r\n isLoading: false,\r\n workflowId: workflowId\r\n });\r\n };\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n handleIsActiveChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const workflowPartners = [...this.state.workflowPartners];\r\n const updatedWorkflowPartnerIndex = workflowPartners.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowPartnerIndex >= 0) {\r\n workflowPartners[updatedWorkflowPartnerIndex] = {\r\n ...workflowPartners[updatedWorkflowPartnerIndex],\r\n isActive: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowPartner(\r\n workflowPartners[updatedWorkflowPartnerIndex]\r\n );\r\n\r\n this.setState({ workflowPartners: workflowPartners });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleIsOwnerTariffChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const workflowPartners = [...this.state.workflowPartners];\r\n const updatedWorkflowPartnerIndex = workflowPartners.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowPartnerIndex >= 0) {\r\n workflowPartners[updatedWorkflowPartnerIndex] = {\r\n ...workflowPartners[updatedWorkflowPartnerIndex],\r\n isOwnerTariff: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowPartner(\r\n workflowPartners[updatedWorkflowPartnerIndex]\r\n );\r\n\r\n this.setState({ workflowPartners: workflowPartners });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleHideWorkflowChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const workflowPartners = [...this.state.workflowPartners];\r\n const updatedWorkflowPartnerIndex = workflowPartners.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowPartnerIndex >= 0) {\r\n workflowPartners[updatedWorkflowPartnerIndex] = {\r\n ...workflowPartners[updatedWorkflowPartnerIndex],\r\n hideWorkflow: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowPartner(\r\n workflowPartners[updatedWorkflowPartnerIndex]\r\n );\r\n\r\n this.setState({ workflowPartners: workflowPartners });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n // {\r\n // name: \"owner\",\r\n // label: this.translatorService.Tranlate(\"WORKFLOW_PARTNERS_TAB_ENTITY_WORKFLOW_OWNER_HEADER\", \"Entitate Proprietar Flux\"),\r\n // options: {\r\n // sort: false,\r\n // customBodyRender: (value: Organization) => { return (value.displayName) }\r\n // } as MUIDataTableColumnOptions\r\n // },\r\n {\r\n name: 'partner',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_PARTNERS_TAB_ENTITY_WORKFLOW_PARTNER_HEADER',\r\n 'Entitate Partener Flux'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: Organization) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_PARTNERS_TAB_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().toDate().toLocaleString(this.props.appState.language)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'isOwnerTariff',\r\n label: this.translatorService.Tranlate('WORKFLOW_PARTNERS_OWNER_TARIFF_HEADER', 'Proprietar Actualizare Tarif'),\r\n options: {\r\n sort: false,\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(isActive: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names[0]) !== -1 && isActive === true) ||\r\n (filterVal.indexOf(this.names[1]) !== -1 && isActive === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleIsOwnerTariffChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'hideWorkflow',\r\n label: this.translatorService.Tranlate('WORKFLOW_PARTNERS_HIDE_WORKFLOW_HEADER', 'Ascunde posibilitate dosar nou'),\r\n options: {\r\n sort: false,\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(viewWorkflow: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names[0]) !== -1 && viewWorkflow === true) ||\r\n (filterVal.indexOf(this.names[1]) !== -1 && viewWorkflow === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleHideWorkflowChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'isActive',\r\n label: this.translatorService.Tranlate('USERS_IS_ACTIVE_HEADER', 'Activ'),\r\n options: {\r\n sort: false,\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(isActive: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names[0]) !== -1 && isActive === true) ||\r\n (filterVal.indexOf(this.names[1]) !== -1 && isActive === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleIsActiveChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addWorkflowPartner = async () => {\r\n try {\r\n if (\r\n this.state.workflowPartners.findIndex(\r\n (item) =>\r\n this.state.selectedWorkflowPartner.findIndex((itemm) => itemm.id === item.partnerId) !==\r\n -1\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_PARTNER_EXISTS', 'Partenerul exista deja!'),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n const workflowPartners = [];\r\n for (const partner of this.state.selectedWorkflowPartner) {\r\n workflowPartners.push({\r\n id: 0,\r\n workflowId: this.state.workflowId,\r\n // ownerId: this.state.selectedWorkflowOwner!.id,\r\n partnerId: partner!.id,\r\n partner: partner,\r\n isActive: true\r\n } as WorkflowPartner);\r\n }\r\n\r\n await this.workflowService.AddWorkflowPartner(workflowPartners);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n //selectedWorkflowOwner: null,\r\n selectedWorkflowPartner: []\r\n },\r\n () => {\r\n this.loadWorkflowPartners();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n // handleWorkflowOwnerChange = (newValue: Organization | null) => {\r\n // this.setState({ selectedWorkflowOwner: newValue });\r\n // }\r\n\r\n handleWorkflowPartnerChange = (newValue: any[]) => {\r\n this.setState({ selectedWorkflowPartner: newValue });\r\n };\r\n\r\n renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n {/* this.handleWorkflowOwnerChange(newValue)}\r\n getOptionLabel={(option: Organization) => option.displayName || \"\"}\r\n renderInput={params => (\r\n \r\n )}\r\n /> */}\r\n\r\n this.handleWorkflowPartnerChange(newValue)}\r\n getOptionLabel={(option: Organization) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(WorkflowPartners as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport {\r\n Box,\r\n Button,\r\n Card,\r\n CardContent,\r\n Tabs,\r\n Tab,\r\n Switch,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n IconButton,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete, { createFilterOptions } from '@material-ui/lab/Autocomplete';\r\nimport { WorkflowPartner, WorkflowTariff } from '../../../interfaces/Workflow';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport { Tariff } from '../../../interfaces/Tariff';\r\nimport { ITariffService } from '../../../services/Interfaces/ITariffService';\r\nimport EditTariff from '../tariffs/EditTariff';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\ninterface IWorkflowTariffsState {\r\n workflowTariffs: WorkflowTariff[];\r\n isLoading: boolean;\r\n workflowPartnerList: WorkflowPartner[];\r\n selectedWorkflowPartner: WorkflowPartner | null;\r\n tariffList: Tariff[];\r\n selectedTariff: Tariff | null;\r\n workflowId: number;\r\n isOpenDialog: boolean;\r\n selectedTariffId: number;\r\n}\r\n\r\ntype IWorkflowTariffsProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass WorkflowTariffs extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private tariffService!: ITariffService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n workflowTariffs: [],\r\n isLoading: false,\r\n workflowPartnerList: [],\r\n selectedWorkflowPartner: null,\r\n tariffList: [],\r\n selectedTariff: null,\r\n workflowId: 0,\r\n isOpenDialog: false,\r\n selectedTariffId: 0\r\n } as IWorkflowTariffsState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadWorkflowTariffs();\r\n }\r\n );\r\n }\r\n\r\n loadWorkflowTariffs = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n const [tariffList, workflowTariffs, workflowPartnerList] = await Promise.all([\r\n this.tariffService.GetTariffs(hoId),\r\n this.workflowService.GetWorkflowTariffs(workflowId),\r\n this.workflowService.GetWorkflowPartners(workflowId)\r\n ]);\r\n\r\n const orgPartners = await this.organizationService.GetOrganizationsByIds(\r\n workflowPartnerList.map((item) => item.partnerId)\r\n );\r\n\r\n workflowPartnerList.forEach((wpItem) => {\r\n const part = orgPartners.find((item) => item.id === wpItem.partnerId);\r\n wpItem.partner = isNullOrUndefined(part) ? null : part;\r\n });\r\n\r\n workflowTariffs.forEach((wt) => {\r\n const tariff = tariffList.find((t) => t.id === wt.tariffId);\r\n wt.tariff = isNullOrUndefined(tariff) ? null : tariff;\r\n });\r\n\r\n this.setState({\r\n workflowTariffs: workflowTariffs,\r\n workflowPartnerList: workflowPartnerList.filter((item) => item.isActive === true),\r\n isLoading: false,\r\n workflowId: workflowId\r\n });\r\n };\r\n\r\n reloadWorkflowTariffs = async (workflowPartnerId: number | null) => {\r\n let [tariffList, workflowTariffs] = await Promise.all([\r\n this.tariffService.GetTariffs(Number.parseInt(this.props.match.params.id)),\r\n this.workflowService.GetWorkflowTariffs(this.state.workflowId)\r\n ]);\r\n\r\n const organizations = await this.organizationService.GetOrganizationsByIds(\r\n tariffList.map((item) => item.partnerId)\r\n );\r\n tariffList.forEach((tariff) => {\r\n const part = organizations.find((t) => t.id === tariff.partnerId);\r\n tariff.partner = isNullOrUndefined(part) ? null : part;\r\n });\r\n workflowTariffs.forEach((wt) => {\r\n const tariff = tariffList.find((t) => t.id === wt.tariffId);\r\n wt.tariff = isNullOrUndefined(tariff) ? null : tariff;\r\n });\r\n\r\n if (workflowPartnerId !== null) {\r\n workflowTariffs = workflowTariffs.filter(\r\n (item: WorkflowTariff) =>\r\n item.tariff !== null &&\r\n (item.tariff!.partner!.hoId === workflowPartnerId ||\r\n item.tariff!.partnerId === workflowPartnerId)\r\n );\r\n }\r\n tariffList =\r\n workflowPartnerId === null\r\n ? []\r\n : tariffList.filter(\r\n (item: Tariff) =>\r\n item.partner!.hoId === workflowPartnerId || item.partnerId === workflowPartnerId\r\n );\r\n\r\n this.setState({\r\n tariffList: tariffList.filter((item) => item.isActive === true),\r\n workflowTariffs: workflowTariffs,\r\n isLoading: false\r\n });\r\n };\r\n\r\n handleIsActiveChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const workflowTariffs = [...this.state.workflowTariffs];\r\n const updatedWorkflowTariffIndex = workflowTariffs.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowTariffIndex >= 0) {\r\n workflowTariffs[updatedWorkflowTariffIndex] = {\r\n ...workflowTariffs[updatedWorkflowTariffIndex],\r\n isActive: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowTariff(\r\n workflowTariffs[updatedWorkflowTariffIndex]\r\n );\r\n\r\n this.setState({ workflowTariffs: workflowTariffs });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n editTariff = (id: number) => {\r\n this.setState({ isOpenDialog: true, selectedTariffId: id });\r\n };\r\n\r\n onRowClick = (e: any, id: number) => {\r\n this.editTariff(id);\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'tariff',\r\n label: this.translatorService.Tranlate('WORKFLOW_TARIFFS_TAB_TARIFF_HEADER', 'Tarif'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Tariff) => {\r\n return (\r\n this.onRowClick(e, value.id)}\r\n >\r\n {value.name}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n // {\r\n // name: \"workflowPartner\",\r\n // label: this.translatorService.Tranlate(\"WORKFLOW_TARIFFS_TAB_WORKFLOW_PARTNER_HEADER\", \"Partener\"),\r\n // options: {\r\n // sort: false,\r\n // customBodyRender: (value: WorkflowPartner) => { return (value.workflowPartner!.name) }\r\n // } as MUIDataTableColumnOptions\r\n // },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_TARIFFS_TAB_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().toDate().toLocaleString(this.props.appState.language)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'isActive',\r\n label: this.translatorService.Tranlate('USERS_IS_ACTIVE_HEADER', 'Activ'),\r\n options: {\r\n sort: false,\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(isActive: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names[0]) !== -1 && isActive === true) ||\r\n (filterVal.indexOf(this.names[1]) !== -1 && isActive === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleIsActiveChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addTariff = async () => {\r\n try {\r\n if (\r\n this.state.workflowTariffs.findIndex(\r\n (item) =>\r\n item.workflowPartnerId === this.state.selectedWorkflowPartner!.id ||\r\n item.tariffId === this.state.selectedTariff!.id\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_MSG_WORKFLOW_TARIFF_EXISTS',\r\n 'Tariful exista deja!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n await this.workflowService.AddWorkflowTariff({\r\n // workflowPartnerId: this.state.selectedWorkflowPartner!.id,\r\n tariffId: this.state.selectedTariff!.id,\r\n workflowId: this.state.workflowId,\r\n isActive: true,\r\n id: 0\r\n } as WorkflowTariff);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedTariff: null\r\n },\r\n async () => {\r\n await this.reloadWorkflowTariffs(this.state.selectedWorkflowPartner!.partnerId);\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleWorkflowPartnerChange = (newValue: WorkflowPartner | null) => {\r\n this.setState({ selectedWorkflowPartner: newValue }, () => {\r\n this.reloadWorkflowTariffs(newValue === null ? null : newValue.partnerId);\r\n });\r\n };\r\n\r\n handleWorkflowTariffChange = (newValue: Tariff | null) => {\r\n this.setState({ selectedTariff: newValue });\r\n };\r\n\r\n renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.handleWorkflowPartnerChange(newValue)\r\n }\r\n getOptionLabel={(option: WorkflowPartner) => option.partner!.displayName || ''}\r\n filterOptions={createFilterOptions({\r\n matchFrom: 'any',\r\n stringify: (option: WorkflowPartner) => option.partner!.displayName\r\n })}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleWorkflowTariffChange(newValue)\r\n }\r\n getOptionLabel={(option: Tariff) => option.name || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n handleClose = (reload: boolean) => {\r\n if (reload) {\r\n this.setState({ isOpenDialog: false }, async () => {\r\n await this.reloadWorkflowTariffs(this.state.selectedWorkflowPartner!.partnerId);\r\n });\r\n } else {\r\n this.setState({ isOpenDialog: false });\r\n }\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.tariffService = (this.context as AppContext).tariffService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n\r\n const options = {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('TARIFFS_EDIT_MODAL_TITLE', 'Editare Tarif')}\r\n \r\n \r\n \r\n this.handleClose(false)}\r\n size={'small'}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.handleClose(true)}\r\n />\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(WorkflowTariffs as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { Box, Button, IconButton, Card, CardContent, Switch, Dialog } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\r\nimport KeyboardArrowUpIcon from '@material-ui/icons/KeyboardArrowUp';\r\nimport { WorkflowSection } from '../../../interfaces/Workflow';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\n\r\ninterface IWorkflowSection {\r\n workflowSections: WorkflowSection[];\r\n isLoading: boolean;\r\n workflowSectionTypes: IReferential[];\r\n selectedWorkflowSectionType: IReferential | null;\r\n workflowId: number;\r\n isDialogOpen: boolean;\r\n workflowSectionId: number | null;\r\n}\r\n\r\ntype IWorkflowSectionProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass WorkflowCaseStructureSectionTab extends React.PureComponent<\r\n IWorkflowSectionProps,\r\n IWorkflowSection\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n workflowSections: [],\r\n isLoading: false,\r\n workflowSectionTypes: [],\r\n selectedWorkflowSectionType: null,\r\n workflowId: 0,\r\n isDialogOpen: false,\r\n workflowSectionId: null\r\n } as IWorkflowSection;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadWorkflowSections();\r\n }\r\n );\r\n }\r\n\r\n loadWorkflowSections = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n const ref = Referentials.referential.find((item) => item.code === ReferentialCode.Section);\r\n\r\n const [workflowSectionList, sections] = await Promise.all([\r\n this.workflowService.GetWorkflowSections(workflowId),\r\n this.appReferentialService.Get(ref!.baseUrl)\r\n ]);\r\n\r\n const workflowSections = workflowSectionList.sort(function (a, b) {\r\n return a.order - b.order;\r\n });\r\n\r\n this.setState({\r\n workflowSections: workflowSections,\r\n workflowSectionTypes: sections, //.filter(item => item.isActive === true),\r\n isLoading: false,\r\n workflowId: workflowId\r\n });\r\n };\r\n\r\n moveUp = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const cloneArray = [...this.state.workflowSections];\r\n const itemToMoveUpIndex = cloneArray.findIndex((item) => item.id === id);\r\n\r\n if (itemToMoveUpIndex === -1) {\r\n return;\r\n }\r\n if (cloneArray[itemToMoveUpIndex].order === 1) {\r\n return;\r\n }\r\n\r\n const itemToMoveDownIndex = cloneArray.findIndex(\r\n (item) => item.order === cloneArray[itemToMoveUpIndex].order - 1\r\n );\r\n\r\n cloneArray[itemToMoveUpIndex] = {\r\n ...cloneArray[itemToMoveUpIndex],\r\n order: cloneArray[itemToMoveUpIndex].order - 1\r\n };\r\n cloneArray[itemToMoveDownIndex] = {\r\n ...cloneArray[itemToMoveDownIndex],\r\n order: cloneArray[itemToMoveDownIndex].order + 1\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowSection(cloneArray[itemToMoveUpIndex]);\r\n await this.workflowService.UpdateWorkflowSection(cloneArray[itemToMoveDownIndex]);\r\n\r\n this.setState({\r\n workflowSections: cloneArray.sort(function (a, b) {\r\n return a.order - b.order;\r\n })\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n moveDown = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const cloneArray = [...this.state.workflowSections];\r\n const itemToMoveIndex = cloneArray.findIndex((item) => item.id === id);\r\n\r\n if (itemToMoveIndex === -1) {\r\n return;\r\n }\r\n if (cloneArray[itemToMoveIndex].order === cloneArray.length) {\r\n return;\r\n }\r\n\r\n const itemToMoveToIndex = cloneArray.findIndex(\r\n (item) => item.order === cloneArray[itemToMoveIndex].order + 1\r\n );\r\n\r\n cloneArray[itemToMoveIndex] = {\r\n ...cloneArray[itemToMoveIndex],\r\n order: cloneArray[itemToMoveIndex].order + 1\r\n };\r\n cloneArray[itemToMoveToIndex] = {\r\n ...cloneArray[itemToMoveToIndex],\r\n order: cloneArray[itemToMoveToIndex].order - 1\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowSection(cloneArray[itemToMoveIndex]);\r\n await this.workflowService.UpdateWorkflowSection(cloneArray[itemToMoveToIndex]);\r\n\r\n this.setState({\r\n workflowSections: cloneArray.sort(function (a, b) {\r\n return a.order - b.order;\r\n })\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleIsActiveChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const workflowSections = [...this.state.workflowSections];\r\n const updatedWorkflowSectionIndex = workflowSections.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowSectionIndex >= 0) {\r\n workflowSections[updatedWorkflowSectionIndex] = {\r\n ...workflowSections[updatedWorkflowSectionIndex],\r\n isActive: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowSection(\r\n workflowSections[updatedWorkflowSectionIndex]\r\n );\r\n\r\n this.setState({ workflowSections: workflowSections });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'section',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOWS_TAB_CASE_STRUCTURE_TAB_SECTION_SECTION_HEADER',\r\n 'Sectiune Dosar'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOWS_TAB_CASE_STRUCTURE_TAB_SECTION_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'order',\r\n sortDirection: 'asc',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOWS_TAB_CASE_STRUCTURE_TAB_SECTION_CASE_ORDER_HEADER',\r\n 'Ord'\r\n ),\r\n options: { sort: false }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n sortOrder: {\r\n name: 'order',\r\n direction: 'asc'\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n this.moveUp(e, tableMeta)}>\r\n \r\n \r\n this.moveDown(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'isActive',\r\n label: this.translatorService.Tranlate('USERS_IS_ACTIVE_HEADER', 'Activ'),\r\n options: {\r\n sort: false,\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(isActive: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names[0]) !== -1 && isActive === true) ||\r\n (filterVal.indexOf(this.names[1]) !== -1 && isActive === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleIsActiveChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n this.setState({ isDialogOpen: true, workflowSectionId: tableMeta.rowData[0] })\r\n }\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addOrgCase = async () => {\r\n try {\r\n await this.workflowService.AddWorkflowSection({\r\n order: this.state.workflowSections.length + 1,\r\n sectionId: this.state.selectedWorkflowSectionType!.id,\r\n workflowId: this.state.workflowId,\r\n isActive: true\r\n } as WorkflowSection);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedWorkflowSectionType: null\r\n },\r\n () => {\r\n this.loadWorkflowSections();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleAutocompleteChange = (newValue: any | null) => {\r\n this.setState({ selectedWorkflowSectionType: newValue });\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n this.handleAutocompleteChange(newValue)}\r\n getOptionLabel={(option: any) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n closeDialog = async () => {\r\n this.setState({ isDialogOpen: false });\r\n };\r\n\r\n deleteWorkflowSection = async () => {\r\n try {\r\n await this.workflowService.RemoveWorkflowSection(this.state.workflowSectionId!);\r\n await this.loadWorkflowSections();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n\r\n \r\n
\r\n

\r\n {this.translatorService.Tranlate(\r\n 'DELETE_TEXT',\r\n 'Sigur doriti sa stergeti aceasta inregistrare?'\r\n )}\r\n

\r\n
\r\n \r\n \r\n {this.translatorService.Tranlate('CANCEL', 'Anuleaza')}\r\n \r\n \r\n {\r\n this.setState(\r\n { isDialogOpen: false },\r\n async () => await this.deleteWorkflowSection()\r\n );\r\n }}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n className=\"mx-1\"\r\n >\r\n \r\n {this.translatorService.Tranlate('DELETE', 'Sterge')}\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(WorkflowCaseStructureSectionTab as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../../services/Interfaces/IOrganizationService';\r\nimport { Box, Button, Card, CardContent, IconButton } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../../helpers/Constants';\r\nimport { WorkflowSectionStepCaseStatus } from '../../../../interfaces/Workflow';\r\nimport { IWorkflowService } from '../../../../services/Interfaces/IWorkflowService';\r\nimport { IReferential } from '../../../../interfaces/IReferential';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\ninterface IWorkflowStepStatusesState {\r\n workflowSectionStepCaseStatusList: WorkflowSectionStepCaseStatus[];\r\n isLoading: boolean;\r\n\r\n caseStatusTypeList: IReferential[];\r\n selectedCaseStatusType: IReferential | null;\r\n}\r\nexport interface ExternalWorkflowStepStatusesProps {\r\n workflowSectionStepId: number;\r\n}\r\n\r\ntype IWorkflowStepStatusesProps = ExternalWorkflowStepStatusesProps & {\r\n appState: AppState;\r\n} & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass WorkflowStepStatuses extends React.PureComponent<\r\n IWorkflowStepStatusesProps,\r\n IWorkflowStepStatusesState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n workflowSectionStepCaseStatusList: [],\r\n isLoading: false,\r\n\r\n caseStatusTypeList: [],\r\n selectedCaseStatusType: null,\r\n workflowSectionStepList: [],\r\n selectedUserRole: null,\r\n userRoles: []\r\n // workflowId: 0\r\n } as IWorkflowStepStatusesState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadWorkflowSectionStepStatuses();\r\n }\r\n );\r\n }\r\n\r\n loadWorkflowSectionStepStatuses = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n const ref = Referentials.referential.find((item) => item.code === ReferentialCode.CaseStatus);\r\n\r\n const [workflowSectionStepStatusList, caseStatusTypes] = await Promise.all([\r\n this.workflowService.GetWorkflowSectionStepCaseStatuses(this.props.workflowSectionStepId),\r\n this.appReferentialService.Get(ref!.baseUrl)\r\n ]);\r\n\r\n workflowSectionStepStatusList.forEach((wpItem) => {\r\n const caseStatus = caseStatusTypes.find((item) => item.id === wpItem.caseStatusId);\r\n wpItem.caseStatus = isNullOrUndefined(caseStatus) ? null : caseStatus;\r\n });\r\n this.setState({\r\n workflowSectionStepCaseStatusList: workflowSectionStepStatusList,\r\n caseStatusTypeList: caseStatusTypes.filter((item) => item.isActive === true),\r\n isLoading: false\r\n });\r\n };\r\n\r\n deleteWorkflowSectionStepStatus = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const index = this.state.workflowSectionStepCaseStatusList.findIndex(\r\n (i) => i.id === tableMeta.rowData[0]\r\n );\r\n const deletedStatus = this.state.workflowSectionStepCaseStatusList[index];\r\n const newStatusesArray = [...this.state.workflowSectionStepCaseStatusList];\r\n newStatusesArray.splice(index, 1);\r\n\r\n await this.workflowService.RemoveWorkflowSectionStepCaseStatus(deletedStatus.id);\r\n\r\n this.setState({\r\n workflowSectionStepCaseStatusList: newStatusesArray\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n\r\n {\r\n name: 'caseStatus',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_PERMISSION_TAB_CASE_STATUS_HEADER',\r\n 'Status Dosar'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_PERMISSION_TAB_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().toDate().toLocaleString(this.props.appState.language)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deleteWorkflowSectionStepStatus(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addStatus = async () => {\r\n try {\r\n if (\r\n this.state.workflowSectionStepCaseStatusList.findIndex(\r\n (item) => item.caseStatusId === this.state.selectedCaseStatusType!.id\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_MSG_WORKFLOW_PERMISSION_EXISTS',\r\n 'Permisiunea exista deja!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n await this.workflowService.AddWorkflowSectionStepCaseStatus({\r\n caseStatusId: this.state.selectedCaseStatusType!.id,\r\n workflowSectionStepId: this.props.workflowSectionStepId\r\n } as WorkflowSectionStepCaseStatus);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n //selecteWorkflowSectionStepType : null,\r\n },\r\n () => {\r\n this.loadWorkflowSectionStepStatuses();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleCaseStatusChange = async (newValue: any | null) => {\r\n this.setState({\r\n selectedCaseStatusType: newValue\r\n // workflowSectionStepList: await this.filterSectionSteps(this.state.workflowPermissions, this.state.selecteWorkflowPartnerType, newValue)\r\n });\r\n };\r\n\r\n renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n this.handleCaseStatusChange(newValue)}\r\n getOptionLabel={(option: any) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: true,\r\n search: true,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalWorkflowStepStatusesProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n null,\r\n mergeProps\r\n)(withSnackbar(WorkflowStepStatuses as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Card, Tabs, Tab, CardContent } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../../context/Contexts';\r\nimport { Language } from '../../../../interfaces/Organization';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport TabPanel from '../../../_shared/Tabs';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { WorkflowSectionStepForm } from '../../../../interfaces/Workflow';\r\nimport WorkflowStepStatuses from '../editWorkflowStep/EditWorkflowStepStatuses';\r\n\r\ninterface IEditWorkflowFormState {\r\n workflowForm: WorkflowSectionStepForm;\r\n selectedTab: number;\r\n languages: Language[];\r\n isLoading: boolean;\r\n}\r\n\r\nexport interface ExternalEditWorkflowStepProps {\r\n workflowStepChanged?: (close: boolean) => void;\r\n workflowStepId: number;\r\n}\r\n\r\ntype EditWorkflowStepProps = { appState: AppState } & ProviderContext &\r\n ExternalEditWorkflowStepProps &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass EditWorkflowStep extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n workflowForm: {} as WorkflowSectionStepForm,\r\n selectedTab: 0,\r\n languages: [],\r\n isLoading: true\r\n } as IEditWorkflowFormState;\r\n\r\n public async componentDidMount() {\r\n this.setState({ isLoading: false });\r\n }\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n\r\n if (this.state.isLoading) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalEditWorkflowStepProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(EditWorkflowStep as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport {\r\n Box,\r\n Button,\r\n IconButton,\r\n Card,\r\n CardContent,\r\n Switch,\r\n Dialog,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n Typography\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\r\nimport KeyboardArrowUpIcon from '@material-ui/icons/KeyboardArrowUp';\r\nimport { WorkflowSectionStep, WorkflowSection } from '../../../interfaces/Workflow';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport EditWorkflowStep from './editWorkflowStep/EditWorkflowStep';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\ninterface IWorkflowSectionStepState {\r\n workflowSectionSteps: WorkflowSectionStep[];\r\n isLoading: boolean;\r\n workflowSectionTypes: WorkflowSection[];\r\n workflowSectionStepTypes: IReferential[];\r\n selectedworkflowSectionType: WorkflowSection | null;\r\n selectedworkflowSectionStepType: IReferential | null;\r\n workflowId: number;\r\n isDialogOpen: boolean;\r\n isEditDialogOpen: boolean;\r\n workflowSectionStepId: number | null;\r\n modalFormTitle: string;\r\n stepId: number;\r\n}\r\n\r\ntype IWorkflowSectionStepProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass WorkflowCaseStructureStepsTab extends React.PureComponent<\r\n IWorkflowSectionStepProps,\r\n IWorkflowSectionStepState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n workflowSectionSteps: [],\r\n isLoading: false,\r\n workflowSectionTypes: [],\r\n workflowSectionStepTypes: [],\r\n selectedworkflowSectionType: null,\r\n selectedworkflowSectionStepType: null,\r\n workflowId: 0,\r\n isDialogOpen: false,\r\n workflowSectionStepId: null,\r\n isEditDialogOpen: false,\r\n modalFormTitle: '',\r\n stepId: 0\r\n } as IWorkflowSectionStepState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadWorkflowSectionSteps(null);\r\n }\r\n );\r\n }\r\n\r\n loadWorkflowSectionSteps = async (sectionTypeId: number | null) => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n const refSteps = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.WorkflowSteps\r\n );\r\n\r\n const [workflowSectionList, workflowSectionStepList, workflowSectionStepTypes] =\r\n await Promise.all([\r\n this.workflowService.GetWorkflowSections(workflowId),\r\n sectionTypeId === null ? [] : this.workflowService.GetWorkflowSectionSteps(sectionTypeId),\r\n this.appReferentialService.Get(refSteps!.baseUrl)\r\n ]);\r\n\r\n this.setState({\r\n workflowSectionSteps: workflowSectionStepList.sort(function (a, b) {\r\n return a.order - b.order;\r\n }),\r\n workflowSectionTypes: workflowSectionList.sort(function (a, b) {\r\n return a.order - b.order;\r\n }),\r\n workflowSectionStepTypes: workflowSectionStepTypes.filter((item) => item.isActive === true),\r\n isLoading: false,\r\n workflowId: workflowId\r\n });\r\n };\r\n\r\n reloadWorkflowSectionSteps = async (sectionTypeId: number | null) => {\r\n const [workflowSectionStepList] = await Promise.all([\r\n sectionTypeId === null ? [] : this.workflowService.GetWorkflowSectionSteps(sectionTypeId)\r\n ]);\r\n\r\n this.setState({\r\n workflowSectionSteps: workflowSectionStepList.sort(function (a, b) {\r\n return a.order - b.order;\r\n }),\r\n isLoading: false\r\n });\r\n };\r\n\r\n moveUp = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const cloneArray = [...this.state.workflowSectionSteps];\r\n const itemToMoveUpIndex = cloneArray.findIndex((item) => item.id === id);\r\n\r\n if (itemToMoveUpIndex === -1) {\r\n return;\r\n }\r\n if (cloneArray[itemToMoveUpIndex].order === 1) {\r\n return;\r\n }\r\n\r\n const itemToMoveDownIndex = cloneArray.findIndex(\r\n (item) => item.order === cloneArray[itemToMoveUpIndex].order - 1\r\n );\r\n\r\n cloneArray[itemToMoveUpIndex] = {\r\n ...cloneArray[itemToMoveUpIndex],\r\n order: cloneArray[itemToMoveUpIndex].order - 1\r\n };\r\n cloneArray[itemToMoveDownIndex] = {\r\n ...cloneArray[itemToMoveDownIndex],\r\n order: cloneArray[itemToMoveDownIndex].order + 1\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowSectionStep(cloneArray[itemToMoveUpIndex]);\r\n await this.workflowService.UpdateWorkflowSectionStep(cloneArray[itemToMoveDownIndex]);\r\n\r\n this.setState({\r\n workflowSectionSteps: cloneArray.sort(function (a, b) {\r\n return a.order - b.order;\r\n })\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n moveDown = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const cloneArray = [...this.state.workflowSectionSteps];\r\n const itemToMoveIndex = cloneArray.findIndex((item) => item.id === id);\r\n\r\n if (itemToMoveIndex === -1) {\r\n return;\r\n }\r\n if (cloneArray[itemToMoveIndex].order === cloneArray.length) {\r\n return;\r\n }\r\n\r\n const itemToMoveToIndex = cloneArray.findIndex(\r\n (item) => item.order === cloneArray[itemToMoveIndex].order + 1\r\n );\r\n\r\n cloneArray[itemToMoveIndex] = {\r\n ...cloneArray[itemToMoveIndex],\r\n order: cloneArray[itemToMoveIndex].order + 1\r\n };\r\n cloneArray[itemToMoveToIndex] = {\r\n ...cloneArray[itemToMoveToIndex],\r\n order: cloneArray[itemToMoveToIndex].order - 1\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowSectionStep(cloneArray[itemToMoveIndex]);\r\n await this.workflowService.UpdateWorkflowSectionStep(cloneArray[itemToMoveToIndex]);\r\n\r\n this.setState({\r\n workflowSectionSteps: cloneArray.sort(function (a, b) {\r\n return a.order - b.order;\r\n })\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleIsActiveChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const workflowSectionSteps = [...this.state.workflowSectionSteps];\r\n const updatedWorkflowSectionStepIndex = workflowSectionSteps.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowSectionStepIndex >= 0) {\r\n workflowSectionSteps[updatedWorkflowSectionStepIndex] = {\r\n ...workflowSectionSteps[updatedWorkflowSectionStepIndex],\r\n isActive: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowSectionStep(\r\n workflowSectionSteps[updatedWorkflowSectionStepIndex]\r\n );\r\n\r\n this.setState({ workflowSectionSteps: workflowSectionSteps });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n onRowClick = (e: any, id: number, stepName: any) => {\r\n this.setState({ isEditDialogOpen: true, stepId: id, modalFormTitle: stepName });\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'workflowStep',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOWS_TAB_CASE_STRUCTURE_TAB_STEP_STEP_HEADER',\r\n 'Pas'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.onRowClick(e, tableMeta.rowData[0], value.displayName)}\r\n >\r\n {value.displayName}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOWS_TAB_CASE_STRUCTURE_TAB_STEP_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'order',\r\n sortDirection: 'asc',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOWS_TAB_CASE_STRUCTURE_TAB_STEP_STEP_ORDER_HEADER',\r\n 'Ord'\r\n ),\r\n options: { sort: false }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n sortOrder: {\r\n name: 'order',\r\n direction: 'asc'\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n this.moveUp(e, tableMeta)}>\r\n \r\n \r\n this.moveDown(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'isActive',\r\n label: this.translatorService.Tranlate('USERS_IS_ACTIVE_HEADER', 'Activ'),\r\n options: {\r\n sort: false,\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(isActive: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names[0]) !== -1 && isActive === true) ||\r\n (filterVal.indexOf(this.names[1]) !== -1 && isActive === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleIsActiveChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n this.setState({ isDialogOpen: true, workflowSectionStepId: tableMeta.rowData[0] })\r\n }\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addOrgStep = async () => {\r\n try {\r\n await this.workflowService.AddWorkflowSectionStep({\r\n order: this.state.workflowSectionSteps.length + 1,\r\n stepId: this.state.selectedworkflowSectionStepType!.id,\r\n workflowSectionId: this.state.selectedworkflowSectionType!.id,\r\n isActive: true\r\n } as WorkflowSectionStep);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedworkflowSectionStepType: null\r\n },\r\n () => {\r\n this.reloadWorkflowSectionSteps(this.state.selectedworkflowSectionType!.id);\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleAutocompleteSectionChange = (newValue: any | null) => {\r\n this.setState(\r\n {\r\n selectedworkflowSectionType: newValue,\r\n isLoading: true\r\n },\r\n () => {\r\n this.reloadWorkflowSectionSteps(newValue === null ? null : newValue.id);\r\n }\r\n );\r\n };\r\n\r\n handleAutocompleteStepChange = (newValue: IReferential | null) => {\r\n this.setState({ selectedworkflowSectionStepType: newValue });\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.handleAutocompleteSectionChange(newValue)\r\n }\r\n getOptionLabel={(option: WorkflowSection) => option.section!.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleAutocompleteStepChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n closeDialog = async () => {\r\n this.setState({ isDialogOpen: false });\r\n };\r\n\r\n deleteWorkflowSectionStep = async () => {\r\n try {\r\n await this.workflowService.RemoveWorkflowStep(this.state.workflowSectionStepId!);\r\n await this.reloadWorkflowSectionSteps(this.state.selectedworkflowSectionType!.id);\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleClose = (showForm: boolean) => {\r\n this.setState({ isEditDialogOpen: showForm }, async () => {\r\n await this.reloadWorkflowSectionSteps(this.state.selectedworkflowSectionType!.id);\r\n });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n \r\n
\r\n

\r\n {this.translatorService.Tranlate(\r\n 'DELETE_TEXT',\r\n 'Sigur doriti sa stergeti aceasta inregistrare?'\r\n )}\r\n

\r\n
\r\n \r\n \r\n {this.translatorService.Tranlate('CANCEL', 'Anuleaza')}\r\n \r\n \r\n {\r\n this.setState(\r\n { isDialogOpen: false },\r\n async () => await this.deleteWorkflowSectionStep()\r\n );\r\n }}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n className=\"mx-1\"\r\n >\r\n \r\n {this.translatorService.Tranlate('DELETE', 'Sterge')}\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n {this.state.modalFormTitle}\r\n \r\n \r\n this.handleClose(false)}\r\n size={'small'}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(WorkflowCaseStructureStepsTab as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../../services/Interfaces/IOrganizationService';\r\nimport { Box, Button, IconButton, Card, CardContent } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IReferential } from '../../../../interfaces/IReferential';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete, { createFilterOptions } from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../../helpers/Constants';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\r\nimport KeyboardArrowUpIcon from '@material-ui/icons/KeyboardArrowUp';\r\nimport { WorkflowFormReport, WorkflowPartner } from '../../../../interfaces/Workflow';\r\nimport { IWorkflowService } from '../../../../services/Interfaces/IWorkflowService';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\ninterface IWorkflowReportState {\r\n workflowReports: WorkflowFormReport[];\r\n isLoading: boolean;\r\n statusList: IReferential[];\r\n organizations: WorkflowPartner[];\r\n reportList: IReferential[];\r\n selectedStatus: IReferential | null;\r\n selectedOrganization: WorkflowPartner | null;\r\n selectedReport: IReferential | null;\r\n selectedUserRole: IReferential | null;\r\n userRoles: IReferential[];\r\n}\r\nexport interface ExternalOrganizationFormReportProps {\r\n workflowFormId: number;\r\n}\r\n\r\ntype IOrganizationFormReportProps = ExternalOrganizationFormReportProps & {\r\n appState: AppState;\r\n} & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass EditWorkflowFormReport extends React.PureComponent<\r\n IOrganizationFormReportProps,\r\n IWorkflowReportState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n workflowReports: [],\r\n isLoading: false,\r\n statusList: [],\r\n organizations: [],\r\n reportList: [],\r\n selectedStatus: null,\r\n selectedOrganization: null,\r\n selectedReport: null,\r\n selectedUserRole: null,\r\n userRoles: []\r\n } as IWorkflowReportState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizationFormReports();\r\n }\r\n );\r\n }\r\n\r\n loadOrganizationFormReports = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n const ref = Referentials.referential.find((item) => item.code === ReferentialCode.CaseStatus);\r\n const refReport = Referentials.referential.find((item) => item.code === ReferentialCode.Report);\r\n const refRole = Referentials.referential.find((item) => item.code === ReferentialCode.UserRole);\r\n\r\n const [workflowFormReports, statusList, reportList, workflowPartnerList, userRoles] =\r\n await Promise.all([\r\n this.workflowService.GetWorkflowFormReports(this.props.workflowFormId),\r\n this.appReferentialService.Get(ref!.baseUrl),\r\n this.appReferentialService.Get(refReport!.baseUrl),\r\n this.workflowService.GetWorkflowPartners(workflowId),\r\n this.appReferentialService.Get(refRole!.baseUrl)\r\n ]);\r\n\r\n const partners = await this.organizationService.GetOrganizationsByIds(\r\n workflowPartnerList.map((item) => item.partnerId)\r\n );\r\n workflowPartnerList.forEach((wpItem) => {\r\n const partner = partners.find((item) => item.id === wpItem.partnerId);\r\n wpItem.partner = isNullOrUndefined(partner) ? null : partner;\r\n });\r\n\r\n workflowFormReports.forEach((wfrItem) => {\r\n const wc = workflowPartnerList.find((item) => item.id === wfrItem.workflowPartnerId);\r\n const cs = statusList.find((item) => item.id === wfrItem.caseStatusId);\r\n\r\n wfrItem.workflowPartner = isNullOrUndefined(wc) ? null : wc;\r\n wfrItem.caseStatus = isNullOrUndefined(cs) ? null : cs;\r\n });\r\n\r\n this.setState({\r\n workflowReports: workflowFormReports.sort(function (a, b) {\r\n return a.order - b.order;\r\n }),\r\n statusList: statusList.filter((item) => item.isActive),\r\n organizations: workflowPartnerList.filter((item) => item.isActive),\r\n reportList: reportList,\r\n isLoading: false,\r\n userRoles: userRoles.filter((item) => item.isActive === true)\r\n });\r\n };\r\n\r\n reloadOrganizationForms = async () => {\r\n const workflowFormReports = await this.workflowService.GetWorkflowFormReports(\r\n this.props.workflowFormId\r\n );\r\n workflowFormReports.forEach((wfrItem) => {\r\n const wc = this.state.organizations.find((item) => item.id === wfrItem.workflowPartnerId);\r\n const cs = this.state.statusList.find((item) => item.id === wfrItem.caseStatusId);\r\n\r\n wfrItem.workflowPartner = isNullOrUndefined(wc) ? null : wc;\r\n wfrItem.caseStatus = isNullOrUndefined(cs) ? null : cs;\r\n });\r\n\r\n this.setState({\r\n workflowReports: workflowFormReports.sort(function (a, b) {\r\n return a.order - b.order;\r\n }),\r\n isLoading: false\r\n });\r\n };\r\n\r\n deleteOrgFormReport = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.workflowService.RemoveWorkflowFormReport(id);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.reloadOrganizationForms();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n moveUp = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const cloneArray = [...this.state.workflowReports];\r\n const itemToMoveUpIndex = cloneArray.findIndex((item) => item.id === id);\r\n\r\n if (itemToMoveUpIndex === -1) {\r\n return;\r\n }\r\n if (cloneArray[itemToMoveUpIndex].order === 1) {\r\n return;\r\n }\r\n\r\n const itemToMoveDownIndex = cloneArray.findIndex(\r\n (item) => item.order === cloneArray[itemToMoveUpIndex].order - 1\r\n );\r\n\r\n cloneArray[itemToMoveUpIndex] = {\r\n ...cloneArray[itemToMoveUpIndex],\r\n order: cloneArray[itemToMoveUpIndex].order - 1\r\n };\r\n cloneArray[itemToMoveDownIndex] = {\r\n ...cloneArray[itemToMoveDownIndex],\r\n order: cloneArray[itemToMoveDownIndex].order + 1\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowFormReport(cloneArray[itemToMoveUpIndex]);\r\n await this.workflowService.UpdateWorkflowFormReport(cloneArray[itemToMoveDownIndex]);\r\n\r\n this.setState({\r\n workflowReports: cloneArray.sort(function (a, b) {\r\n return a.order - b.order;\r\n })\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n moveDown = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const cloneArray = [...this.state.workflowReports];\r\n const itemToMoveIndex = cloneArray.findIndex((item) => item.id === id);\r\n\r\n if (itemToMoveIndex === -1) {\r\n return;\r\n }\r\n if (cloneArray[itemToMoveIndex].order === cloneArray.length) {\r\n return;\r\n }\r\n\r\n const itemToMoveToIndex = cloneArray.findIndex(\r\n (item) => item.order === cloneArray[itemToMoveIndex].order + 1\r\n );\r\n\r\n cloneArray[itemToMoveIndex] = {\r\n ...cloneArray[itemToMoveIndex],\r\n order: cloneArray[itemToMoveIndex].order + 1\r\n };\r\n cloneArray[itemToMoveToIndex] = {\r\n ...cloneArray[itemToMoveToIndex],\r\n order: cloneArray[itemToMoveToIndex].order - 1\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowFormReport(cloneArray[itemToMoveIndex]);\r\n await this.workflowService.UpdateWorkflowFormReport(cloneArray[itemToMoveToIndex]);\r\n\r\n this.setState({\r\n workflowReports: cloneArray.sort(function (a, b) {\r\n return a.order - b.order;\r\n })\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'workflowPartner',\r\n label: this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_REPORT_ORGANIZATION_HEADER',\r\n 'Organizatie'\r\n ),\r\n options: {\r\n filter: true,\r\n sort: false,\r\n customBodyRender: (value: WorkflowPartner, tableMeta: MUIDataTableMeta) => {\r\n return value?.partner?.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseStatus',\r\n label: this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_REPORT_STATUS_HEADER',\r\n 'Status'\r\n ),\r\n options: {\r\n filter: true,\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'userRole',\r\n label: this.translatorService.Tranlate('WORKFLOW_USER_ROLE_LABEL', 'Rol'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any) => {\r\n return value ? value.displayName : '';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'report',\r\n label: this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_REPORT_REPORT_HEADER',\r\n 'Raport'\r\n ),\r\n options: {\r\n filter: true,\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().toDate().toLocaleString(this.props.appState.language)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'order',\r\n sortDirection: 'asc',\r\n label: this.translatorService.Tranlate('EDIT_ORGANIZATION_FORM_REPORT_ORDER_HEADER', 'Ord'),\r\n options: { filter: false, sort: false }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n sortOrder: {\r\n name: 'order',\r\n direction: 'asc'\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n this.moveUp(e, tableMeta)}>\r\n \r\n \r\n this.moveDown(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deleteOrgFormReport(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addOrgFormReport = async () => {\r\n try {\r\n if (\r\n this.state.workflowReports.findIndex(\r\n (item) =>\r\n item.workflowPartnerId === this.state.selectedOrganization!.id &&\r\n ((this.state.selectedUserRole !== null &&\r\n item.userRoleId === this.state.selectedUserRole!.id) ||\r\n (this.state.selectedUserRole === null && item.userRoleId !== null) ||\r\n (this.state.selectedUserRole !== null && item.userRoleId === null) ||\r\n (this.state.selectedUserRole === null && item.userRoleId === null)) &&\r\n item.reportId === this.state.selectedReport!.id &&\r\n item.caseStatusId === this.state.selectedStatus!.id\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_MSG_WORKFLOW_REPORT_EXISTS',\r\n 'Raportul exista deja!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n await this.workflowService.AddWorkflowFormReport({\r\n id: 0,\r\n order: this.state.workflowReports.length + 1,\r\n workflowPartnerId: this.state.selectedOrganization!.id,\r\n reportId: this.state.selectedReport!.id,\r\n caseStatusId: this.state.selectedStatus!.id,\r\n workflowSectionStepFormId: this.props.workflowFormId,\r\n userRoleId: this.state.selectedUserRole ? this.state.selectedUserRole.id : null\r\n } as WorkflowFormReport);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedReport: null\r\n },\r\n () => {\r\n this.loadOrganizationFormReports();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleAutocompleteStatusChange = (newValue: any | null) => {\r\n this.setState({\r\n selectedStatus: newValue\r\n });\r\n };\r\n\r\n handleUserRoleChange = (newValue: any | null) => {\r\n this.setState({ selectedUserRole: newValue });\r\n };\r\n handleAutocompleteOrganizationChange = (newValue: WorkflowPartner | null) => {\r\n this.setState({ selectedOrganization: newValue });\r\n };\r\n\r\n handleAutocompleteReportChange = async (newValue: any | null) => {\r\n this.setState({ selectedReport: newValue });\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.handleAutocompleteOrganizationChange(newValue)\r\n }\r\n getOptionLabel={(option: WorkflowPartner) => option.partner!.displayName || ''}\r\n filterOptions={createFilterOptions({\r\n matchFrom: 'any',\r\n stringify: (option: WorkflowPartner) => option.partner!.displayName\r\n })}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleAutocompleteStatusChange(newValue)\r\n }\r\n getOptionLabel={(option: any) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n this.handleUserRoleChange(newValue)}\r\n getOptionLabel={(option: any) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleAutocompleteReportChange(newValue)\r\n }\r\n getOptionLabel={(option: any) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n\r\n const options = {\r\n filter: true,\r\n search: true,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalOrganizationFormReportProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n null,\r\n mergeProps\r\n)(withSnackbar(EditWorkflowFormReport as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../../services/Interfaces/IOrganizationService';\r\nimport { Box, Button, Card, CardContent, Grid } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IReferentialService } from '../../../../services/Interfaces/IReferentialService';\r\nimport * as monacoEditor from 'monaco-editor/esm/vs/editor/editor.api';\r\nimport { ControlledEditor } from '@monaco-editor/react';\r\nimport { WrapperSimple } from '../../../../layout-components';\r\nimport JSONSchemaForm from '@rjsf/material-ui';\r\nimport { WorkflowSectionStepForm } from '../../../../interfaces/Workflow';\r\nimport { IWorkflowService } from '../../../../services/Interfaces/IWorkflowService';\r\n\r\ninterface IWorkflowFormDesignState {\r\n workflowForm: WorkflowSectionStepForm;\r\n formData: any;\r\n isLoading: boolean;\r\n}\r\nexport interface ExternalWorkflowFormDesignProps {\r\n workflowFormId: number;\r\n}\r\n\r\ntype IOrganizationFormDesignProps = ExternalWorkflowFormDesignProps & {\r\n appState: AppState;\r\n} & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass EditWorkflowFormDesign extends React.PureComponent<\r\n IOrganizationFormDesignProps,\r\n IWorkflowFormDesignState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n workflowForm: {},\r\n formData: {},\r\n isLoading: false\r\n } as IWorkflowFormDesignState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizationFormDesign();\r\n }\r\n );\r\n }\r\n\r\n loadOrganizationFormDesign = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n let workflowForm = {} as WorkflowSectionStepForm;\r\n if (this.props.workflowFormId !== 0) {\r\n workflowForm = await this.workflowService.GetWorkflowSectionStepForm(\r\n this.props.workflowFormId\r\n );\r\n }\r\n\r\n // organizationForm.json2 = JSON.stringify(json2, null, 2);\r\n this.setState({\r\n workflowForm: workflowForm,\r\n isLoading: false\r\n });\r\n };\r\n handleEditorDidMountJsonSchema = (\r\n ev: monacoEditor.editor.IModelContentChangedEvent,\r\n value: string | undefined\r\n ) => {\r\n const orgFormDesign = { ...this.state.workflowForm };\r\n //= value ? value : \"\";\r\n const BAD_WORD = 'eval';\r\n const WORNING_MESSAGE = \" <- hey man, what's this?\";\r\n orgFormDesign.json1 =\r\n value !== undefined && value.includes(BAD_WORD) && !value.includes(WORNING_MESSAGE)\r\n ? value.replace(BAD_WORD, BAD_WORD + WORNING_MESSAGE)\r\n : value!.includes(WORNING_MESSAGE) && !value!.includes(BAD_WORD)\r\n ? value!.replace(WORNING_MESSAGE, '')\r\n : value!;\r\n\r\n this.setState({ workflowForm: orgFormDesign });\r\n };\r\n handleEditorDidMountUISchema = (\r\n ev: monacoEditor.editor.IModelContentChangedEvent,\r\n value: string | undefined\r\n ) => {\r\n const orgFormDesign = { ...this.state.workflowForm };\r\n orgFormDesign.json2 = value ? value : '';\r\n this.setState({ workflowForm: orgFormDesign });\r\n };\r\n // handleChandeFormData = (e: IChangeEvent) => {\r\n // // const formData = value ? value : \"\";\r\n // debugger\r\n // this.setState({ formData: e.formData })\r\n // }\r\n getSchema = () => {\r\n let json = {};\r\n\r\n if (Object.keys(this.state.workflowForm).length !== 0) {\r\n try {\r\n json = JSON.parse(this.state.workflowForm.json1);\r\n } catch (error) {}\r\n }\r\n return json;\r\n };\r\n\r\n getUISchema = () => {\r\n let json = {};\r\n\r\n if (Object.keys(this.state.workflowForm).length !== 0) {\r\n try {\r\n json = JSON.parse(this.state.workflowForm.json2);\r\n } catch (error) {}\r\n }\r\n return json;\r\n };\r\n\r\n save = async () => {\r\n try {\r\n await this.workflowService.UpdateWorkflowSectionStepForm(this.state.workflowForm);\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* formData={this.state.formData} onChange={(e) => this.handleChandeFormData(e)} */}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalWorkflowFormDesignProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n null,\r\n mergeProps\r\n)(withSnackbar(EditWorkflowFormDesign as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Box, Select, MenuItem, Card, CardContent, Tabs, Tab } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../../context/Contexts';\r\nimport { OrganizationFormAction } from '../../../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../../../services/Interfaces/IOrganizationService';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport Referentials from '../../../../helpers/Referentials.json';\r\nimport { ReferentialCode, WorkflowFormActionTypeCode } from '../../../../helpers/Constants';\r\nimport { IReferentialService } from '../../../../services/Interfaces/IReferentialService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MaterialTable, { Column, EditComponentProps, Icons } from 'material-table';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { forwardRef } from 'react';\r\nimport { IReferential } from '../../../../interfaces/IReferential';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { IWorkflowService } from '../../../../services/Interfaces/IWorkflowService';\r\nimport { WorkflowFormAction, Workflow } from '../../../../interfaces/Workflow';\r\nimport { FormCode } from '../../../../helpers/forms/FormCode';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ninterface IWorkflowFormActionTransStatusState {\r\n transitionStatus: WorkflowFormAction[];\r\n isLoading: boolean;\r\n statusTypeList: IReferential[];\r\n tranStatusActionType: IReferential | null;\r\n workflows: Workflow[] | null;\r\n}\r\nexport interface ExternalWorkflowFormActionTransStatusProps {\r\n workflowFormId: number;\r\n workflowFormCode: string | null;\r\n currentWorkflowId: number | null;\r\n}\r\n\r\ntype WorkflowFormActionTransStatusProps = ExternalWorkflowFormActionTransStatusProps & {\r\n appState: AppState;\r\n} & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass WorkflowFormActionTransStatus extends React.PureComponent<\r\n WorkflowFormActionTransStatusProps,\r\n IWorkflowFormActionTransStatusState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n transitionStatus: [],\r\n isLoading: true,\r\n statusTypeList: [],\r\n tranStatusActionType: null,\r\n workflows: null\r\n } as IWorkflowFormActionTransStatusState;\r\n\r\n componentDidMount = () => {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadData();\r\n }\r\n );\r\n };\r\n\r\n loadData = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n try {\r\n const ref = Referentials.referential.find((item) => item.code === ReferentialCode.CaseStatus);\r\n const refActionTypes = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.ActionType\r\n );\r\n const [data, caseStatus, actionTypes] = await Promise.all([\r\n this.workflowService.GetWorkflowSectionStepFormActions(this.props.workflowFormId),\r\n this.appReferentialService.Get(ref!.baseUrl),\r\n this.appReferentialService.Get(refActionTypes!.baseUrl)\r\n ]);\r\n\r\n const workflows = await this.workflowService.GetWorkflows(parseInt(this.props.match.params.id));\r\n\r\n const tranStatusActionType = actionTypes.find(\r\n (item) => item.code === WorkflowFormActionTypeCode.STATUS_TRANSITION\r\n );\r\n\r\n // filter out inactive workflows and the current workflow\r\n const activeWf = workflows.filter(\r\n (wf) => wf.isActive && wf.id !== this.props.currentWorkflowId\r\n );\r\n data.forEach((item) => {\r\n const fromCs = caseStatus.find((itemCS) => itemCS.id === item.fromStatusId);\r\n const toCs = caseStatus.find((itemCS) => itemCS.id === item.toStatusId);\r\n const toWf = workflows.find((wf) => wf.id === item.toWorkflowId);\r\n item.fromStatus = isNullOrUndefined(fromCs) ? null : fromCs;\r\n item.toStatus = isNullOrUndefined(toCs) ? null : toCs;\r\n item.toWorkflow = toWf || null;\r\n });\r\n\r\n this.setState({\r\n transitionStatus: data.filter((item) => item.actionTypeId === tranStatusActionType!.id),\r\n isLoading: false,\r\n statusTypeList: caseStatus.filter((item) => item.isActive == true),\r\n tranStatusActionType: isNullOrUndefined(tranStatusActionType) ? null : tranStatusActionType,\r\n workflows: activeWf\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const lookup = this.state.statusTypeList.reduce(function (\r\n acc: any,\r\n cur: { id: number; displayName: string },\r\n i: number\r\n ) {\r\n acc[cur.id] = cur.displayName;\r\n\r\n return acc;\r\n },\r\n {});\r\n\r\n return [\r\n {\r\n field: 'fromStatusId',\r\n title: this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_ACTION_TRANS_STATUS_FROM_STATUS_HEADER',\r\n 'Din status'\r\n ),\r\n searchable: true,\r\n lookup: lookup,\r\n render: (rowData: WorkflowFormAction) => {\r\n return rowData.fromStatus!.displayName;\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.value)}\r\n >\r\n {this.state.statusTypeList.map((item) => (\r\n \r\n {item.displayName}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'toStatusId',\r\n title: this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_ACTION_TRANS_STATUS_TO_STATUS_HEADER',\r\n 'In status'\r\n ),\r\n searchable: true,\r\n lookup: lookup,\r\n render: (rowData: WorkflowFormAction) => {\r\n return rowData.toStatus!.displayName;\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.value)}\r\n >\r\n {this.state.statusTypeList.map((item) => (\r\n \r\n {item.displayName}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'toWorkflowId',\r\n title: this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_ACTION_TRANS_STATUS_TO_WORKFLOW_HEADER',\r\n 'In workflow'\r\n ),\r\n // hidden: this.props.workflowFormCode !== FormCode.CASE_BACK_TO_SERVICE,\r\n searchable: true,\r\n lookup: lookup,\r\n render: (rowData: WorkflowFormAction) => {\r\n return rowData.toWorkflow?.displayName;\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.value)}\r\n >\r\n {this.state.workflows?.map((item) => (\r\n \r\n {item.displayName}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_ACTION_TRANS_STATUS_MODIFIED_DATE_HEADER',\r\n 'Data modificare'\r\n ),\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .toDate()\r\n .toLocaleString(this.props.appState.language);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column\r\n ];\r\n };\r\n\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n deleteTooltip: this.translatorService.Tranlate('DELETE', 'Sterge'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza'),\r\n deleteText: this.translatorService.Tranlate(\r\n 'DELETE_TEXT',\r\n 'Sigur doriti sa stergeti aceasta inregistrare?'\r\n )\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n\r\n // onRowUpdate = (newData: OrganizationFormTransactionStatus, oldData?: OrganizationFormTransactionStatus): Promise =>\r\n // new Promise(async (resolve, reject) => {\r\n // debugger\r\n // if (oldData) {\r\n\r\n // try {\r\n // debugger\r\n // newData.fromStatus = null;\r\n // newData.toStatus = null;\r\n // await this.organizationService.UpdateOrganizationFormC(newData);\r\n // await this.loadData();\r\n\r\n // this.props.enqueueSnackbar(this.translatorService.Tranlate(\"SUCCES_MSG\", \"OK\"), { variant: 'success' });\r\n // resolve();\r\n\r\n // } catch (error) {\r\n // this.props.enqueueSnackbar(this.translatorService.Tranlate(\"ERROR_MSG\", \"Eroare\"), { variant: 'error' });\r\n // reject();\r\n // };\r\n\r\n // }\r\n\r\n // });\r\n\r\n onRowDelete = (oldData: OrganizationFormAction): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n await this.workflowService.RemoveWorkflowSectionStepFormAction(oldData.id);\r\n await this.loadData();\r\n\r\n // const orgFormtransitionStatusList = [...this.state.transitionStatus];\r\n // const index = orgFormtransitionStatusList.findIndex(item => item.id === oldData.id);\r\n // orgFormtransitionStatusList.splice(index,1);\r\n // this.setState({transitionStatus: orgFormtransitionStatusList});\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n onRowAdd = (newData: WorkflowFormAction): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n try {\r\n if (isNullOrUndefined(newData.fromStatusId) || isNullOrUndefined(newData.toStatusId)) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_MSG_MANDATORY_FIELDS',\r\n 'Campurile sunt obligatorii'\r\n ),\r\n { variant: 'error' }\r\n );\r\n reject();\r\n return;\r\n }\r\n\r\n if (\r\n this.state.transitionStatus.findIndex(\r\n (item) =>\r\n item.fromStatusId === newData.fromStatusId && item.toStatusId === newData.toStatusId\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_MSG_FORM_ACTION_TRANS_STATUS_EXISTS',\r\n 'Tranzitia de stare exista deja!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n reject();\r\n return;\r\n }\r\n\r\n newData.workflowSectionStepFormId = this.props.workflowFormId;\r\n newData.actionTypeId = this.state.tranStatusActionType!.id;\r\n // newData.workflowPartnerId = null;\r\n // newData.emailRecipientTypeId = null;\r\n // newData.emailTemplateId = null;\r\n // newData.sendMailActionTypeId = null;\r\n // newData.sendMailStatusId= null;\r\n\r\n await this.workflowService.AddWorkflowSectionStepFormAction(newData);\r\n await this.loadData();\r\n // const orgFormtransitionStatusList = [...this.state.transitionStatus];\r\n // orgFormtransitionStatusList.push({\r\n // id: this.state.transitionStatus.length,\r\n // // formId: this.props.organizationFormId,\r\n // actionTypeId: 1,\r\n // fromStatusId: newData.fromStatusId,\r\n // fromStatus: this.state.statusTypeList.find(item=>item.id === newData.fromStatusId)!,\r\n // toStatusId: newData.toStatusId,\r\n // toStatus: this.state.statusTypeList.find(item=>item.id === newData.toStatusId)!,\r\n // isLastUser: null,\r\n // // organizationId:null,\r\n // // organization: null,\r\n // userId:null,\r\n // user: null,\r\n // // stateId: null,\r\n // // state: null,\r\n // //sendEmailActionId: null,\r\n // // sendEmailAction: null,\r\n // //sendEmailToId: null,\r\n // //sendEmailTo: null,\r\n // emailTemplate:null,\r\n // emailTemplateId:null\r\n\r\n // } );\r\n //this.setState({transitionStatus: orgFormtransitionStatusList});\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n return (\r\n this.onRowAdd(newData),\r\n // onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData),\r\n onRowDelete: (oldData: any) => this.onRowDelete(oldData)\r\n }}\r\n />\r\n );\r\n };\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalWorkflowFormActionTransStatusProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(WorkflowFormActionTransStatus as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Box,\r\n Card,\r\n CardContent,\r\n Tabs,\r\n Tab,\r\n Checkbox,\r\n FormControlLabel,\r\n Divider,\r\n Button,\r\n TextField,\r\n Grid\r\n} from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../../context/Contexts';\r\nimport { AppUser } from '../../../../interfaces/AppUser';\r\nimport { IOrganizationService } from '../../../../services/Interfaces/IOrganizationService';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport Referentials from '../../../../helpers/Referentials.json';\r\nimport { ReferentialCode, WorkflowFormActionTypeCode } from '../../../../helpers/Constants';\r\nimport { IReferentialService } from '../../../../services/Interfaces/IReferentialService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { IAppUserService } from '../../../../services/Interfaces/IAppUserService';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete, { createFilterOptions } from '@material-ui/lab/Autocomplete';\r\nimport {\r\n Workflow,\r\n WorkflowFormAction,\r\n WorkflowPartner,\r\n WorkflowPartnerType\r\n} from '../../../../interfaces/Workflow';\r\nimport { IWorkflowService } from '../../../../services/Interfaces/IWorkflowService';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { IReferential } from '../../../../interfaces/IReferential';\r\n\r\ninterface IWorkflowFormActionCaseAllocationState {\r\n actionAllocationCase: WorkflowFormAction;\r\n isLoading: boolean;\r\n partnerList: WorkflowPartner[];\r\n //selectedPartner: WorkflowPartner | null\r\n userList: AppUser[];\r\n //selectedUser: AppUser | null\r\n //isLastUser: boolean\r\n disabledControls: boolean[];\r\n tranStatusActionType: IReferential | null;\r\n caseStatusList: IReferential[];\r\n workFlowPartnerTypes: WorkflowPartnerType[];\r\n roles: IReferential[];\r\n proprietaryWorkflow: Workflow | null;\r\n}\r\nexport interface ExternalWorkflowFormActionCaseAllocationProps {\r\n workflowFormId: number;\r\n}\r\n\r\ntype OrganizationFormActionCaseAllocationProps = ExternalWorkflowFormActionCaseAllocationProps & {\r\n appState: AppState;\r\n} & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass EditOrganizationFormActionCaseAllocation extends React.PureComponent<\r\n OrganizationFormActionCaseAllocationProps,\r\n IWorkflowFormActionCaseAllocationState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appUserService!: IAppUserService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n actionAllocationCase: {\r\n id: 0,\r\n isLastUser: false,\r\n workflowPartner: null,\r\n workflowPartnerType: null,\r\n caseStatus: null,\r\n user: null,\r\n userRole: null,\r\n userRoleId: null\r\n } as WorkflowFormAction,\r\n isLoading: false,\r\n partnerList: [],\r\n selectedPartner: null,\r\n userList: [],\r\n workFlowPartnerTypes: [],\r\n caseStatusList: [],\r\n disabledControls: [false, false, false, false, false],\r\n tranStatusActionType: null,\r\n roles: [],\r\n proprietaryWorkflow: null\r\n } as IWorkflowFormActionCaseAllocationState;\r\n\r\n componentDidMount = () => {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n };\r\n\r\n loadData = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n try {\r\n const refCaseStatus = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CaseStatus\r\n );\r\n const refActionTypes = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.ActionType\r\n );\r\n const refOrgType = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OrganizationType\r\n );\r\n const refRoles = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.UserRole\r\n );\r\n\r\n const [\r\n data,\r\n actionTypes,\r\n workflowPartnerList,\r\n userList,\r\n orgTypes,\r\n workflowPartnerTypes,\r\n caseStatusList,\r\n roles,\r\n currentWorkFlow\r\n ] = await Promise.all([\r\n this.workflowService.GetWorkflowSectionStepFormActions(this.props.workflowFormId),\r\n this.appReferentialService.Get(refActionTypes!.baseUrl),\r\n this.workflowService.GetWorkflowPartners(workflowId),\r\n this.appUserService.GetAppUsers(),\r\n this.appReferentialService.Get(refOrgType!.baseUrl),\r\n this.workflowService.GetWorkflowOrganizationTypes(workflowId),\r\n this.appReferentialService.Get(refCaseStatus!.baseUrl),\r\n this.appReferentialService.Get(refRoles!.baseUrl),\r\n this.workflowService.GetWorkflow(workflowId)\r\n ]);\r\n const tranStatusActionType = actionTypes.find(\r\n (item) => item.code === WorkflowFormActionTypeCode.CASE_ALLOCATION\r\n );\r\n\r\n let allocationCase = data.find((item) => item.actionTypeId === tranStatusActionType!.id);\r\n\r\n const partners = await this.organizationService.GetOrganizationsByIds(\r\n workflowPartnerList.map((item) => item.partnerId)\r\n );\r\n\r\n workflowPartnerList.forEach((wpItem) => {\r\n const partner = partners.find((item) => item.id === wpItem.partnerId);\r\n wpItem.partner = isNullOrUndefined(partner) ? null : partner;\r\n\r\n const currentUserWorkflowPartner = workflowPartnerList.find(\r\n (x) => x.partnerId === this.props.appState.appUser?.organizationId\r\n );\r\n\r\n if (!isNullOrUndefined(allocationCase) && allocationCase.workflowPartnerId === wpItem.id) {\r\n allocationCase!.workflowPartner = currentUserWorkflowPartner || wpItem;\r\n }\r\n });\r\n\r\n workflowPartnerTypes.forEach((wpTypeItem) => {\r\n const orgType = orgTypes.find((item) => item.id === wpTypeItem.organizationTypeId);\r\n wpTypeItem.organizationType = isNullOrUndefined(orgType) ? null : orgType;\r\n\r\n if (\r\n !isNullOrUndefined(allocationCase) &&\r\n allocationCase.workflowPartnerTypeId === wpTypeItem.id\r\n ) {\r\n allocationCase!.workflowPartnerType = wpTypeItem;\r\n }\r\n });\r\n\r\n if (!isNullOrUndefined(allocationCase) && !isNullOrUndefined(allocationCase.userId)) {\r\n const user = userList.users.find((item) => item.id === allocationCase!.userId);\r\n allocationCase!.user = isNullOrUndefined(user) ? null : user;\r\n }\r\n if (!isNullOrUndefined(allocationCase) && !isNullOrUndefined(allocationCase.caseStatusId)) {\r\n const cs = caseStatusList.find((item) => item.id === allocationCase!.caseStatusId);\r\n allocationCase!.caseStatus = isNullOrUndefined(cs) ? null : cs;\r\n }\r\n if (!isNullOrUndefined(allocationCase) && !isNullOrUndefined(allocationCase.userRoleId)) {\r\n const ur = roles.find((item) => item.id === allocationCase!.userRoleId);\r\n allocationCase!.userRole = isNullOrUndefined(ur) ? null : ur;\r\n }\r\n\r\n if (isNullOrUndefined(allocationCase)) {\r\n allocationCase = this.state.actionAllocationCase;\r\n }\r\n\r\n if (isNullOrUndefined(allocationCase!.user)) {\r\n allocationCase!.user = null;\r\n }\r\n\r\n this.setState({\r\n actionAllocationCase: allocationCase,\r\n isLoading: false,\r\n caseStatusList: caseStatusList,\r\n partnerList: workflowPartnerList,\r\n userList: userList.users,\r\n roles: roles.filter((item) => item.isActive),\r\n tranStatusActionType: isNullOrUndefined(tranStatusActionType) ? null : tranStatusActionType,\r\n workFlowPartnerTypes: workflowPartnerTypes,\r\n disabledControls:\r\n allocationCase === undefined ||\r\n (!allocationCase.isLastUser &&\r\n isNullOrUndefined(allocationCase.workflowPartnerId) &&\r\n isNullOrUndefined(allocationCase.workflowPartnerTypeId) &&\r\n isNullOrUndefined(allocationCase.user))\r\n ? [false, false, false, false, false]\r\n : [\r\n false,\r\n !isNullOrUndefined(allocationCase.workflowPartnerId) &&\r\n !(\r\n allocationCase.sendEmailSameOrganization ||\r\n allocationCase.sendEmailProprietaryOrganization\r\n )\r\n ? false\r\n : true,\r\n !isNullOrUndefined(allocationCase.user) ? false : true,\r\n !isNullOrUndefined(allocationCase.workflowPartnerType) ? false : true,\r\n !(\r\n allocationCase.sendEmailSameOrganization ||\r\n allocationCase.sendEmailProprietaryOrganization\r\n )\r\n ? false\r\n : true\r\n ],\r\n proprietaryWorkflow: currentWorkFlow\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n addOrgFormActionAllocationCase = async () => {\r\n try {\r\n const actionAllocationCase = { ...this.state.actionAllocationCase };\r\n\r\n if (actionAllocationCase.id !== 0) {\r\n //update\r\n actionAllocationCase.workflowPartner = null;\r\n actionAllocationCase.workflowPartnerType = null;\r\n actionAllocationCase.user = null;\r\n actionAllocationCase.caseStatus = null;\r\n actionAllocationCase.userRole = null;\r\n\r\n await this.workflowService.UpdateWorkflowSectionStepAction(actionAllocationCase);\r\n } else {\r\n //add\r\n actionAllocationCase.id = 0;\r\n actionAllocationCase.workflowSectionStepFormId = this.props.workflowFormId;\r\n actionAllocationCase.actionTypeId = this.state.tranStatusActionType!.id;\r\n actionAllocationCase.user = null;\r\n actionAllocationCase.userRole = null;\r\n actionAllocationCase.caseStatus = null;\r\n actionAllocationCase.workflowPartner = null;\r\n actionAllocationCase.workflowPartnerType = null;\r\n\r\n await this.workflowService.AddWorkflowSectionStepFormAction(actionAllocationCase);\r\n }\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n handleCheckBoxIsLastUserChange = async (checked: boolean) => {\r\n this.setState({\r\n actionAllocationCase: {\r\n ...this.state.actionAllocationCase,\r\n isLastUser: checked,\r\n sendEmailSameOrganization: false,\r\n sendEmailProprietaryOrganization: false,\r\n workflowPartner: checked === true ? null : this.state.actionAllocationCase.workflowPartner,\r\n workflowPartnerId:\r\n checked === true ? null : this.state.actionAllocationCase.workflowPartnerId\r\n },\r\n disabledControls:\r\n checked === true ? [false, true, true, true, true] : [false, false, false, false, false]\r\n });\r\n };\r\n\r\n handleCheckBoxSameOrganization = async (checked: boolean) => {\r\n let currenctUserWorkflowPartner = null;\r\n if (checked) {\r\n currenctUserWorkflowPartner = this.state.partnerList.find(\r\n (x) => x.partnerId === this.props.appState.appUser?.organizationId\r\n );\r\n }\r\n\r\n this.setState({\r\n actionAllocationCase: {\r\n ...this.state.actionAllocationCase,\r\n sendEmailSameOrganization: checked,\r\n sendEmailProprietaryOrganization: false,\r\n isLastUser: false,\r\n workflowPartner: currenctUserWorkflowPartner || null,\r\n workflowPartnerId: currenctUserWorkflowPartner?.id || null\r\n },\r\n disabledControls:\r\n checked === true ? [false, true, true, true, true] : [false, false, false, false, false]\r\n });\r\n };\r\n\r\n handleCheckBoxProprietaryOrganization = async (checked: boolean) => {\r\n let currenctUserWorkflowPartner = null;\r\n if (checked) {\r\n currenctUserWorkflowPartner = this.state.partnerList.find(\r\n (x) => x.partnerId === this.state.proprietaryWorkflow?.organizationOwnerId\r\n );\r\n }\r\n\r\n this.setState({\r\n actionAllocationCase: {\r\n ...this.state.actionAllocationCase,\r\n sendEmailProprietaryOrganization: checked,\r\n sendEmailSameOrganization: false,\r\n isLastUser: false,\r\n workflowPartner: currenctUserWorkflowPartner || null,\r\n workflowPartnerId: currenctUserWorkflowPartner?.id || null\r\n },\r\n disabledControls:\r\n checked === true ? [false, true, true, true, true] : [false, false, false, false, false]\r\n });\r\n };\r\n\r\n handleAutocompleteOrgChange = async (newValue: any | null) => {\r\n this.setState({\r\n actionAllocationCase: {\r\n ...this.state.actionAllocationCase,\r\n workflowPartner: newValue,\r\n workflowPartnerId: newValue === null ? null : newValue.id,\r\n userRole: newValue === null ? null : this.state.actionAllocationCase.userRole,\r\n userRoleId: newValue === null ? null : this.state.actionAllocationCase.userRoleId\r\n },\r\n disabledControls:\r\n newValue !== null ? [true, false, true, true, true] : [false, false, false, false, false]\r\n });\r\n };\r\n\r\n handleAutocompleteRoleChange = async (newValue: any | null) => {\r\n this.setState({\r\n actionAllocationCase: {\r\n ...this.state.actionAllocationCase,\r\n userRole: newValue,\r\n userRoleId: newValue === null ? null : newValue.id\r\n } //,\r\n //disabledControls: newValue !== null ? [true, false, true, true, true] : [false, false, false, false, false]\r\n });\r\n };\r\n\r\n handleAutocompleteOrgTypeChange = async (newValue: any | null) => {\r\n this.setState({\r\n actionAllocationCase: {\r\n ...this.state.actionAllocationCase,\r\n workflowPartnerType: newValue,\r\n workflowPartnerTypeId: newValue === null ? null : newValue.id\r\n },\r\n disabledControls:\r\n newValue !== null ? [true, true, true, false, true] : [false, false, false, false]\r\n });\r\n };\r\n\r\n handleAutocompleteCaseStatusChange = async (newValue: any | null) => {\r\n this.setState({\r\n actionAllocationCase: {\r\n ...this.state.actionAllocationCase,\r\n caseStatus: newValue,\r\n caseStatusId: newValue === null ? null : newValue.id\r\n },\r\n disabledControls:\r\n newValue !== null ? [true, true, true, true, false] : [false, false, false, false, false]\r\n });\r\n };\r\n\r\n handleAutocompleteUserChange = async (newValue: AppUser | null) => {\r\n this.setState({\r\n actionAllocationCase: {\r\n ...this.state.actionAllocationCase,\r\n user: newValue,\r\n userId: newValue === null ? null : newValue.id,\r\n userHoId: newValue === null ? null : newValue.hoId,\r\n userOrganizationId: newValue === null ? null : newValue.organizationId\r\n },\r\n disabledControls:\r\n newValue !== null ? [true, true, false, true, true] : [false, false, false, false, false]\r\n });\r\n };\r\n renderForm = () => {\r\n return (\r\n \r\n this.handleCheckBoxIsLastUserChange(e.target.checked)}\r\n disabled={this.state.disabledControls[0]}\r\n >\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_ACTION_ALLOCATION_CASE_IS_LAST_USER_LABEL',\r\n 'Utilizatorul precedent'\r\n )}\r\n />\r\n this.handleCheckBoxSameOrganization(e.target.checked)}\r\n >\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_ACTION_ALLOCATION_CASE_IS_LAST_USER_LABEL2',\r\n 'Aceeasi organizatie'\r\n )}\r\n />\r\n this.handleCheckBoxProprietaryOrganization(e.target.checked)}\r\n >\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_ACTION_ALLOCATION_CASE_IS_LAST_USER_LABEL3',\r\n 'Organizatia proprietara flux'\r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n this.handleAutocompleteOrgChange(newValue)\r\n }\r\n getOptionLabel={(option: WorkflowPartner) => option.partner!.displayName}\r\n filterOptions={createFilterOptions({\r\n matchFrom: 'any',\r\n stringify: (option: WorkflowPartner) => option.partner!.displayName\r\n })}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n this.handleAutocompleteRoleChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n\r\n \r\n\r\n \r\n this.handleAutocompleteUserChange(newValue)\r\n }\r\n getOptionLabel={(option: AppUser) => option.userName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n this.handleAutocompleteOrgTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: WorkflowPartnerType) => option.organizationType!.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n \r\n this.handleAutocompleteCaseStatusChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderForm() : null}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalWorkflowFormActionCaseAllocationProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(EditOrganizationFormActionCaseAllocation as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Organization } from '../../../../interfaces/Organization';\r\nimport { ITranslatorService } from '../../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../../context/Contexts';\r\nimport {\r\n Box,\r\n Button,\r\n IconButton,\r\n Card,\r\n CardContent,\r\n Tabs,\r\n Tab,\r\n Dialog,\r\n DialogTitle,\r\n Typography,\r\n Grid,\r\n DialogContent,\r\n DialogActions,\r\n TextField,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n ListSubheader,\r\n ListItemSecondaryAction,\r\n FormControlLabel,\r\n Switch\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IReferential } from '../../../../interfaces/IReferential';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../../helpers/Referentials.json';\r\nimport { ReferentialCode, WorkflowFormActionTypeCode } from '../../../../helpers/Constants';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { IWorkflowService } from '../../../../services/Interfaces/IWorkflowService';\r\nimport { WorkflowFormAction, EmailTemplate } from '../../../../interfaces/Workflow';\r\nimport { isNullOrUndefined } from 'util';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { Editor } from 'react-draft-wysiwyg';\r\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\r\nimport { convertToRaw, EditorState, ContentState, convertFromHTML } from 'draft-js';\r\nimport draftToHtml from 'draftjs-to-html';\r\nimport htmlToDraft from 'html-to-draftjs';\r\nimport SubjectIco from '@material-ui/icons/Subject';\r\nimport { mailPlaceHolders } from '../../mailPlaceHolders';\r\nimport { toBase64 } from '../../../../utils/toBase64';\r\n\r\ninterface IWorkflowFormActionSendEmailState {\r\n sendEmailList: WorkflowFormAction[];\r\n isLoading: boolean;\r\n emailTemplate: EmailTemplate | null;\r\n emailTemplates: EmailTemplate[];\r\n stateList: IReferential[];\r\n sendEmailActionList: IReferential[];\r\n sendEmailToList: IReferential[];\r\n selectedState: IReferential[];\r\n selectedSendEmailAction: IReferential[];\r\n selectedSendEmailTo: IReferential[];\r\n selectedTemplate: boolean;\r\n actionType: IReferential | null;\r\n isDialogEmailTemplateOpen: boolean;\r\n actionId: number;\r\n selectedEmailBodyTemplate: EditorState;\r\n selectedEmailSubjectTemplate: string;\r\n}\r\nexport interface ExternalWorkflowFormActionSendEmailProps {\r\n workflowFormId: number;\r\n}\r\n\r\ntype WorkflowFormActionSendEmailProps = ExternalWorkflowFormActionSendEmailProps & {\r\n appState: AppState;\r\n} & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass EditWorkflowFormActionSendEmail extends React.PureComponent<\r\n WorkflowFormActionSendEmailProps,\r\n IWorkflowFormActionSendEmailState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n sendEmailList: [],\r\n emailTemplate: null,\r\n emailTemplates: [] as EmailTemplate[],\r\n isLoading: false,\r\n stateList: [],\r\n sendEmailActionList: [],\r\n sendEmailToList: [],\r\n selectedState: [],\r\n selectedSendEmailAction: [],\r\n selectedSendEmailTo: [],\r\n selectedTemplate: false,\r\n actionType: null,\r\n isDialogEmailTemplateOpen: false,\r\n actionId: 0,\r\n selectedEmailBodyTemplate: EditorState.createEmpty(),\r\n selectedEmailSubjectTemplate: ''\r\n } as IWorkflowFormActionSendEmailState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizationFormActionsSendEmail();\r\n }\r\n );\r\n }\r\n\r\n loadOrganizationFormActionsSendEmail = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n try {\r\n const caseStateRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CaseStatus\r\n );\r\n const recipientTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.EmailRecipientType\r\n );\r\n const actionTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.ActionType\r\n );\r\n\r\n const [data, caseStatusList, recipientTypeList, emailTemplateList, actionTypeList] =\r\n await Promise.all([\r\n this.workflowService.GetWorkflowSectionStepFormActions(this.props.workflowFormId),\r\n this.appReferentialService.Get(caseStateRef!.baseUrl),\r\n this.appReferentialService.Get(recipientTypeRef!.baseUrl),\r\n this.workflowService.GetEmailTemplates(),\r\n this.appReferentialService.Get(actionTypeRef!.baseUrl)\r\n ]);\r\n\r\n const tranStatusActionType = actionTypeList.find(\r\n (item) => item.code === WorkflowFormActionTypeCode.SEND_MAIL\r\n );\r\n const data1 = data.filter((item) => item.actionTypeId === tranStatusActionType!.id);\r\n\r\n data1.forEach((element) => {\r\n const cs = caseStatusList.find((item) => item.id === element.sendMailStatusId);\r\n\r\n element.sendMailStatus = isNullOrUndefined(cs) ? null : cs;\r\n });\r\n\r\n this.setState({\r\n sendEmailList: data1,\r\n isLoading: false,\r\n stateList: caseStatusList.filter((item) => item.isActive),\r\n sendEmailActionList: actionTypeList.filter((item) => item.isActive),\r\n sendEmailToList: recipientTypeList.filter((item) => item.isActive),\r\n actionType: isNullOrUndefined(tranStatusActionType) ? null : tranStatusActionType,\r\n emailTemplates: emailTemplateList.filter((item) => item.isActive),\r\n selectedSendEmailAction: isNullOrUndefined(tranStatusActionType)\r\n ? []\r\n : [tranStatusActionType]\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n deleteOrgFormReport = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n await this.workflowService.RemoveWorkflowSectionStepFormAction(id);\r\n const sendEmailList = [...this.state.sendEmailList];\r\n const index = sendEmailList.findIndex((item) => item.id === id);\r\n sendEmailList.splice(index, 1);\r\n this.setState({\r\n sendEmailList: sendEmailList\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n onEmailTemplateClick = (\r\n e: any,\r\n id: number,\r\n bodyEmailTemplate: string,\r\n subjectEmailTemplate: string\r\n ) => {\r\n const blocksFromHTML = htmlToDraft(bodyEmailTemplate);\r\n const contentState = ContentState.createFromBlockArray(\r\n blocksFromHTML.contentBlocks,\r\n blocksFromHTML.entityMap\r\n );\r\n\r\n this.setState({\r\n isDialogEmailTemplateOpen: true,\r\n actionId: id,\r\n selectedEmailBodyTemplate: EditorState.createWithContent(contentState),\r\n selectedEmailSubjectTemplate: subjectEmailTemplate\r\n });\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: {\r\n display: 'excluded',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'sendMailStatus',\r\n label: this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_ACTION_SEND_EMAIL_STATE_HEADER',\r\n 'Stare'\r\n ),\r\n options: {\r\n filter: true,\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'sendMailActionType',\r\n\r\n label: this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_ACTION_SEND_EMAIL_ACTION_HEADER',\r\n 'Actiune'\r\n ),\r\n options: {\r\n display: 'excluded',\r\n filter: true,\r\n sort: false,\r\n customBodyRender: (value: Organization, tableMeta: MUIDataTableMeta) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'emailTemplate',\r\n label: this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_ACTION_EMAIL_STATE_HEADER',\r\n 'Email'\r\n ),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const body = tableMeta.rowData[7];\r\n const subject = tableMeta.rowData[8];\r\n\r\n return (\r\n this.onEmailTemplateClick(e, id, body, subject)}\r\n >\r\n {value.displayName}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'emailRecipientType',\r\n label: this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_ACTION_SEND_EMAIL_TO_HEADER',\r\n 'Catre'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().toDate().toLocaleString(this.props.appState.language)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'reuseEmailTemplate',\r\n label: 'Template',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: boolean) => (value ? 'Da' : 'Nu')\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'body',\r\n options: {\r\n display: 'excluded',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'subject',\r\n options: {\r\n display: 'excluded',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deleteOrgFormReport(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addOrgFormActionSendEmail = async () => {\r\n try {\r\n if (\r\n this.state.sendEmailList.findIndex(\r\n (item) =>\r\n item.emailTemplateId === this.state.emailTemplate!.id &&\r\n this.state.selectedSendEmailTo.findIndex(\r\n (itemm) => itemm.id === item.emailRecipientTypeId\r\n ) !== -1 &&\r\n this.state.selectedSendEmailAction.findIndex(\r\n (itemm) => itemm.id === item.sendMailActionTypeId\r\n ) !== -1 &&\r\n this.state.selectedState.findIndex((itemm) => itemm.id === item.sendMailStatusId) !== -1\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_MSG_WORKFLOW_FORM_ACTION_SEND_EMAIL_EXISTS',\r\n 'Posibilitatea trimiterii acestui e-mail exista deja!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n const orgFormActionSendEmail = [] as WorkflowFormAction[];\r\n let contor = 0;\r\n for (const stateList of this.state.selectedState) {\r\n for (const actionList of this.state.selectedSendEmailAction) {\r\n for (const to of this.state.selectedSendEmailTo) {\r\n orgFormActionSendEmail.push({\r\n id: 0,\r\n workflowSectionStepFormId: this.props.workflowFormId,\r\n actionTypeId: this.state.actionType!.id,\r\n fromStatusId: null,\r\n fromStatus: null,\r\n toStatusId: null,\r\n toStatus: null,\r\n toWorkflowId: null,\r\n toWorkflow: null,\r\n isLastUser: false,\r\n workflowPartnerId: null,\r\n workflowPartnerTypeId: null,\r\n workflowPartner: null,\r\n workflowPartnerType: null,\r\n userRoleId: null,\r\n userRole: null,\r\n userId: null,\r\n user: null,\r\n userHoId: null,\r\n userOrganizationId: null,\r\n sendMailStatusId: stateList.id,\r\n sendMailStatus: null,\r\n sendMailActionTypeId: actionList.id,\r\n sendMailActionType: null,\r\n emailRecipientTypeId: to.id,\r\n emailRecipientType: null,\r\n emailTemplate: null,\r\n emailTemplateId: this.state.emailTemplate!.id,\r\n subject: this.state.emailTemplate!.subject,\r\n body: this.state.emailTemplate!.body,\r\n actionType: null,\r\n caseStatus: null,\r\n caseStatusId: null,\r\n sendEmailSameOrganization: false,\r\n sendEmailProprietaryOrganization: false,\r\n reuseEmailTemplate: this.state.selectedTemplate\r\n });\r\n contor = contor + 1;\r\n }\r\n }\r\n }\r\n\r\n await this.workflowService.AddWorkflowSectionStepFormActions(orgFormActionSendEmail);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedState: [],\r\n selectedSendEmailAction: [],\r\n emailTemplate: null,\r\n selectedSendEmailTo: []\r\n },\r\n async () => await this.loadOrganizationFormActionsSendEmail()\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleStateChange = (newValue: IReferential[]) => {\r\n this.setState({ selectedState: newValue });\r\n };\r\n\r\n handleSendEmailActionChange = (newValue: IReferential[]) => {\r\n this.setState({ selectedSendEmailAction: newValue });\r\n };\r\n\r\n handleSendEmailToChange = (newValue: IReferential[]) => {\r\n this.setState({ selectedSendEmailTo: newValue });\r\n };\r\n\r\n handleEmailChange = (newValue: any) => {\r\n this.setState({ emailTemplate: newValue });\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n this.handleStateChange(newValue)}\r\n getOptionLabel={(option: { id: number; displayName: string }) =>\r\n option.displayName || ''\r\n }\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n closeDialog = () => {\r\n this.setState({ isDialogEmailTemplateOpen: false });\r\n };\r\n\r\n onEditorStateChange = (editorState: EditorState) => {\r\n this.setState({ selectedEmailBodyTemplate: editorState });\r\n };\r\n\r\n renderEditEmailTemplate = () => {\r\n return (\r\n this.onEditorStateChange(editorState)}\r\n toolbar={{\r\n options: [\r\n 'inline',\r\n 'blockType',\r\n 'fontSize',\r\n 'fontFamily',\r\n 'list',\r\n 'textAlign',\r\n 'colorPicker',\r\n 'link',\r\n 'emoji',\r\n 'history',\r\n 'image'\r\n ],\r\n image: {\r\n className: undefined,\r\n component: undefined,\r\n popupClassName: undefined,\r\n urlEnabled: false,\r\n uploadEnabled: true,\r\n alignmentEnabled: true,\r\n uploadCallback: async (file: File) => {\r\n const imageBase64String = await toBase64(file);\r\n return Promise.resolve({ data: { link: imageBase64String } });\r\n },\r\n previewImage: true,\r\n inputAccept: 'image/gif,image/jpeg,image/jpg,image/png,image/svg',\r\n alt: { present: false, mandatory: false },\r\n defaultSize: {\r\n height: '140',\r\n width: 'auto'\r\n }\r\n }\r\n }}\r\n />\r\n );\r\n };\r\n saveEmailTemplateChanges = async () => {\r\n const id = this.state.actionId;\r\n const sendEmailList = [...this.state.sendEmailList];\r\n const index = sendEmailList.findIndex((item) => item.id === id);\r\n if (index > -1) {\r\n sendEmailList[index] = {\r\n ...sendEmailList[index],\r\n body: draftToHtml(convertToRaw(this.state.selectedEmailBodyTemplate.getCurrentContent())),\r\n subject: this.state.selectedEmailSubjectTemplate\r\n };\r\n\r\n await this.workflowService.UpdateWorkflowSectionStepAction(sendEmailList[index]);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n isDialogEmailTemplateOpen: false\r\n },\r\n async () => await this.loadOrganizationFormActionsSendEmail()\r\n );\r\n }\r\n };\r\n\r\n addPlaceholderToSubject = (text: string) => {\r\n this.setState({\r\n selectedEmailSubjectTemplate: this.state.selectedEmailSubjectTemplate + '{{' + text + '}}'\r\n });\r\n };\r\n\r\n placeHolderClick = (text: string) => {\r\n const editorState = this.state.selectedEmailBodyTemplate;\r\n const newBlockMap = convertFromHTML('{{' + text + '}}');\r\n const contentState = editorState.getCurrentContent();\r\n const selectionState = editorState.getSelection();\r\n const key = selectionState.getAnchorKey();\r\n const blocksAfter = contentState\r\n .getBlockMap()\r\n .skipUntil(function (_, k) {\r\n return k === key;\r\n })\r\n .skip(1)\r\n .toArray();\r\n const blocksBefore = contentState\r\n .getBlockMap()\r\n .takeUntil(function (_, k) {\r\n return k === key;\r\n })\r\n .toArray();\r\n\r\n newBlockMap.contentBlocks = blocksBefore\r\n .concat([contentState.getBlockForKey(key)])\r\n .concat(newBlockMap.contentBlocks)\r\n .concat(blocksAfter);\r\n\r\n const newContentState = ContentState.createFromBlockArray(\r\n newBlockMap.contentBlocks,\r\n newBlockMap.entityMap\r\n );\r\n const newEditorState = EditorState.createWithContent(newContentState);\r\n this.setState({ selectedEmailBodyTemplate: newEditorState });\r\n };\r\n\r\n renderMailPlaceHolders = () => {\r\n return (\r\n Placeholders}>\r\n {mailPlaceHolders.map((val, index) => (\r\n \r\n this.placeHolderClick(val)} />\r\n \r\n this.addPlaceholderToSubject(val)}>\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: true,\r\n search: true,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n \r\n fullScreen\r\n >\r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_ACTION_SEND_EMAIL_EDIT_EMAIL_TEMPLATE_MODAL_TITLE',\r\n 'Editeaza template-ul email-ului'\r\n )}\r\n \r\n \r\n \r\n this.closeDialog()}\r\n size={'small'}\r\n style={{ color: '#ffffff' }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n this.setState({\r\n selectedEmailSubjectTemplate: e.target.value\r\n })\r\n }\r\n variant=\"outlined\"\r\n size=\"small\"\r\n />\r\n {this.renderEditEmailTemplate()}\r\n \r\n \r\n \r\n {this.renderMailPlaceHolders()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalWorkflowFormActionSendEmailProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n null,\r\n mergeProps\r\n)(withSnackbar(EditWorkflowFormActionSendEmail as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Grid, Button, Box } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../../../context/Contexts';\r\nimport { ITranslatorService } from '../../../../services/Interfaces/ITranslatorService';\r\nimport { IOrganizationService } from '../../../../services/Interfaces/IOrganizationService';\r\nimport EditWorkflowFormActionTransStatus from '../editWorkflowForm/EditWorkflowFormActionTransStatus';\r\nimport EditOrganizationFormActionCaseAllocation from '../editWorkflowForm/EditWorkflowFormActionCaseAllocation';\r\nimport EditOrganizationFormActionSendEmail from '../editWorkflowForm/EditWorkflowFormActionSendEmail';\r\nimport { RouteComponentProps } from 'react-router';\r\ninterface IOrganizationFormActionState {\r\n selectedTab: number;\r\n}\r\nexport interface ExternalOrganizationFormActionProps {\r\n workflowFormId: number;\r\n workflowFormCode: string | null;\r\n currentWorkflowId: number | null;\r\n}\r\n\r\ntype IOrganizationFormActionProps = ExternalOrganizationFormActionProps & {\r\n appState: AppState;\r\n} & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass EditOrganizationFormAction extends React.PureComponent<\r\n IOrganizationFormActionProps,\r\n IOrganizationFormActionState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n selectedTab: 0\r\n };\r\n\r\n onButtonClick = (newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.onButtonClick(0)}\r\n >\r\n \r\n {this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_ACTION_TRANSITION_STATUS_TAB',\r\n 'Transition status'\r\n )}\r\n \r\n \r\n \r\n \r\n this.onButtonClick(1)}\r\n >\r\n \r\n {this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_ACTION_CASE_ALLOCATION_TAB',\r\n 'Alocare dosar'\r\n )}\r\n \r\n \r\n \r\n \r\n this.onButtonClick(2)}\r\n >\r\n \r\n {this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_ACTION_SEND_EMAIL_TAB',\r\n 'Trimite e-mail'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.selectedTab === 0 ? (\r\n \r\n ) : null}\r\n {this.state.selectedTab === 1 ? (\r\n \r\n ) : null}\r\n {this.state.selectedTab === 2 ? (\r\n \r\n ) : null}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalOrganizationFormActionProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n null,\r\n mergeProps\r\n)(withSnackbar(EditOrganizationFormAction as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Box, TextField } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../../context/Contexts';\r\nimport { OrganizationInterface } from '../../../../interfaces/Organization';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { IReferentialService } from '../../../../services/Interfaces/IReferentialService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MaterialTable, { Column, EditComponentProps, Icons } from 'material-table';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { forwardRef } from 'react';\r\nimport { WorkflowFormInterface } from '../../../../interfaces/Workflow';\r\nimport { IWorkflowService } from '../../../../services/Interfaces/IWorkflowService';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ninterface IWorkflowFormInterfacesState {\r\n interfaces: WorkflowFormInterface[];\r\n isLoading: boolean;\r\n}\r\n\r\nexport interface ExternalWorkflowFormInterfaceProps {\r\n workflowFormId: number;\r\n}\r\n\r\ntype WorkflowFormInterfacesProps = { appState: AppState } & ExternalWorkflowFormInterfaceProps &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass WorkflowFormInterfaces extends React.PureComponent<\r\n WorkflowFormInterfacesProps,\r\n IWorkflowFormInterfacesState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n interfaces: [],\r\n isLoading: true,\r\n organizationId: 0\r\n } as IWorkflowFormInterfacesState;\r\n\r\n componentDidMount = () => {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadData();\r\n }\r\n );\r\n };\r\n\r\n loadData = async () => {\r\n try {\r\n const data = await this.workflowService.GetWorkflowFormInterfaces(this.props.workflowFormId);\r\n\r\n this.setState({\r\n interfaces: data,\r\n isLoading: false\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n return [\r\n {\r\n field: 'code',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_CODE_HEADER', 'Cod'),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'url',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_URL_HEADER', 'URL'),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'userName',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_UER_HEADER', 'Utilizator'),\r\n searchable: true\r\n },\r\n {\r\n field: 'password',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_PASSWORD_HEADER', 'Parola'),\r\n render: (rowData: any) => {\r\n return '***';\r\n },\r\n editComponent: (props) => (\r\n props.onChange(e.target.value)}\r\n />\r\n )\r\n } as Column,\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_INTERFACE_MODIFIED_DATE_HEADER',\r\n 'Data modificare'\r\n ),\r\n defaultSort: 'desc',\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .toDate()\r\n .toLocaleString(this.props.appState.language);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column\r\n ];\r\n };\r\n\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n deleteTooltip: this.translatorService.Tranlate('DELETE', 'Sterge'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza'),\r\n deleteText: this.translatorService.Tranlate(\r\n 'DELETE_TEXT',\r\n 'Sigur doriti sa stergeti aceasta inregistrare?'\r\n )\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n\r\n onRowUpdate = (newData: WorkflowFormInterface, oldData?: OrganizationInterface): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n await this.workflowService.UpdateWorkflowFormInterface(newData);\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n onRowDelete = (oldData: OrganizationInterface): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n await this.workflowService.RemoveWorkflowFormInterface(oldData.id);\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n onRowAdd = (newData: WorkflowFormInterface): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n try {\r\n newData.workflowSectionStepFormId = this.props.workflowFormId;\r\n\r\n await this.workflowService.AddWorkflowFormInterface(newData);\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n return (\r\n this.onRowAdd(newData),\r\n onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData),\r\n onRowDelete: (oldData: any) => this.onRowDelete(oldData)\r\n }}\r\n />\r\n );\r\n };\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalWorkflowFormInterfaceProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(WorkflowFormInterfaces as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { Box, Button, IconButton, Card, CardContent } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete, { createFilterOptions } from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { WorkflowOptimization, WorkflowPartner } from '../../../interfaces/Workflow';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\ninterface IWorkflowOptimizationState {\r\n workflowOptimization: WorkflowOptimization[];\r\n isLoading: boolean;\r\n statusList: IReferential[];\r\n selectedStatus: IReferential | null;\r\n optimizationTypeList: IReferential[];\r\n selectedOptimizationType: IReferential | null;\r\n selectedUserRole: IReferential | null;\r\n userRoles: IReferential[];\r\n workflowPartnerTypeList: WorkflowPartner[];\r\n selecteWorkflowPartnerType: WorkflowPartner | null;\r\n}\r\nexport interface ExternalOptimizationFormActionProps {\r\n workflowFormId: number;\r\n}\r\n\r\ntype IWorkflowOptimizationProps = ExternalOptimizationFormActionProps & {\r\n appState: AppState;\r\n} & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass WorkflowOptimizations extends React.PureComponent<\r\n IWorkflowOptimizationProps,\r\n IWorkflowOptimizationState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n workflowOptimization: [],\r\n isLoading: false,\r\n statusList: [],\r\n selectedStatus: null,\r\n optimizationTypeList: [],\r\n selectedOptimizationType: null,\r\n workflowPartnerTypeList: [],\r\n selecteWorkflowPartnerType: null,\r\n selectedUserRole: null,\r\n userRoles: [],\r\n workflowId: 0\r\n } as IWorkflowOptimizationState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadWorkflowOptimization();\r\n }\r\n );\r\n }\r\n\r\n loadWorkflowOptimization = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OptimizationType\r\n );\r\n const refStatus = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CaseStatus\r\n );\r\n const refRole = Referentials.referential.find((item) => item.code === ReferentialCode.UserRole);\r\n\r\n const [\r\n optimizationTypes,\r\n statusList,\r\n workflowOptimizationTypes,\r\n workflowPartnerList,\r\n userRoles\r\n ] = await Promise.all([\r\n this.appReferentialService.Get(ref!.baseUrl),\r\n this.appReferentialService.Get(refStatus!.baseUrl),\r\n this.workflowService.GetWorkflowOptimizations(this.props.workflowFormId),\r\n this.workflowService.GetWorkflowPartners(workflowId),\r\n this.appReferentialService.Get(refRole!.baseUrl)\r\n ]);\r\n\r\n const partners = await this.organizationService.GetOrganizationsByIds(\r\n workflowPartnerList.map((item) => item.partnerId)\r\n );\r\n workflowPartnerList.forEach((wpItem) => {\r\n const partner = partners.find((item) => item.id === wpItem.partnerId);\r\n wpItem.partner = isNullOrUndefined(partner) ? null : partner;\r\n });\r\n\r\n workflowOptimizationTypes.forEach((wo) => {\r\n const wp: any = workflowPartnerList.find((item) => item.id === wo.workflowPartnerId);\r\n const cs = statusList.find((item) => item.id === wo.caseStatusId);\r\n\r\n wo.workflowPartner = isNullOrUndefined(wp) ? null : wp;\r\n wo.caseStatus = isNullOrUndefined(cs) ? null : cs;\r\n });\r\n\r\n this.setState({\r\n workflowOptimization: workflowOptimizationTypes,\r\n statusList: statusList.filter((item) => item.isActive),\r\n optimizationTypeList: optimizationTypes.filter((item) => item.isActive === true),\r\n workflowPartnerTypeList: workflowPartnerList.filter((item) => item.isActive === true),\r\n userRoles: userRoles.filter((item) => item.isActive === true),\r\n isLoading: false\r\n });\r\n };\r\n\r\n // deleteWorkflowOrgType = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n\r\n // try {\r\n // const id = tableMeta.rowData[0];\r\n\r\n // // await this.workflowService.RemoveWorkflowOrganizationType(id);\r\n\r\n // // this.setState({\r\n // // isLoading: true\r\n // // }, () => {\r\n // // this.loadWorkflowOptimization();\r\n // // });\r\n\r\n // const workflowOrgTypes = [...this.state.workflowOrganizationTypes];\r\n // const index = workflowOrgTypes.findIndex(item => item.id === id);\r\n // workflowOrgTypes.splice(index, 1);\r\n\r\n // this.setState({\r\n // workflowOrganizationTypes: workflowOrgTypes,\r\n // });\r\n\r\n // this.props.enqueueSnackbar(this.translatorService.Tranlate(\"SUCCES_MSG\", \"OK\"), { variant: 'success' });\r\n // }\r\n // catch (error) {\r\n // this.props.enqueueSnackbar(this.translatorService.Tranlate(\"ERROR_MSG\", \"Eroare\"), { variant: 'error' });\r\n // }\r\n // }\r\n\r\n deleteWorkflowOptimization = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.workflowService.RemoveWorkflowOptimization(id);\r\n await this.loadWorkflowOptimization();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'optimizationType',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_OPTIMIZATION_TAB_OPTIMIZATION_TYPE_HEADER',\r\n 'Optimizare'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'workflowPartner',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_OPTIMIZATION_TAB_PARTNER_HEADER',\r\n 'Entitate Partener'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: WorkflowPartner) => {\r\n return value.partner!.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseStatus',\r\n label: this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_REPORT_STATUS_HEADER',\r\n 'Status'\r\n ),\r\n options: {\r\n filter: true,\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return value !== null ? value.displayName : '';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'userRole',\r\n label: this.translatorService.Tranlate('WORKFLOW_USER_ROLE_LABEL', 'Rol'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any) => {\r\n return value ? value.displayName : '';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_OPTIMIZATION_TAB_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deleteWorkflowOptimization(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addWorkflowOptimization = async () => {\r\n try {\r\n if (\r\n this.state.workflowOptimization.findIndex(\r\n (item) =>\r\n item.workflowPartnerId === this.state.selecteWorkflowPartnerType!.id &&\r\n ((this.state.selectedUserRole !== null &&\r\n item.userRoleId === this.state.selectedUserRole!.id) ||\r\n (this.state.selectedUserRole === null && item.userRoleId !== null) ||\r\n (this.state.selectedUserRole !== null && item.userRoleId === null) ||\r\n (this.state.selectedUserRole === null && item.userRoleId === null)) &&\r\n item.optimizationTypeId === this.state.selectedOptimizationType!.id &&\r\n item.caseStatusId === this.state.selectedStatus!.id\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_MSG_OPTIMIZATION_EXISTS',\r\n 'Optimizarea exista deja!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n await this.workflowService.AddWorkflowOptimization({\r\n id: 0,\r\n workflowPartnerId: this.state.selecteWorkflowPartnerType!.id,\r\n optimizationTypeId: this.state.selectedOptimizationType!.id,\r\n workflowSectionStepFormId: this.props.workflowFormId,\r\n userRoleId: this.state.selectedUserRole ? this.state.selectedUserRole.id : null,\r\n caseStatusId: this.state.selectedStatus!.id\r\n } as WorkflowOptimization);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedOptimizationType: null\r\n },\r\n () => {\r\n this.loadWorkflowOptimization();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleOptimizationTypeChange = (newValue: any | null) => {\r\n this.setState({ selectedOptimizationType: newValue });\r\n };\r\n handleUserRoleChange = (newValue: any | null) => {\r\n this.setState({ selectedUserRole: newValue });\r\n };\r\n handleWorkflowPartnerChange = (newValue: WorkflowPartner | null) => {\r\n this.setState({ selecteWorkflowPartnerType: newValue });\r\n };\r\n\r\n handleAutocompleteStatusChange = (newValue: any | null) => {\r\n this.setState({\r\n selectedStatus: newValue\r\n });\r\n };\r\n\r\n renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.handleWorkflowPartnerChange(newValue)\r\n }\r\n getOptionLabel={(option: WorkflowPartner) => option.partner!.displayName || ''}\r\n filterOptions={createFilterOptions({\r\n matchFrom: 'any',\r\n stringify: (option: WorkflowPartner) => option.partner!.displayName\r\n })}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n this.handleAutocompleteStatusChange(newValue)\r\n }\r\n getOptionLabel={(option: any) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n this.handleUserRoleChange(newValue)}\r\n getOptionLabel={(option: any) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleOptimizationTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: any) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n */}\r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalOptimizationFormActionProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n null,\r\n mergeProps\r\n)(withSnackbar(WorkflowOptimizations as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Box, Select, MenuItem } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { WorkflowDocumentType } from '../../../interfaces/Workflow';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MaterialTable, { Column, EditComponentProps, Icons } from 'material-table';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { forwardRef } from 'react';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport { isNullOrUndefined, isBoolean } from 'util';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\nexport interface ExternalorkflowDocumentTypesProps {\r\n workflowFormId: number;\r\n}\r\n\r\ninterface IWorkflowDocumentTypesState {\r\n workflowDocumentTypes: WorkflowDocumentType[];\r\n isLoading: boolean;\r\n workflowId: number;\r\n documentTypeList: IReferential[];\r\n booleanList: {\r\n id: number;\r\n displayName: string;\r\n }[];\r\n}\r\n\r\ntype WorkflowDocumentTypesProps = { appState: AppState } & ExternalorkflowDocumentTypesProps &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass WorkflowDocumentTypes extends React.PureComponent<\r\n WorkflowDocumentTypesProps,\r\n IWorkflowDocumentTypesState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n workflowDocumentTypes: [],\r\n isLoading: true,\r\n workflowId: 0,\r\n documentTypeList: [],\r\n booleanList: []\r\n } as IWorkflowDocumentTypesState;\r\n\r\n componentDidMount = () => {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadData();\r\n }\r\n );\r\n };\r\n\r\n loadData = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n if (isNaN(hoId) || isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n try {\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.AttachmentType\r\n );\r\n const [data, documentTypeList] = await Promise.all([\r\n this.workflowService.GetWorkflowDocumentTypes(this.props.workflowFormId),\r\n this.appReferentialService.Get(ref!.baseUrl)\r\n ]);\r\n\r\n const booleanList = [\r\n {\r\n id: 1,\r\n displayName: this.translatorService.Tranlate('WORKFLOW_DOCUMENTS_TYPE_TAB_YES', 'Da')\r\n },\r\n {\r\n id: 0,\r\n displayName: this.translatorService.Tranlate('WORKFLOW_DOCUMENTS_TYPE_TAB_NO', 'NU')\r\n }\r\n ];\r\n\r\n data.forEach((wdt) => {\r\n const dt = documentTypeList.find((item) => item.id === wdt.documentTypeId);\r\n wdt.documentType = isNullOrUndefined(dt) ? null : dt;\r\n });\r\n\r\n this.setState({\r\n workflowDocumentTypes: data,\r\n isLoading: false,\r\n workflowId: workflowId,\r\n documentTypeList: documentTypeList, //.filter(item => item.isActive === true),\r\n booleanList: booleanList\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const lookupDocumentTypes = this.state.documentTypeList.reduce(function (\r\n acc: any,\r\n cur: any,\r\n i: number\r\n ) {\r\n acc[cur.id] = cur.displayNAme;\r\n\r\n return acc;\r\n },\r\n {});\r\n const lookupBoolean = this.state.booleanList.reduce(function (acc: any, cur: any, i: number) {\r\n acc[cur.id] = cur.displayName;\r\n\r\n return acc;\r\n }, {});\r\n\r\n return [\r\n {\r\n field: 'documentTypeId',\r\n title: this.translatorService.Tranlate(\r\n 'WORKFLOW_DOCUMENTS_TYPE_TAB_DOCUMENT_TYPE_HEADER',\r\n 'Tip Document'\r\n ),\r\n lookup: lookupDocumentTypes,\r\n sorting: false,\r\n render: (rowData: WorkflowDocumentType) => {\r\n return rowData.documentType!.displayName;\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.value)}\r\n >\r\n {this.state.documentTypeList.map((item) => (\r\n \r\n {item.displayName}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'isMandatory',\r\n title: this.translatorService.Tranlate(\r\n 'WORKFLOW_DOCUMENTS_TYPE_TAB_MANDATORY_HEADER',\r\n 'Obligatoriu'\r\n ),\r\n lookup: lookupBoolean,\r\n sorting: false,\r\n render: (rowData: WorkflowDocumentType) => {\r\n return rowData.isMandatory\r\n ? this.state.booleanList[0].displayName\r\n : this.state.booleanList[1].displayName;\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n let value = 0;\r\n\r\n if (isBoolean(props.value)) {\r\n if (props.value) {\r\n value = this.state.booleanList[0].id;\r\n } else {\r\n value = this.state.booleanList[1].id;\r\n }\r\n } else {\r\n value = props.value;\r\n }\r\n\r\n return (\r\n props.onChange(e.target.value)}\r\n >\r\n {this.state.booleanList.map((item) => (\r\n \r\n {item.displayName}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'isMultiple',\r\n title: this.translatorService.Tranlate(\r\n 'WORKFLOW_DOCUMENTS_TYPE_TAB_MULTPLE_HEADER',\r\n 'Multiple'\r\n ),\r\n lookup: lookupBoolean,\r\n sorting: false,\r\n render: (rowData: WorkflowDocumentType) => {\r\n return rowData.isMultiple\r\n ? this.state.booleanList[0].displayName\r\n : this.state.booleanList[1].displayName;\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n let value = 0;\r\n\r\n if (isBoolean(props.value)) {\r\n if (props.value) {\r\n value = this.state.booleanList[0].id;\r\n } else {\r\n value = this.state.booleanList[1].id;\r\n }\r\n } else {\r\n value = props.value;\r\n }\r\n\r\n return (\r\n props.onChange(e.target.value)}\r\n >\r\n {this.state.booleanList.map((item) => (\r\n \r\n {item.displayName}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'isSelectionGroup',\r\n title: this.translatorService.Tranlate(\r\n 'WORKFLOW_DOCUMENTS_TYPE_TAB_SELECTION_HEADER',\r\n 'Selection'\r\n ),\r\n lookup: lookupBoolean,\r\n sorting: false,\r\n render: (rowData: WorkflowDocumentType) => {\r\n return rowData.isSelectionGroup\r\n ? this.state.booleanList[0].displayName\r\n : this.state.booleanList[1].displayName;\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n let value = 0;\r\n\r\n if (isBoolean(props.value)) {\r\n if (props.value) {\r\n value = this.state.booleanList[0].id;\r\n } else {\r\n value = this.state.booleanList[1].id;\r\n }\r\n } else {\r\n value = props.value;\r\n }\r\n\r\n return (\r\n props.onChange(e.target.value)}\r\n >\r\n {this.state.booleanList.map((item) => (\r\n \r\n {item.displayName}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate(\r\n 'WORKFLOW_DOCUMENTS_TYPE_TAB_MODIFIED_DATE_HEADER',\r\n 'Data modificare'\r\n ),\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .format(this.props.appState.longDateFormat);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column\r\n ];\r\n };\r\n\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n deleteTooltip: this.translatorService.Tranlate('DELETE', 'Sterge'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza'),\r\n deleteText: this.translatorService.Tranlate(\r\n 'DELETE_TEXT',\r\n 'Sigur doriti sa stergeti aceasta inregistrare?'\r\n )\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n\r\n onRowUpdate = (newData: WorkflowDocumentType, oldData?: WorkflowDocumentType): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n if (isNullOrUndefined(newData.documentTypeId) || isNullOrUndefined(newData.isMandatory)) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n return;\r\n }\r\n\r\n if (\r\n this.state.workflowDocumentTypes.findIndex(\r\n (item) => item.documentTypeId === newData.documentTypeId && item.id !== newData.id\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_MSG_DOCUMENT_TYPE_EXISTS',\r\n 'Tipul de document exista deja!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n reject();\r\n return;\r\n }\r\n\r\n await this.workflowService.UpdateWorkflowDocumentType(newData);\r\n await this.loadData();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n onRowDelete = (oldData: WorkflowDocumentType): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n await this.workflowService.RemoveWorkflowDocumentType(oldData.id);\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n onRowAdd = (newData: WorkflowDocumentType): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n try {\r\n if (isNullOrUndefined(newData.documentTypeId) || isNullOrUndefined(newData.isMandatory)) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n return;\r\n }\r\n\r\n if (\r\n this.state.workflowDocumentTypes.findIndex(\r\n (item) => item.documentTypeId === newData.documentTypeId\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_MSG_DOCUMENT_TYPE_EXISTS',\r\n 'Tipul de document exista deja!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n reject();\r\n return;\r\n }\r\n\r\n newData.workflowSectionStepFormId = this.props.workflowFormId;\r\n\r\n await this.workflowService.AddWorkflowDocumentType(newData);\r\n await this.loadData();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n return (\r\n this.onRowAdd(newData),\r\n onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData),\r\n onRowDelete: (oldData: any) => this.onRowDelete(oldData)\r\n }}\r\n />\r\n );\r\n };\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n */}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalorkflowDocumentTypesProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(WorkflowDocumentTypes as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport {\r\n Box,\r\n Button,\r\n Card,\r\n CardContent,\r\n Switch,\r\n FormControlLabel,\r\n Typography,\r\n IconButton,\r\n Grid,\r\n Divider\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete, { createFilterOptions } from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport { WorkflowPartner, WorkflowCalculation } from '../../../interfaces/Workflow';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { Input } from 'reactstrap';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { WrapperSimple } from '../../../layout-components';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\ninterface IWorkflowCalculationState {\r\n workflowCalculations: WorkflowCalculation[];\r\n isLoading: boolean;\r\n workflowPartnerTypeList: WorkflowPartner[];\r\n selecteWorkflowPartnerType: WorkflowPartner | null;\r\n caseStatusTypeList: IReferential[];\r\n selectedCaseStatusType: IReferential | null;\r\n isSelectedWorkflowCalculation: boolean;\r\n newWorkflowCalculation: WorkflowCalculation | null;\r\n selectedUserRole: IReferential | null;\r\n userRoles: IReferential[];\r\n}\r\n\r\nexport interface ExternalCalculationFormActionProps {\r\n workflowFormId: number;\r\n}\r\n\r\ntype IWorkflowCalculationProps = ExternalCalculationFormActionProps & {\r\n appState: AppState;\r\n} & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass WorkflowCalculations extends React.PureComponent<\r\n IWorkflowCalculationProps,\r\n IWorkflowCalculationState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n workflowCalculations: [],\r\n isLoading: false,\r\n workflowPartnerTypeList: [],\r\n selecteWorkflowPartnerType: null,\r\n caseStatusTypeList: [],\r\n selectedCaseStatusType: null,\r\n isSelectedWorkflowCalculation: false,\r\n newWorkflowCalculation: null,\r\n selectedUserRole: null,\r\n userRoles: []\r\n } as IWorkflowCalculationState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadWorkflowCalculations();\r\n }\r\n );\r\n }\r\n\r\n loadWorkflowCalculations = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n const ref = Referentials.referential.find((item) => item.code === ReferentialCode.CaseStatus);\r\n const refRole = Referentials.referential.find((item) => item.code === ReferentialCode.UserRole);\r\n\r\n const [workflowCalculations, workflowPartnerList, caseStatusTypes, userRoles] =\r\n await Promise.all([\r\n this.workflowService.GetWorkflowCalculations(this.props.workflowFormId),\r\n this.workflowService.GetWorkflowPartners(workflowId),\r\n this.appReferentialService.Get(ref!.baseUrl),\r\n this.appReferentialService.Get(refRole!.baseUrl)\r\n ]);\r\n\r\n const partners = await this.organizationService.GetOrganizationsByIds(\r\n workflowPartnerList.map((item) => item.partnerId)\r\n );\r\n workflowPartnerList.forEach((wpItem) => {\r\n const partner = partners.find((item) => item.id === wpItem.partnerId);\r\n wpItem.partner = isNullOrUndefined(partner) ? null : partner;\r\n });\r\n\r\n workflowCalculations.forEach((wcItem) => {\r\n const wc = workflowPartnerList.find((item) => item.id === wcItem.workflowPartnerId);\r\n const cs = caseStatusTypes.find((item) => item.id === wcItem.caseStatusId);\r\n\r\n wcItem.workflowPartner = isNullOrUndefined(wc) ? null : wc;\r\n wcItem.caseStatus = isNullOrUndefined(cs) ? null : cs;\r\n });\r\n\r\n this.setState({\r\n workflowCalculations: workflowCalculations,\r\n caseStatusTypeList: caseStatusTypes.filter((item) => item.isActive === true),\r\n workflowPartnerTypeList: workflowPartnerList.filter((item) => item.isActive === true),\r\n userRoles: userRoles.filter((item) => item.isActive === true),\r\n isLoading: false\r\n });\r\n };\r\n\r\n reloadWorkflowCalculation = async (organizationId: number | null) => {\r\n let workflowCalculations = await this.workflowService.GetWorkflowCalculations(\r\n this.props.workflowFormId\r\n );\r\n\r\n workflowCalculations.forEach((wcItem) => {\r\n const wc = this.state.workflowPartnerTypeList.find(\r\n (item) => item.id === wcItem.workflowPartnerId\r\n );\r\n const cs = this.state.caseStatusTypeList.find((item) => item.id === wcItem.caseStatusId);\r\n\r\n wcItem.workflowPartner = isNullOrUndefined(wc) ? null : wc;\r\n wcItem.caseStatus = isNullOrUndefined(cs) ? null : cs;\r\n });\r\n\r\n if (organizationId !== null) {\r\n workflowCalculations = [\r\n ...workflowCalculations.filter((item) => item.workflowPartnerId === organizationId)\r\n ];\r\n }\r\n this.setState({\r\n isLoading: false,\r\n workflowCalculations: workflowCalculations\r\n });\r\n };\r\n\r\n handleIsActiveChange = async (event: React.ChangeEvent, id: number) => {\r\n const workflowCalculations = [...this.state.workflowCalculations];\r\n const updatedWorkflowCalculationIndex = workflowCalculations.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowCalculationIndex >= 0) {\r\n workflowCalculations[updatedWorkflowCalculationIndex] = {\r\n ...workflowCalculations[updatedWorkflowCalculationIndex],\r\n [event.target.id]: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowCalculation(\r\n workflowCalculations[updatedWorkflowCalculationIndex]\r\n );\r\n\r\n this.setState({ workflowCalculations: workflowCalculations });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n onRowClick = (workflowCalculationId: number) => {\r\n const newWorkflowCalculation = {\r\n ...this.state.workflowCalculations.find((item) => item.id === workflowCalculationId)\r\n } as WorkflowCalculation;\r\n this.setState({\r\n newWorkflowCalculation: newWorkflowCalculation,\r\n isSelectedWorkflowCalculation: true\r\n });\r\n };\r\n\r\n filterCaseStatus = (workflowCalculations: any[]) => {\r\n //const caseStatusTypes = [{ id: 0, displayName: \"Initiat\" }, { id: 1, displayName: \"Deviz OE\" }, { id: 2, displayName: \"Inchis\" }];\r\n\r\n return this.state.caseStatusTypeList.filter(\r\n (item) => workflowCalculations.find((r) => r.caseStatusId === item.id) === undefined\r\n );\r\n };\r\n\r\n deleteCalculation = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const index = this.state.workflowCalculations.findIndex((i) => i.id === tableMeta.rowData[0]);\r\n const deletedCalculation = this.state.workflowCalculations[index];\r\n const newWorkflowCalculationsArray = [...this.state.workflowCalculations];\r\n newWorkflowCalculationsArray.splice(index, 1);\r\n\r\n await this.workflowService.RemoveWorkflowCalculation(deletedCalculation.id);\r\n\r\n this.setState({\r\n workflowCalculations: newWorkflowCalculationsArray\r\n // caseStatusTypeList: this.filterCaseStatus(newWorkflowCalculationsArray)\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'workflowPartner.partner.displayName',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_ORGANIZATION_HEADER',\r\n 'Organizatie'\r\n ),\r\n options: {\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.onRowClick(tableMeta.rowData[0])}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseStatus',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CASE_STATUS_HEADER',\r\n 'Status Dosar'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'userRole',\r\n label: this.translatorService.Tranlate('WORKFLOW_USER_ROLE_LABEL', 'Rol'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any) => {\r\n return value ? value.displayName : '';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n // {\r\n // name: 'originalCalculation',\r\n // label: this.translatorService.Tranlate(\"WORKFLOW_CALCULATION_TAB_ORIGINAL_CALCULATION_HEADER\", \"Calculatie Originala\"),\r\n // options: {\r\n // filter: false,\r\n // sort: false,\r\n // // filterOptions: {\r\n // // names: [this.translatorService.Tranlate(\"TABLE_IS_ACTIVE_COLUMN_ACTIVE\", \"Activ\"), this.translatorService.Tranlate(\"TABLE_IS_ACTIVE_COLUMN_INACTIVE\", \"Inactiv\")],\r\n // // logic(isActive: any, filterVal: string[]) {\r\n // // const show =\r\n // // (filterVal.indexOf(this.names[0]) !== -1 && isActive === true) ||\r\n // // (filterVal.indexOf(this.names[1]) !== -1 && isActive === false);\r\n // // return !show;\r\n // // },\r\n // // },\r\n // customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n // return (\r\n // this.handleIsActiveChange(e, tableMeta.rowData[0])}\r\n // color=\"primary\"\r\n // inputProps={{ 'aria-label': 'primary checkbox' }}\r\n // />)\r\n // }\r\n\r\n // }\r\n // },\r\n // {\r\n // name: 'alternativeCalculation',\r\n // label: this.translatorService.Tranlate(\"WORKFLOW_CALCULATION_TAB_ALTERNATIVE_CALCULATION_HEADER\", \"Calculatie Alternativa\"),\r\n // options: {\r\n // filter: false,\r\n // sort: false,\r\n // // filterOptions: {\r\n // // names: [this.translatorService.Tranlate(\"TABLE_IS_ACTIVE_COLUMN_ACTIVE\", \"Activ\"), this.translatorService.Tranlate(\"TABLE_IS_ACTIVE_COLUMN_INACTIVE\", \"Inactiv\")],\r\n // // logic(isActive: any, filterVal: string[]) {\r\n // // const show =\r\n // // (filterVal.indexOf(this.names[0]) !== -1 && isActive === true) ||\r\n // // (filterVal.indexOf(this.names[1]) !== -1 && isActive === false);\r\n // // return !show;\r\n // // },\r\n // // },\r\n // customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n // return (\r\n // this.handleIsActiveChange(e, tableMeta.rowData[0])}\r\n // color=\"primary\"\r\n // inputProps={{ 'aria-label': 'primary checkbox' }}\r\n // />)\r\n // }\r\n\r\n // }\r\n // },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deleteCalculation(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addWorkflowCalcType = async () => {\r\n try {\r\n if (\r\n this.state.workflowCalculations.findIndex(\r\n (item) =>\r\n item.workflowPartnerId === this.state.selecteWorkflowPartnerType!.id &&\r\n ((this.state.selectedUserRole !== null &&\r\n item.userRoleId === this.state.selectedUserRole!.id) ||\r\n (this.state.selectedUserRole === null && item.userRoleId !== null) ||\r\n (this.state.selectedUserRole !== null && item.userRoleId === null) ||\r\n (this.state.selectedUserRole === null && item.userRoleId === null)) &&\r\n item.caseStatusId === this.state.selectedCaseStatusType!.id\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_MSG_WORKFLOW_CALCULATION_EXISTS',\r\n 'Calculatia exista deja!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n await this.workflowService.AddWorkflowCalculation({\r\n id: 0,\r\n workflowSectionStepFormId: this.props.workflowFormId,\r\n workflowPartnerId: this.state.selecteWorkflowPartnerType\r\n ? this.state.selecteWorkflowPartnerType!.id\r\n : 0,\r\n caseStatusId: this.state.selectedCaseStatusType ? this.state.selectedCaseStatusType!.id : 0,\r\n userRoleId: this.state.selectedUserRole ? this.state.selectedUserRole.id : null\r\n } as WorkflowCalculation);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedCaseStatusType: null,\r\n selectedUserRole: null\r\n },\r\n async () => {\r\n await this.reloadWorkflowCalculation(this.state.selecteWorkflowPartnerType!.id);\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleCaseStatusChange = (newValue: any | null) => {\r\n this.setState({ selectedCaseStatusType: newValue });\r\n };\r\n handleUserRoleChange = (newValue: any | null) => {\r\n this.setState({ selectedUserRole: newValue });\r\n };\r\n handleWorkflowPartnerChange = (newValue: WorkflowPartner | null) => {\r\n this.setState(\r\n {\r\n selecteWorkflowPartnerType: newValue,\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.reloadWorkflowCalculation(newValue ? newValue.id : null);\r\n }\r\n );\r\n };\r\n\r\n renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.handleWorkflowPartnerChange(newValue)\r\n }\r\n getOptionLabel={(option: WorkflowPartner) => option.partner!.displayName || ''}\r\n filterOptions={createFilterOptions({\r\n matchFrom: 'any',\r\n stringify: (option: WorkflowPartner) => option.partner!.displayName\r\n })}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n this.handleCaseStatusChange(newValue)}\r\n getOptionLabel={(option: any) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n this.handleUserRoleChange(newValue)}\r\n getOptionLabel={(option: any) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n saveCalculationsChange = async () => {\r\n const workflowCalculations = [...this.state.workflowCalculations];\r\n const updatedWorkflowCalculationIndex = workflowCalculations.findIndex(\r\n (o) => o.id === this.state.newWorkflowCalculation!.id\r\n );\r\n\r\n if (updatedWorkflowCalculationIndex >= 0) {\r\n workflowCalculations[updatedWorkflowCalculationIndex] = this.state.newWorkflowCalculation!;\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowCalculation(this.state.newWorkflowCalculation!);\r\n\r\n this.setState({\r\n workflowCalculations: workflowCalculations,\r\n selectedCaseStatusType: null,\r\n newWorkflowCalculation: null,\r\n isSelectedWorkflowCalculation: false,\r\n selectedUserRole: null\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n renderCalculations = () => {\r\n return (\r\n \r\n this.saveCalculationsChange()}>\r\n \r\n \r\n \r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CONFIGURE_CALCULATION_LIST_LABEL',\r\n 'Servicii GTM'\r\n )}\r\n
\r\n \r\n
\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n originalCalculation: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_ORIGINAL_CALCULATION_LABEL',\r\n 'Calculatie Originala'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n vinInterogation: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_VIN_INTEROGATION_LABEL',\r\n 'Interogare VIN'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n hideEconomicParts: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_HIDE_ECONOMIC_PARTS_LABEL',\r\n 'Ascunde piese de tip Economic'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n alternativeCalculation: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_ALTERNATIVE_CALCULATION_LABEL',\r\n 'Calculatie alternativa'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n gtValuation: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_GT_VALUATION_LABEL',\r\n 'GT Valuation'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n compare: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_COMPARE_LABEL',\r\n 'Compara'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n qualityControlCertificate: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_QUALITY_CONTROL_LABEL',\r\n 'Control calitate'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n radar: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_RADAR_LABEL',\r\n 'Radar'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n insurerCalculation: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_UPDATE_CALCULATION_LABEL',\r\n 'Actualizare calculatie cu tarife asigurator'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n hasMultipleTariff: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_HAS_MULTIPLE_TARIFF_LABEL',\r\n 'Tarife multiple'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n hasBackButton: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_HAS_BACK_BUTTON_LABEL',\r\n 'Buton de revenire'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_ALTERNATIVE_CALCULATION_LABEL',\r\n 'Calculatie alternativa'\r\n )}\r\n
\r\n \r\n
\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n editGuideNumber: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_EDIT_GUIDE_NUMBER_LABEL',\r\n 'Modifica Guide Number Manual'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n editQuantity: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_EDIT_QUANTITY_LABEL',\r\n 'Modifica Cantitate Manual'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n addOriginalPart: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_ADD_ORIGINAL_PART_LABEL',\r\n 'Adauga piese originale'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n addAlternativePart: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_ADD_ALTERNATIV_PART_LABEL',\r\n 'Adauga Piese Alternative'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n deleteOriginalPart: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_DELETE_ORIGINAL_PART_LABEL',\r\n 'Sterge Piese Originale Manual'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n importOriginalParts: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_IMPORT_ORIGINAL_PARTS_LABEL',\r\n 'Importa Piese Originale Fisier'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n importAlternativeParts: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_IMPORT_ALTERNATIVE_PART_LABEL',\r\n 'Importa Piese Alternative Fisier'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n selectAlternativePart: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_SELECT_ALTERNATIV_PART_LABEL',\r\n 'Selecta Manual Piese Alternative'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n tmlEditable: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_TML_EDITABLE_LABEL',\r\n 'TML Editabil'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n defaultMaxDeliveryTime: parseInt(e.target.value)\r\n }\r\n })\r\n }\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_DEFAULT_MAX_DELIVERY_TIME_LABEL',\r\n 'Timp Maxim de Livrare Implicit'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n alternativeCalculationWithoutOriginal: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_ALTERNATIVE_WITHOUT_ORIGINAL_EDITABLE_LABEL',\r\n 'Alternativa fara Calculatie Originala'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n interogatePartner: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_INTEROGATE_PARTNER_EDITABLE_LABEL',\r\n 'Interogare la Partener'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n alternativePartner: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_ALTERNATIVE_PARTNER_EDITABLE_LABEL',\r\n 'Alternativa la Partener'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n alternativeNetPrice: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_ALTERNATIVE_LKQ_NET_PRICE_EDITABLE_LABEL',\r\n 'Pret Net LKQ Alternativ'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n viewOptim: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_VIEW_OPTIM_EDITABLE_LABEL',\r\n 'Buton Optim'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n viewPrcNewColumns: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_VIEW_PRC_COLUMNS_EDITABLE_LABEL',\r\n 'Coloane noi PRC'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n serviceOwnStock: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_SERVICE_OWN_STOCK_EDITABLE_LABEL',\r\n 'Stoc propriu service'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n oilMapping: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_OIL_MAPPING_EDITABLE_LABEL',\r\n 'Mapare uleiuri'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n allPartsHasBeenInterogated: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_SERVICE_ALL_PARTS_INTEROGATED_LABEL',\r\n 'Mesaj daca nu are toate piesele interogate'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n viewClientCommentsHistory: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_SERVICE_VIEW_CLIENT_COMMENTS_HISTORY_LABEL',\r\n 'Istoric comentarii client pe deviz'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n byAquisitionPrice: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_SERVICE_BY_AQUISITION_PRICE_LABEL',\r\n 'Optim bazat pe pretul de achizitie'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n hasHistoryInterogation: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_HAS_HISTORY_INTEROGATION_LABEL',\r\n 'Istoric interogari'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n hasAlternativePartDescription: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_HAS_ALTERNATIVE_PART_DESCRIPTION_LABEL',\r\n 'Descriere piese alternative'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n addNotifySupportOriginalPart: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_NOTIFY_SUPPORT_LABEL',\r\n 'Notifica support'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_LABEL',\r\n 'Detalii Calculatie'\r\n )}\r\n
\r\n \r\n
\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_CAR_PARTS_LABEL',\r\n 'PIESE'\r\n )}\r\n \r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n addCarParts: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_ADD_LABEL',\r\n 'Adauga'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n deleteCarParts: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_DELETE_LABEL',\r\n 'Sterge'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n editCarParts: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_EDIT_LABEL',\r\n 'Editeaza'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_LABOR_LABEL',\r\n 'MANOPERA'\r\n )}\r\n \r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n addLabor: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_ADD_LABEL',\r\n 'Adauga'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n deleteLabor: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_DELETE_LABEL',\r\n 'Sterge'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n editLabor: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_EDIT_LABEL',\r\n 'Editeaza'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_PAINTING_MATERIALS_LABEL',\r\n 'MATERIALE VOPSITORIE'\r\n )}\r\n \r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n addPaintingMaterials: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_ADD_LABEL',\r\n 'Adauga'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n deletePaintingMaterials: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_DELETE_LABEL',\r\n 'Sterge'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n editPaintingMaterials: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_EDIT_LABEL',\r\n 'Editeaza'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_PAINTING_LABOR_LABEL',\r\n 'MANOPERA VOPSITORIE'\r\n )}\r\n \r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n addPaintingLabor: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_ADD_LABEL',\r\n 'Adauga'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n deletePaintingLabor: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_DELETE_LABEL',\r\n 'Sterge'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n editPaintingLabor: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_EDIT_LABEL',\r\n 'Editeaza'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n importParts: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_IMPORT_CAR_PARTS_LABEL',\r\n 'Importa Piese'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n ownerSolutionView: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_OWNER_SOLUTION_VIEW_LABEL',\r\n 'Solutie Proprietar-Citire'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n this.setState({\r\n newWorkflowCalculation: {\r\n ...this.state.newWorkflowCalculation!,\r\n ownerSolution: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_CALCULATION_DATA_OWNER_SOLUTION_LABEL',\r\n 'Solutie Proprietar'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n this.setState({\r\n selectedCaseStatusType: null,\r\n newWorkflowCalculation: null,\r\n isSelectedWorkflowCalculation: false\r\n })\r\n }\r\n >\r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: true,\r\n search: true,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n */}\r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n this.state.isSelectedWorkflowCalculation === false ? (\r\n \r\n ) : (\r\n this.renderCalculations()\r\n )\r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCalculationFormActionProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n null,\r\n mergeProps\r\n)(withSnackbar(WorkflowCalculations as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { Box, Button, Card, CardContent, IconButton } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete, { createFilterOptions } from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport { WorkflowPartner, WorkflowPermission } from '../../../interfaces/Workflow';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\ninterface IWorkflowPermissionState {\r\n workflowPermissions: WorkflowPermission[];\r\n isLoading: boolean;\r\n workflowPartnerTypeList: WorkflowPartner[];\r\n selecteWorkflowPartnerType: WorkflowPartner | null;\r\n caseStatusTypeList: IReferential[];\r\n selectedCaseStatusType: IReferential | null;\r\n selectedUserRole: IReferential | null;\r\n userRoles: IReferential[];\r\n // workflowSectionStepList: WorkflowSectionStep[]\r\n // selecteWorkflowSectionStepType: WorkflowSectionStep | null\r\n // workflowId: number\r\n}\r\nexport interface ExternalPermissionFormActionProps {\r\n workflowFormId: number;\r\n}\r\n\r\ntype IWorkflowPermissionProps = ExternalPermissionFormActionProps & {\r\n appState: AppState;\r\n} & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass WorkflowPermissions extends React.PureComponent<\r\n IWorkflowPermissionProps,\r\n IWorkflowPermissionState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n workflowPermissions: [],\r\n isLoading: false,\r\n workflowPartnerTypeList: [],\r\n selecteWorkflowPartnerType: null,\r\n caseStatusTypeList: [],\r\n selectedCaseStatusType: null,\r\n workflowSectionStepList: [],\r\n selecteWorkflowSectionStepType: null,\r\n selectedUserRole: null,\r\n userRoles: []\r\n // workflowId: 0\r\n } as IWorkflowPermissionState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadWorkflowPermissions();\r\n }\r\n );\r\n }\r\n\r\n loadWorkflowPermissions = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n const ref = Referentials.referential.find((item) => item.code === ReferentialCode.CaseStatus);\r\n const refRole = Referentials.referential.find((item) => item.code === ReferentialCode.UserRole);\r\n\r\n const [workflowPermissions, workflowPartnerList, caseStatusTypes, userRoles] =\r\n await Promise.all([\r\n this.workflowService.GetWorkflowPermissions(this.props.workflowFormId),\r\n this.workflowService.GetWorkflowPartners(workflowId),\r\n this.appReferentialService.Get(ref!.baseUrl),\r\n this.appReferentialService.Get(refRole!.baseUrl)\r\n // this.workflowService.GetWorkflowSteps(workflowId)\r\n ]);\r\n const partners = await this.organizationService.GetOrganizationsByIds(\r\n workflowPartnerList.map((item) => item.partnerId)\r\n );\r\n workflowPartnerList.forEach((wpItem) => {\r\n const partner = partners.find((item) => item.id === wpItem.partnerId);\r\n wpItem.partner = isNullOrUndefined(partner) ? null : partner;\r\n });\r\n\r\n workflowPermissions.forEach((wpItem) => {\r\n const partner = workflowPartnerList.find((item) => item.id === wpItem.workflowPartnerId);\r\n const caseStatus = caseStatusTypes.find((item) => item.id === wpItem.caseStatusId);\r\n\r\n wpItem.workflowPartner = isNullOrUndefined(partner) ? null : partner;\r\n wpItem.caseStatus = isNullOrUndefined(caseStatus) ? null : caseStatus;\r\n });\r\n this.setState({\r\n workflowPermissions: workflowPermissions,\r\n caseStatusTypeList: caseStatusTypes.filter((item) => item.isActive === true),\r\n workflowPartnerTypeList: workflowPartnerList.filter((item) => item.isActive === true),\r\n // workflowSectionStepList: workflowSectionStepList.filter(item => item.isActive === true),\r\n isLoading: false,\r\n userRoles: userRoles.filter((item) => item.isActive === true)\r\n // workflowId: workflowId\r\n });\r\n };\r\n\r\n createWorkflowPartner = async (item: WorkflowPartner) => {\r\n [item.partner] = await Promise.all([this.organizationService.GetOrganization(item.partnerId)]);\r\n\r\n return item;\r\n };\r\n\r\n handleIsActiveChange = async (event: React.ChangeEvent, id: number) => {\r\n const workflowPermissions = [...this.state.workflowPermissions];\r\n const updatedWorkflowPermissionIndex = workflowPermissions.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowPermissionIndex >= 0) {\r\n workflowPermissions[updatedWorkflowPermissionIndex] = {\r\n ...workflowPermissions[updatedWorkflowPermissionIndex],\r\n [event.target.id]: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowPermission(\r\n workflowPermissions[updatedWorkflowPermissionIndex]\r\n );\r\n\r\n this.setState({ workflowPermissions: workflowPermissions });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n deletePermission = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const index = this.state.workflowPermissions.findIndex((i) => i.id === tableMeta.rowData[0]);\r\n const deletedPermission = this.state.workflowPermissions[index];\r\n const newWorkflowPermissionsArray = [...this.state.workflowPermissions];\r\n newWorkflowPermissionsArray.splice(index, 1);\r\n\r\n await this.workflowService.RemoveWorkflowPermission(deletedPermission.id);\r\n\r\n this.setState({\r\n workflowPermissions: newWorkflowPermissionsArray\r\n // workflowSectionStepList: await this.filterSectionSteps(newWorkflowPermissionsArray, this.state.selecteWorkflowPartnerType, this.state.selectedCaseStatusType)\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'workflowPartner',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_PERMISSION_TAB_ORGANIZATION_HEADER',\r\n 'Organizatie'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: WorkflowPartner, tableMeta: MUIDataTableMeta) => {\r\n return value.partner!.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseStatus',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_PERMISSION_TAB_CASE_STATUS_HEADER',\r\n 'Status Dosar'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any) => {\r\n return value ? value.displayName : \"\";\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'userRole',\r\n label: this.translatorService.Tranlate('WORKFLOW_USER_ROLE_LABEL', 'Rol'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any) => {\r\n return value ? value.displayName : '';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n\r\n // {\r\n // name: 'read',\r\n // label: this.translatorService.Tranlate(\"WORKFLOW_PERMISSION_TAB_READ_HEADER\", \"Citeste\"),\r\n\r\n // options: {\r\n // filter: false,\r\n // sort: false,\r\n\r\n // customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n // return (\r\n // this.handleIsActiveChange(e, tableMeta.rowData[0])}\r\n // color=\"primary\"\r\n // inputProps={{ 'aria-label': 'primary checkbox' }}\r\n // />)\r\n // }\r\n\r\n // }\r\n // },\r\n // {\r\n // name: 'write',\r\n // label: this.translatorService.Tranlate(\"WORKFLOW_PERMISSION_TAB_WRITE_HEADER\", \"Scrie\"),\r\n // options: {\r\n // filter: false,\r\n // sort: false,\r\n // customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n // return (\r\n // this.handleIsActiveChange(e, tableMeta.rowData[0])}\r\n // color=\"primary\"\r\n // inputProps={{ 'aria-label': 'primary checkbox' }}\r\n // />)\r\n // }\r\n\r\n // }\r\n // },\r\n // {\r\n // name: 'execute',\r\n // label: this.translatorService.Tranlate(\"WORKFLOW_PERMISSION_TAB_EXECUTE_HEADER\", \"Executa\"),\r\n // options: {\r\n // filter: false,\r\n // sort: false,\r\n // customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n // return (\r\n // this.handleIsActiveChange(e, tableMeta.rowData[0])}\r\n // color=\"primary\"\r\n // inputProps={{ 'aria-label': 'primary checkbox' }}\r\n // />)\r\n // }\r\n\r\n // }\r\n // },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_PERMISSION_TAB_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().toDate().toLocaleString(this.props.appState.language)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deletePermission(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addWorkflowPermissionType = async () => {\r\n try {\r\n if (\r\n this.state.workflowPermissions.findIndex(\r\n (item) =>\r\n item.workflowPartnerId === this.state.selecteWorkflowPartnerType!.id &&\r\n ((this.state.selectedUserRole !== null &&\r\n item.userRoleId === this.state.selectedUserRole!.id) ||\r\n (this.state.selectedUserRole === null && item.userRoleId !== null) ||\r\n (this.state.selectedUserRole !== null && item.userRoleId === null) ||\r\n (this.state.selectedUserRole === null && item.userRoleId === null)) &&\r\n item.caseStatusId === this.state.selectedCaseStatusType!.id\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_MSG_WORKFLOW_PERMISSION_EXISTS',\r\n 'Permisiunea exista deja!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n await this.workflowService.AddWorkflowPermission({\r\n workflowPartnerId: this.state.selecteWorkflowPartnerType!.id,\r\n caseStatusId: this.state.selectedCaseStatusType!.id,\r\n workflowSectionStepFormId: this.props.workflowFormId,\r\n userRoleId: this.state.selectedUserRole ? this.state.selectedUserRole.id : null,\r\n read: true,\r\n execute: true,\r\n write: true\r\n } as WorkflowPermission);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n //selecteWorkflowSectionStepType : null,\r\n },\r\n () => {\r\n this.loadWorkflowPermissions();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n handleUserRoleChange = (newValue: any | null) => {\r\n this.setState({ selectedUserRole: newValue });\r\n };\r\n handleCaseStatusChange = async (newValue: any | null) => {\r\n this.setState({\r\n selectedCaseStatusType: newValue\r\n // workflowSectionStepList: await this.filterSectionSteps(this.state.workflowPermissions, this.state.selecteWorkflowPartnerType, newValue)\r\n });\r\n };\r\n // handleSectionStepChange = (newValue: WorkflowSectionStep | null) => {\r\n // this.setState({ selecteWorkflowSectionStepType: newValue });\r\n // }\r\n handleWorkflowPartnerChange = (newValue: WorkflowPartner | null) => {\r\n this.setState(\r\n {\r\n selecteWorkflowPartnerType: newValue\r\n },\r\n async () => {\r\n // await this.reloadWorkflowPermission(newValue ? newValue.id : null);\r\n }\r\n );\r\n };\r\n\r\n renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.handleWorkflowPartnerChange(newValue)\r\n }\r\n getOptionLabel={(option: WorkflowPartner) => option.partner!.displayName || ''}\r\n filterOptions={createFilterOptions({\r\n matchFrom: 'any',\r\n stringify: (option: WorkflowPartner) => option.partner!.displayName\r\n })}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n this.handleCaseStatusChange(newValue)}\r\n getOptionLabel={(option: any) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n this.handleUserRoleChange(newValue)}\r\n getOptionLabel={(option: any) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n {/* this.handleSectionStepChange(newValue)}\r\n getOptionLabel={(option: WorkflowSectionStep) => option.workflowSection.section!.displayName+ \"-\"+ option.workflowStep!.displayName || \"\"}\r\n renderInput={params => (\r\n \r\n )}\r\n /> */}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: true,\r\n search: true,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n */}\r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalPermissionFormActionProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n null,\r\n mergeProps\r\n)(withSnackbar(WorkflowPermissions as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Grid, Button, Card, Tabs, Tab, CardContent } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../../context/Contexts';\r\nimport { Language } from '../../../../interfaces/Organization';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { WrapperSimple } from '../../../../layout-components';\r\nimport { IReferentialService } from '../../../../services/Interfaces/IReferentialService';\r\nimport TabPanel from '../../../_shared/Tabs';\r\nimport EditWorkflowFormReport from './EditWorkflowFormReport';\r\nimport EditWorkflowFormDesign from './EditWorkflowFormDesign';\r\nimport EditWorkflowFormAction from './EditWorkflowFormAction';\r\nimport EditWorkflowFormInterfaces from './EditWorkflowFormInterfaces';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { IWorkflowService } from '../../../../services/Interfaces/IWorkflowService';\r\nimport { WorkflowSectionStepForm } from '../../../../interfaces/Workflow';\r\nimport WorkflowOptimizations from '../WorkflowOptimizations';\r\nimport WorkflowDocumentTypes from '../WorkflowDocumentTypes';\r\nimport WorkflowCalculations from '../WorkflowCalculations';\r\nimport WorkflowPermissions from '../WorkflowPermissions';\r\nimport { IReferential, ITranslation } from '../../../../interfaces/IReferential';\r\nimport { FormCode } from '../../../../helpers/forms/FormCode';\r\nimport Referentials from '../../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../../helpers/Constants';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { Switch, FormControlLabel, Typography } from '@material-ui/core';\r\n\r\ninterface IEditWorkflowFormState {\r\n workflowForm: WorkflowSectionStepForm;\r\n selectedTab: number;\r\n languages: Language[];\r\n isLoading: boolean;\r\n appointmentCategoryTypes: IReferential[];\r\n}\r\n\r\nexport interface ExternalEditWorkflowFormsProps {\r\n workflowFormChanged?: (close: boolean) => void;\r\n workflowFormId: number;\r\n workflowFormCode: string | null;\r\n}\r\n\r\ntype EditWorkflowFormProps = { appState: AppState } & ProviderContext &\r\n ExternalEditWorkflowFormsProps &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass EditWorkflowForm extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n private workflowService!: IWorkflowService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n workflowForm: {} as WorkflowSectionStepForm,\r\n selectedTab: 0,\r\n languages: [],\r\n isLoading: true,\r\n appointmentCategoryTypes: []\r\n } as IEditWorkflowFormState;\r\n\r\n public async componentDidMount() {\r\n // const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n let workflowForm = {} as WorkflowSectionStepForm;\r\n const languages = this.activeLanguages();\r\n\r\n if (this.props.workflowFormId !== 0) {\r\n workflowForm = await this.workflowService.GetWorkflowSectionStepForm(\r\n this.props.workflowFormId\r\n );\r\n }\r\n\r\n const formTranslations = workflowForm.translations;\r\n languages.forEach((language: Language, index: number) => {\r\n if (formTranslations.length === 0) {\r\n formTranslations.push({\r\n id: 0,\r\n referentialTypeId: workflowForm.id,\r\n name: null,\r\n language: language.code\r\n });\r\n } else {\r\n const indexTrans = formTranslations.findIndex((trans: ITranslation) => {\r\n return language.code === trans.language;\r\n });\r\n if (indexTrans === -1) {\r\n formTranslations.push({\r\n id: 0,\r\n referentialTypeId: workflowForm.id,\r\n name: null,\r\n language: language.code\r\n });\r\n }\r\n }\r\n });\r\n workflowForm.translations = [...formTranslations];\r\n\r\n let appointmentCategoryTypes = [] as IReferential[];\r\n if (workflowForm!.form!.code == FormCode.CASE_IN_OUT_REPORT || workflowForm!.form!.code == FormCode.CASE_ATTACHMENTS) {\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.AppointmentCategoryType\r\n );\r\n \r\n appointmentCategoryTypes = await this.appReferentialService.Get(ref!.baseUrl);\r\n\r\n if (workflowForm!.appointmentCategoryTypeId) {\r\n const appointmentCategoryType = appointmentCategoryTypes.find(\r\n (item) => item.id === workflowForm!.appointmentCategoryTypeId\r\n );\r\n workflowForm.appointmentCategoryType = appointmentCategoryType || null;\r\n }\r\n }\r\n this.setState({\r\n workflowForm: workflowForm,\r\n languages: languages,\r\n isLoading: false,\r\n appointmentCategoryTypes: appointmentCategoryTypes\r\n });\r\n }\r\n activeLanguages = () => {\r\n const activeLanguages =\r\n this.props.appState.appUser!.organization!.gtOrganization!.languages!.filter(\r\n (language) => language.isActive === true\r\n );\r\n\r\n activeLanguages.forEach((language) => {\r\n language.displayName =\r\n language.displayName.charAt(0).toUpperCase() + language.displayName.slice(1);\r\n });\r\n return activeLanguages;\r\n };\r\n\r\n handleFormNameChange = (event: any, code: string | null) => {\r\n let newFormTransList = [] as ITranslation[];\r\n if (this.state.workflowForm.translations) {\r\n newFormTransList = this.state.workflowForm.translations.map((loc: any) => {\r\n if (loc.language === code) {\r\n loc.name = event.target.value;\r\n }\r\n return loc;\r\n });\r\n }\r\n this.setState({\r\n workflowForm: {\r\n ...this.state.workflowForm,\r\n translations: newFormTransList\r\n }\r\n });\r\n };\r\n\r\n compare = (a: ITranslation, b: ITranslation) => {\r\n const bandA = a.language!.toUpperCase();\r\n const bandB = b.language!.toUpperCase();\r\n\r\n let comparison = 0;\r\n if (bandA > bandB) {\r\n comparison = -1;\r\n } else if (bandA < bandB) {\r\n comparison = 1;\r\n }\r\n return comparison;\r\n };\r\n\r\n renderNameTextFields = () => {\r\n if (Object.keys(this.state.workflowForm).length === 0) {\r\n return null;\r\n } else {\r\n const nameTextFieldsList = [] as any[];\r\n\r\n this.state\r\n .workflowForm!.translations.sort(this.compare)\r\n .forEach((item: ITranslation, index: number) => {\r\n nameTextFieldsList.push(\r\n this.handleFormNameChange(e, item.language)}\r\n label={item.language}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n );\r\n });\r\n return nameTextFieldsList;\r\n }\r\n };\r\n\r\n public saveWorkflowForm = async () => {\r\n try {\r\n await this.workflowService.UpdateWorkflowSectionStepForm(this.state.workflowForm);\r\n\r\n if (this.props.workflowFormChanged) {\r\n this.props.workflowFormChanged(true);\r\n }\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n private handleAppointmentCategoryTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n workflowForm: {\r\n ...this.state.workflowForm,\r\n appointmentCategoryType: newValue,\r\n appointmentCategoryTypeId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n public renderForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n {this.renderNameTextFields()}\r\n \r\n {\r\n this.state.workflowForm!.form!.code == FormCode.CARFIX_ANALYSIS_STEP ||\r\n this.state.workflowForm!.form!.code == FormCode.CARFIX_APPOINTMENT_VALIDATION_STEP ?\r\n (\r\n \r\n ) => {\r\n this.setState({\r\n workflowForm: {\r\n ...this.state.workflowForm,\r\n comments: e.target.value\r\n }\r\n });\r\n }}\r\n label={this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_GENERAL_DATA_COMMENTS_POEDITOR_KEY',\r\n 'Cheie Comentariu Poeditor'\r\n )}\r\n />\r\n \r\n ) : ''\r\n }\r\n {\r\n this.state.workflowForm!.form!.code == FormCode.CARFIX_REPAIR_IN_PROGRESS_STEP ?\r\n (\r\n <>\r\n \r\n ) => {\r\n this.setState({\r\n workflowForm: {\r\n ...this.state.workflowForm,\r\n firstButtonLabel: e.target.value\r\n }\r\n });\r\n } }\r\n label={this.translatorService.Tranlate(\r\n 'EDIT_LABEL_FIRST_BUTTON_POEDITOR_KEY',\r\n 'Primul buton'\r\n )} \r\n />\r\n \r\n this.setState({\r\n workflowForm: {\r\n ...this.state.workflowForm!,\r\n hideFirstButton: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('HIDE_FIRST_BUTTON_POEDITOR_KEY', 'Ascunde butonul')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n \r\n ) => {\r\n this.setState({\r\n workflowForm: {\r\n ...this.state.workflowForm,\r\n secondButtonLabel: e.target.value\r\n }\r\n });\r\n } }\r\n label={this.translatorService.Tranlate(\r\n 'EDIT_LABEL_SECOND_BUTTON_POEDITOR_KEY',\r\n 'Al doilea buton'\r\n )} \r\n />\r\n \r\n this.setState({\r\n workflowForm: {\r\n ...this.state.workflowForm!,\r\n hideSecondButton: e.target.checked\r\n }\r\n })\r\n }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate('HIDE_SECOND_BUTTON_POEDITOR_KEY', 'Ascunde butonul')}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n \r\n \r\n \r\n ) : ''\r\n }\r\n {\r\n this.state.workflowForm!.form!.code == FormCode.CASE_IN_OUT_REPORT || this.state.workflowForm!.form!.code == FormCode.CASE_ATTACHMENTS ?\r\n (\r\n <>\r\n \r\n \r\n this.handleAppointmentCategoryTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n ) : ''\r\n }\r\n
\r\n \r\n this.props.workflowFormChanged ? this.props.workflowFormChanged(false) : null\r\n }\r\n >\r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n\r\n if (this.state.isLoading) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderForm() : null}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalEditWorkflowFormsProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(EditWorkflowForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport {\r\n Box,\r\n Switch,\r\n Button,\r\n IconButton,\r\n Card,\r\n CardContent,\r\n DialogTitle,\r\n Dialog,\r\n Grid,\r\n Typography,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown';\r\nimport KeyboardArrowUpIcon from '@material-ui/icons/KeyboardArrowUp';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport EditWorkflowForm from '../workflows/editWorkflowForm/EditWorkflowForm';\r\nimport {\r\n WorkflowSection,\r\n WorkflowSectionStep,\r\n WorkflowSectionStepForm,\r\n WorkflowForm\r\n} from '../../../interfaces/Workflow';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\n\r\ninterface IWorkflowCaseStructureFormState {\r\n workflowSectionStepForms: WorkflowSectionStepForm[];\r\n isLoading: boolean;\r\n workflowSectionTypes: WorkflowSection[];\r\n workflowSectionStepTypes: WorkflowSectionStep[];\r\n workflowSectionStepFormTypes: WorkflowForm[];\r\n selectedWorkflowSectionType: WorkflowSection | null;\r\n selectedWorkflowSectionStepType: WorkflowSectionStep | null;\r\n selectedWorkflowSectionStepFormType: WorkflowForm | null;\r\n workflowId: number;\r\n formId: number;\r\n formCode: string | null;\r\n isOpenDialog: boolean;\r\n isDialogDeleteOpen: boolean;\r\n deleteFormId: number | null;\r\n modalFormTitle: string;\r\n}\r\n\r\ntype IWorkflowCaseStructureFormProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass WorkflowCaseStructureFormsTab extends React.PureComponent<\r\n IWorkflowCaseStructureFormProps,\r\n IWorkflowCaseStructureFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n workflowSectionStepForms: [],\r\n workflowSectionTypes: [],\r\n isLoading: false,\r\n workflowSectionStepTypes: [],\r\n workflowSectionStepFormTypes: [],\r\n\r\n selectedWorkflowSectionStepType: null,\r\n selectedWorkflowSectionStepFormType: null,\r\n selectedWorkflowSectionType: null,\r\n workflowId: 0,\r\n formId: 0,\r\n formCode: null,\r\n isOpenDialog: false,\r\n isDialogDeleteOpen: false,\r\n deleteFormId: null,\r\n modalFormTitle: 'Configurare forma'\r\n } as IWorkflowCaseStructureFormState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadWorkflowForms();\r\n }\r\n );\r\n }\r\n\r\n loadWorkflowForms = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n const [workflowSectionList, filterSectionStepForms] = await Promise.all([\r\n this.workflowService.GetWorkflowSections(workflowId),\r\n this.workflowService.GetWorkflowForms()\r\n ]);\r\n\r\n this.setState({\r\n workflowSectionTypes: workflowSectionList.sort(function (a, b) {\r\n return a.order - b.order;\r\n }),\r\n workflowSectionStepFormTypes: filterSectionStepForms,\r\n isLoading: false,\r\n workflowId: workflowId\r\n });\r\n };\r\n\r\n reloadWorkflowForms = async (sectionStepId: number | null) => {\r\n if (sectionStepId === null) {\r\n this.setState({\r\n workflowSectionStepForms: [],\r\n isLoading: false\r\n });\r\n return;\r\n }\r\n\r\n const workflowSectionStepFormList = await this.workflowService.GetWorkflowSectionStepForms(\r\n sectionStepId\r\n ); //orgCaseList[0].id);\r\n\r\n this.setState({\r\n workflowSectionStepForms: workflowSectionStepFormList.sort(function (a, b) {\r\n return a.order - b.order;\r\n }),\r\n isLoading: false\r\n });\r\n };\r\n\r\n moveUp = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const cloneArray = [...this.state.workflowSectionStepForms];\r\n const itemToMoveUpIndex = cloneArray.findIndex((item) => item.id === id);\r\n\r\n if (itemToMoveUpIndex === -1) {\r\n return;\r\n }\r\n if (cloneArray[itemToMoveUpIndex].order === 1) {\r\n return;\r\n }\r\n\r\n const itemToMoveDownIndex = cloneArray.findIndex(\r\n (item) => item.order === cloneArray[itemToMoveUpIndex].order - 1\r\n );\r\n\r\n cloneArray[itemToMoveUpIndex] = {\r\n ...cloneArray[itemToMoveUpIndex],\r\n order: cloneArray[itemToMoveUpIndex].order - 1\r\n };\r\n cloneArray[itemToMoveDownIndex] = {\r\n ...cloneArray[itemToMoveDownIndex],\r\n order: cloneArray[itemToMoveDownIndex].order + 1\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowSectionStepForm(cloneArray[itemToMoveUpIndex]);\r\n await this.workflowService.UpdateWorkflowSectionStepForm(cloneArray[itemToMoveDownIndex]);\r\n\r\n this.setState({\r\n workflowSectionStepForms: cloneArray.sort(function (a, b) {\r\n return a.order - b.order;\r\n })\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n moveDown = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const cloneArray = [...this.state.workflowSectionStepForms];\r\n const itemToMoveIndex = cloneArray.findIndex((item) => item.id === id);\r\n\r\n if (itemToMoveIndex === -1) {\r\n return;\r\n }\r\n if (cloneArray[itemToMoveIndex].order === cloneArray.length) {\r\n return;\r\n }\r\n\r\n const itemToMoveToIndex = cloneArray.findIndex(\r\n (item) => item.order === cloneArray[itemToMoveIndex].order + 1\r\n );\r\n\r\n cloneArray[itemToMoveIndex] = {\r\n ...cloneArray[itemToMoveIndex],\r\n order: cloneArray[itemToMoveIndex].order + 1\r\n };\r\n cloneArray[itemToMoveToIndex] = {\r\n ...cloneArray[itemToMoveToIndex],\r\n order: cloneArray[itemToMoveToIndex].order - 1\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowSectionStepForm(cloneArray[itemToMoveIndex]);\r\n await this.workflowService.UpdateWorkflowSectionStepForm(cloneArray[itemToMoveToIndex]);\r\n\r\n this.setState({\r\n workflowSectionStepForms: cloneArray.sort(function (a, b) {\r\n return a.order - b.order;\r\n })\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n onRowClick = (e: any, id: number, formCode: string | null, formName: any) => {\r\n this.setState({ isOpenDialog: true, formId: id, modalFormTitle: formName, formCode });\r\n };\r\n\r\n handleClose = (showForm: boolean) => {\r\n this.setState({ isOpenDialog: showForm }, async () => {\r\n await this.reloadWorkflowForms(this.state.selectedWorkflowSectionStepType!.id);\r\n });\r\n };\r\n\r\n handleIsActiveChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const workflowSectionStepForms = [...this.state.workflowSectionStepForms];\r\n const updatedWorkflowSectionStepFormIndex = workflowSectionStepForms.findIndex(\r\n (o) => o.id === id\r\n );\r\n\r\n if (updatedWorkflowSectionStepFormIndex >= 0) {\r\n workflowSectionStepForms[updatedWorkflowSectionStepFormIndex] = {\r\n ...workflowSectionStepForms[updatedWorkflowSectionStepFormIndex],\r\n isActive: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowSectionStepForm(\r\n workflowSectionStepForms[updatedWorkflowSectionStepFormIndex]\r\n );\r\n\r\n this.setState({ workflowSectionStepForms: workflowSectionStepForms });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'displayName',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOWS_TAB_CASE_STRUCTURE_TAB_FORM_FORM_HEADER',\r\n 'Forma'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const formId = tableMeta.rowData[0];\r\n const formCode =\r\n this.state.workflowSectionStepForms?.find(\r\n (wfSectionForm) => wfSectionForm.id === formId\r\n )?.form?.code || null;\r\n return (\r\n this.onRowClick(e, formId, formCode, value)}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOWS_TAB_CASE_STRUCTURE_TAB_FORM_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'order',\r\n sortDirection: 'asc',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOWS_TAB_CASE_STRUCTURE_TAB_FORM_ORDER_HEADER',\r\n 'Ord'\r\n ),\r\n options: { sort: false }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n sortOrder: {\r\n name: 'order',\r\n direction: 'asc'\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n this.moveUp(e, tableMeta)}>\r\n \r\n \r\n this.moveDown(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'isActive',\r\n label: this.translatorService.Tranlate('USERS_IS_ACTIVE_HEADER', 'Activ'),\r\n options: {\r\n sort: false,\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(isActive: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names[0]) !== -1 && isActive === true) ||\r\n (filterVal.indexOf(this.names[1]) !== -1 && isActive === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleIsActiveChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n this.setState({ isDialogDeleteOpen: true, deleteFormId: tableMeta.rowData[0] })\r\n }\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addOrgForm = async () => {\r\n try {\r\n const translations = this.state.selectedWorkflowSectionStepFormType!.translations;\r\n translations.forEach((item) => {\r\n item.id = 0;\r\n item.referentialTypeId = 0;\r\n });\r\n\r\n await this.workflowService.AddWorkflowSectionStepForm({\r\n order: this.state.workflowSectionStepForms.length + 1,\r\n json1: this.state.selectedWorkflowSectionStepFormType!.json1,\r\n json2: this.state.selectedWorkflowSectionStepFormType!.json2,\r\n translations: translations,\r\n formTypeId: this.state.selectedWorkflowSectionStepFormType!.formTypeId,\r\n workflowSectionStepId: this.state.selectedWorkflowSectionStepType!.id,\r\n formId: this.state.selectedWorkflowSectionStepFormType!.id,\r\n isActive: true\r\n } as WorkflowSectionStepForm);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedWorkflowSectionStepFormType: null\r\n },\r\n () => {\r\n this.reloadWorkflowForms(this.state.selectedWorkflowSectionStepType!.id);\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleAutocompleteStepChange = (newValue: any | null) => {\r\n this.setState(\r\n {\r\n selectedWorkflowSectionStepType: newValue,\r\n isLoading: true\r\n },\r\n () => {\r\n this.reloadWorkflowForms(newValue === null ? null : newValue.id);\r\n }\r\n );\r\n };\r\n\r\n handleAutocompleteFormChange = (newValue: any | null) => {\r\n this.setState({ selectedWorkflowSectionStepFormType: newValue });\r\n };\r\n\r\n handleAutocompleteCaseChange = async (newValue: any | null) => {\r\n if (newValue === null) {\r\n this.setState(\r\n {\r\n selectedWorkflowSectionType: null,\r\n workflowSectionStepTypes: [],\r\n selectedWorkflowSectionStepType: null,\r\n isLoading: true\r\n },\r\n () => {\r\n this.reloadWorkflowForms(newValue === null ? null : newValue.id);\r\n }\r\n );\r\n return;\r\n }\r\n const workflowSectionStepList = await this.workflowService.GetWorkflowSectionSteps(newValue.id);\r\n\r\n this.setState(\r\n {\r\n selectedWorkflowSectionType: newValue,\r\n workflowSectionStepTypes: workflowSectionStepList.sort(function (a, b) {\r\n return a.order - b.order;\r\n }),\r\n selectedWorkflowSectionStepType: null,\r\n isLoading: true\r\n },\r\n () => {\r\n this.reloadWorkflowForms(null);\r\n }\r\n );\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.handleAutocompleteCaseChange(newValue)\r\n }\r\n getOptionLabel={(option: WorkflowSection) => option.section!.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleAutocompleteStepChange(newValue)\r\n }\r\n getOptionLabel={(option: WorkflowSectionStep) =>\r\n option.workflowStep!.displayName || ''\r\n }\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleAutocompleteFormChange(newValue)\r\n }\r\n getOptionLabel={(option: WorkflowForm) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n closeDeleteDialog = async () => {\r\n this.setState({ isDialogDeleteOpen: false });\r\n };\r\n\r\n deleteWorkflowSectionStepForm = async () => {\r\n try {\r\n await this.workflowService.RemoveWorkflowForm(this.state.deleteFormId!);\r\n await this.reloadWorkflowForms(this.state.selectedWorkflowSectionStepType!.id);\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n \r\n \r\n \r\n \r\n {this.state.modalFormTitle}\r\n \r\n \r\n this.handleClose(false)}\r\n size={'small'}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n

\r\n {this.translatorService.Tranlate(\r\n 'DELETE_TEXT',\r\n 'Sigur doriti sa stergeti aceasta inregistrare?'\r\n )}\r\n

\r\n
\r\n \r\n \r\n {this.translatorService.Tranlate('CANCEL', 'Anuleaza')}\r\n \r\n \r\n {\r\n this.setState(\r\n { isDialogDeleteOpen: false },\r\n async () => await this.deleteWorkflowSectionStepForm()\r\n );\r\n }}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n className=\"mx-1\"\r\n >\r\n \r\n {this.translatorService.Tranlate('DELETE', 'Sterge')}\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(WorkflowCaseStructureFormsTab as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from '../../../store';\r\nimport { withSnackbar } from 'notistack';\r\nimport { Card, Tabs, Tab, CardContent, Box } from '@material-ui/core';\r\nimport TabPanel from '../../_shared/Tabs';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport WorkflowCaseStructureSectionTab from './WorkflowCaseStructureSectionTab';\r\nimport WorkflowCaseStructureStepsTab from './WorkflowCaseStructureStepsTab';\r\nimport WorkflowCaseStructureFormsTab from './WorkflowCaseStructureFormsTab';\r\n\r\ninterface ICaseStructureState {\r\n selectedTab: number;\r\n}\r\nclass WorkflowCaseStructure extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = { selectedTab: 0 };\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(WorkflowCaseStructure as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport {\r\n Tooltip,\r\n Box,\r\n Button,\r\n Card,\r\n CardContent,\r\n Tabs,\r\n Tab,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n DialogContent,\r\n Switch,\r\n FormControlLabel\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { WorkflowSupplier } from '../../../interfaces/Workflow';\r\nimport { Organization, OrganizationInterface } from '../../../interfaces/Organization';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport NumberFormat from 'react-number-format';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableMeta,\r\n MUIDataTableColumnOptions\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { ReferentialCode, OrganizationTypeCode, SupplierApiType, Descripted, enumToDescriptedArray } from '../../../helpers/Constants';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport * as R from 'ramda';\r\nimport { X } from 'react-feather';\r\n\r\ninterface IWorkflowSupplierState {\r\n newWorkflowSupplier: WorkflowSupplier | null;\r\n workflowSuppliers: WorkflowSupplier[];\r\n isLoading: boolean;\r\n workflowSupplierTypes: Organization[];\r\n workflowSupplierInterfaceTypes: OrganizationInterface[];\r\n // workflowCarPartCategoryTypes: { id: number, displayName: string }[]\r\n selectedWorkflowSupplierType: Organization | null;\r\n selectedWorkflowSupplierInterfaceType: OrganizationInterface | null;\r\n // selectedWorkflowCarPartCategoryTypeMultiple: { id: number, displayName: string }[],\r\n // selectedWorkflowCarPartCategoryType: { id: number, displayName: string } | null,\r\n urlInterface: string;\r\n discountTariff: number;\r\n userName: string;\r\n password: string;\r\n port: number | null;\r\n workflowId: number;\r\n isDialogOpen: boolean;\r\n workflowSupplierId: number | null;\r\n supplierApiType: Descripted | null;\r\n supplierApiTypes: Descripted[];\r\n clientId: string;\r\n hasNonStockValidation: boolean;\r\n}\r\n\r\ntype IWorkflowSupplierProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass WorkflowSuppliers extends React.PureComponent<\r\n IWorkflowSupplierProps,\r\n IWorkflowSupplierState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n newWorkflowSupplier: null,\r\n workflowSuppliers: [],\r\n workflowSupplierTypes: [],\r\n workflowSupplierInterfaceTypes: [],\r\n // workflowCarPartCategoryTypes: [],\r\n selectedWorkflowSupplierType: null,\r\n selectedWorkflowSupplierInterfaceType: null,\r\n // selectedWorkflowCarPartCategoryTypeMultiple: [],\r\n // selectedWorkflowCarPartCategoryType: null,\r\n urlInterface: '',\r\n discountTariff: 0,\r\n userName: '',\r\n password: '',\r\n port: 0,\r\n workflowId: 0,\r\n isLoading: false,\r\n isDialogOpen: false,\r\n workflowSupplierId: null,\r\n supplierApiType: null,\r\n supplierApiTypes: enumToDescriptedArray(SupplierApiType),\r\n clientId: '',\r\n hasNonStockValidation: false\r\n } as IWorkflowSupplierState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadWorkflowSuppliers();\r\n }\r\n );\r\n }\r\n\r\n loadWorkflowSuppliers = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n const [ws, workflowSuppliers] = await Promise.all([\r\n this.workflowService.GetWorkflowSuppliers(workflowId),\r\n this.organizationService.GetHOOrganizationsByTypes([OrganizationTypeCode.SUPPLIER])\r\n ]);\r\n\r\n const interfacePromises = [] as any[];\r\n const supplierIds: number[] = [];\r\n\r\n ws.forEach((ws) => {\r\n const supplier = workflowSuppliers.find((item) => item.id === ws.supplierId);\r\n // const carPartCategory = workflowCarPartCategoryTypes.find(item=> item.id === ws.carPartCategoryId);\r\n\r\n if (supplierIds.indexOf(ws.supplierId) === -1) {\r\n supplierIds.push(ws.supplierId);\r\n interfacePromises.push(this.organizationService.GetOrganizationInterfaces(ws.supplierId));\r\n }\r\n\r\n ws.supplier = R.isNil(supplier) ? null : supplier;\r\n // ws.carPartCategory = R.isNil(carPartCategory) ? null : carPartCategory;\r\n });\r\n\r\n const result = await Promise.all(interfacePromises);\r\n\r\n const organizationInterfaces: OrganizationInterface[] = [];\r\n result.forEach((item) => {\r\n organizationInterfaces.push(...item);\r\n });\r\n\r\n ws.forEach((ws) => {\r\n const suppInterface = organizationInterfaces.find(\r\n (item) => item.id === ws.supplierInterfaceId\r\n );\r\n ws.supplierInterface = R.isNil(suppInterface) ? null : suppInterface;\r\n });\r\n\r\n this.setState({\r\n workflowSupplierTypes: workflowSuppliers.filter((item) => item.isActive === true),\r\n // workflowCarPartCategoryTypes: workflowCarPartCategoryTypes,\r\n isLoading: false,\r\n workflowId: workflowId,\r\n workflowSuppliers: ws,\r\n });\r\n };\r\n\r\n handleIsActiveChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const workflowSuppliers = [...this.state.workflowSuppliers];\r\n const updatedWorkflowSupplierIndex = workflowSuppliers.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowSupplierIndex >= 0) {\r\n workflowSuppliers[updatedWorkflowSupplierIndex] = {\r\n ...workflowSuppliers[updatedWorkflowSupplierIndex],\r\n isActive: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowSupplier(\r\n workflowSuppliers[updatedWorkflowSupplierIndex]\r\n );\r\n\r\n this.setState({ workflowSuppliers: workflowSuppliers });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n handleHasNonStockValidationChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const workflowSuppliers = [...this.state.workflowSuppliers];\r\n const updatedWorkflowSupplierIndex = workflowSuppliers.findIndex((o) => o.id === id);\r\n\r\n if (updatedWorkflowSupplierIndex >= 0) {\r\n workflowSuppliers[updatedWorkflowSupplierIndex] = {\r\n ...workflowSuppliers[updatedWorkflowSupplierIndex],\r\n hasNonStockValidation: event.target.checked\r\n };\r\n\r\n try {\r\n await this.workflowService.UpdateWorkflowSupplier(\r\n workflowSuppliers[updatedWorkflowSupplierIndex]\r\n );\r\n\r\n this.setState({ workflowSuppliers: workflowSuppliers });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n reloadWorkflowSuppliers = async (supplierId: number | null) => {\r\n if (supplierId === null) {\r\n this.setState({\r\n workflowSuppliers: [],\r\n isLoading: false\r\n });\r\n return;\r\n }\r\n\r\n const workflowSupplierInterfaceTypes = await this.organizationService.GetOrganizationInterfaces(\r\n supplierId\r\n );\r\n\r\n this.setState({\r\n workflowSupplierInterfaceTypes: workflowSupplierInterfaceTypes,\r\n isLoading: false\r\n });\r\n };\r\n\r\n addOrgForm = async () => {\r\n try {\r\n debugger;\r\n const workflowSuppliers: WorkflowSupplier[] = [];\r\n if (this.state.workflowSupplierId === null) {\r\n if (\r\n this.state.workflowSuppliers.findIndex(\r\n (item) => item.supplierId === this.state.selectedWorkflowSupplierType!.id && item.supplierApiTypeId === this.state.supplierApiType!.id\r\n // && this.state.selectedWorkflowCarPartCategoryTypeMultiple.findIndex(itemm => itemm.id === item.carPartCategoryId)!==-1\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_MSG_WORKFLOW_SUPPLIER_EXISTS',\r\n 'Furnizorul exista deja!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n let contor = 0;\r\n // for (let carPart of this.state.selectedWorkflowCarPartCategoryTypeMultiple) {\r\n workflowSuppliers.push({\r\n id: 0,\r\n supplierId: this.state.selectedWorkflowSupplierType!.id,\r\n supplierInterfaceId: this.state.selectedWorkflowSupplierInterfaceType!.id,\r\n urlInterface: this.state.urlInterface,\r\n discountTariff: this.state.discountTariff,\r\n userName: this.state.userName,\r\n password: this.state.password,\r\n port: this.state.port,\r\n clientId: this.state.clientId,\r\n hasNonStockValidation: this.state.hasNonStockValidation,\r\n // carPartCategoryId: carPart!.id,\r\n workflowId: this.state.workflowId,\r\n supplierApiTypeId: this.state.supplierApiType!.id\r\n } as WorkflowSupplier);\r\n contor = contor + 1;\r\n // }\r\n\r\n await this.workflowService.AddWorkflowSuppliers(workflowSuppliers);\r\n } else {\r\n if (this.state.workflowSuppliers.findIndex(\r\n (item) => item.supplierId === this.state.selectedWorkflowSupplierType!.id && item.supplierApiTypeId === this.state.supplierApiType!.id && item.id !== this.state.workflowSupplierId\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_MSG_WORKFLOW_SUPPLIER_EXISTS',\r\n 'Furnizorul exista deja!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n await this.workflowService.UpdateWorkflowSupplier({\r\n id: this.state.workflowSupplierId,\r\n supplierId: this.state.selectedWorkflowSupplierType!.id,\r\n supplierInterfaceId: this.state.selectedWorkflowSupplierInterfaceType!.id,\r\n urlInterface: this.state.urlInterface,\r\n discountTariff: this.state.discountTariff,\r\n userName: this.state.userName,\r\n password: this.state.password,\r\n port: this.state.port,\r\n clientId: this.state.clientId,\r\n hasNonStockValidation: this.state.hasNonStockValidation,\r\n // carPartCategoryId: this.state.selectedWorkflowCarPartCategoryType!.id,\r\n workflowId: this.state.workflowId,\r\n supplierApiTypeId: this.state.supplierApiType!.id\r\n } as WorkflowSupplier);\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n isDialogOpen: false\r\n },\r\n async () => await this.loadWorkflowSuppliers()\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleAutocompleteInterfaceChange = (newValue: any | null) => {\r\n this.setState(\r\n {\r\n selectedWorkflowSupplierInterfaceType: newValue,\r\n urlInterface: newValue === null ? '' : newValue.url,\r\n port: newValue === null ? 80 : newValue.port\r\n //isLoading: true\r\n }\r\n // , () => {\r\n // this.reloadWorkflowSuppliers(newValue === null ? null : newValue.id);\r\n // }\r\n );\r\n };\r\n\r\n // handleAutocompleteCarPartMultipleChange = (newValue: any[]) => {\r\n // this.setState({ selectedWorkflowCarPartCategoryTypeMultiple: newValue });\r\n // }\r\n\r\n // handleAutocompleteCarPartChange = (newValue: any) => {\r\n // this.setState({ selectedWorkflowCarPartCategoryType: newValue });\r\n // }\r\n handleAutocompleteSupplierChange = async (newValue: Organization | null) => {\r\n if (newValue === null) {\r\n this.setState(\r\n {\r\n selectedWorkflowSupplierType: null,\r\n workflowSupplierInterfaceTypes: [],\r\n urlInterface: '',\r\n selectedWorkflowSupplierInterfaceType: null\r\n //isLoading: true\r\n }\r\n // , () => {\r\n // this.reloadWorkflowSuppliers(newValue === null ? null : newValue!.id);\r\n // }\r\n );\r\n return;\r\n }\r\n debugger;\r\n const orgInterfaceTypes = await this.organizationService.GetOrganizationInterfaces(newValue.id);\r\n this.setState(\r\n {\r\n selectedWorkflowSupplierType: newValue,\r\n workflowSupplierInterfaceTypes: orgInterfaceTypes,\r\n selectedWorkflowSupplierInterfaceType: null\r\n //isLoading: true\r\n }\r\n // , () => {\r\n // this.reloadWorkflowSuppliers(null);\r\n // }\r\n );\r\n };\r\n\r\n private handleTextChange = (event: React.ChangeEvent) => {\r\n let value: any;\r\n if (event.target.type === 'text' || 'password') {\r\n value = event.currentTarget.value;\r\n }\r\n this.setState({\r\n ...this.state,\r\n [event.target.id]: value\r\n });\r\n };\r\n\r\n handleDiscountChange = (event: React.ChangeEvent) => {\r\n this.setState({\r\n discountTariff: event.target.value === null ? 0 : parseInt(event.target.value)\r\n });\r\n };\r\n\r\n handlePortChange = (event: React.ChangeEvent) => {\r\n this.setState({ port: event.target.value === null ? 0 : parseInt(event.target.value) });\r\n };\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n thousandSeparator\r\n decimalScale={2}\r\n isNumericString\r\n suffix=\" %\"\r\n />\r\n );\r\n };\r\n\r\n IntFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n min={0}\r\n decimalScale={0}\r\n isNumericString\r\n />\r\n );\r\n };\r\n\r\n public renderAddForm() {\r\n const isMultiple = this.state.workflowSupplierId === null ? true : false;\r\n return (\r\n this.addOrgForm()}>\r\n \r\n \r\n \r\n this.handleAutocompleteSupplierChange(newValue)\r\n }\r\n getOptionLabel={(option: Organization) => option.name}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n this.handleAutocompleteInterfaceChange(newValue)\r\n }\r\n getOptionLabel={(option: OrganizationInterface) => option.code || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n this.setState({ supplierApiType : newValue })\r\n }\r\n getOptionLabel={(option: any) => option.description}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n\r\n {\r\n name: 'supplier.name',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_SUPPLIERS_TAB_SUPPLIER_HEADER',\r\n 'Furnizor'\r\n ),\r\n options: {\r\n customBodyRender: (value: Organization, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.newWorkflowSupplier(tableMeta.rowData[0])}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'supplierInterface',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_SUPPLIERS_TAB_SUPPLIER_INTERFACE_HEADER',\r\n 'Interfata Furnizor'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: OrganizationInterface) => {\r\n return R.isNil(value) ? '' : value.code;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'urlInterface',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_SUPPLIERS_TAB_SUPPLIER_INTERFACE_URL_HEADER',\r\n 'URL'\r\n ),\r\n searchable: true,\r\n options: {\r\n setCellProps: () => ({ style: { maxWidth: '300px', 'overflow-wrap': 'break-word' } })\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'discountTariff',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_SUPPLIERS_TAB_DISCOUNT_HEADER',\r\n 'Discount (%)'\r\n ),\r\n searchable: true\r\n },\r\n {\r\n name: 'userName',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_SUPPLIERS_TAB_USERNAME_HEADER',\r\n 'Utilizator'\r\n ),\r\n searchable: true\r\n },\r\n {\r\n name: 'password',\r\n label: this.translatorService.Tranlate('WORKFLOW_SUPPLIERS_TAB_PASSWORD_HEADER', 'Parola'),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return ***;\r\n }\r\n }\r\n },\r\n {\r\n name: 'clientId',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_SUPPLIERS_TAB_CLIENT_ID_HEADER',\r\n 'Client Id'\r\n ),\r\n searchable: true\r\n },\r\n {\r\n name: 'supplierApiTypeId',\r\n label: this.translatorService.Tranlate('WORKFLOW_SUPPLIERS_TAB_PASSWORD_HEADER11', 'Tip Api Furnizor'),\r\n searchable: true,\r\n options: {\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return this.state.supplierApiTypes.find((item) => item.id === value)!.description\r\n }\r\n }\r\n },\r\n {\r\n name: 'isActive',\r\n label: this.translatorService.Tranlate('USERS_IS_ACTIVE_HEADER', 'Activ'),\r\n options: {\r\n sort: false,\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(isActive: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names[0]) !== -1 && isActive === true) ||\r\n (filterVal.indexOf(this.names[1]) !== -1 && isActive === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleIsActiveChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'hasNonStockValidation',\r\n label: this.translatorService.Tranlate('WORKFLOW_SUPPLIERS_TAB_HAS_SUPPLIER_VALIDATION_LABEL', 'Verificare furnizor'),\r\n options: {\r\n sort: false,\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(isActive: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names[0]) !== -1 && isActive === true) ||\r\n (filterVal.indexOf(this.names[1]) !== -1 && isActive === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleHasNonStockValidationChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deleteWorkflowSupplier(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n deleteWorkflowSupplier = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.workflowService.RemoveWorkflowSupplier(id);\r\n await this.loadWorkflowSuppliers();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n newWorkflowSupplier = async (supplierId: number | null) => {\r\n let newWorkflowSupplier: WorkflowSupplier;\r\n if (supplierId === null) {\r\n newWorkflowSupplier = { ...this.state.newWorkflowSupplier } as WorkflowSupplier;\r\n newWorkflowSupplier.workflowId = this.state.workflowId;\r\n newWorkflowSupplier.id = this.state.workflowSuppliers.length;\r\n } else {\r\n newWorkflowSupplier = this.state.workflowSuppliers.find((item) => item.id === supplierId)!;\r\n }\r\n this.setState({\r\n newWorkflowSupplier: newWorkflowSupplier,\r\n selectedWorkflowSupplierType: supplierId === null ? null : newWorkflowSupplier.supplier,\r\n selectedWorkflowSupplierInterfaceType:\r\n supplierId === null ? null : newWorkflowSupplier.supplierInterface,\r\n // selectedWorkflowCarPartCategoryType: supplierId === null ? null : newWorkflowSupplier.carPartCategory,\r\n // selectedWorkflowCarPartCategoryTypeMultiple: [],\r\n urlInterface: supplierId === null ? '' : newWorkflowSupplier.urlInterface,\r\n discountTariff: supplierId === null ? 0 : newWorkflowSupplier.discountTariff,\r\n userName: supplierId === null ? '' : newWorkflowSupplier.userName,\r\n password: supplierId === null ? '' : newWorkflowSupplier.password,\r\n clientId: supplierId === null ? '' : newWorkflowSupplier.clientId,\r\n hasNonStockValidation: supplierId === null ? false : newWorkflowSupplier.hasNonStockValidation,\r\n port: supplierId === null ? null : newWorkflowSupplier.port,\r\n workflowSupplierId: supplierId,\r\n supplierApiType: this.state.supplierApiTypes.find((item) => item.id === newWorkflowSupplier.supplierApiTypeId)!,\r\n isDialogOpen: true\r\n });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState({ isDialogOpen: false });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n // responsive: \"stacked\",\r\n customToolbar: () => {\r\n return (\r\n \r\n this.newWorkflowSupplier(null)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {this.state.workflowSupplierId === null\r\n ? this.translatorService.Tranlate(\r\n 'WORKFLOW_SUPPLIERS_TAB_NEW_MODAL_TITLE',\r\n 'Adauga furnizor'\r\n )\r\n : this.translatorService.Tranlate(\r\n 'WORKFLOW_SUPPLIERS_TAB_UPDATE_MODAL_TITLE',\r\n 'Actualizeaza furnizor'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(WorkflowSuppliers as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Box,\r\n Select,\r\n MenuItem,\r\n Card,\r\n CardContent,\r\n Tabs,\r\n Tab,\r\n Button,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n IconButton,\r\n DialogContent,\r\n DialogActions,\r\n TextField,\r\n List,\r\n ListSubheader,\r\n ListItem,\r\n ListItemSecondaryAction,\r\n ListItemText\r\n} from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { WorkflowReminder, WorkflowPartner, EmailTemplate } from '../../../interfaces/Workflow';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MaterialTable, { Column, EditComponentProps, Icons } from 'material-table';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { forwardRef } from 'react';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { Editor } from 'react-draft-wysiwyg';\r\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\r\nimport { convertToRaw, EditorState, ContentState, convertFromHTML } from 'draft-js';\r\nimport draftToHtml from 'draftjs-to-html';\r\nimport htmlToDraft from 'html-to-draftjs';\r\nimport SubjectIco from '@material-ui/icons/Subject';\r\nimport * as R from 'ramda';\r\nimport { mailPlaceHolders } from '../mailPlaceHolders';\r\nimport { toBase64 } from '../../../utils/toBase64';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ninterface IWorkflowRemindersState {\r\n workflowReminders: WorkflowReminder[];\r\n isLoading: boolean;\r\n workflowId: number;\r\n workflowPartnerList: WorkflowPartner[];\r\n caseStatusTypeList: IReferential[];\r\n emailList: EmailTemplate[];\r\n emailToList: IReferential[];\r\n isDialogEmailTemplateOpen: boolean;\r\n reminderId: number;\r\n selectedEmailBodyTemplate: EditorState;\r\n selectedEmailSubjectTemplate: string;\r\n}\r\n\r\ntype WorkflowRemindersProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass WorkflowReminders extends React.PureComponent<\r\n WorkflowRemindersProps,\r\n IWorkflowRemindersState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n workflowReminders: [],\r\n isLoading: true,\r\n workflowId: 0,\r\n workflowPartnerList: [],\r\n caseStatusTypeList: [],\r\n emailList: [],\r\n emailToList: [],\r\n isDialogEmailTemplateOpen: false,\r\n reminderId: 0,\r\n selectedEmailBodyTemplate: EditorState.createEmpty(),\r\n selectedEmailSubjectTemplate: ''\r\n } as IWorkflowRemindersState;\r\n\r\n componentDidMount = () => {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadData();\r\n }\r\n );\r\n };\r\n\r\n loadData = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n try {\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.EmailRecipientType\r\n );\r\n const caseStatusRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CaseStatus\r\n );\r\n\r\n const [data, workflowPartnerList, caseStatusTypes, emailList, emailToList] =\r\n await Promise.all([\r\n this.workflowService.GetWorkflowReminders(workflowId),\r\n this.workflowService.GetWorkflowPartners(workflowId),\r\n this.appReferentialService.Get(caseStatusRef!.baseUrl),\r\n this.workflowService.GetEmailTemplates(),\r\n this.appReferentialService.Get(ref!.baseUrl)\r\n ]);\r\n\r\n const partners = await this.organizationService.GetOrganizationsByIds(\r\n workflowPartnerList.map((item) => item.partnerId)\r\n );\r\n workflowPartnerList.forEach((wpItem) => {\r\n const partner = partners.find((item) => item.id === wpItem.partnerId);\r\n wpItem.partner = R.isNil(partner) ? null : partner;\r\n });\r\n data.forEach((alertItem) => {\r\n const wp = workflowPartnerList.find((i) => i.id === alertItem.workflowPartnerId);\r\n const caseStatus = caseStatusTypes.find((item) => item.id === alertItem.caseStatusId);\r\n alertItem.workflowPartner = R.isNil(wp) ? null : wp;\r\n alertItem.caseStatus = R.isNil(caseStatus) ? null : caseStatus;\r\n });\r\n\r\n this.setState({\r\n workflowReminders: data,\r\n isLoading: false,\r\n workflowId: workflowId,\r\n workflowPartnerList: workflowPartnerList.filter((item) => item.isActive === true),\r\n caseStatusTypeList: caseStatusTypes.filter((item) => item.isActive === true),\r\n emailList: emailList.filter((item) => item.isActive === true),\r\n emailToList: emailToList.filter((item) => item.isActive === true)\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n createWorkflowPartner = async (item: WorkflowPartner) => {\r\n [item.partner] = await Promise.all([this.organizationService.GetOrganization(item.partnerId)]);\r\n return item;\r\n };\r\n\r\n onEmailTemplateClick = (\r\n e: any,\r\n id: number,\r\n bodyEmailTemplate: string,\r\n subjectEmailTemplate: string\r\n ) => {\r\n const blocksFromHTML = htmlToDraft(bodyEmailTemplate);\r\n const contentState = ContentState.createFromBlockArray(\r\n blocksFromHTML.contentBlocks,\r\n blocksFromHTML.entityMap\r\n );\r\n\r\n this.setState({\r\n isDialogEmailTemplateOpen: true,\r\n reminderId: id,\r\n selectedEmailBodyTemplate: EditorState.createWithContent(contentState),\r\n selectedEmailSubjectTemplate: subjectEmailTemplate\r\n });\r\n };\r\n\r\n getColumns = () => {\r\n const lookupOrganization = this.state.workflowPartnerList.reduce(function (\r\n acc: any,\r\n cur: any,\r\n i: number\r\n ) {\r\n acc[cur.id] = cur.partner!.name;\r\n\r\n return acc;\r\n },\r\n {});\r\n\r\n const lookupCaseStatus = this.state.caseStatusTypeList.reduce(function (\r\n acc: any,\r\n cur: any,\r\n i: number\r\n ) {\r\n acc[cur.id] = cur.displayName;\r\n\r\n return acc;\r\n },\r\n {});\r\n\r\n const lookupEmail = this.state.emailList.reduce(function (acc: any, cur: any, i: number) {\r\n acc[cur.id] = cur.displayName;\r\n\r\n return acc;\r\n }, {});\r\n\r\n const lookupEmailTo = this.state.emailToList.reduce(function (acc: any, cur: any, i: number) {\r\n acc[cur.id] = cur.displayName;\r\n\r\n return acc;\r\n }, {});\r\n\r\n return [\r\n {\r\n field: 'workflowPartnerId',\r\n title: this.translatorService.Tranlate(\r\n 'WORKFLOW_REMINDERS_TAB_ORGANIZATION_HEADER',\r\n 'Organizatie'\r\n ),\r\n searchable: true,\r\n lookup: lookupOrganization,\r\n filtering: true,\r\n render: (rowData: WorkflowReminder) => {\r\n return rowData.workflowPartner!.partner!.displayName;\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.value)}\r\n >\r\n {this.state.workflowPartnerList\r\n .sort(function (a: WorkflowPartner, b: WorkflowPartner) {\r\n return a.partner!.displayName.localeCompare(b.partner!.displayName);\r\n })\r\n .map((item) => (\r\n \r\n {item.partner!.displayName}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'caseStatusId',\r\n title: this.translatorService.Tranlate(\r\n 'WORKFLOW_REMINDERS_TAB_CASE_STATUS_HEADER',\r\n 'Stare Dosar'\r\n ),\r\n searchable: true,\r\n filtering: false,\r\n lookup: lookupCaseStatus,\r\n render: (rowData: WorkflowReminder) => {\r\n return rowData.caseStatus === null ? '' : rowData.caseStatus!.displayName;\r\n },\r\n\r\n editComponent: (props: EditComponentProps) => {\r\n let caseStatusIdList = [] as any[];\r\n if (!Array.isArray(props.value) && R.isNil(props.value)) {\r\n caseStatusIdList = caseStatusIdList;\r\n } else if (!Array.isArray(props.value) && !R.isNil(props.value)) {\r\n caseStatusIdList.push(props.value);\r\n } else {\r\n caseStatusIdList = R.isNil(props.value) ? [] : props.value;\r\n }\r\n return (\r\n props.onChange(e.target.value)}\r\n >\r\n {this.state.caseStatusTypeList\r\n .sort(function (a: any, b: any) {\r\n return a.displayName.localeCompare(b.displayName);\r\n })\r\n .map((item) => (\r\n \r\n {item.displayName}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'emailTemplateId',\r\n title: this.translatorService.Tranlate('WORKFLOW_REMINDERS_TAB_EMAIL_HEADER', 'Email'),\r\n searchable: true,\r\n filtering: false,\r\n lookup: lookupEmail,\r\n render: (rowData: WorkflowReminder) => {\r\n return (\r\n \r\n this.onEmailTemplateClick(e, rowData.id, rowData.body, rowData.subject)\r\n }\r\n >\r\n {rowData.emailTemplate!.displayName}\r\n \r\n );\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.value)}\r\n >\r\n {this.state.emailList\r\n .sort(function (a: any, b: any) {\r\n return a.displayName.localeCompare(b.displayName);\r\n })\r\n .map((item) => (\r\n \r\n {item.displayName}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'numberOfHours',\r\n title: this.translatorService.Tranlate(\r\n 'WORKFLOW_REMINDERS_TAB_NR_HOURS_HEADER',\r\n 'Numar Ore'\r\n ),\r\n searchable: true,\r\n filtering: false,\r\n type: 'numeric'\r\n } as Column,\r\n {\r\n field: 'emailRecipientTypeId',\r\n title: this.translatorService.Tranlate('WORKFLOW_REMINDERS_TAB_EMAIL_TO_HEADER', 'Catre'),\r\n searchable: true,\r\n filtering: false,\r\n lookup: lookupEmailTo,\r\n render: (rowData: WorkflowReminder) => {\r\n return rowData.emailRecipientType!.displayName;\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.value)}\r\n >\r\n {this.state.emailToList\r\n .sort(function (a: any, b: any) {\r\n return a.displayName.localeCompare(b.displayName);\r\n })\r\n .map((item) => (\r\n \r\n {item.displayName}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate(\r\n 'WORKFLOW_REMINDERS_TAB_MODIFIED_DATE_HEADER',\r\n 'Data modificare'\r\n ),\r\n searchable: true,\r\n filtering: false,\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .format(this.props.appState.longDateFormat);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column\r\n ];\r\n };\r\n\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n deleteTooltip: this.translatorService.Tranlate('DELETE', 'Sterge'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza'),\r\n deleteText: this.translatorService.Tranlate(\r\n 'DELETE_TEXT',\r\n 'Sigur doriti sa stergeti aceasta inregistrare?'\r\n )\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n\r\n onRowUpdate = (newData: WorkflowReminder, oldData?: WorkflowReminder): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n if (\r\n R.isNil(newData.workflowPartnerId) ||\r\n R.isNil(newData.emailTemplateId) ||\r\n R.isNil(newData.emailRecipientTypeId) ||\r\n R.isNil(newData.numberOfHours)\r\n ) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n return;\r\n }\r\n let caseStatusIdList = [] as any[];\r\n if (!Array.isArray(newData.caseStatusId) && R.isNil(newData.caseStatusId)) {\r\n caseStatusIdList = caseStatusIdList;\r\n } else if (!Array.isArray(newData.caseStatusId) && !R.isNil(newData.caseStatusId)) {\r\n caseStatusIdList.push(newData.caseStatusId);\r\n } else {\r\n caseStatusIdList = [...newData.caseStatusId];\r\n }\r\n\r\n if (\r\n this.state.workflowReminders.findIndex(\r\n (item) =>\r\n item.workflowPartnerId === newData.workflowPartnerId &&\r\n item.emailTemplateId === newData.emailTemplateId &&\r\n item.numberOfHours.toString() === newData.numberOfHours.toString() &&\r\n item.emailRecipientTypeId === newData.emailRecipientTypeId &&\r\n (item.caseStatusId === null ||\r\n caseStatusIdList.length === 0 ||\r\n caseStatusIdList.findIndex((itemm) => itemm === item.caseStatusId) !== -1) &&\r\n item.id !== newData.id\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_MSG_WORKFLOW_PERMISSION_EXISTS',\r\n 'Permisiunea exista deja!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n reject();\r\n return;\r\n }\r\n\r\n newData.workflowPartner = null;\r\n newData.emailRecipientType = null;\r\n\r\n if (newData.emailTemplateId !== oldData.emailTemplateId) {\r\n newData.subject = newData.emailTemplate!.subject;\r\n newData.body = newData.emailTemplate!.body;\r\n }\r\n newData.emailTemplate = null;\r\n newData.caseStatus = null;\r\n\r\n if (caseStatusIdList.length === 0) {\r\n const workflowAlert = newData;\r\n workflowAlert.caseStatusId = null;\r\n await this.workflowService.UpdateWorkflowReminder(workflowAlert);\r\n } else {\r\n let contor = 1;\r\n for (const statusId of caseStatusIdList) {\r\n const workflowAlert = newData;\r\n workflowAlert.caseStatusId = statusId;\r\n contor === 1\r\n ? await this.workflowService.UpdateWorkflowReminder(workflowAlert)\r\n : await this.workflowService.AddWorkflowReminder({ ...workflowAlert, id: 0 });\r\n contor = contor + 1;\r\n }\r\n }\r\n\r\n await this.loadData();\r\n resolve();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n onRowDelete = (oldData: WorkflowReminder): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n await this.workflowService.RemoveWorkflowReminder(oldData.id);\r\n await this.loadData();\r\n resolve();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n onRowAdd = (newData: WorkflowReminder): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n try {\r\n if (\r\n R.isNil(newData.workflowPartnerId) ||\r\n R.isNil(newData.emailTemplateId) ||\r\n R.isNil(newData.emailRecipientTypeId) ||\r\n R.isNil(newData.numberOfHours)\r\n ) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n return;\r\n }\r\n let caseStatusIdList = [] as any[];\r\n if (!Array.isArray(newData.caseStatusId) && R.isNil(newData.caseStatusId)) {\r\n caseStatusIdList = caseStatusIdList;\r\n } else if (!Array.isArray(newData.caseStatusId) && !R.isNil(newData.caseStatusId)) {\r\n caseStatusIdList.push(newData.caseStatusId);\r\n } else {\r\n caseStatusIdList = newData.caseStatusId;\r\n }\r\n\r\n if (\r\n this.state.workflowReminders.findIndex(\r\n (item) =>\r\n item.workflowPartnerId === newData.workflowPartnerId &&\r\n item.emailTemplateId === newData.emailTemplateId &&\r\n item.numberOfHours.toString() === newData.numberOfHours.toString() &&\r\n item.emailRecipientTypeId === newData.emailRecipientTypeId &&\r\n (item.caseStatusId === null ||\r\n caseStatusIdList.length === 0 ||\r\n caseStatusIdList.findIndex((itemm) => itemm === item.caseStatusId) !== -1)\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_MSG_WORKFLOW_PERMISSION_EXISTS',\r\n 'Permisiunea exista deja!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n reject();\r\n return;\r\n }\r\n\r\n newData.workflowPartner = null;\r\n newData.emailRecipientType = null;\r\n\r\n const emailTemplate = this.state.emailList.find(\r\n (item) => item.id === newData.emailTemplateId\r\n );\r\n\r\n newData.subject = emailTemplate!.subject;\r\n newData.body = emailTemplate!.body;\r\n newData.emailTemplate = null;\r\n newData.caseStatus = null;\r\n\r\n if (caseStatusIdList.length === 0) {\r\n const workflowAlert = newData;\r\n workflowAlert.caseStatusId = null;\r\n await this.workflowService.AddWorkflowReminder(workflowAlert);\r\n } else {\r\n for (const statusId of caseStatusIdList) {\r\n const workflowAlert = newData;\r\n workflowAlert.caseStatusId = statusId;\r\n await this.workflowService.AddWorkflowReminder(workflowAlert);\r\n }\r\n }\r\n\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n return (\r\n this.onRowAdd(newData),\r\n onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData),\r\n onRowDelete: (oldData: any) => this.onRowDelete(oldData)\r\n }}\r\n />\r\n );\r\n };\r\n closeDialog = () => {\r\n this.setState({ isDialogEmailTemplateOpen: false });\r\n };\r\n\r\n onEditorStateChange = (editorState: EditorState) => {\r\n this.setState({ selectedEmailBodyTemplate: editorState });\r\n };\r\n\r\n renderEditEmailTemplate = () => {\r\n return (\r\n this.onEditorStateChange(editorState)}\r\n toolbar={{\r\n options: [\r\n 'inline',\r\n 'blockType',\r\n 'fontSize',\r\n 'fontFamily',\r\n 'list',\r\n 'textAlign',\r\n 'colorPicker',\r\n 'link',\r\n 'emoji',\r\n 'history',\r\n 'image'\r\n ],\r\n image: {\r\n className: undefined,\r\n component: undefined,\r\n popupClassName: undefined,\r\n urlEnabled: false,\r\n uploadEnabled: true,\r\n alignmentEnabled: true,\r\n uploadCallback: async (file: File) => {\r\n const imageBase64String = await toBase64(file);\r\n return Promise.resolve({ data: { link: imageBase64String } });\r\n },\r\n previewImage: true,\r\n inputAccept: 'image/gif,image/jpeg,image/jpg,image/png,image/svg',\r\n alt: { present: false, mandatory: false },\r\n defaultSize: {\r\n height: '140',\r\n width: 'auto'\r\n }\r\n }\r\n }}\r\n />\r\n );\r\n };\r\n\r\n saveEmailTemplateChanges = async () => {\r\n const id = this.state.reminderId;\r\n const workflowReminders = [...this.state.workflowReminders];\r\n const index = workflowReminders.findIndex((item) => item.id === id);\r\n workflowReminders[index] = {\r\n ...workflowReminders[index],\r\n body: draftToHtml(convertToRaw(this.state.selectedEmailBodyTemplate.getCurrentContent())),\r\n subject: this.state.selectedEmailSubjectTemplate\r\n };\r\n await this.workflowService.UpdateWorkflowReminder(workflowReminders[index]);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n isDialogEmailTemplateOpen: false\r\n },\r\n async () => await this.loadData()\r\n );\r\n };\r\n\r\n placeHolderClick = (text: string) => {\r\n const editorState = this.state.selectedEmailBodyTemplate;\r\n const newBlockMap = convertFromHTML('{{' + text + '}}');\r\n const contentState = editorState.getCurrentContent();\r\n const selectionState = editorState.getSelection();\r\n const key = selectionState.getAnchorKey();\r\n const blocksAfter = contentState\r\n .getBlockMap()\r\n .skipUntil(function (_, k) {\r\n return k === key;\r\n })\r\n .skip(1)\r\n .toArray();\r\n const blocksBefore = contentState\r\n .getBlockMap()\r\n .takeUntil(function (_, k) {\r\n return k === key;\r\n })\r\n .toArray();\r\n\r\n newBlockMap.contentBlocks = blocksBefore\r\n .concat([contentState.getBlockForKey(key)])\r\n .concat(newBlockMap.contentBlocks)\r\n .concat(blocksAfter);\r\n\r\n const newContentState = ContentState.createFromBlockArray(\r\n newBlockMap.contentBlocks,\r\n newBlockMap.entityMap\r\n );\r\n const newEditorState = EditorState.createWithContent(newContentState);\r\n this.setState({ selectedEmailBodyTemplate: newEditorState });\r\n };\r\n addPlaceholderToSubject = (text: string) => {\r\n this.setState({\r\n selectedEmailSubjectTemplate: this.state.selectedEmailSubjectTemplate + '{{' + text + '}}'\r\n });\r\n };\r\n\r\n renderMailPlaceHolders = () => {\r\n return (\r\n Placeholders}>\r\n {mailPlaceHolders.map((val, index) => (\r\n \r\n this.placeHolderClick(val)} />\r\n \r\n this.addPlaceholderToSubject(val)}>\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n
\r\n \r\n fullScreen\r\n >\r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_FORM_ACTION_SEND_EMAIL_EDIT_EMAIL_TEMPLATE_MODAL_TITLE',\r\n 'Editeaza template-ul email-ului'\r\n )}\r\n \r\n \r\n \r\n this.closeDialog()}\r\n size={'small'}\r\n style={{ color: '#ffffff' }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n this.setState({\r\n selectedEmailSubjectTemplate: e.target.value\r\n })\r\n }\r\n variant=\"outlined\"\r\n size=\"small\"\r\n />\r\n {this.renderEditEmailTemplate()}\r\n \r\n \r\n \r\n {this.renderMailPlaceHolders()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (stateProps: any, dispatchProps: any, ownProps: WorkflowRemindersProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(WorkflowReminders as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Box,\r\n TextField,\r\n Card,\r\n CardContent,\r\n Tabs,\r\n Tab,\r\n Switch,\r\n FormControlLabel,\r\n Chip\r\n} from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { OrganizationInterface } from '../../../interfaces/Organization';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MaterialTable, { Column, Icons } from 'material-table';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { forwardRef } from 'react';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport { WorkflowInterface } from '../../../interfaces/Workflow';\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\ninterface IWorkflowInterfacesState {\r\n interfaces: WorkflowInterface[];\r\n isLoading: boolean;\r\n workflowId: number;\r\n}\r\ntype WorkflowInterfacesProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\nclass WorkflowInterfaces extends React.PureComponent<\r\n WorkflowInterfacesProps,\r\n IWorkflowInterfacesState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n static contextType = ApplicationContext;\r\n state = {\r\n interfaces: [],\r\n isLoading: true,\r\n workflowId: 0\r\n } as IWorkflowInterfacesState;\r\n componentDidMount = () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadWorkflowInterfaces();\r\n }\r\n );\r\n };\r\n loadWorkflowInterfaces = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n try {\r\n const data = await this.workflowService.GetWorkflowInterfaces(workflowId);\r\n this.setState({\r\n interfaces: data,\r\n isLoading: false,\r\n workflowId: workflowId\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n getColumns = () => {\r\n return [\r\n {\r\n field: 'clientAccess',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_INTERFACE_CLIENT_ACCESS_HEADER',\r\n 'Acces client'\r\n ),\r\n render: (rowData: any) => {\r\n return (\r\n \r\n }\r\n label={''}\r\n />\r\n );\r\n },\r\n editComponent: (props) => (\r\n props.onChange(e.target.checked)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={''}\r\n />\r\n )\r\n } as Column,\r\n {\r\n field: 'supportsOAuth2',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_INTERFACE_CLIENT_OAUTH2_HEADER',\r\n 'OAuth2'\r\n ),\r\n render: (rowData: any) => {\r\n return (\r\n \r\n }\r\n label={''}\r\n />\r\n );\r\n },\r\n editComponent: (props) => (\r\n props.onChange(e.target.checked)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={''}\r\n />\r\n )\r\n } as Column,\r\n {\r\n field: 'aftSupplier',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_INTERFACE_AFT_SUPPLIER_HEADER',\r\n 'Uleiul Grupului'\r\n ),\r\n render: (rowData: any) => {\r\n return (\r\n \r\n }\r\n label={''}\r\n />\r\n );\r\n },\r\n editComponent: (props) => (\r\n props.onChange(e.target.checked)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={''}\r\n />\r\n )\r\n } as Column,\r\n {\r\n field: 'smallPartPercentage',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_SMALL_PART_PERCENTAGE_HEADER', 'Piese mici %'),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'code',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_CODE_HEADER', 'Cod'),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'url',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_URL_HEADER', 'URL'),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'port',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_PORT_HEADER', 'Port'),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'refreshTokenValidUntil',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_STATUS_HEADER', 'Status'),\r\n editable: 'never',\r\n render: (rowData: OrganizationInterface) => {\r\n if (!rowData.supportsOAuth2) {\r\n return (\r\n \r\n );\r\n }\r\n if (!rowData.refreshTokenValidUntil) {\r\n return (\r\n \r\n );\r\n }\r\n if (\r\n rowData.refreshTokenValidUntil &&\r\n moment.utc(rowData.refreshTokenValidUntil).isAfter(moment.utc())\r\n ) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n );\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n editComponent: (props: any) => {\r\n if (!props.rowData.supportsOAuth2) {\r\n return <>;\r\n }\r\n return (\r\n props.onChange(e.target.value)}\r\n />\r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'userName',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_UER_HEADER', 'Utilizator'),\r\n searchable: true,\r\n render: (props: OrganizationInterface) => {\r\n if (props.clientAccess) {\r\n return '-';\r\n }\r\n return props.userName;\r\n },\r\n editComponent: (props: any) => {\r\n if (props.rowData.clientAccess) {\r\n return <>;\r\n }\r\n return (\r\n props.onChange(e.target.value)}\r\n />\r\n );\r\n }\r\n },\r\n {\r\n field: 'password',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_PASSWORD_HEADER', 'Parola'),\r\n render: (props: OrganizationInterface) => {\r\n if (props.clientAccess) {\r\n return '-';\r\n }\r\n return '***';\r\n },\r\n editComponent: (props: any) => {\r\n if (props.rowData.clientAccess) {\r\n return <>;\r\n }\r\n return (\r\n props.onChange(e.target.value)}\r\n />\r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'customerId',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_INTERFACE_CUSTOMER_ID_HEADER',\r\n 'Client Id'\r\n ),\r\n searchable: true,\r\n render: (props: OrganizationInterface) => {\r\n if (props.clientAccess) {\r\n return '-';\r\n }\r\n if (props.supportsOAuth2) {\r\n return '***';\r\n }\r\n return props.customerId;\r\n },\r\n editComponent: (props: any) => {\r\n if (props.rowData.clientAccess) {\r\n return <>;\r\n }\r\n return (\r\n props.onChange(e.target.value)}\r\n />\r\n );\r\n }\r\n },\r\n {\r\n field: 'secondUser',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_INTERFACE_SECOND_USER_HEADER',\r\n 'Utilizator 2'\r\n ),\r\n searchable: true,\r\n render: (props: OrganizationInterface) => {\r\n if (props.clientAccess || props.supportsOAuth2) {\r\n return '-';\r\n }\r\n return props.secondUser;\r\n },\r\n editComponent: (props: any) => {\r\n if (props.rowData.clientAccess || props.supportsOAuth2) {\r\n return <>;\r\n }\r\n return (\r\n props.onChange(e.target.value)}\r\n />\r\n );\r\n }\r\n }\r\n ];\r\n };\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n deleteTooltip: this.translatorService.Tranlate('DELETE', 'Sterge'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza'),\r\n deleteText: this.translatorService.Tranlate(\r\n 'DELETE_TEXT',\r\n 'Sigur doriti sa stergeti aceasta inregistrare?'\r\n )\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n onRowUpdate = (newData: WorkflowInterface, oldData?: WorkflowInterface): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n await this.workflowService.UpdateWorkflowInterface(newData);\r\n await this.loadWorkflowInterfaces();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n onRowDelete = (oldData: WorkflowInterface): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n await this.workflowService.RemoveWorkflowInterface(oldData.id);\r\n await this.loadWorkflowInterfaces();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n onRowAdd = (newData: WorkflowInterface): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n try {\r\n newData.workflowId = this.state.workflowId;\r\n await this.workflowService.AddWorkflowInterface(newData);\r\n await this.loadWorkflowInterfaces();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n public renderTable = () => {\r\n return (\r\n this.onRowAdd(newData),\r\n onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData),\r\n onRowDelete: (oldData: any) => this.onRowDelete(oldData)\r\n }}\r\n />\r\n );\r\n };\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\nconst mergeProps = (stateProps: any, dispatchProps: any, ownProps: WorkflowInterfacesProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(WorkflowInterfaces as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Organization } from '../../../interfaces/Organization';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { Box, Button, Card, CardContent, Tabs, Tab, Switch, IconButton } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { WorkflowCostCenter } from '../../../interfaces/Workflow';\r\nimport { IWorkflowService } from '../../../services/Interfaces/IWorkflowService';\r\nimport { isNullOrUndefined } from 'util';\r\nimport _ from 'lodash';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\n\r\ninterface IWorkflowCostCentersState {\r\n workflowCostCenters: WorkflowCostCenter[];\r\n isLoading: boolean;\r\n costCenters: IReferential[];\r\n selectedCostCenter: IReferential[];\r\n workflowId: number;\r\n}\r\n\r\ntype IWorkflowCostCentersProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass WorkflowCostCenters extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private workflowService!: IWorkflowService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n workflowCostCenters: [],\r\n isLoading: false,\r\n costCenters: [],\r\n selectedCostCenter: [],\r\n workflowId: 0\r\n } as IWorkflowCostCentersState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadWorkflowCostCenters();\r\n }\r\n );\r\n }\r\n \r\n public hasRole = (roleCode: string): boolean => {\r\n return this.props.appState.appUser?.userRole?.code === roleCode;\r\n };\r\n\r\n loadWorkflowCostCenters = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n const workflowId = Number.parseInt(this.props.match.params.workflowId);\r\n\r\n if (Number.isNaN(hoId) || Number.isNaN(workflowId)) {\r\n return;\r\n }\r\n\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CostCenter\r\n );\r\n\r\n const [workflowCostCenterList, costCenters] = await Promise.all([\r\n this.workflowService.GetWorkflowCostCenters(workflowId),\r\n this.appReferentialService.Get(ref!.baseUrl)\r\n ]);\r\n\r\n workflowCostCenterList.forEach((ojt) => {\r\n const costCenter = costCenters.find((item) => item.id === ojt.costCenterId);\r\n ojt.costCenter = isNullOrUndefined(costCenter) ? null : costCenter;\r\n });\r\n\r\n console.log('workflowCostCenterList', workflowCostCenterList);\r\n console.log('costCenters', costCenters);\r\n\r\n this.setState({\r\n workflowCostCenters: workflowCostCenterList,\r\n costCenters: costCenters.filter((item) => item.isActive === true),\r\n isLoading: false,\r\n workflowId: workflowId\r\n });\r\n };\r\n\r\n \r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'costCenter',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_TAB_COST_CENTER',\r\n 'Centru de Cost'\r\n ),\r\n options: {\r\n filter: true,\r\n sort: false,\r\n customBodyRender: (value: Organization) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'WORKFLOW_PARTNERS_TAB_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.deleteWorkflowCostCenter(e, tableMeta)}\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n deleteWorkflowCostCenter = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.workflowService.RemoveWorkflowCostCenter(id);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadWorkflowCostCenters();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n addWorkflowCostCenter = async () => {\r\n try {\r\n if (\r\n this.state.workflowCostCenters.findIndex(\r\n (item) =>\r\n this.state.selectedCostCenter.findIndex((itemm) => itemm.id === item.costCenterId) !==\r\n -1\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_WORKFLOW_COST_CENTER_EXISTS', 'Centrul de cost exista deja!'),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n const workflowCostCenters = [];\r\n for (const costCenter of this.state.selectedCostCenter) {\r\n workflowCostCenters.push({\r\n id: 0,\r\n workflowId: this.state.workflowId,\r\n costCenterId: costCenter!.id,\r\n costCenter: costCenter\r\n } as WorkflowCostCenter);\r\n }\r\n\r\n await this.workflowService.AddWorkflowCostCenter(workflowCostCenters);\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedCostCenter: []\r\n },\r\n () => {\r\n this.loadWorkflowCostCenters();\r\n }\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n\r\n handleWorkflowCostCenterChange = (newValue: any[]) => {\r\n this.setState({ selectedCostCenter: newValue });\r\n };\r\n\r\n renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n this.handleWorkflowCostCenterChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(WorkflowCostCenters as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Grid, Button, Box } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../../context/Contexts';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport WorkflowGeneralData from './WorkflowGeneralData';\r\nimport WorkflowParameters from './WorkflowParameters';\r\nimport WorkflowOrganizationTypes from './WorkflowOrganizationTypes';\r\nimport WorkflowPartners from './WorkflowPartners';\r\nimport WorkflowTariffs from './WorkflowTariffs';\r\nimport WorkflowCaseStructure from '../workflows/WorkflowCaseStructure';\r\nimport WorkflowSuppliers2 from '../workflows/WorkflowSuppliers2';\r\nimport WorkflowReminders from '../workflows/WorkflowNotifications';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { PageTitle } from '../../../layout-components';\r\nimport WorkflowInterfaces from './WorkflowInterfaces';\r\nimport WorkflowCostCenters from './WorkflowCostCenters';\r\n\r\ninterface IOrganizationAdminStateState {\r\n selectedTab: number;\r\n}\r\n\r\ntype IOrganizationAdminProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass OrganizationAdmin extends React.PureComponent<\r\n IOrganizationAdminProps,\r\n IOrganizationAdminStateState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n\r\n static contextType = ApplicationContext;\r\n state = { selectedTab: 0 };\r\n\r\n onButtonClick = (newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.onButtonClick(0)}\r\n >\r\n \r\n {this.translatorService.Tranlate('WORKFLOWS_TAB_GENERAL_DATA', 'Date Generale')}\r\n \r\n \r\n \r\n \r\n this.onButtonClick(1)}\r\n >\r\n {this.translatorService.Tranlate('WORKFLOWS_TAB_PARAMETERS', 'Parametri')}\r\n \r\n \r\n \r\n this.onButtonClick(2)}\r\n >\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOWS_TAB_ORGANIZATION_TYPES',\r\n 'Tip organizatie'\r\n )}\r\n \r\n \r\n \r\n \r\n this.onButtonClick(3)}\r\n >\r\n {this.translatorService.Tranlate('WORKFLOWS_TAB_PARTNERS', 'Parteneri')}\r\n \r\n \r\n \r\n this.onButtonClick(4)}\r\n >\r\n {this.translatorService.Tranlate('WORKFLOWS_TAB_TARIFFS', 'Tarife')}\r\n \r\n \r\n \r\n this.onButtonClick(5)}\r\n >\r\n {this.translatorService.Tranlate('WORKFLOWS_TAB_SUPPLIERS', 'Furnizori')}\r\n \r\n \r\n {/* \r\n \r\n */}\r\n {/* \r\n \r\n */}\r\n \r\n this.onButtonClick(8)}\r\n >\r\n \r\n {this.translatorService.Tranlate(\r\n 'WORKFLOWS_TAB_CASE_STRUCTURE',\r\n 'Structura dosar'\r\n )}\r\n \r\n \r\n \r\n \r\n this.onButtonClick(9)}\r\n >\r\n {this.translatorService.Tranlate('WORKFLOWS_TAB_REMINDERS', 'Notificari')}\r\n \r\n \r\n \r\n this.onButtonClick(10)}\r\n >\r\n {this.translatorService.Tranlate('WORKFLOW_TAB_INTERFACES', 'Interfete')}\r\n \r\n \r\n \r\n this.onButtonClick(11)}\r\n >\r\n {this.translatorService.Tranlate('WORKFLOW_TAB_COST_CENTERS', 'Centre de Cost')}\r\n \r\n \r\n {/* \r\n \r\n */}\r\n {/* \r\n \r\n */}\r\n \r\n \r\n \r\n {this.state.selectedTab === 0 ? : null}\r\n {this.state.selectedTab === 1 ? : null}\r\n {this.state.selectedTab === 2 ? : null}\r\n {this.state.selectedTab === 3 ? : null}\r\n {this.state.selectedTab === 4 ? : null}\r\n {this.state.selectedTab === 5 ? : null}\r\n\r\n {this.state.selectedTab === 8 ? : null}\r\n {this.state.selectedTab === 9 ? : null}\r\n {this.state.selectedTab === 10 ? : null}\r\n {this.state.selectedTab === 11 ? : null}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(OrganizationAdmin as any));\r\n","import React from 'react';\r\nimport { ScaleLoader } from 'react-spinners';\r\n\r\nconst Loader: React.FC = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Loader;\r\n","import * as React from 'react';\r\nimport { ApplicationState, AppState, CaseSettingsActionCreators, CaseSettingsState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { Case, CaseFilters, TariffPercentResponse } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { Card, Grid, IconButton, Tab, Tabs, AppBar, TextField, Tooltip, Button, Dialog, DialogTitle, DialogContent, Typography } from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport moment from 'moment';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { CaseStatusTypeCode, FilterTypeCodeEnum, OrderStatusCode, ReferentialCode, SupplierCode } from '../../helpers/Constants';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { Organization, OrganizationFilterType } from '../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { IWorkflowService } from '../../services/Interfaces/IWorkflowService';\r\nimport { Workflow } from '../../interfaces/Workflow';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { MuiPickersUtilsProvider, DatePicker } from '@material-ui/pickers';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport * as R from 'ramda';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { Vehicle } from '../../interfaces/Vehicle';\r\nimport { VehicleHelper } from '../../helpers/VehicleHelper';\r\nimport Loader from '../Loader';\r\nimport FileCopyOutlined from '@material-ui/icons/FileCopyOutlined';\r\nimport _ from 'lodash';\r\nimport { Order } from '../../interfaces/Order';\r\nimport { IOrderService } from '../../services/Interfaces/IOrderService';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport OrderDetails from '../orders/OrderDetails';\r\nimport { CaseSettings } from '../../interfaces/CaseSettings';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\n\r\ntype CasesProps = {\r\n appState: AppState;\r\n caseSettingsState: CaseSettingsState;\r\n } & ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface IWorkflow {\r\n workflowId: number;\r\n workflowDisplayName: string;\r\n}\r\n\r\ninterface ICasesState {\r\n caseList: Case[];\r\n organizationEntities: Organization[];\r\n selectedOrgEntities: Organization[];\r\n selectedOrgFilter: OrganizationFilterType | null;\r\n userWorkflowsList: Workflow[];\r\n workflowsList: IWorkflow[];\r\n selectedWorkflows: IWorkflow[];\r\n organizationCasePartnerList: Organization[];\r\n selectedOrgCasePartner: Organization[];\r\n caseStatusList: IReferential[];\r\n selectedCaseStatus: IReferential[];\r\n caseTypesList: IReferential[];\r\n selectedCaseType: IReferential[];\r\n assignedToUserList: AppUser[];\r\n createdByUserList: AppUser[];\r\n selectedAssignedToUser: AppUser[];\r\n selectedCreatedByUser: AppUser[];\r\n casePolicyTypesList: IReferential[];\r\n selectedPolicyType: IReferential[];\r\n selectedTab: number;\r\n isLoading: boolean;\r\n isLoadingCases: boolean;\r\n filterStartDate: Date | null;\r\n filterEndDate: Date | null;\r\n count: number;\r\n page: number;\r\n pageSize: number;\r\n showCopyCase: boolean;\r\n orderList: Order[];\r\n isDialogOpen: boolean;\r\n isLoadingDialog: boolean;\r\n isOrderDialogOpen: boolean;\r\n selectedOrder: Order | null;\r\n selectedCase: Case | null;\r\n showOrderDetails: boolean;\r\n vinSearchText: string;\r\n plateNumberSearchText: string;\r\n caseNumberSearchText: string;\r\n showCaseStatus: boolean;\r\n hidePartnerTab: boolean;\r\n makeSearchText: string;\r\n modelSearchText: string;\r\n showMakeModelSearch: boolean;\r\n hideLkqColumns: boolean;\r\n}\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\nclass Cases extends React.PureComponent {\r\n private workflowService!: IWorkflowService;\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appUserService!: IAppUserService;\r\n private organizationService!: IOrganizationService;\r\n private vehicleService!: IVehicleService;\r\n private orderService!: IOrderService;\r\n static contextType = ApplicationContext;\r\n private appReferentialService!: IReferentialService;\r\n\r\n state = {\r\n caseList: [],\r\n organizationEntities: [],\r\n selectedOrgEntities: [],\r\n workflowsList: [],\r\n userWorkflowsList: [],\r\n selectedWorkflows: [],\r\n organizationCasePartnerList: [],\r\n selectedOrgFilter: null,\r\n selectedOrgCasePartner: [],\r\n caseStatusList: [],\r\n selectedCaseStatus: [],\r\n caseTypesList: [],\r\n selectedCaseType: [],\r\n assignedToUserList: [],\r\n createdByUserList: [],\r\n selectedAssignedToUser: [],\r\n selectedCreatedByUser: [],\r\n casePolicyTypesList: [],\r\n selectedPolicyType: [],\r\n selectedTab: 0,\r\n isLoading: false,\r\n isLoadingCases: false,\r\n count: 1,\r\n page: 0,\r\n pageSize: 10,\r\n filterStartDate: new Date(new Date().setMonth(new Date().getMonth() - 3)),\r\n filterEndDate: new Date(),\r\n showCopyCase: false,\r\n orderList: [],\r\n isDialogOpen: false,\r\n isLoadingDialog: false,\r\n isOrderDialogOpen: false,\r\n selectedOrder: null,\r\n selectedCase: null,\r\n showOrderDetails: false,\r\n vinSearchText: '',\r\n plateNumberSearchText: '',\r\n caseNumberSearchText: '',\r\n showCaseStatus: false,\r\n hidePartnerTab: false,\r\n makeSearchText: '',\r\n modelSearchText: '',\r\n showMakeModelSearch: false,\r\n hideLkqColumns: false\r\n } as ICasesState;\r\n\r\n public async componentDidMount() {\r\n const filters = {\r\n assignedToList: [],\r\n createdByList: [],\r\n caseTypeIds: [],\r\n partnerIds: [],\r\n statusIds: [],\r\n workflowIds: [],\r\n organizationIds: [],\r\n page: this.state.page + 1,\r\n pageSize: this.state.pageSize,\r\n isInternal: this.isInternal(),\r\n text: '',\r\n isNew: false,\r\n dateFilterCode: FilterTypeCodeEnum.DS.toString(),\r\n dateFilterStartDate: new Date(new Date().setMonth(new Date().getMonth() - 3)),\r\n datefilterEndDate: new Date(),\r\n vehicleIds: [],\r\n policyTypeIds: [],\r\n vinSearchText: '',\r\n plateNumberSearchText: '',\r\n caseNumberSearchText: '',\r\n countryCode: null,\r\n isAssignedToId: false,\r\n makeSearchText: '',\r\n modelSearchText: '',\r\n showMakeModelSearch: false,\r\n hideLkqColumns: false\r\n } as CaseFilters;\r\n\r\n this.setState({\r\n isLoading: true\r\n });\r\n\r\n const refpolicyType = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.PolicyType\r\n );\r\n const [cases, workflows, policyTypes] = await Promise.all([\r\n this.caseService.GetCases(filters),\r\n this.workflowService.GetUserWorkflows(),\r\n this.appReferentialService.Get(refpolicyType!.baseUrl)\r\n ]);\r\n const caseDetailsList = cases;\r\n\r\n const [usersAssignedLIst, users, orgOwners, vehicles] = await Promise.all([\r\n this.appUserService.GetUsersInfo(\r\n Array.from(new Set(cases.cases.map((item) => item.caseStatus.assignedToId)))\r\n ),\r\n this.appUserService.GetUsersInfo(\r\n Array.from(new Set(cases.cases.map((item) => item.caseStatus.userId)))\r\n ),\r\n this.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(cases.cases.map((item) => item.organizationOwnerId)))\r\n ),\r\n this.vehicleService.GetVehicleList(\r\n Array.from(\r\n new Set(cases.cases.filter((c) => !R.isNil(c.vehicleId)).map((item) => item.vehicleId!))\r\n )\r\n )\r\n ]);\r\n\r\n let organization: Organization | null = null;\r\n if (!R.isNil(this.props.appState!.appUser!.organizationId)) {\r\n organization = await this.organizationService.GetOrganizationInfo(\r\n this.props.appState!.appUser!.organizationId\r\n );\r\n }\r\n\r\n users.push(...usersAssignedLIst);\r\n this.materializeCaseObject(caseDetailsList.cases, workflows, vehicles, users, orgOwners);\r\n\r\n this.setState(\r\n {\r\n caseList: caseDetailsList.cases,\r\n userWorkflowsList: workflows,\r\n count: cases.total,\r\n page: cases.page - 1,\r\n showCopyCase: organization!.newFeature,\r\n showOrderDetails: organization!.showOrderDetails,\r\n showCaseStatus: organization!.showCaseStatus,\r\n hidePartnerTab: organization!.hidePartnerTab,\r\n showMakeModelSearch: organization!.showMakeModelSearch,\r\n hideLkqColumns: organization!.hideLkqColumns,\r\n casePolicyTypesList: policyTypes\r\n },\r\n async () => {\r\n await this.reloadFilters();\r\n }\r\n );\r\n }\r\n\r\n isInternal = (): boolean | null => {\r\n if (this.state.selectedTab === 0) {\r\n return null;\r\n }\r\n if (this.state.selectedTab === 1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n loadCases = async (page: number, rowsPerPage: number) => {\r\n this.setState({ isLoadingCases: true });\r\n const filters = {\r\n assignedToList: this.state.selectedAssignedToUser.map((item) => item.id),\r\n createdByList: this.state.selectedCreatedByUser.map((item) => item.id),\r\n caseTypeIds: this.state.selectedCaseType.map((item) => item.id),\r\n partnerIds: this.state.selectedOrgCasePartner.map((item) => item.id),\r\n statusIds: this.state.selectedCaseStatus.map((item) => item.id),\r\n workflowIds: this.state.selectedWorkflows.map((item) => item.workflowId),\r\n organizationIds: this.state.selectedOrgEntities.map((item) => item.id),\r\n policyTypeIds: this.state.selectedPolicyType.map((item) => item.id),\r\n isInternal: this.isInternal(),\r\n page: page + 1,\r\n pageSize: rowsPerPage,\r\n text: '',\r\n isNew: false,\r\n dateFilterCode:\r\n this.state.selectedOrgFilter === null ? FilterTypeCodeEnum.DS.toString() : this.state.selectedOrgFilter!.filterType!.code,\r\n dateFilterStartDate: this.state.filterStartDate\r\n ? new Date(this.state.filterStartDate.setHours(0, 0, 0, 0))\r\n : null,\r\n datefilterEndDate: this.state.filterEndDate\r\n ? new Date(this.state.filterEndDate.setHours(23, 59, 59, 999))\r\n : null,\r\n plateNumberSearchText: this.state.plateNumberSearchText.replace(/\\s+/g, ''),\r\n vinSearchText: this.state.vinSearchText,\r\n caseNumberSearchText: this.state.caseNumberSearchText,\r\n makeSearchText: this.state.makeSearchText,\r\n modelSearchText: this.state.modelSearchText,\r\n } as CaseFilters;\r\n\r\n const caseList = await this.caseService.GetCases(filters);\r\n const [users, orgOwners, vehicles] = await Promise.all([\r\n this.appUserService.GetUsersInfo(\r\n Array.from(new Set(caseList.cases.map((item) => item.caseStatus.userId)))\r\n ),\r\n this.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(caseList.cases.map((item) => item.organizationOwnerId)))\r\n ),\r\n this.vehicleService.GetVehicleList(\r\n Array.from(\r\n new Set(\r\n caseList.cases.filter((c) => !R.isNil(c.vehicleId)).map((item) => item.vehicleId!)\r\n )\r\n )\r\n )\r\n ]);\r\n\r\n this.materializeCaseObject(\r\n caseList.cases,\r\n this.state.userWorkflowsList,\r\n vehicles,\r\n users,\r\n orgOwners\r\n );\r\n\r\n this.setState({\r\n caseList: caseList.cases,\r\n page: caseList.page - 1,\r\n pageSize: rowsPerPage,\r\n count: caseList.total,\r\n isLoadingCases: false\r\n });\r\n };\r\n\r\n materializeCaseObject = (\r\n cases: Case[],\r\n workflows: Workflow[],\r\n vehicles: Vehicle[],\r\n users: AppUser[],\r\n organizations: Organization[]\r\n ) => {\r\n cases.forEach((cd) => {\r\n const workflow = workflows.find((item) => item.id === cd.caseWorkflow.workflowId);\r\n const userAssignedTo = users.find((item) => item.id === cd.caseStatus.assignedToId);\r\n const user = users.find((item) => item.id === cd.caseStatus.userId);\r\n const organizationOwner = organizations.find((item) => item.id === cd.organizationOwnerId);\r\n const vehicle = vehicles.find((item) => !R.isNil(cd.vehicleId) && item.id === cd.vehicleId);\r\n\r\n cd.caseWorkflow.workflowDisplayName = R.isNil(workflow) ? '' : workflow.displayName;\r\n cd.caseStatus.assignedTo = R.isNil(userAssignedTo) ? null : userAssignedTo;\r\n cd.caseStatus.user = R.isNil(user) ? null : user;\r\n cd.organizationOwner = R.isNil(organizationOwner) ? null : organizationOwner;\r\n cd.vehicle = R.isNil(vehicle) ? null : vehicle;\r\n });\r\n };\r\n\r\n reloadFilters = async () => {\r\n const filters = await this.caseService.GetCaseFilters({\r\n assignedToList: [],\r\n createdByList: [],\r\n caseTypeIds: [],\r\n partnerIds: [],\r\n statusIds: [],\r\n workflowIds: [],\r\n organizationIds: [],\r\n policyTypeIds: [],\r\n vehicleIds: [],\r\n isInternal: this.isInternal(),\r\n page: this.state.page + 1,\r\n pageSize: this.state.pageSize,\r\n text: '',\r\n isNew: false,\r\n dateFilterCode: this.state.selectedOrgFilter === null ? FilterTypeCodeEnum.DS.toString() : this.state.selectedOrgFilter!.filterType!.code,\r\n dateFilterStartDate: this.state.filterStartDate\r\n ? new Date(this.state.filterStartDate.setHours(0, 0, 0, 0))\r\n : null,\r\n datefilterEndDate: this.state.filterEndDate\r\n ? new Date(this.state.filterEndDate.setHours(23, 59, 59, 999))\r\n : null,\r\n plateNumberSearchText: '',\r\n vinSearchText: '',\r\n caseNumberSearchText: '',\r\n isAssignedToId: false,\r\n countryCode: null,\r\n makeSearchText: '',\r\n modelSearchText: ''\r\n } as CaseFilters);\r\n\r\n const workFlows = this.state.userWorkflowsList.filter(\r\n (item) => filters.workflowIds.indexOf(item.id) !== -1\r\n );\r\n const workflowList = workFlows.map((item) => {\r\n const workflow = {} as IWorkflow;\r\n\r\n workflow.workflowId = item.id;\r\n workflow.workflowDisplayName = item.displayName;\r\n return workflow;\r\n });\r\n\r\n const [orgCasePartnerList, orgEntities, assignedToList, createdByList] = await Promise.all([\r\n this.organizationService.GetUserOrganizationsByIds(filters.partnerIds),\r\n this.organizationService.GetUserOrganizationsByIds(filters.organizationIds),\r\n this.appUserService.GetUsersInfo(filters.assignedToList),\r\n this.appUserService.GetUsersInfo(filters.createdByList)\r\n ]);\r\n\r\n this.setState({\r\n organizationEntities: orgEntities,\r\n workflowsList: workflowList,\r\n organizationCasePartnerList: orgCasePartnerList,\r\n caseStatusList: filters.caseStatuses,\r\n caseTypesList: filters.caseTypes,\r\n assignedToUserList: assignedToList,\r\n createdByUserList: createdByList,\r\n isLoading: false\r\n });\r\n };\r\n\r\n onClick = (id: number) => {\r\n this.props.history.push('/cases/' + id);\r\n };\r\n\r\n onOrderRowClick = async (e: any, id: number) => {\r\n const order = this.state.orderList.find((item) => item.id === id);\r\n order!.caseVehicle = this.state.selectedCase!.caseVehicle;\r\n this.setState({\r\n isOrderDialogOpen: true,\r\n selectedOrder: order!\r\n });\r\n };\r\n\r\n getOrderColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n label: 'ID',\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.onOrderRowClick(e, tableMeta.rowData[0])}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'supplier.name',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_SUPPLIER_LABEL', 'Furnizor'),\r\n options: { filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'amount',\r\n label: this.translatorService.Tranlate('ORDERS_VALUE_LABEL', 'Valoare'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return value ? value.toFixed(2) : '';\r\n }\r\n }\r\n },\r\n {\r\n name: 'currencyCode',\r\n label: this.translatorService.Tranlate('ORDERS_CURRENCY_LABEL', 'Moneda'),\r\n options: {\r\n filter: false\r\n }\r\n },\r\n {\r\n name: 'createdByUser.userName',\r\n label: this.translatorService.Tranlate('ORDERS_MADE_BY_LABEL', 'Efectuat De'),\r\n options: {\r\n filter: false,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: 'orderStatus.displayName',\r\n label: this.translatorService.Tranlate('ORDERS_STATUS_LABEL', 'Stare'),\r\n options: {\r\n filter: false,\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'supplierOrderNumber',\r\n label: this.translatorService.Tranlate('ORDERS_ID_FURNIZOR_LABEL', 'ID Furnizor'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n {\r\n this.onSupplierOrderNumberRowClick(e, tableMeta.rowData[1]);\r\n }}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n\r\n onSupplierOrderNumberRowClick = async (e: any, supplierName: string) => {\r\n if (supplierName == SupplierCode.AUGSBURG) {\r\n window.open('https://www.aicat.ro/csp/berta/portal/index.csp', '_blank');\r\n }\r\n };\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n label: this.translatorService.Tranlate('CASES_CASE_ID', 'ID'),\r\n options: {\r\n sort: false,\r\n setCellProps: () => ({ style: { cursor: 'pointer' } }),\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n this.onClick(value)}\r\n >\r\n
{value}
\r\n
\r\n \r\n
{tableMeta.rowData[2]}
\r\n
\r\n \r\n
{tableMeta.rowData[3]}
\r\n
\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseEvent.caseNumber',\r\n label: this.translatorService.Tranlate('CASES_CASE_NUMBER', 'Numar Dosar'),\r\n options: {\r\n sort: false,\r\n setCellProps: () => ({ style: { cursor: 'pointer' } })\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseType.displayName',\r\n options: {\r\n display: 'excluded',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'organizationOwner.name',\r\n options: {\r\n display: 'excluded',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseWorkflow.workflowDisplayName',\r\n label: this.translatorService.Tranlate('CASES_WORKFLOW_HEADER', 'Date Flux'),\r\n options: {\r\n sort: false,\r\n setCellProps: () => ({ style: { cursor: 'pointer' } }),\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n \r\n
{value}
\r\n
\r\n \r\n
{tableMeta.rowData[5]}
\r\n
\r\n \r\n
\r\n {moment\r\n .utc(tableMeta.rowData[6])\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'createdByUser.userName',\r\n options: {\r\n display: 'excluded',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateCreation',\r\n options: {\r\n display: 'excluded',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseVehicle.model',\r\n label: this.translatorService.Tranlate('CASES_VEHICLE_HEADER', 'Masina'),\r\n options: {\r\n sort: false,\r\n setCellProps: () => ({ style: { cursor: 'pointer' } }),\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const casee = this.state.caseList.find((item) => item.id === tableMeta.rowData[0]);\r\n if (R.isNil(casee)) {\r\n return;\r\n }\r\n\r\n return (\r\n \r\n \r\n
{VehicleHelper.GetBrand(casee, casee.vehicle)}
\r\n
\r\n \r\n
{VehicleHelper.GetModel(casee, casee.vehicle)}
\r\n
\r\n \r\n
\r\n {VehicleHelper.GetPlateNumber(casee, casee.vehicle)}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseVehicle.modelId',\r\n options: {\r\n display: 'excluded',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseVehicle.plateNumber',\r\n options: {\r\n display: 'excluded',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseStatus.user.userName',\r\n label: this.translatorService.Tranlate('CASES_MODIFIED_BY_HEADER', 'Modificat De'),\r\n options: {\r\n sort: false,\r\n setCellProps: () => ({ style: { cursor: 'pointer' } }),\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n \r\n
{value}
\r\n
\r\n \r\n
\r\n {moment\r\n .utc(tableMeta.rowData[11])\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseStatus.date',\r\n options: {\r\n display: 'excluded',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseStatus.assignedTo.userName',\r\n label: this.translatorService.Tranlate('CASES_ASSIGNED_TO_HEADER', 'Asignat La'),\r\n options: {\r\n sort: false,\r\n setCellProps: () => ({ style: { cursor: 'pointer' } }),\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n \r\n
{value}
\r\n
\r\n {!this.state.showCaseStatus && (\r\n \r\n
{tableMeta.rowData[13]}
\r\n
\r\n )}\r\n
\r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseStatus.caseStatus.displayName',\r\n options: {\r\n display: 'excluded',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseStatus.caseStatus.code',\r\n options: {\r\n display: 'excluded',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseStatus.caseStatus.displayName',\r\n label: this.translatorService.Tranlate('CASES_STATUS_HEADER', 'Status'),\r\n options: {\r\n display: this.state.showCaseStatus ? 'true' : 'false',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({\r\n align: 'center',\r\n style: { padding: '0px' }\r\n }),\r\n setCellProps: () => ({\r\n align: 'center',\r\n style: { padding: '0px' }\r\n }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return tableMeta.rowData[14] === CaseStatusTypeCode.DRAFT ? (\r\n await this.onDelete(tableMeta.rowData[0])}\r\n >\r\n \r\n \r\n ) : null;\r\n }\r\n }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n setCellHeaderProps: () => ({\r\n align: 'center',\r\n style: { padding: '0px' }\r\n }),\r\n setCellProps: () => ({\r\n align: 'center',\r\n style: { padding: '0px' }\r\n }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return this.state.showCopyCase ? (\r\n \r\n {\r\n const currentCase = _.find([...this.state.caseList], function (object) {\r\n return object.id == tableMeta.rowData[0];\r\n });\r\n if (currentCase) {\r\n await this.onCopyCase(currentCase);\r\n }\r\n }}\r\n >\r\n \r\n \r\n \r\n ) : (\r\n ''\r\n );\r\n }\r\n }\r\n }\r\n ];\r\n if (this.state.showOrderDetails) {\r\n columns.push({\r\n name: '',\r\n label: this.translatorService.Tranlate('ORDERS_DIALOG_TITLE', 'Detalii comanda'),\r\n options: {\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n
\r\n {\r\n const currentCase = _.find([...this.state.caseList], function (object) {\r\n return object.id == tableMeta.rowData[0];\r\n });\r\n if (currentCase) {\r\n await this.loadPieces(tableMeta.rowData[0], currentCase);\r\n }\r\n }}\r\n >\r\n {this.translatorService.Tranlate('PIECES_LABEL', 'Piese')}\r\n \r\n
\r\n ) ;\r\n }\r\n }\r\n });\r\n }\r\n\r\n return columns;\r\n };\r\n\r\n onCopyCase = async (currentCase: Case) => {\r\n try {\r\n this.setState({ isLoading: true });\r\n const newCase = await this.caseService.CopyCase(\r\n currentCase.id,\r\n currentCase.caseWorkflow.workflowId,\r\n null,\r\n null,\r\n null\r\n );\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n this.props.history.push('/cases/' + newCase!.id, 'Case' + newCase!.id);\r\n } catch (err: any) {\r\n this.setState({ isLoading: false });\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(err.response.data, 'Eroare copiere dosar!'),\r\n { variant: 'error' }\r\n );\r\n }\r\n };\r\n\r\n onDelete = async (id: number) => {\r\n try {\r\n await this.caseService.RemoveCase(id);\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n\r\n const caseList = [...this.state.caseList];\r\n\r\n const index = caseList.findIndex((item) => item.id === id);\r\n caseList.splice(index, 1);\r\n this.setState({ caseList: caseList });\r\n } catch (err) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n loadPieces = async (id: number, selectedCase: Case) => {\r\n try {\r\n this.setState({\r\n isLoadingDialog: true,\r\n isDialogOpen: true,\r\n selectedCase: selectedCase\r\n });\r\n this.props.caseSettingsState.caseSettings = {\r\n workflow: { \r\n id: selectedCase.caseWorkflow.workflowId\r\n }\r\n } as CaseSettings;\r\n const orderList = await this.orderService.GetOrdersWithParts(id);\r\n const [users, clients, suppliersInit] = await Promise.all([\r\n this.appUserService.GetUsersInfo(\r\n Array.from(new Set(orderList.map((item) => item.createdBy)))\r\n ),\r\n this.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(orderList.map((item) => item.clientId)))\r\n ),\r\n this.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(orderList.map((item) => item.supplierId)))\r\n ),\r\n ]);\r\n\r\n orderList.forEach((p) => {\r\n const supplier = suppliersInit.find((item) => item.id === p.supplierId);\r\n const user = users.find((item) => item.id === p.createdBy);\r\n const client = clients.find((item) => item.id === p.clientId);\r\n \r\n p.createdByUser = user === undefined ? null : user;\r\n p.supplier = supplier === undefined ? null : supplier;\r\n p.client = client === undefined ? null : client;\r\n });\r\n\r\n console.log('caseSettings', this.props.caseSettingsState.caseSettings);\r\n console.log('orderList', orderList);\r\n\r\n this.setState({ orderList: orderList, isDialogOpen: true, isLoadingDialog: false });\r\n } catch (err) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState({\r\n isDialogOpen: false,\r\n orderList: []\r\n });\r\n };\r\n\r\n closeOrderDialog = async () => {\r\n this.setState({\r\n isOrderDialogOpen: false,\r\n // workflowSuppliers: suppliers,\r\n //isLoading: true\r\n });\r\n\r\n // await this.loadData();\r\n };\r\n\r\n \r\n public orderChange = (order: Order) => {\r\n this.setState({\r\n orderList: this.state.orderList.map((el: Order) =>\r\n el.id !== order.id\r\n ? el\r\n : {\r\n ...el,\r\n amount: order.amount,\r\n amountTVA: order.amountTVA,\r\n amountWithoutTVA: order.amountWithoutTVA,\r\n orderParts: [...order.orderParts!],\r\n orderStatus: order.orderStatus,\r\n orderStatusId: order.orderStatusId\r\n }\r\n )\r\n });\r\n };\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState(\r\n {\r\n selectedTab: newValue,\r\n page: 0\r\n },\r\n async () => await this.loadCases(0, this.state.pageSize)\r\n );\r\n };\r\n handleOrgEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedOrgEntities: newValue\r\n },\r\n async () => await this.loadCases(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleWorkflowsChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedWorkflows: newValue\r\n },\r\n async () => await this.loadCases(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleOrgCasePartnersChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedOrgCasePartner: newValue\r\n },\r\n async () => await this.loadCases(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n handleOrFilterChange = (newValue: OrganizationFilterType | null) => {\r\n this.setState(\r\n {\r\n selectedOrgFilter: newValue\r\n },\r\n async () => await this.loadCases(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n handleCaseStatusChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedCaseStatus: newValue\r\n },\r\n async () => await this.loadCases(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handlePolicyTypeChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedPolicyType: newValue\r\n },\r\n async () => await this.loadCases(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleCaseTypeChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedCaseType: newValue\r\n },\r\n async () => await this.loadCases(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n handleAssignedToChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedAssignedToUser: newValue\r\n },\r\n async () => await this.loadCases(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleCreatedByChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedCreatedByUser: newValue\r\n },\r\n async () => await this.loadCases(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n\r\n handleVinChange = (newValue: string) => {\r\n this.setState({\r\n vinSearchText: newValue\r\n });\r\n };\r\n\r\n handlePlateNumberChange = (newValue: string) => {\r\n this.setState({\r\n plateNumberSearchText: newValue\r\n });\r\n };\r\n\r\n handleCaseNumberChange = (newValue: string) => {\r\n this.setState({\r\n caseNumberSearchText: newValue\r\n });\r\n };\r\n\r\n handleMakeChange = (newValue: string) => {\r\n this.setState({\r\n makeSearchText: newValue\r\n });\r\n };\r\n \r\n handleModelChange = (newValue: string) => {\r\n this.setState({\r\n modelSearchText: newValue\r\n });\r\n };\r\n\r\n handlefilterStartDateChange = async (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState(\r\n {\r\n filterStartDate: date === null || !date.isValid ? null : date!.toDate()\r\n },\r\n async () => await this.reloadCases(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handlefilterEndDateChange = async (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState(\r\n {\r\n filterEndDate: date === null || !date.isValid ? null : date!.toDate()\r\n },\r\n async () => await this.reloadCases(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n reloadCases = async (page: number, rowsPerPage: number) => {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('CASE_FILTERS_LOADING', 'Filtrarea este in curs!'), \r\n {\r\n variant: 'info',\r\n autoHideDuration: 5000\r\n }\r\n );\r\n \r\n this.setState({ isLoadingCases: true });\r\n \r\n const caseList = await this.caseService.GetCases({\r\n assignedToList: this.state.selectedAssignedToUser.map((item) => item.id),\r\n createdByList: this.state.selectedCreatedByUser.map((item) => item.id),\r\n caseTypeIds: this.state.selectedCaseType.map((item) => item.id),\r\n partnerIds: this.state.selectedOrgCasePartner.map((item) => item.id),\r\n statusIds: this.state.selectedCaseStatus.map((item) => item.id),\r\n workflowIds: this.state.selectedWorkflows.map((item) => item.workflowId),\r\n organizationIds: this.state.selectedOrgEntities.map((item) => item.id),\r\n policyTypeIds: this.state.selectedPolicyType.map((item) => item.id),\r\n isInternal: this.isInternal(),\r\n page: page + 1,\r\n pageSize: rowsPerPage,\r\n text: '',\r\n isNew: false,\r\n dateFilterCode: this.state.selectedOrgFilter === null \r\n ? FilterTypeCodeEnum.DS.toString() \r\n : this.state.selectedOrgFilter!.filterType!.code,\r\n dateFilterStartDate: this.state.filterStartDate \r\n ? new Date(this.state.filterStartDate.setHours(0, 0, 0, 0)) \r\n : null,\r\n datefilterEndDate: this.state.filterEndDate \r\n ? new Date(this.state.filterEndDate.setHours(23, 59, 59, 999)) \r\n : null,\r\n plateNumberSearchText: this.state.plateNumberSearchText.replace(/\\s+/g, ''),\r\n vinSearchText: this.state.vinSearchText,\r\n caseNumberSearchText: this.state.caseNumberSearchText,\r\n makeSearchText: this.state.makeSearchText,\r\n modelSearchText: this.state.modelSearchText,\r\n } as CaseFilters);\r\n \r\n const [users, orgOwners, vehicles] = await Promise.all([\r\n this.appUserService.GetUsersInfo(\r\n Array.from(new Set(caseList.cases.map((item) => item.caseStatus.userId)))\r\n ),\r\n this.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(caseList.cases.map((item) => item.organizationOwnerId)))\r\n ),\r\n this.vehicleService.GetVehicleList(\r\n Array.from(\r\n new Set(\r\n caseList.cases.filter((c) => !R.isNil(c.vehicleId)).map((item) => item.vehicleId!)\r\n )\r\n )\r\n )\r\n ]);\r\n \r\n this.materializeCaseObject(\r\n caseList.cases,\r\n this.state.userWorkflowsList,\r\n vehicles,\r\n users,\r\n orgOwners\r\n );\r\n \r\n this.setState({\r\n caseList: caseList.cases,\r\n page: caseList.page - 1,\r\n pageSize: rowsPerPage,\r\n count: caseList.total\r\n },\r\n async () => {\r\n await this.reloadFilters();\r\n this.setState({ isLoadingCases: false });\r\n });\r\n }; \r\n\r\n renderFilters = () => {\r\n return (\r\n
\r\n \r\n \r\n this.handleOrgEntitiesChange(newValue)}\r\n getOptionLabel={(option: Organization) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n {!this.state.hideLkqColumns && (\r\n this.handleWorkflowsChange(newValue)}\r\n getOptionLabel={(option: IWorkflow) => option.workflowDisplayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n )}\r\n {!this.state.hideLkqColumns && (\r\n \r\n this.handleOrgCasePartnersChange(newValue)\r\n }\r\n getOptionLabel={(option: Organization) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n )}\r\n\r\n this.handleOrFilterChange(newValue)}\r\n getOptionLabel={(option: OrganizationFilterType) =>\r\n option.filterType!.displayName || ''\r\n }\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n this.handleCreatedByChange(newValue)}\r\n getOptionLabel={(option: AppUser) => option.userName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n this.handleVinChange(e.target.value)}\r\n onBlur={(e: any) => this.loadCases(this.state.page, this.state.pageSize)}\r\n />\r\n
\r\n\r\n
\r\n this.handleCaseNumberChange(e.target.value)}\r\n onBlur={(e: any) => this.loadCases(this.state.page, this.state.pageSize)}\r\n />\r\n
\r\n {this.state.showMakeModelSearch && (\r\n
\r\n this.handleMakeChange(e.target.value)}\r\n onBlur={(e: any) => this.loadCases(this.state.page, this.state.pageSize)}\r\n />\r\n
\r\n )}\r\n
\r\n \r\n this.handleCaseStatusChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n this.handleCaseTypeChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n this.handleAssignedToChange(newValue)}\r\n getOptionLabel={(option: AppUser) => option.userName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n {!this.state.hideLkqColumns && (\r\n this.handlePolicyTypeChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n )}\r\n
\r\n this.handlePlateNumberChange(e.target.value)}\r\n onBlur={(e: any) => this.loadCases(this.state.page, this.state.pageSize)}\r\n />\r\n
\r\n {this.state.showMakeModelSearch && (\r\n
\r\n this.handleModelChange(e.target.value)}\r\n onBlur={(e: any) => this.loadCases(this.state.page, this.state.pageSize)}\r\n />\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n onCellClick = (\r\n colData: any,\r\n cellMeta: { colIndex: number; rowIndex: number; dataIndex: number }\r\n ) => {\r\n if (cellMeta.colIndex === 15 || cellMeta.colIndex == 16 || cellMeta.colIndex == 17 || cellMeta.colIndex == 18) {\r\n return;\r\n }\r\n\r\n this.onClick(this.state.caseList[cellMeta.dataIndex].id);\r\n };\r\n\r\n public render() {\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.orderService = (this.context as AppContext).orderService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 0,\r\n serverSide: true,\r\n count: this.state.count,\r\n rowsPerPage: this.state.pageSize,\r\n page: this.state.page,\r\n onCellClick: this.onCellClick,\r\n onTableChange: async (action: any, tableState: any) => {\r\n switch (action) {\r\n case 'changePage':\r\n await this.loadCases(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'changeRowsPerPage':\r\n await this.loadCases(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'sort':\r\n // this.sort(tableState.page, tableState.sortOrder);\r\n break;\r\n default:\r\n //console.log('action not handled.');\r\n }\r\n }\r\n };\r\n\r\n const orderOptions = {\r\n filter: false,\r\n sort: false,\r\n search: false,\r\n pagination: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n elevation: 0,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService)\r\n };\r\n\r\n if (this.state.isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n {this.state.hidePartnerTab ? ( \r\n <>\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n {this.renderFilters()}\r\n
\r\n \r\n
\r\n {this.state.isLoadingCases ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n {this.state.isDialogOpen && (\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('ORDERS_LIST_TITLE', 'Lista comenzi')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoadingDialog && (\r\n \r\n )}\r\n
\r\n \r\n )}\r\n\r\n {this.state.isOrderDialogOpen && (\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('ORDERS_DIALOG_TITLE', 'Detalii comanda')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.selectedOrder !== null && (\r\n {console.log('automatePlaceOrderChange')}}\r\n />\r\n )}\r\n \r\n \r\n )}\r\n
\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n {this.renderFilters()}\r\n
\r\n \r\n
\r\n {this.state.isLoadingCases ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n \r\n
\r\n {this.renderFilters()}\r\n
\r\n \r\n
\r\n {this.state.isLoadingCases ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n \r\n
\r\n {this.renderFilters()}\r\n
\r\n \r\n
\r\n {this.state.isLoadingCases ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n\r\n {this.state.isDialogOpen && (\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('ORDERS_LIST_TITLE', 'Lista comenzi')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoadingDialog && (\r\n \r\n )}\r\n
\r\n \r\n )}\r\n\r\n {this.state.isOrderDialogOpen && (\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('ORDERS_DIALOG_TITLE', 'Detalii comanda')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.selectedOrder !== null && (\r\n {console.log('automatePlaceOrderChange')}}\r\n />\r\n )}\r\n \r\n \r\n )}\r\n
\r\n \r\n )}\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n caseSettingsState: state.caseSettings\r\n }),\r\n null\r\n)(withSnackbar(Cases as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n CaseSettingsState\r\n} from '../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Card, Grid } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { ReferentialCode } from '../../helpers/Constants';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { CaseTariffValueHistory } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { ScaleLoader } from 'react-spinners';\r\n\r\ninterface ITariffPropertiesState {\r\n caseTariffValues: CaseTariffValueHistory[];\r\n tariffTypeGroupList: IReferential[];\r\n isLoading: boolean;\r\n}\r\n\r\nexport interface ExternalEditTariffProps {\r\n caseTariffHistoryId: number;\r\n}\r\n\r\ntype TariffPropertiesProps = { caseSettingsState: CaseSettingsState } & ProviderContext &\r\n ExternalEditTariffProps &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass TariffProperties extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n private caseService!: ICaseService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n defaultBrand = {\r\n name: 'All', //this.translatorService.Tranlate(\"SELECT_ALL_OPTION\", \"Toate\"),\r\n displayName: 'All', //this.translatorService.Tranlate(\"SELECT_ALL_OPTION\", \"Toate\"),\r\n id: -1,\r\n isActive: true\r\n } as IReferential;\r\n\r\n state = {\r\n caseTariffValues: [],\r\n tariffTypeGroupList: [],\r\n isLoading: false\r\n } as ITariffPropertiesState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n }\r\n\r\n compareName = (a: IReferential, b: IReferential) => {\r\n const nameA = a === null ? '' : a.displayName!.toUpperCase();\r\n const nameB = b === null ? '' : b.displayName!.toUpperCase();\r\n if (nameA < nameB) {\r\n return -1;\r\n }\r\n if (nameA > nameB) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n };\r\n\r\n loadData = async () => {\r\n try {\r\n if (this.props.caseTariffHistoryId === 0) {\r\n return;\r\n }\r\n this.defaultBrand.name = this.translatorService.Tranlate('SELECT_ALL_OPTION', 'Toate');\r\n this.defaultBrand.displayName = this.translatorService.Tranlate('SELECT_ALL_OPTION', 'Toate');\r\n\r\n const tariffGroupTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.TariffTypeGroup\r\n );\r\n\r\n const tariffGroupTypeList = await this.appReferentialService.Get(tariffGroupTypeRef!.baseUrl);\r\n\r\n this.setState({\r\n caseTariffValues: this.props.caseSettingsState.case!.caseTariff.caseTariffValuesHistory,\r\n isLoading: false,\r\n tariffTypeGroupList: tariffGroupTypeList.filter((item) => item.isActive === true)\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n renderTariffGroupTypes = () => {\r\n const tariffGroupTypes = [] as any[];\r\n for (const tariffGroupType of this.state.tariffTypeGroupList) {\r\n tariffGroupTypes.push(\r\n
\r\n
\r\n

\r\n {tariffGroupType.displayName}\r\n

\r\n \r\n {this.renderCaseTariffValues(tariffGroupType.id)}\r\n \r\n
\r\n );\r\n }\r\n return tariffGroupTypes;\r\n };\r\n\r\n renderCaseTariffValues = (tariffGroupTypeId: number) => {\r\n const caseTariffValuess = [] as any[];\r\n const caseTariffValues = this.state.caseTariffValues.filter(\r\n (item) => item.tariffType!.tariffTypeGroupId === tariffGroupTypeId\r\n );\r\n this.getDistinctTariffTypes(caseTariffValues).map((tt) => {\r\n const tariffValues = caseTariffValues.filter((item) => item.tariffTypeId === tt!.id);\r\n\r\n caseTariffValuess.push(\r\n \r\n
{tt!.displayName}
\r\n {this.renderTariffValues(tariffValues)}\r\n
\r\n );\r\n });\r\n return caseTariffValuess;\r\n };\r\n\r\n getDistinctTariffTypes = (tariffValues: CaseTariffValueHistory[]) => {\r\n return tariffValues\r\n .map((item) => item.tariffType)\r\n .filter((tt, index, arr) => arr.findIndex((i) => i!.id === tt!.id) == index);\r\n };\r\n\r\n renderTariffValues = (list: CaseTariffValueHistory[]) => {\r\n list = list.sort((a: CaseTariffValueHistory, b: CaseTariffValueHistory) => {\r\n return this.compareName(a.brand!, b.brand!);\r\n });\r\n return list.map((item) => (\r\n

\r\n {(item.brand === null ? this.defaultBrand.displayName : item.brand.displayName) +\r\n ' ' +\r\n this.renderVehicleAge(item) +\r\n ' - ' +\r\n item.value +\r\n ' (' +\r\n item.offerValue +\r\n ')'}\r\n

\r\n ));\r\n };\r\n\r\n renderVehicleAge = (tv: CaseTariffValueHistory) => {\r\n if (tv.startVehicleYear === null && tv.endVehicleYear === null) {\r\n return '';\r\n }\r\n const start = tv.startVehicleYear === null ? '0' : tv.startVehicleYear;\r\n const end = tv.endVehicleYear === null ? '' : tv.endVehicleYear;\r\n\r\n return '(' + start + '<' + end + ')';\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
{this.renderTariffGroupTypes()}
\r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (stateProps: any, dispatchProps: any, ownProps: ExternalEditTariffProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => {\r\n return { caseSettingsState: state.caseSettings };\r\n },\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(TariffProperties as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, CaseSettingsState, AppState } from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Grid,\r\n Typography,\r\n Dialog,\r\n DialogTitle,\r\n IconButton,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { Card } from 'reactstrap';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Case, CaseParameterHistory, CasePartnerHistory } from '../../interfaces/Case';\r\nimport moment from 'moment';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport TariffProperties from './TariffProperties';\r\n\r\ninterface ICaseDetailsCaseTabSummaryFormState {\r\n case: Case;\r\n isLoading: boolean;\r\n isOpenDialog: boolean;\r\n}\r\n\r\ntype ICaseDetailsCaseTabSummaryFormProps = {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabSummaryForm extends React.PureComponent<\r\n ICaseDetailsCaseTabSummaryFormProps,\r\n ICaseDetailsCaseTabSummaryFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n case: {},\r\n isLoading: true,\r\n isOpenDialog: false\r\n } as ICaseDetailsCaseTabSummaryFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseSettingsSummaryForm();\r\n }\r\n );\r\n }\r\n\r\n loadCaseSettingsSummaryForm = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n const casee = this.props.caseSettingsState.case;\r\n if (casee === null) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n case: casee,\r\n isLoading: false\r\n });\r\n };\r\n\r\n renderCaseDetails = () => {\r\n const casee = this.props.caseSettingsState.case;\r\n if (isNullOrUndefined(casee)) {\r\n return;\r\n }\r\n\r\n return Object.keys(casee).length === 0 ||\r\n Object.keys(casee.caseStatus).length === 0 ||\r\n isNullOrUndefined(this.props.caseSettingsState.caseSettings) ? null : (\r\n \r\n
\r\n \r\n \r\n
\r\n
{casee.caseType!.displayName}
\r\n
{casee.caseNumber}
\r\n
\r\n {casee.caseStatus.caseStatus!.displayName}\r\n
\r\n
\r\n {moment\r\n .utc(casee.caseStatus.date)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_DETAILS_WORKFLOW_OWNER',\r\n 'Proprietar flux'\r\n )}\r\n
\r\n
\r\n {this.props.caseSettingsState.caseSettings!.workflow.organizationOwner!.name}\r\n
\r\n {/*
Bucuresti
\r\n
Sector 1, Agentia Piata Victoriei
*/}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {this.translatorService.Tranlate('CASE_DETAILS_CREATED_BY', 'Dosar creat de')}\r\n
\r\n
\r\n {this.state.case.createdByUser!.organization!.name}\r\n
\r\n
\r\n {this.state.case.createdByUser!.userName}\r\n
\r\n
\r\n {moment\r\n .utc(casee.dateCreation)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {this.translatorService.Tranlate('CASE_DETAILS_ASSIGNED', 'Asignat')}\r\n
\r\n
\r\n {casee.caseStatus.assignedTo!.organization!.name}\r\n
\r\n
\r\n {this.state.case.caseStatus.assignedTo!.userName}\r\n
\r\n
\r\n {moment\r\n .utc(casee.caseStatus.date)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n renderPartners = () => {\r\n const partners = [] as any[];\r\n if (this.props.caseSettingsState.case !== null) {\r\n this.props.caseSettingsState.case.casePartners.forEach(\r\n (item: CasePartnerHistory, index: number) => {\r\n partners.push(\r\n
\r\n
\r\n
\r\n
\r\n {item.organization!.organizationType!.displayName}\r\n
\r\n
{item.organization!.name}
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n );\r\n }\r\n\r\n return partners;\r\n };\r\n\r\n renderParameters = () => {\r\n const parameters = [] as any[];\r\n if (this.props.caseSettingsState.case !== null) {\r\n this.props.caseSettingsState.case.caseParameters.forEach(\r\n (item: CaseParameterHistory, index: number) => {\r\n parameters.push(\r\n
\r\n
\r\n
\r\n
{item.parameter!.displayName}
\r\n
{item.value}
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n );\r\n }\r\n return parameters;\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n\r\n if (this.props.caseSettingsState === null || this.props.caseSettingsState.case === null) {\r\n return '';\r\n }\r\n\r\n const casee = this.props.caseSettingsState.case;\r\n if (isNullOrUndefined(casee)) {\r\n return;\r\n }\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n
\r\n
\r\n \r\n {this.props.caseSettingsState.caseSettings!.workflow.displayName}\r\n \r\n \r\n {'>> '}\r\n \r\n {\r\n this.setState({ isOpenDialog: true });\r\n }}\r\n >\r\n {!isNullOrUndefined(casee.caseTariff) &&\r\n !isNullOrUndefined(casee.caseTariff.tariff)\r\n ? casee.caseTariff.tariff!.name\r\n : ''}\r\n \r\n
\r\n
{this.renderCaseDetails()}
\r\n\r\n
\r\n
\r\n {this.translatorService.Tranlate('CASE_SUMMARY_FORM_PARTNERS', 'Parteneri')}\r\n
\r\n
\r\n
{this.renderPartners()}
\r\n\r\n
\r\n
\r\n {this.translatorService.Tranlate('CASE_SUMMARY_FORM_PARAMETERS', 'Parametri')}\r\n
\r\n
\r\n
{this.renderParameters()}
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {!isNullOrUndefined(casee.caseTariff) &&\r\n !isNullOrUndefined(casee.caseTariff.tariff)\r\n ? casee.caseTariff.tariff!.name\r\n : ''}\r\n \r\n \r\n \r\n this.setState({ isOpenDialog: false })}\r\n size={'small'}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {isNullOrUndefined(casee.caseTariff) ? (\r\n ''\r\n ) : (\r\n \r\n )}\r\n \r\n \r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(CaseDetailsCaseTabSummaryForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, CaseSettingsState, AppState } from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Grid,\r\n Button,\r\n Typography,\r\n Dialog,\r\n DialogTitle,\r\n IconButton,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { isNullOrUndefined } from 'util';\r\nimport {\r\n CaseWorkflowHistory,\r\n CaseParameterHistory,\r\n CasePartnerHistory,\r\n CaseTariffHistory\r\n} from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../helpers/Constants';\r\nimport moment from 'moment';\r\nimport { IWorkflowService } from '../../services/Interfaces/IWorkflowService';\r\nimport { OrganizationType } from '../../interfaces/Organization';\r\nimport { ITariffService } from '../../services/Interfaces/ITariffService';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport TariffProperties from './TariffProperties';\r\n\r\ninterface ICaseDetailsCaseTabHistoryFormState {\r\n caseWorkflowHistory: CaseWorkflowHistory[];\r\n casePartenerHistory: CasePartnerHistory[];\r\n caseParameterHistory: CaseParameterHistory[];\r\n caseTariffHistory: CaseTariffHistory[];\r\n isLoading: boolean;\r\n isOpenDialog: boolean;\r\n}\r\n\r\ntype ICaseDetailsCaseTabHistoryFormProps = {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabHistoryForm extends React.PureComponent<\r\n ICaseDetailsCaseTabHistoryFormProps,\r\n ICaseDetailsCaseTabHistoryFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n private workflowService!: IWorkflowService;\r\n private tariffService!: ITariffService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n caseWorkflowHistory: [],\r\n caseParameterHistory: [],\r\n casePartenerHistory: [],\r\n caseTariffHistory: [],\r\n isLoading: false,\r\n isOpenDialog: false\r\n } as ICaseDetailsCaseTabHistoryFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseWorkflowHistoryForm();\r\n }\r\n );\r\n }\r\n\r\n loadCaseWorkflowHistoryForm = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CompanyParameter\r\n );\r\n const orgTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OrganizationType\r\n );\r\n\r\n const [\r\n caseWorkflowHistory,\r\n workflows,\r\n casePartenerHistory,\r\n caseParameterHistory,\r\n caseTariffHistory\r\n ] = await Promise.all([\r\n this.caseService.GetCaseWorkflowHistory(caseId),\r\n this.workflowService.GetUserWorkflows(),\r\n this.caseService.GetCasePartnerHistory(caseId),\r\n this.caseService.GetCaseParameterHistory(caseId),\r\n this.caseService.GetCaseTariffHistory(caseId)\r\n ]);\r\n\r\n caseWorkflowHistory.forEach((caseWh) => {\r\n const workflow = workflows.find((item) => item.id === caseWh.workflowId);\r\n\r\n caseWh.workflowDisplayName = isNullOrUndefined(workflow) ? '' : workflow.displayName;\r\n caseWh.user = this.props.appState.appUser;\r\n });\r\n\r\n const [partners, parameterList, orgTypes, tariffList] = await Promise.all([\r\n this.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(casePartenerHistory.map((item) => item.organizationId)))\r\n ),\r\n this.appReferentialService.Get(ref!.baseUrl),\r\n this.appReferentialService.Get(orgTypeRef!.baseUrl),\r\n this.tariffService.GetUserTariffs(caseTariffHistory.map((item) => item.tariffId))\r\n ]);\r\n\r\n casePartenerHistory.forEach((partnerItem) => {\r\n const partner = partners.find((item) => item.id === partnerItem.organizationId);\r\n partnerItem.organization = isNullOrUndefined(partner) ? null : partner;\r\n const orgType = orgTypes.find(\r\n (item) => item.id === partnerItem.organization!.organizationTypeId\r\n );\r\n partnerItem.organization!.organizationType = (isNullOrUndefined(orgType)\r\n ? null\r\n : orgType) as any as OrganizationType;\r\n });\r\n\r\n caseParameterHistory.forEach((paramItem) => {\r\n const param = parameterList.find((item) => item.id === paramItem.parameterId);\r\n paramItem.parameter = isNullOrUndefined(param) ? null : param;\r\n });\r\n\r\n caseTariffHistory.forEach((tariffItem) => {\r\n const tariff = tariffList.find((item) => item.id === tariffItem.tariffId);\r\n tariffItem.tariff = isNullOrUndefined(tariff) ? null : tariff;\r\n });\r\n\r\n this.setState({\r\n caseWorkflowHistory: caseWorkflowHistory.sort(function (a: any, b: any) {\r\n return b.date - a.date;\r\n }),\r\n casePartenerHistory: casePartenerHistory,\r\n caseParameterHistory: caseParameterHistory,\r\n caseTariffHistory: caseTariffHistory,\r\n isLoading: false\r\n });\r\n };\r\n renderPartenersHistory = (caseWorkflowId: number) => {\r\n const partners = [] as any[];\r\n const casePartenerHistory = this.state.casePartenerHistory.filter(\r\n (item) => item.caseWorkflowHistoryId === caseWorkflowId\r\n );\r\n if (casePartenerHistory.length !== 0) {\r\n casePartenerHistory.forEach((partnerItem, index) => {\r\n partners.push(\r\n \r\n {partnerItem.organization!.name +\r\n ' (' +\r\n partnerItem.organization!.organizationType!.displayName +\r\n ')'}\r\n \r\n );\r\n });\r\n }\r\n return partners;\r\n };\r\n\r\n renderParameterHistory = (caseWorkflowId: number) => {\r\n const parameters = [] as any[];\r\n const caseParameterHistory = this.state.caseParameterHistory.filter(\r\n (item) => item.caseWorkflowHistoryId === caseWorkflowId\r\n );\r\n if (caseParameterHistory.length !== 0) {\r\n caseParameterHistory.forEach((paramItem, index) => {\r\n parameters.push(\r\n \r\n {paramItem.parameter!.displayName + ' = ' + paramItem.value}\r\n \r\n );\r\n });\r\n }\r\n return parameters;\r\n };\r\n\r\n renderTariffHistory = (caseWorkflowId: number) => {\r\n const tariffs = [] as any[];\r\n const caseTariffHistory = this.state.caseTariffHistory.filter(\r\n (item) => item.caseWorkflowHistoryId === caseWorkflowId\r\n );\r\n if (caseTariffHistory.length !== 0) {\r\n caseTariffHistory.forEach((tariffItem, index) => {\r\n tariffs.push(\r\n
\r\n {\r\n this.setState({ isOpenDialog: true });\r\n }}\r\n >\r\n {tariffItem.tariff === null ? 'N/A' : tariffItem.tariff!.name}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {' '}\r\n {tariffItem.tariff === null ? 'N/A' : tariffItem.tariff!.name}{' '}\r\n \r\n \r\n \r\n this.setState({ isOpenDialog: false })}\r\n size={'small'}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n });\r\n }\r\n return tariffs;\r\n };\r\n\r\n showTimelineWorkflowHistory = () => {\r\n const caseWorkflowHistory = this.state.caseWorkflowHistory;\r\n\r\n if (caseWorkflowHistory.length === 0) {\r\n return (\r\n \r\n {this.translatorService.Tranlate(\r\n 'TARIFF_EDIT_LABOR_TAB_NO_DATA',\r\n 'Nu exista date de afisat!'\r\n )}\r\n \r\n );\r\n }\r\n\r\n return caseWorkflowHistory.map((caseWorkflow) => (\r\n
\r\n
\r\n
\r\n

\r\n {caseWorkflow.workflowDisplayName +\r\n ' (' +\r\n this.props.caseSettingsState.caseSettings!.workflow.organizationOwner!.name +\r\n ' )'}\r\n

\r\n
\r\n
\r\n {this.translatorService.Tranlate('CASE_SUMMARY_FORM_PARTNERS', 'Parteneri')}\r\n
\r\n
\r\n {this.renderPartenersHistory(caseWorkflow.id)}\r\n
\r\n
\r\n {this.translatorService.Tranlate('CASE_SUMMARY_FORM_PARAMETERS', 'Parametri')}\r\n
\r\n
\r\n {this.renderParameterHistory(caseWorkflow.id)}\r\n
\r\n
\r\n {this.translatorService.Tranlate('CASE_SUMMARY_FORM_TARIFF', 'Tarif')}\r\n
\r\n
{this.renderTariffHistory(caseWorkflow.id)}
\r\n
\r\n \r\n {' '}\r\n {moment\r\n .utc(caseWorkflow.date)\r\n .local()\r\n .format(this.props.appState.longDateFormat) +\r\n ' (' +\r\n caseWorkflow.user!.userName +\r\n ' )'}{' '}\r\n \r\n
\r\n
\r\n ));\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.tariffService = (this.context as AppContext).tariffService;\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
\r\n
\r\n
\r\n
\r\n {this.showTimelineWorkflowHistory()}{' '}\r\n
\r\n
\r\n
\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(CaseDetailsCaseTabHistoryForm as any));\r\n","import { AppUser } from '../../interfaces/AppUser';\r\nimport {\r\n WorkflowFormAction,\r\n WorkflowPartner,\r\n WorkflowPermission,\r\n WorkflowCalculation,\r\n WorkflowFormReport\r\n} from '../../interfaces/Workflow';\r\nimport { WorkflowFormActionTypeCode } from '../../helpers/Constants';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\n\r\nexport class FormHelpers {\r\n public static async ParseAllocations(\r\n workflowFormActions: WorkflowFormAction[],\r\n organizations: WorkflowPartner[],\r\n appUserService: IAppUserService,\r\n appUser: AppUser | null = null\r\n ): Promise {\r\n const caseAllocation = workflowFormActions.find(\r\n (item) => item.actionType!.code === WorkflowFormActionTypeCode.CASE_ALLOCATION\r\n );\r\n\r\n if (isNullOrUndefined(caseAllocation)) {\r\n return null;\r\n }\r\n if (\r\n (caseAllocation.isLastUser === null || !caseAllocation.isLastUser) &&\r\n caseAllocation.userId === null &&\r\n caseAllocation.workflowPartnerId === null &&\r\n caseAllocation.caseStatusId === null &&\r\n caseAllocation.workflowPartnerTypeId === null &&\r\n !(caseAllocation.sendEmailSameOrganization && appUser)\r\n ) {\r\n return null;\r\n }\r\n if (caseAllocation.isLastUser) {\r\n return {\r\n user: null,\r\n roleId: null,\r\n partners: [],\r\n partner: null,\r\n isLastUser: true,\r\n caseStatusId: null\r\n };\r\n }\r\n if (caseAllocation.caseStatusId !== null) {\r\n return {\r\n user: null,\r\n roleId: null,\r\n partners: [],\r\n partner: null,\r\n isLastUser: null,\r\n caseStatusId: caseAllocation.caseStatusId\r\n };\r\n }\r\n\r\n let workflowPartner: WorkflowPartner | null | undefined = null;\r\n let user: AppUser | null = null;\r\n if (!isNullOrUndefined(caseAllocation.workflowPartnerId)) {\r\n workflowPartner = organizations.find(\r\n (item) => item.partnerId === caseAllocation!.workflowPartner!.partnerId\r\n );\r\n }\r\n if (!isNullOrUndefined(caseAllocation.userId)) {\r\n user = await appUserService.GetUserInfo(caseAllocation.userId);\r\n }\r\n let partners = organizations;\r\n if (!isNullOrUndefined(caseAllocation.workflowPartnerTypeId)) {\r\n partners = organizations.filter(\r\n (item) =>\r\n item.partner &&\r\n item.partner.organizationTypeId ===\r\n caseAllocation!.workflowPartnerType!.organizationTypeId\r\n );\r\n }\r\n if (!isNullOrUndefined(user)) {\r\n workflowPartner = organizations.find(\r\n (item) => item.partnerId === user!.organizationId || item.partnerId === user!.hoId\r\n );\r\n partners = partners.filter((item) => item.id === workflowPartner!.id);\r\n }\r\n if (caseAllocation.sendEmailSameOrganization && appUser) {\r\n partners = partners.filter(\r\n (x) =>\r\n x.partnerId === appUser?.organizationId || x.partner?.parentId === appUser?.organizationId\r\n );\r\n\r\n workflowPartner = organizations.find(\r\n (item) => item.partnerId === appUser!.organizationId || item.partnerId === appUser!.hoId\r\n );\r\n }\r\n\r\n return {\r\n user: isNullOrUndefined(user) ? null : user,\r\n partners: partners,\r\n roleId: caseAllocation.userRoleId,\r\n partner: isNullOrUndefined(workflowPartner) ? null : workflowPartner,\r\n isLastUser: false,\r\n caseStatusId: null\r\n };\r\n }\r\n\r\n public static HasRights(\r\n workflowFormPermissions: WorkflowPermission[],\r\n appUser: AppUser,\r\n caseStatusId: number\r\n ): boolean {\r\n if (workflowFormPermissions.length === 0) {\r\n return false;\r\n }\r\n\r\n const permission = workflowFormPermissions.find(\r\n (item) =>\r\n item.workflowPartner!.partnerId === appUser.hoId &&\r\n (item.userRoleId === appUser.roleId || isNullOrUndefined(item.userRoleId)) &&\r\n item.caseStatusId === caseStatusId\r\n );\r\n\r\n return !isNullOrUndefined(permission);\r\n }\r\n\r\n public static VehicleDetailsHasRights(statusCode: string | null | undefined): boolean {\r\n if (!statusCode?.length) {\r\n return false;\r\n }\r\n\r\n return !['SOLD', 'AcquisitionRefused'].includes(statusCode);\r\n }\r\n\r\n public static GetCalculation(\r\n workflowCalculations: WorkflowCalculation[],\r\n appUser: AppUser,\r\n caseStatusId: number\r\n ): WorkflowCalculation | undefined {\r\n return workflowCalculations.find(\r\n (item) =>\r\n item.workflowPartner!.partnerId === appUser.hoId &&\r\n (item.userRoleId === appUser.roleId || isNullOrUndefined(item.userRoleId)) &&\r\n item.caseStatusId === caseStatusId\r\n );\r\n }\r\n\r\n public static GetReports(\r\n workflowReports: WorkflowFormReport[],\r\n appUser: AppUser,\r\n caseStatusId: number\r\n ): WorkflowFormReport[] {\r\n return workflowReports.filter(\r\n (item) =>\r\n item.workflowPartner!.partnerId === appUser!.hoId &&\r\n (item.userRoleId === appUser!.roleId || isNullOrUndefined(item.userRoleId)) &&\r\n item.caseStatusId === caseStatusId\r\n );\r\n }\r\n}\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Box, Grid, Button, Typography, TextField } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Workflow, WorkflowPartner, WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IWorkflowService } from '../../services/Interfaces/IWorkflowService';\r\nimport { Organization } from '../../interfaces/Organization';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport Autocomplete, { createFilterOptions } from '@material-ui/lab/Autocomplete';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { ReferentialCode } from '../../helpers/Constants';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { TextValidator } from 'react-material-ui-form-validator';\r\n\r\ninterface ICaseDetailsCaseTabModifyWorkflowFormState {\r\n workflows: Workflow[];\r\n selectedWorkflow: Workflow | null;\r\n organizations: WorkflowPartner[];\r\n selectedOrganization: WorkflowPartner | null;\r\n users: AppUser[];\r\n selectedUser: AppUser | null;\r\n isLoading: boolean;\r\n isLoading2: boolean;\r\n isLoading3: boolean;\r\n isOrganizationsDisabled: boolean;\r\n isUsersDisabled: boolean;\r\n hasRights: boolean;\r\n isUserHidden: boolean;\r\n executing: boolean;\r\n caseStatusList: IReferential[];\r\n selectedCaseStatus: IReferential;\r\n userRoleId: number | null;\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseTabModifyWorkflowFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseTabModifyWorkflowFormProps =\r\n ExternalCaseDetailsCaseTabModifyWorkflowFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n } & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabModifyWorkflowForm extends React.PureComponent<\r\n ICaseDetailsCaseTabModifyWorkflowFormProps,\r\n ICaseDetailsCaseTabModifyWorkflowFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private caseService!: ICaseService;\r\n private workflowService!: IWorkflowService;\r\n private appUserService!: IAppUserService;\r\n private referencialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n workflows: [],\r\n selectedWorkflow: null,\r\n organizations: [],\r\n selectedOrganization: null,\r\n users: [],\r\n selectedUser: null,\r\n isLoading: true,\r\n isLoading2: false,\r\n isLoading3: false,\r\n isOrganizationsDisabled: false,\r\n isUsersDisabled: false,\r\n hasRights: false,\r\n isUserHidden: false,\r\n executing: false,\r\n caseStatusList: [],\r\n selectedCaseStatus: this.props.caseSettingsState.case!.caseStatus.caseStatus,\r\n userRoleId: null\r\n } as ICaseDetailsCaseTabModifyWorkflowFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseWorkflows();\r\n }\r\n );\r\n }\r\n\r\n loadCaseWorkflows = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n const ref = Referentials.referential.find((item) => item.code === ReferentialCode.CaseStatus);\r\n\r\n const [workflows, ststusList] = await Promise.all([\r\n this.workflowService.GetUserWorkflows(),\r\n this.referencialService.Get(ref!.baseUrl)\r\n ]);\r\n\r\n const owners = await this.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(workflows.map((item) => item.organizationOwnerId)))\r\n );\r\n workflows.forEach((w) => {\r\n const owner = owners.find((item) => item.id === w.organizationOwnerId);\r\n w.organizationOwner = isNullOrUndefined(owner) ? null : owner;\r\n });\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n this.setState({\r\n workflows: workflows,\r\n isLoading: false,\r\n hasRights: hasRights,\r\n caseStatusList: ststusList\r\n });\r\n };\r\n\r\n loadOrganizations = async (workflowId: number) => {\r\n const [workflowPartners] = await Promise.all([\r\n this.workflowService.GetUserWorkflowPartners(workflowId)\r\n ]);\r\n const organizations = await this.organizationService.GetUserOrganizationsByIds(\r\n workflowPartners.map((item) => item.partnerId)\r\n );\r\n\r\n workflowPartners.forEach((wp) => {\r\n const partner = organizations.find((item) => item.id === wp.partnerId);\r\n wp.partner = isNullOrUndefined(partner) ? null : partner;\r\n });\r\n\r\n this.setState({\r\n organizations: workflowPartners,\r\n isLoading2: false\r\n });\r\n };\r\n\r\n loadUsers = async (organizationId: number | null, roleId: number | null) => {\r\n if (organizationId === null) {\r\n this.setState({\r\n isLoading3: false\r\n });\r\n } else {\r\n const users = await this.appUserService.GetUserAppUsers();\r\n\r\n this.setState({\r\n users: users.users.filter(\r\n (user) =>\r\n (user.organization!.hoId === organizationId ||\r\n user.organizationId === organizationId) &&\r\n ((roleId !== null && user.roleId === roleId) || roleId === null)\r\n ),\r\n isLoading3: false\r\n });\r\n }\r\n };\r\n handleAutocompleteStatusChange = (newValue: any | null) => {\r\n this.setState({\r\n selectedCaseStatus: newValue\r\n });\r\n };\r\n\r\n renderWorkflows = () => {\r\n return (\r\n \r\n {this.renderWorkflowList()}\r\n
\r\n \r\n this.handleAutocompleteStatusChange(newValue)\r\n }\r\n getOptionLabel={(option: any) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n \r\n
\r\n {this.renderAssignementForm()}\r\n \r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n
\r\n );\r\n };\r\n\r\n renderAssignementForm = () => {\r\n if (this.state.isUserHidden) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {!this.state.isLoading2 ? (\r\n
\r\n \r\n this.handleOrganizationChange(newValue)\r\n }\r\n getOptionLabel={(option: WorkflowPartner) => option.partner!.displayName || ''}\r\n filterOptions={createFilterOptions({\r\n matchFrom: 'any',\r\n stringify: (option: WorkflowPartner) => option.partner!.displayName\r\n })}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n {!this.state.isLoading3 ? (\r\n this.handleUserChange(newValue)}\r\n getOptionLabel={(option: AppUser) => option.userName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n ) : null}\r\n
\r\n ) : null}\r\n
\r\n );\r\n };\r\n\r\n changeWorkflow = async () => {\r\n if (isNullOrUndefined(this.state.selectedWorkflow)) {\r\n return;\r\n }\r\n try {\r\n this.setState({ executing: true });\r\n\r\n await this.caseService.ChangeCaseWorkflow(\r\n this.state.selectedWorkflow.id,\r\n this.props.caseSettingsState.case!.id,\r\n isNullOrUndefined(this.state.selectedUser) ? '' : this.state.selectedUser.id!,\r\n this.state.selectedCaseStatus.id\r\n );\r\n\r\n if (this.props.workflowForm.form.hasActions) {\r\n const selectedOrganization = this.state.selectedOrganization;\r\n const hoId =\r\n selectedOrganization === null\r\n ? null\r\n : selectedOrganization.partner!.hoId === null\r\n ? selectedOrganization.partnerId\r\n : selectedOrganization.partner!.hoId;\r\n\r\n await this.submitForm(\r\n this.props.caseSettingsState.case!.id,\r\n this.props.workflowForm.id,\r\n this.state.selectedUser\r\n );\r\n }\r\n\r\n this.props.SetCaseSettings(this.props.caseSettingsState.case!.id);\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(ex.response.data, 'Eroare modificare flux!'),\r\n { variant: 'error' }\r\n );\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n renderWorkflowList = () => {\r\n let selectedItem = -1;\r\n if (!isNullOrUndefined(this.state.selectedWorkflow)) {\r\n selectedItem = this.state.selectedWorkflow.id;\r\n }\r\n\r\n const organizations: Organization[] = [];\r\n\r\n const scopeWorkflows = this.state.workflows.filter(\r\n (item) => item.caseTypeId === this.props.caseSettingsState.case!.caseTypeId\r\n );\r\n scopeWorkflows.forEach((w) => {\r\n if (organizations.find((item) => item.id === w.organizationOwnerId) === undefined) {\r\n organizations.push(w.organizationOwner!);\r\n }\r\n });\r\n\r\n return organizations.map((org, index) => (\r\n \r\n \r\n {org.displayName}\r\n \r\n \r\n {scopeWorkflows\r\n .filter((w) => w.organizationOwnerId === org.id)\r\n .map((item, index) => (\r\n \r\n \r\n this.handleSelectWorkflow(item)}\r\n >\r\n {item.displayName}\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n ));\r\n };\r\n\r\n handleSelectWorkflow = (item: Workflow) => {\r\n this.setState(\r\n {\r\n selectedWorkflow: item,\r\n isLoading2: true,\r\n selectedUser: null,\r\n selectedOrganization: null,\r\n isUsersDisabled: false,\r\n isOrganizationsDisabled: false\r\n },\r\n async () => {\r\n await this.loadOrganizations(item.id);\r\n await this.setCaseAllocation();\r\n }\r\n );\r\n };\r\n\r\n setCaseAllocation = async () => {\r\n const allocationResult = await FormHelpers.ParseAllocations(\r\n this.props.workflowForm.workflowFormActions,\r\n this.state.organizations,\r\n this.appUserService\r\n );\r\n\r\n if (isNullOrUndefined(allocationResult)) {\r\n const partner = this.state.organizations.find(\r\n (item) => item.partnerId === this.props.caseSettingsState.case!.caseStatus.assignedTo!.hoId\r\n );\r\n\r\n this.setState(\r\n {\r\n selectedOrganization: isNullOrUndefined(partner) ? null : partner,\r\n selectedUser: this.props.caseSettingsState.case!.caseStatus.assignedTo,\r\n organizations: this.state.organizations,\r\n isUsersDisabled: false,\r\n isOrganizationsDisabled: false\r\n },\r\n async () =>\r\n await this.loadUsers(isNullOrUndefined(partner) ? null : partner.partnerId, null)\r\n );\r\n return;\r\n }\r\n if (allocationResult.isLastUser || allocationResult.caseStatusId != null) {\r\n this.setState({ isUserHidden: true });\r\n return;\r\n }\r\n this.setState(\r\n {\r\n selectedOrganization: allocationResult.partner,\r\n selectedUser: allocationResult.user,\r\n organizations: allocationResult.partners,\r\n isUsersDisabled: !isNullOrUndefined(allocationResult.user),\r\n isOrganizationsDisabled: !isNullOrUndefined(allocationResult.partner),\r\n userRoleId: allocationResult.roleId\r\n },\r\n () => this.handleOrganizationChange(allocationResult.partner)\r\n );\r\n };\r\n\r\n handleOrganizationChange = (newValue: WorkflowPartner | null) => {\r\n this.setState(\r\n {\r\n selectedOrganization: newValue,\r\n users: [],\r\n isLoading3: true\r\n },\r\n async () => {\r\n await this.loadUsers(newValue === null ? null : newValue.partnerId, this.state.userRoleId);\r\n }\r\n );\r\n };\r\n\r\n handleUserChange = (newValue: AppUser | null) => {\r\n this.setState({ selectedUser: newValue });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.referencialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
\r\n
{this.renderWorkflows()}
\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabModifyWorkflowFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabModifyWorkflowForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n CardContent,\r\n Button,\r\n IconButton,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n ButtonGroup,\r\n Tooltip,\r\n Box,\r\n Dialog,\r\n DialogContent,\r\n Modal,\r\n DialogActions,\r\n DialogContentText\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { Card, CardFooter } from 'reactstrap';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { WorkflowDocumentType, WorkflowFormAction, WorkflowSectionStep, WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Appointment, AppointmentPaymentStatusRequest, CarfixAttachmentNotificationRequest, CarfixAttachmentNotificationResponse, CaseAttachment, CaseSelectedAttachment, PaymentDto, PreAppointment } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { AppointmentPaymentStatus, AttachmentTypeCode, hideButtonsSectionSteps, ReferentialCode, UploadSizeLimit, WorkflowFormActionTypeCode } from '../../helpers/Constants';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport VisibilityIcon from '@material-ui/icons/Visibility';\r\nimport DescriptionIcon from '@material-ui/icons/Description';\r\nimport FileSaver from 'file-saver';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-ignore\r\nimport FileViewer from 'react-file-viewer';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport GetAppIcon from '@material-ui/icons/GetApp';\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-ignore\r\nimport Camera from 'react-html5-camera-photo';\r\nimport 'react-html5-camera-photo/build/css/index.css';\r\nimport PhotoCameraOutlinedIcon from '@material-ui/icons/PhotoCameraOutlined';\r\nimport _, { at } from 'lodash';\r\nimport { Organization } from '../../interfaces/Organization';\r\nimport * as R from 'ramda';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { workers } from 'cluster';\r\nimport Resizer from \"react-image-file-resizer\";\r\nimport { ReportParameter } from '../../interfaces/Reports';\r\nimport { IReportsService } from '../../services/Interfaces/IReportsService';\r\n\r\ninterface ICaseDetailsCaseTabDocumentsFormState {\r\n caseAttachments: CaseAttachment[];\r\n attachmentTypeList: WorkflowDocumentType[];\r\n isLoading: boolean;\r\n hasRights: boolean;\r\n executing: boolean;\r\n isDialogOpen: boolean;\r\n previewAttachFile: any;\r\n previewAttachFileExtension: string;\r\n isCameraDialogOpen: boolean;\r\n isSelection: boolean;\r\n attachmentTypeClicked: any;\r\n showUploadMessage: boolean;\r\n isOpen: boolean;\r\n dialogVisible: boolean;\r\n selectedAttachment: CaseSelectedAttachment;\r\n caseStatuses: IReferential[];\r\n wfTransitionStepAction: WorkflowFormAction | null;\r\n appointment: Appointment | null;\r\n appointmentPaymentStatus: PreAppointment | null;\r\n hideButton: boolean;\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseTabDocumentsFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseTabDocumentsFormProps = ExternalCaseDetailsCaseTabDocumentsFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\nexport const imageExtensions = ['png', 'jpeg', 'jpg', 'bmp'];\r\n\r\nclass CaseDetailsCaseTabDocumentsForm extends React.PureComponent<\r\n ICaseDetailsCaseTabDocumentsFormProps,\r\n ICaseDetailsCaseTabDocumentsFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n private organizationService!: IOrganizationService;\r\n private reportsService!: IReportsService;\r\n static contextType = ApplicationContext;\r\n state = {\r\n caseAttachments: [],\r\n attachmentTypeList: [],\r\n isLoading: false,\r\n hasRights: false,\r\n executing: false,\r\n isDialogOpen: false,\r\n previewAttachFile: '',\r\n previewAttachFileExtension: '',\r\n isCameraDialogOpen: false,\r\n isSelection: false,\r\n attachmentTypeClicked: null,\r\n showUploadMessage: false,\r\n isOpen: false,\r\n dialogVisible: false,\r\n selectedAttachment: {\r\n id: -1,\r\n fileName: ''\r\n },\r\n caseStatuses: [],\r\n wfTransitionStepAction: null,\r\n appointment: null,\r\n appointmentPaymentStatus: null,\r\n hideButton: false\r\n } as ICaseDetailsCaseTabDocumentsFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseDocumentsForm();\r\n }\r\n );\r\n }\r\n\r\n loadCaseDocumentsForm = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.AttachmentType\r\n );\r\n const refCaseStatus = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CaseStatus\r\n );\r\n const refAppointmentCategoryType = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.AppointmentCategoryType\r\n );\r\n\r\n let workflowDocumentsTypes = this.props.workflowForm.workflowDocumentTypes;\r\n const [attachmentTypes, caseStatuses, appointment, appointmentCategoryTypes] = await Promise.all([\r\n this.appReferentialService.Get(ref!.baseUrl),\r\n this.appReferentialService.Get(refCaseStatus!.baseUrl),\r\n this.props.workflowForm.appointmentCategoryTypeId != null ? this.caseService.GetAppointmentByType(caseId, this.props.workflowForm.appointmentCategoryTypeId) : null,\r\n this.appReferentialService.Get(refAppointmentCategoryType!.baseUrl)\r\n ]);\r\n\r\n workflowDocumentsTypes.forEach((wfDoc) => {\r\n const documentType = attachmentTypes.find((item) => item.id === wfDoc.documentTypeId);\r\n wfDoc.documentType = isNullOrUndefined(documentType) ? null : documentType;\r\n });\r\n\r\n let appointmentPaymentStatus = null;\r\n if (workflowDocumentsTypes.some((item) => item.documentType!.code === AttachmentTypeCode.INVOICE_REPAIR)) {\r\n const paymentRequest = {\r\n caseId: caseId,\r\n workflowId: this.props.caseSettingsState.caseSettings!.workflow.id\r\n } as AppointmentPaymentStatusRequest;\r\n appointmentPaymentStatus = await this.caseService.GetAppointmentPaymentStatus(paymentRequest);\r\n }\r\n\r\n if (this.props.workflowForm!.appointmentCategoryTypeId) {\r\n const appointmentCategoryType = appointmentCategoryTypes.find(\r\n (item) => item.id === this.props.workflowForm!.appointmentCategoryTypeId\r\n );\r\n this.props.workflowForm.appointmentCategoryType = appointmentCategoryType || null;\r\n }\r\n\r\n let organization: Organization | null = null;\r\n if (!R.isNil(this.props.appState!.appUser!.organizationId)) {\r\n organization = await this.organizationService.GetOrganizationInfo(\r\n this.props.appState!.appUser!.organizationId\r\n );\r\n }\r\n \r\n let attachmentTypeList = _.cloneDeep(this.props.workflowForm.workflowDocumentTypes);\r\n console.log('isPrcIntegration', this.props.caseSettingsState.caseSettings!.workflow.isPrcIntegration);\r\n console.log('hideOtherAttachments', this.props.appState.appUser!.organization!.organizationType!.hideOtherAttachments);\r\n\r\n if (this.props.caseSettingsState.caseSettings!.workflow.isPrcIntegration && this.props.appState.appUser!.organization!.organizationType!.hideOtherAttachments) {\r\n workflowDocumentsTypes = workflowDocumentsTypes.filter((item) => item.documentType!.code != AttachmentTypeCode.OTHER);\r\n }\r\n\r\n let caseAttachments = appointment ? \r\n await this.caseService.GetCaseAppointmentAttachments(\r\n caseId,\r\n appointment.id,\r\n workflowDocumentsTypes.map((item) => item.documentType!.code!)\r\n )\r\n : \r\n await this.caseService.GetCaseAttachments(\r\n caseId,\r\n workflowDocumentsTypes.map((item) => item.documentType!.code!)\r\n )\r\n ;\r\n\r\n const step = this.getWorkflowSectionStep(this.props.workflowForm.workflowSectionStepId);\r\n console.log('step', step);\r\n console.log('current', step && step.isCurrent(this.props.caseSettingsState.case!.caseStatus.caseStatusId));\r\n if (\r\n this.props.caseSettingsState.caseSettings!.workflow.isCarfixIntegration &&\r\n step && \r\n step.isCurrent(this.props.caseSettingsState.case!.caseStatus.caseStatusId)\r\n ) {\r\n console.log('attachmentTypeList', attachmentTypeList);\r\n \r\n const relevantAttachmentTypes = [\r\n AttachmentTypeCode.WORK_ORDER.toString(),\r\n AttachmentTypeCode.HAND_OVER.toString(),\r\n AttachmentTypeCode.INVOICE_REPAIR.toString()\r\n ];\r\n \r\n const hasRelevantAttachment = attachmentTypeList.some(attach =>\r\n relevantAttachmentTypes.includes(attach.documentType!.code || '')\r\n );\r\n \r\n if (hasRelevantAttachment) {\r\n const hasRelevantCaseAttachment = caseAttachments.some(attach =>\r\n relevantAttachmentTypes.includes(attach.attachmentType!.code || '')\r\n );\r\n \r\n if (hasRelevantCaseAttachment) {\r\n console.log('The caseAttachments contains a relevant attachment.');\r\n } else {\r\n console.log('The caseAttachments does not contain any relevant attachments.');\r\n\r\n const workflowDocumentType = attachmentTypeList.find(attach =>\r\n relevantAttachmentTypes.includes(attach.documentType!.code || '')\r\n );\r\n console.log('workflowDocumentType', workflowDocumentType);\r\n \r\n if (workflowDocumentType) {\r\n await this.generateReport(workflowDocumentType, appointment, appointmentPaymentStatus?.pre_appointment || null);\r\n caseAttachments = appointment ? \r\n await this.caseService.GetCaseAppointmentAttachments(\r\n caseId,\r\n appointment.id,\r\n workflowDocumentsTypes.map((item) => item.documentType!.code!)\r\n )\r\n : \r\n await this.caseService.GetCaseAttachments(\r\n caseId,\r\n workflowDocumentsTypes.map((item) => item.documentType!.code!)\r\n )\r\n ;\r\n }\r\n }\r\n } else {\r\n console.log('The attachmentTypeList does not contain any relevant attachments.');\r\n }\r\n } \r\n\r\n const photosProm = [] as any[];\r\n caseAttachments.forEach((element) => {\r\n const categ = workflowDocumentsTypes.find(\r\n (wdt) => wdt.documentTypeId === element.attachmentTypeId\r\n );\r\n if (!categ!.isMultiple && categ!.isSelectionGroup) {\r\n photosProm.push(this.caseService.GetCaseAttachment(element.fileName));\r\n } else {\r\n photosProm.push(null);\r\n }\r\n });\r\n\r\n const photos = await Promise.all([...photosProm]);\r\n caseAttachments.forEach((elem, index) => {\r\n elem.file = photos[index];\r\n });\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n if (this.props.caseSettingsState.caseSettings!.workflow.isPrcIntegration && this.props.appState.appUser!.organization!.organizationType!.hideOtherAttachments) {\r\n attachmentTypeList = attachmentTypeList.filter((item) => item.documentType!.code != AttachmentTypeCode.OTHER);\r\n }\r\n attachmentTypeList.forEach((attachmentType) => {\r\n attachmentType.isLoading = false;\r\n });\r\n\r\n const wfStepActions = this.props.workflowForm.workflowFormActions;\r\n const wfTransitionStepAction =\r\n wfStepActions.find(\r\n (item) =>\r\n item.actionType?.code === WorkflowFormActionTypeCode.STATUS_TRANSITION &&\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId === item.fromStatusId\r\n ) || (null);\r\n\r\n console.log('appointment', appointment, 'appointmentPaymentStatus', appointmentPaymentStatus);\r\n this.setState({\r\n caseAttachments: caseAttachments.sort(function (a: any, b: any) {\r\n return b.uploadDate - a.uploadDate;\r\n }),\r\n attachmentTypeList: attachmentTypeList,\r\n isLoading: false,\r\n hasRights: hasRights,\r\n showUploadMessage: organization!.uploadFeature,\r\n caseStatuses: caseStatuses,\r\n wfTransitionStepAction: wfTransitionStepAction,\r\n appointment: appointment,\r\n appointmentPaymentStatus: appointmentPaymentStatus?.pre_appointment || null,\r\n hideButton: hideButtonsSectionSteps.includes(step?.workflowStep?.code ?? \"\")\r\n });\r\n };\r\n\r\n getWorkflowSectionStep = (workflowSectionStepId: number): WorkflowSectionStep | null => {\r\n const sections = this.props.caseSettingsState.caseSettings!.workflow.workflowSections!;\r\n for (const section of sections) {\r\n for (const step of section.workflowSectionSteps) {\r\n if (step.id == workflowSectionStepId) {\r\n return step;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n setCameraDetails = async (attachmentType: WorkflowDocumentType) => {\r\n this.setState({\r\n attachmentTypeClicked: attachmentType.documentType!,\r\n isCameraDialogOpen: true,\r\n isSelection: attachmentType.isSelectionGroup\r\n });\r\n };\r\n\r\n setAttachmentTypeList = (workflowDocumentType: WorkflowDocumentType, value: boolean) => {\r\n const attachmentTypeList = _.cloneDeep(this.state.attachmentTypeList);\r\n for (let i = 0; i < attachmentTypeList.length; i++) {\r\n if (attachmentTypeList[i].id === workflowDocumentType.id) {\r\n attachmentTypeList[i].isLoading = value;\r\n }\r\n }\r\n\r\n return attachmentTypeList;\r\n };\r\n\r\n /**\r\n * Get dimensions of any image by url\r\n * @param {string} url\r\n * @param {number} [rejectTimeout] timeout for reject\r\n * @return {Promise<{ width: number, height: number }>}\r\n */\r\n reactImageSize = (\r\n url: string,\r\n rejectTimeout: number\r\n ): Promise<{ width: number; height: number }> =>\r\n new Promise((resolve, reject) => {\r\n let timer: NodeJS.Timeout | null = null;\r\n\r\n const img = new Image();\r\n\r\n img.addEventListener('load', () => {\r\n if (timer) {\r\n clearTimeout(timer);\r\n }\r\n\r\n resolve({ width: img.width, height: img.height });\r\n });\r\n\r\n img.addEventListener('error', (event) => {\r\n if (timer) {\r\n clearTimeout(timer);\r\n }\r\n\r\n reject(`${event.type}: ${event.message}`);\r\n });\r\n\r\n img.src = url;\r\n\r\n if (rejectTimeout) {\r\n timer = setTimeout(() => reject('Timeout exception'), rejectTimeout);\r\n }\r\n });\r\n\r\n resizeImageFile = (file: any) : Promise =>\r\n new Promise((resolve, reject) => {\r\n try {\r\n //The Pixels value For 5 Megabytes at 4:3 Respect Ratio and 24 Bit depth is:\r\n //1526 X 1145\r\n Resizer.imageFileResizer(\r\n file,\r\n 1526,\r\n 1145,\r\n \"jpg\",\r\n 100,\r\n 0,\r\n (uri) => {\r\n resolve(uri as File);\r\n },\r\n \"file\",\r\n 600,\r\n 800\r\n );\r\n } catch (err) {\r\n\t\t\t\tconsole.log(err);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n\t\t\t}\r\n \r\n });\r\n\r\n handleUploadAttachment = async (\r\n e: React.ChangeEvent,\r\n workflowDocumentType: WorkflowDocumentType\r\n ) => {\r\n try {\r\n if (e.target.files === null) {\r\n return;\r\n }\r\n e.persist();\r\n if (this.state.showUploadMessage) {\r\n if (e.target.files.length > 80 && workflowDocumentType.isMultiple) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('MORE_PHOTOS', 'Limita de 80 de poze a fost depasita!'),\r\n {\r\n variant: 'warning'\r\n }\r\n );\r\n e.target.value = '';\r\n return;\r\n }\r\n }\r\n this.setState({\r\n attachmentTypeList: this.setAttachmentTypeList(workflowDocumentType, true)\r\n });\r\n const unacceptedFileList: string[] = [];\r\n const attachments: CaseAttachment[] = [];\r\n for (let i = 0; i < e.target.files.length; i++) {\r\n let file = e.target.files![i];\r\n \r\n //pentru selection grup\r\n if (workflowDocumentType.isSelectionGroup) {\r\n const ext = file.name.toLowerCase().split('.').pop();\r\n if (ext && imageExtensions.includes(ext)) {\r\n console.log('Before', file);\r\n file = await this.resizeImageFile(e.target.files![i]);\r\n console.log('After', file);\r\n } else {\r\n unacceptedFileList.push(file.name);\r\n }\r\n }\r\n\r\n attachments.push({\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n attachmentTypeId: workflowDocumentType.documentTypeId,\r\n attachmentType: workflowDocumentType.documentType,\r\n file: file,\r\n isSelection: workflowDocumentType.isSelectionGroup\r\n } as CaseAttachment);\r\n }\r\n\r\n if (workflowDocumentType.isSelectionGroup) {\r\n if (unacceptedFileList.length) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('RENAULT_ACCEPTED_FORMAT', 'Tipul fisierului acceptat este png, jpeg, jpg, bmp!') + ' \\n' +\r\n this.translatorService.Tranlate('RENAULT_ACCEPTED_FORMAT_MESSAGE', 'Urmatoarele fisiere nu indeplinesc acesta conditie: ') + ' \\n' +\r\n unacceptedFileList.join(', '),\r\n {\r\n variant: 'warning',\r\n style: { whiteSpace: 'pre-line' }\r\n }\r\n );\r\n e.target.value = '';\r\n\r\n this.setState({\r\n attachmentTypeList: this.setAttachmentTypeList(workflowDocumentType, false)\r\n });\r\n return;\r\n }\r\n }\r\n\r\n const size = _.sumBy(attachments, 'file.size');\r\n console.log('Dimensiune bytes', size);\r\n\r\n if (this.state.showUploadMessage) {\r\n if (size > UploadSizeLimit.SizeLimit) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('MAX_SIZE_PHOTOS', 'Limita de 500 MB a fost depasita!'),\r\n {\r\n variant: 'warning'\r\n }\r\n );\r\n e.target.value = '';\r\n\r\n this.setState({\r\n attachmentTypeList: this.setAttachmentTypeList(workflowDocumentType, false)\r\n });\r\n return;\r\n }\r\n }\r\n\r\n this.setState({\r\n attachmentTypeList: this.setAttachmentTypeList(workflowDocumentType, true)\r\n });\r\n\r\n const newFiles = await this.caseService.AddCaseAttachment(attachments);\r\n\r\n newFiles.forEach((item, index) => {\r\n item.file = attachments[index].file;\r\n });\r\n\r\n const caseAttachments = [...this.state.caseAttachments];\r\n caseAttachments.push(...newFiles);\r\n\r\n this.setState({\r\n caseAttachments: caseAttachments,\r\n attachmentTypeList: this.setAttachmentTypeList(workflowDocumentType, false)\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n e.target.value = '';\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n e.target.value = '';\r\n }\r\n };\r\n\r\n handleUploadAttachmentFromCamera = async (files: any, attachmentType: IReferential) => {\r\n try {\r\n if (files === null) {\r\n return;\r\n }\r\n if (this.state.showUploadMessage) {\r\n if (files.length > 80) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('MORE_PHOTOS', 'Limita de 80 de poze a fost depasita!'),\r\n {\r\n variant: 'warning'\r\n }\r\n );\r\n return;\r\n }\r\n }\r\n\r\n const attachments: CaseAttachment[] = [];\r\n for (let i = 0; i < files.length; i++) {\r\n attachments.push({\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n attachmentTypeId: attachmentType.id,\r\n attachmentType: attachmentType,\r\n file: files![i],\r\n isSelection: this.state.isSelection\r\n } as CaseAttachment);\r\n }\r\n\r\n if (this.state.showUploadMessage) {\r\n const size = _.sumBy(attachments, 'file.size');\r\n if (size > UploadSizeLimit.SizeLimit) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('MAX_SIZE_PHOTOS', 'Limita de 500 MB a fost depasita!'),\r\n {\r\n variant: 'warning'\r\n }\r\n );\r\n return;\r\n }\r\n }\r\n\r\n const newFiles = await this.caseService.AddCaseAttachment(attachments);\r\n newFiles.forEach((item, index) => {\r\n item.file = attachments[index].file;\r\n });\r\n\r\n const caseAttachments = [...this.state.caseAttachments];\r\n caseAttachments.push(...newFiles);\r\n\r\n this.setState({\r\n caseAttachments: caseAttachments\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleCloseConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n\r\n handleOpenConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: true,\r\n dialogVisible: true\r\n });\r\n };\r\n\r\n handleCloseModal = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n\r\n openDeleteAttachmentPopUp = (id: number, fileName: string, fileInputKey?: number) => {\r\n this.setState({\r\n isOpen: true,\r\n dialogVisible: true,\r\n selectedAttachment: {\r\n id: id,\r\n fileName: fileName,\r\n fileInputKey: fileInputKey\r\n }\r\n });\r\n };\r\n\r\n handleDeleteAttachment = async (id: number, fileName: string, fileInputKey?: number) => {\r\n try {\r\n this.setState({ isOpen: false, dialogVisible: false });\r\n await this.caseService.RemoveCaseAttachment(fileName);\r\n\r\n const caseAttachments = [...this.state.caseAttachments];\r\n const index = caseAttachments.findIndex((item) => item.id === id);\r\n caseAttachments.splice(index, 1);\r\n\r\n this.setState({\r\n caseAttachments: caseAttachments,\r\n attachmentTypeList: this.state.attachmentTypeList.map((item) => {\r\n if (item.fileInputKey === fileInputKey) {\r\n return { ...item, fileInputKey: Date.now() };\r\n }\r\n return item;\r\n })\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handlePreviewAttachment = async (originalFileName: string, filename: string) => {\r\n try {\r\n const fileBlob = await this.caseService.GetCaseAttachment(filename);\r\n const url = URL.createObjectURL(fileBlob);\r\n const extension = originalFileName.split('.').pop();\r\n\r\n if (isNullOrUndefined(extension)) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n previewAttachFile: url,\r\n previewAttachFileExtension: extension!.toLowerCase(),\r\n isDialogOpen: true\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n renderPreviewAttachment = () => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n renderPreviewImage = (file: any, fileName: string) => {\r\n const url = URL.createObjectURL(file);\r\n\r\n return {fileName};\r\n };\r\n\r\n renderAttachments = (workflowDocument: WorkflowDocumentType) => {\r\n const attachments = this.state.caseAttachments.filter(\r\n (item) => item.attachmentTypeId === workflowDocument.documentTypeId\r\n );\r\n const attachmentsToRender = [] as any[];\r\n\r\n attachments.forEach((attach, index) => {\r\n attachmentsToRender.push(\r\n \r\n \r\n \r\n
\r\n \r\n this.handlePreviewAttachment(attach.originalFileName, attach.fileName)\r\n }\r\n >\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n this.downloadFile(attach.fileName, attach.originalFileName)}\r\n >\r\n {attach.originalFileName}\r\n {' '}\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n this.downloadFile(attach.fileName, attach.originalFileName)}\r\n >\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {workflowDocument.isMultiple === false && workflowDocument.isSelectionGroup ? (\r\n
\r\n
\r\n {this.renderPreviewImage(attach.file, attach.fileName)}\r\n
\r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n });\r\n return attachmentsToRender;\r\n };\r\n\r\n downloadFile = async (fileName: string, origFileName: string) => {\r\n const fileBlob = await this.caseService.GetCaseAttachment(fileName);\r\n FileSaver.saveAs(fileBlob, origFileName);\r\n };\r\n\r\n canUpload = (attachemntType: WorkflowDocumentType): boolean => {\r\n const files = this.state.caseAttachments.filter(\r\n (attach) => attach.attachmentTypeId === attachemntType.documentTypeId\r\n );\r\n\r\n if (!attachemntType.isMultiple && files.length >= 1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n generateReport = async (workflowDocumentType: WorkflowDocumentType, appointment: Appointment | null, appointmentPaymentStatus: PreAppointment | null) => {\r\n if (workflowDocumentType.documentType!.code === AttachmentTypeCode.INVOICE_REPAIR.toString()) {\r\n await this.generateInvoiceReport(workflowDocumentType, appointmentPaymentStatus);\r\n } else {\r\n if (appointment === null) { \r\n return;\r\n }\r\n await this.generateInOutReport(workflowDocumentType, appointment);\r\n }\r\n }\r\n\r\n generateInOutReport = async (workflowDocumentType: WorkflowDocumentType, appointment: Appointment) => {\r\n try {\r\n this.setState({\r\n attachmentTypeList: this.setAttachmentTypeList(workflowDocumentType, true)\r\n });\r\n //Get the In/Out Report\r\n const reportParameters = [\r\n {\r\n name: 'caseId',\r\n value: this.props.caseSettingsState.case!.id.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'appointmentId',\r\n value: appointment.id.toString()\r\n },\r\n {\r\n name: 'organizationId',\r\n value: this.props.appState.appUser!.organization?.id.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'type',\r\n value: workflowDocumentType.documentType!.code!\r\n } as ReportParameter\r\n ];\r\n\r\n const fileBlob = await this.reportsService.GetInOutReport(workflowDocumentType.documentType!.code!, this.props.caseSettingsState.case!.id, appointment.id, reportParameters);\r\n\r\n //Save the IN/OUT Report into attachments\r\n const attachments: CaseAttachment[] = [];\r\n attachments.push({\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n attachmentTypeId: workflowDocumentType.documentType!.id,\r\n attachmentType: workflowDocumentType.documentType!,\r\n file: new File([fileBlob], workflowDocumentType.documentType!.displayName! + \"-\" + this.props.workflowForm.appointmentCategoryType!.displayName! + '.pdf', { type: 'application/pdf' }),\r\n isSelection: false,\r\n appointmentId: appointment.id,\r\n includeInOtherTab: true\r\n } as CaseAttachment);\r\n\r\n console.log(attachments);\r\n const newFiles = await this.caseService.AddCaseAttachment(attachments);\r\n\r\n newFiles.forEach((item, index) => {\r\n item.file = attachments[index].file;\r\n });\r\n\r\n const caseAttachments = [...this.state.caseAttachments];\r\n caseAttachments.push(...newFiles);\r\n\r\n this.setState({\r\n caseAttachments: caseAttachments,\r\n attachmentTypeList: this.setAttachmentTypeList(workflowDocumentType, false)\r\n });\r\n\r\n } catch (error) {\r\n console.log('error', error);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n generateInvoiceReport = async (workflowDocumentType: WorkflowDocumentType, appointmentPaymentStatus: PreAppointment | null) => {\r\n try {\r\n this.setState({\r\n attachmentTypeList: this.setAttachmentTypeList(workflowDocumentType, true)\r\n });\r\n //Get the invoice Data\r\n const reportParameters = [\r\n {\r\n name: 'caseId',\r\n value: this.props.caseSettingsState.case!.id.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'organizationId',\r\n value: this.props.appState.appUser!.organization?.id.toString()\r\n } as ReportParameter\r\n ];\r\n\r\n if (appointmentPaymentStatus && appointmentPaymentStatus?.payment?.status === AppointmentPaymentStatus.COMPLETED.toString()) {\r\n reportParameters.push({\r\n name: 'paymentAmount',\r\n value: appointmentPaymentStatus?.payment.amount.toString()\r\n } as ReportParameter);\r\n }\r\n\r\n const fileBlob = await this.reportsService.GetInvoiceReport(workflowDocumentType.documentType!.code!, this.props.caseSettingsState.case!.id, reportParameters);\r\n\r\n //Save the IN/OUT Report into attachments\r\n const attachments: CaseAttachment[] = [];\r\n attachments.push({\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n attachmentTypeId: workflowDocumentType.documentType!.id,\r\n attachmentType: workflowDocumentType.documentType!,\r\n file: new File([fileBlob], workflowDocumentType.documentType!.displayName! + '.pdf', { type: 'application/pdf' }),\r\n isSelection: false,\r\n includeInOtherTab: true\r\n } as CaseAttachment);\r\n\r\n console.log(attachments);\r\n const newFiles = await this.caseService.AddCaseAttachment(attachments);\r\n\r\n newFiles.forEach((item, index) => {\r\n item.file = attachments[index].file;\r\n });\r\n\r\n const caseAttachments = [...this.state.caseAttachments];\r\n caseAttachments.push(...newFiles);\r\n\r\n this.setState({\r\n caseAttachments: caseAttachments,\r\n attachmentTypeList: this.setAttachmentTypeList(workflowDocumentType, false)\r\n });\r\n\r\n } catch (error) {\r\n console.log('error', error);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n renderWorkflowAttashmentTypes = () => {\r\n const attachmentTypes = [] as any[];\r\n const attachmentTypeList = this.state.attachmentTypeList;\r\n if (attachmentTypeList.length !== 0) {\r\n attachmentTypeList.forEach((attach, index) => {\r\n attach.fileInputKey = Date.now();\r\n attachmentTypes.push(\r\n
\r\n \r\n
\r\n
\r\n {attach.isSelectionGroup ? 'Renew: ' : ''}\r\n \r\n {attach.documentType!.displayName}\r\n {attach.isMultiple ? (\r\n item.attachmentTypeId === attach.documentTypeId\r\n ).length === 0\r\n }\r\n onClick={(e) => {\r\n this.downloadBasedOnAttachmentType(attach);\r\n }}\r\n >\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n {!attach.isLoading ? (\r\n
\r\n {this.state.caseAttachments.filter(\r\n (item) => item.attachmentTypeId === attach.documentTypeId\r\n ).length !== 0 ? (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
{this.renderAttachments(attach)}
\r\n
\r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n \r\n {(attach.documentType!.code === AttachmentTypeCode.WORK_ORDER.toString() || \r\n attach.documentType!.code === AttachmentTypeCode.HAND_OVER.toString() || \r\n attach.documentType!.code === AttachmentTypeCode.INVOICE_REPAIR.toString()\r\n )\r\n ? ( \r\n this.state.caseAttachments.filter(\r\n (item) => item.attachmentTypeId === attach.documentTypeId\r\n ).length === 0 ? (\r\n \r\n this.generateReport(attach, this.state.appointment, this.state.appointmentPaymentStatus)}\r\n >\r\n {attach.documentType!.code === AttachmentTypeCode.INVOICE_REPAIR.toString() ? this.translatorService.Tranlate('INVOICE_REPAIR_GENERATION_LABEL', 'Genereaza factura') : this.translatorService.Tranlate('IN_OUT_REPORT_GENERATION_LABEL', 'Genereaza raport') }\r\n \r\n \r\n ) : null\r\n ) : (\r\n \r\n \r\n {\r\n return this.handleUploadAttachment(e, attach);\r\n }}\r\n type=\"file\"\r\n multiple={attach.isMultiple}\r\n />\r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_TAB_DOCUMENTS_FORM_UPLOAD',\r\n 'Upload'\r\n )}\r\n \r\n \r\n \r\n this.setCameraDetails(attach)}\r\n aria-label=\"photo\"\r\n color=\"primary\"\r\n size=\"medium\"\r\n className=\"p-0\"\r\n >\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n
\r\n );\r\n });\r\n }\r\n return attachmentTypes;\r\n };\r\n\r\n downloadAll = async () => {\r\n const fileBlob = await this.caseService.GetCaseAttachmentsArchive(\r\n this.props.caseSettingsState.case!.id,\r\n null,\r\n this.state.attachmentTypeList.map((item) => item.documentType!.code!)\r\n );\r\n FileSaver.saveAs(\r\n fileBlob,\r\n this.props.caseSettingsState.case!.id + '_' + this.props.workflowForm.displayName + '.zip'\r\n );\r\n };\r\n\r\n downloadBasedOnAttachmentType = async (item: WorkflowDocumentType) => {\r\n this.setState({\r\n attachmentTypeList: this.setAttachmentTypeList(item, true)\r\n });\r\n const fileBlob = await this.caseService.GetCaseAttachmentsArchive(\r\n this.props.caseSettingsState.case!.id,\r\n null,\r\n [item.documentType!.code!]\r\n );\r\n this.setState({\r\n attachmentTypeList: this.setAttachmentTypeList(item, false)\r\n });\r\n FileSaver.saveAs(\r\n fileBlob,\r\n this.props.caseSettingsState.case!.id + '_' + item.documentType!.displayName + '.zip'\r\n );\r\n };\r\n\r\n handleConfirmChanges = async () => {\r\n try {\r\n let error = false;\r\n this.state.attachmentTypeList.forEach((item) => {\r\n if (\r\n (item.isMandatory as unknown as boolean) === true &&\r\n this.state.caseAttachments.filter(\r\n (attach) => attach.attachmentTypeId === item.documentTypeId\r\n ).length === 0\r\n ) {\r\n this.props.enqueueSnackbar(\r\n item.documentType!.displayName +\r\n ' ' +\r\n this.translatorService.Tranlate(\r\n 'CASE_DOCUMENTS_FORM_IS_MANDATORY',\r\n 'este obligatoriu de adaugat!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n error = true;\r\n }\r\n return;\r\n });\r\n\r\n this.setState({ executing: true });\r\n if (error === false) {\r\n\r\n\r\n if (this.props.workflowForm.form.hasActions) {\r\n await this.submitForm(\r\n this.props.caseSettingsState.case!.id,\r\n this.props.workflowForm.id,\r\n null\r\n );\r\n }\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n }\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n this.translatorService.Tranlate(ex.response.data, 'Eroare incarcare documente!'),\r\n { variant: 'error' }\r\n );\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n carfixAttachmentNotification = async (attachmentType: IReferential | null, attachmentId: number) => {\r\n try {\r\n const request = {\r\n caseId: this.props.caseSettingsState.case!.id,\r\n workflowId: this.props.caseSettingsState.caseSettings!.workflow.id,\r\n attachmentId: attachmentId,\r\n attachmentTypeCode: attachmentType!.code!\r\n } as CarfixAttachmentNotificationRequest;\r\n const result = await this.caseService.CarfixAttachmentNotification(request) as CarfixAttachmentNotificationResponse;\r\n if (!result.success) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate(result.code, result.message), {\r\n variant: 'error'\r\n });\r\n return true;\r\n }\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n return true;\r\n }\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n if (this.props.caseSettingsState.caseSettings!.workflow.isCarfixIntegration) {\r\n const attachment = this.state.caseAttachments.length > 0 ? this.state.caseAttachments[0] : null;\r\n if (attachment === null) {\r\n return;\r\n }\r\n const attachmentType = this.state.attachmentTypeList.find(\r\n (item) => item.documentTypeId === attachment.attachmentTypeId\r\n );\r\n const hasError = await this.carfixAttachmentNotification(attachmentType!.documentType, attachment.id);\r\n if (hasError) {\r\n return;\r\n }\r\n }\r\n\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState({\r\n isDialogOpen: false\r\n });\r\n };\r\n\r\n closeCameraDialog = async () => {\r\n this.setState({\r\n isCameraDialogOpen: false,\r\n isSelection: false\r\n });\r\n };\r\n\r\n handleTakePhoto = async (dataUri: any) => {\r\n const arr = dataUri.split(','),\r\n mime = arr[0].match(/:(.*?);/)[1],\r\n bstr = atob(arr[1]),\r\n n = bstr.length,\r\n u8arr = new Uint8Array(n);\r\n\r\n let i = n;\r\n\r\n while (i--) {\r\n u8arr[i] = bstr.charCodeAt(i);\r\n }\r\n\r\n const files = [\r\n new File([u8arr], 'captured_image_' + Math.random().toString(36).slice(2) + '.png', {\r\n type: mime\r\n })\r\n ];\r\n this.handleUploadAttachmentFromCamera(files, this.state.attachmentTypeClicked);\r\n };\r\n\r\n public hasIntegrationDocuments = () => {\r\n return this.state.attachmentTypeList.some((item) => item.documentType!.code === AttachmentTypeCode.INVOICE_REPAIR.toString() || item.documentType!.code === AttachmentTypeCode.HAND_OVER.toString() || item.documentType!.code === AttachmentTypeCode.WORK_ORDER.toString());\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.reportsService = (this.context as AppContext).reportsService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
\r\n {this.state.showUploadMessage ? (\r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate(\r\n 'PHOTO_LIMIT_MESSAGE',\r\n 'Conditiile pentru 1 upload sunt urmatoarele : Numar Total Poze ≤ 80 si Dimensiune Totala ≤ 500MB .'\r\n )}\r\n \r\n
\r\n
\r\n ) : (\r\n ''\r\n )}\r\n
{this.renderWorkflowAttashmentTypes()}
\r\n
\r\n
\r\n

\r\n {this.state.hideButton ? null : (\r\n \r\n {this.props.caseSettingsState?.caseSettings!.workflow?.isCarfixIntegration && this.hasIntegrationDocuments() ? \r\n this.translatorService.Tranlate(\r\n 'TAB_DOCUMENTS_SEND_TO_CLIENT',\r\n 'Trimite la client'\r\n ) \r\n : this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n )\r\n }\r\n\r\n
\r\n ) : null}\r\n\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('CASE_PREVIEW_DOC', 'Previzualizare document')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderPreviewAttachment()}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {`${this.translatorService.Tranlate(\r\n 'DOCUMENT_DELETE_CONFIRMATION_MESSAGE',\r\n 'Sunteti sigur ca doriti sa stergeti documentul?'\r\n )} `}\r\n \r\n \r\n \r\n {\r\n const selectedAttachment = this.state.selectedAttachment;\r\n this.handleDeleteAttachment(\r\n selectedAttachment.id,\r\n selectedAttachment.fileName,\r\n selectedAttachment.fileInputKey\r\n );\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_SEARCH_FORM_VEHICLE_YES', 'Da')}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('CASE_DATA_TAKE_PHOTO_TITLE', 'Fotografiaza')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.handleTakePhoto(dataUri);\r\n }}\r\n onTakePhotoAnimationDone={(dataUri: any) => {\r\n this.closeCameraDialog();\r\n }}\r\n mirrored={true}\r\n />\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabDocumentsFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabDocumentsForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n IconButton,\r\n GridList,\r\n GridListTile,\r\n GridListTileBar,\r\n Button,\r\n Grid,\r\n Dialog,\r\n DialogTitle,\r\n Typography,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CaseAttachment } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { ReferentialCode, AttachmentTypeCode } from '../../helpers/Constants';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { DropzoneArea } from 'material-ui-dropzone';\r\nimport FileSaver from 'file-saver';\r\nimport Carousel, { Modal, ModalGateway } from 'react-images';\r\nimport GetAppIcon from '@material-ui/icons/GetApp';\r\nimport { WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport PhotoCameraOutlinedIcon from '@material-ui/icons/PhotoCameraOutlined';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-ignore\r\nimport Camera from 'react-html5-camera-photo';\r\nimport 'react-html5-camera-photo/build/css/index.css';\r\n\r\ninterface ICaseDetailsCaseTabCarPhotosFormState {\r\n caseCarPhotos: CaseAttachment[];\r\n imgType: IReferential;\r\n isLoading: boolean;\r\n isUploading: boolean;\r\n currentImage: number;\r\n viewerIsOpen: boolean;\r\n hasRights: boolean;\r\n executing: boolean;\r\n isDialogOpen: boolean;\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseTabCarPhotosFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseTabCarPhotosFormProps = ExternalCaseDetailsCaseTabCarPhotosFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabCarPhotosForm extends React.PureComponent<\r\n ICaseDetailsCaseTabCarPhotosFormProps,\r\n ICaseDetailsCaseTabCarPhotosFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n caseCarPhotos: [],\r\n attachmentTypeList: [],\r\n imgType: {} as IReferential,\r\n isLoading: false,\r\n currentImage: 0,\r\n viewerIsOpen: false,\r\n hasRights: false,\r\n executing: false,\r\n isDialogOpen: false,\r\n isUploading: false\r\n } as ICaseDetailsCaseTabCarPhotosFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseDocumentsForm();\r\n }\r\n );\r\n }\r\n\r\n loadCaseDocumentsForm = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.AttachmentType\r\n );\r\n\r\n const [caseCarPhotos, attachmentTypes] = await Promise.all([\r\n this.caseService.GetCaseAttachments(caseId, [AttachmentTypeCode.IMG]),\r\n this.appReferentialService.Get(ref!.baseUrl)\r\n ]);\r\n\r\n const photosProm = [] as any[];\r\n caseCarPhotos.forEach((element) => {\r\n photosProm.push(this.caseService.GetCaseAttachment(element.fileName));\r\n });\r\n\r\n const photos = await Promise.all([...photosProm]);\r\n\r\n caseCarPhotos.forEach((elem, index) => {\r\n elem.file = photos[index];\r\n });\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n this.setState({\r\n caseCarPhotos: caseCarPhotos.sort(function (a: any, b: any) {\r\n return b.uploadDate - a.uploadDate;\r\n }),\r\n imgType: attachmentTypes.find((item) => item.code === AttachmentTypeCode.IMG)!,\r\n isLoading: false,\r\n hasRights: hasRights\r\n });\r\n };\r\n\r\n handleUploadAttachment = async (files: File[]) => {\r\n try {\r\n if (files.length === 0) {\r\n return;\r\n }\r\n this.setState({ isUploading: true });\r\n\r\n const attachments: CaseAttachment[] = [];\r\n files.forEach((file) => {\r\n attachments.push({\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n attachmentTypeId: this.state.imgType.id,\r\n attachmentType: this.state.imgType,\r\n file: file,\r\n isSelection: false\r\n } as CaseAttachment);\r\n });\r\n\r\n const newFiles = await this.caseService.AddCaseAttachment(attachments);\r\n const caseCarPhotos = [...this.state.caseCarPhotos];\r\n\r\n for (const item of newFiles) {\r\n item.file = (await this.caseService.GetCaseAttachment(item.fileName)) as File;\r\n }\r\n\r\n caseCarPhotos.push(...newFiles);\r\n\r\n this.setState({\r\n caseCarPhotos: caseCarPhotos,\r\n isUploading: false\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n downloadFile = async (file: File, origFileName: string) => {\r\n FileSaver.saveAs(file, origFileName);\r\n };\r\n\r\n handleDeleteAttachment = async (id: number, fileName: string) => {\r\n try {\r\n await this.caseService.RemoveCaseAttachment(fileName);\r\n\r\n const caseAttachments = [...this.state.caseCarPhotos];\r\n const index = caseAttachments.findIndex((item) => item.id === id);\r\n caseAttachments.splice(index, 1);\r\n\r\n this.setState({\r\n caseCarPhotos: caseAttachments\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n handleConfirmChanges = async () => {\r\n try {\r\n if (this.state.caseCarPhotos.length === 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'CASE_CAR_PHOTOS_FORM_AT_LEAST_ONE_PICTURE_ERROR',\r\n 'Trebuie sa incarcati cel putin o poza!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n this.setState({ executing: true });\r\n\r\n await this.submitForm(\r\n this.props.caseSettingsState.case!.id,\r\n this.props.workflowForm.id,\r\n null\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n this.translatorService.Tranlate(ex.response.data, 'Eroare incarcare poze!'),\r\n { variant: 'error' }\r\n );\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n openLightbox = (index: number) => {\r\n this.setState({ currentImage: index, viewerIsOpen: true });\r\n };\r\n\r\n closeLightbox = () => {\r\n this.setState({ currentImage: 0, viewerIsOpen: false });\r\n };\r\n\r\n downloadAll = async () => {\r\n const fileBlob = await this.caseService.GetCaseAttachmentsArchive(\r\n this.props.caseSettingsState.case!.id,\r\n null,\r\n [AttachmentTypeCode.IMG]\r\n );\r\n FileSaver.saveAs(\r\n fileBlob,\r\n this.props.caseSettingsState.case!.id + '_' + this.props.workflowForm.displayName + '.zip'\r\n );\r\n };\r\n\r\n handleTakePhoto = async (dataUri: any) => {\r\n const arr = dataUri.split(','),\r\n mime = arr[0].match(/:(.*?);/)[1],\r\n bstr = atob(arr[1]),\r\n n = bstr.length,\r\n u8arr = new Uint8Array(n);\r\n\r\n let i = n;\r\n\r\n while (i--) {\r\n u8arr[i] = bstr.charCodeAt(i);\r\n }\r\n\r\n const files = [\r\n new File([u8arr], 'captured_image_' + Math.random().toString(36).slice(2) + '.png', {\r\n type: mime\r\n })\r\n ];\r\n this.handleUploadAttachment(files);\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState({\r\n isDialogOpen: false\r\n });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
\r\n {this.state.hasRights ? (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isUploading ? (\r\n this.handleUploadAttachment(files)}\r\n previewText=\"\"\r\n showAlerts={true}\r\n acceptedFiles={['image/*']}\r\n />\r\n ) : null}\r\n
\r\n \r\n this.setState({ isDialogOpen: true })}\r\n style={{ borderRadius: '10px', cursor: 'pointer', borderStyle: 'dashed' }}\r\n className=\"h-100 border-2\"\r\n >\r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_DATA_TAKE_PHOTO_TITLE',\r\n 'Fotografiaza'\r\n )}\r\n

\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n \r\n {this.state.caseCarPhotos.map((item: CaseAttachment, index: number) => (\r\n \r\n
\r\n this.openLightbox(index)}\r\n />\r\n \r\n this.downloadFile(item.file, item.originalFileName)}\r\n >\r\n \r\n \r\n this.handleDeleteAttachment(item.id, item.fileName)}\r\n hidden={!this.state.hasRights}\r\n >\r\n \r\n \r\n
\r\n }\r\n />\r\n
\r\n \r\n ))}\r\n \r\n \r\n {this.state.viewerIsOpen ? (\r\n \r\n ({\r\n ...x,\r\n source: URL.createObjectURL(x.file)\r\n }))}\r\n />\r\n \r\n ) : null}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate('CASE_CAR_PHOTOS_FORM_CONFIRM_BUTTON', 'Confirma')}\r\n \r\n
\r\n
\r\n ) : null}\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('CASE_DATA_TAKE_PHOTO_TITLE', 'Fotografiaza')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.handleTakePhoto(dataUri);\r\n }}\r\n onTakePhotoAnimationDone={(dataUri: any) => {\r\n this.closeDialog();\r\n }}\r\n mirrored={true}\r\n />\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabCarPhotosFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabCarPhotosForm as any));\r\n","import { CaseCalculationPart } from '../interfaces/Case';\r\nimport { IReferential } from './IReferential';\r\nimport { CalculationSectionCodeEnum } from '../helpers/Constants';\r\n\r\nexport class CalculationParts {\r\n private _parts: CaseCalculationPart[];\r\n private _sections: IReferential[];\r\n private _vat: number;\r\n private _ignoreAlternativePart: boolean;\r\n private _smallPartPercentage: number;\r\n\r\n public constructor(\r\n sections: IReferential[],\r\n parts: CaseCalculationPart[],\r\n vat: number,\r\n smallPartsPercent: number,\r\n ignoreAlternativePart = true\r\n ) {\r\n this._sections = sections;\r\n this._parts = parts;\r\n this._vat = vat / 100;\r\n this._smallPartPercentage = smallPartsPercent;\r\n this._ignoreAlternativePart = ignoreAlternativePart;\r\n }\r\n\r\n public get SmallPartPercentage(): number {\r\n return this._smallPartPercentage;\r\n }\r\n\r\n public GetSmallPartsValue(): number {\r\n return this.GetAmountSalePartWithDiscount(CalculationSectionCodeEnum.PART) * (this._smallPartPercentage / 100);\r\n }\r\n\r\n private GetPrice(part: CaseCalculationPart): number {\r\n return part.alternativePartQualityId === null || this._ignoreAlternativePart\r\n ? part.originalPrice\r\n : part.alternativePrice ?? 0;\r\n }\r\n\r\n private GetDiscount(part: CaseCalculationPart): number {\r\n const discount =\r\n part.alternativePartQualityId === null || this._ignoreAlternativePart\r\n ? part.discount\r\n : part.alternativePartDiscount;\r\n const addition = part.additionInsurer !== null ? part.additionInsurer : 0;\r\n\r\n return discount !== null ? (discount - addition) / 100 : (0 - addition) / 100;\r\n }\r\n\r\n private GetInsurerAddition(part: CaseCalculationPart): number {\r\n return part.additionInsurer !== null ? part.additionInsurer / 100 : 0;\r\n }\r\n\r\n public GetAmountPart(section: string): number {\r\n const partsSectionId: number = this._sections.find(\r\n (item) => item.isActive && item.code === section\r\n )!.id;\r\n return this._parts\r\n .filter((item) => item.calculationSectionId === partsSectionId)\r\n .reduce((sum, item) => sum + item.pieceNr * this.GetPrice(item), 0);\r\n }\r\n\r\n public GetAmountPieceTotal(): number {\r\n return this.GetAmountPart(CalculationSectionCodeEnum.PART);\r\n }\r\n\r\n public GetAmountPartWithDiscount(section: string): number {\r\n const partsSectionId: number = this._sections.find(\r\n (item) => item.isActive && item.code === section\r\n )!.id;\r\n const smallPartValue: number =\r\n section === CalculationSectionCodeEnum.PART ? this.GetSmallPartsValue() : 0;\r\n\r\n return (\r\n smallPartValue +\r\n this._parts\r\n .filter((item) => item.calculationSectionId === partsSectionId)\r\n .reduce(\r\n (sum, item) => sum + item.pieceNr * this.GetPrice(item) * (1 - this.GetDiscount(item)),\r\n 0\r\n )\r\n );\r\n }\r\n\r\n public GetAmountSalePartWithDiscount(section: string): number {\r\n const partsSectionId: number = this._sections.find(\r\n (item) => item.isActive && item.code === section\r\n )!.id;\r\n return (\r\n this._parts\r\n .filter((item) => item.calculationSectionId === partsSectionId)\r\n .reduce(\r\n (sum, item) => sum + item.pieceNr * this.GetPrice(item) * (1 - this.GetDiscount(item)),\r\n 0\r\n )\r\n );\r\n }\r\n\r\n public TotalDiscount(): number {\r\n return this._parts.reduce(\r\n (sum, item) => sum + item.pieceNr * this.GetPrice(item) * this.GetDiscount(item),\r\n 0\r\n );\r\n }\r\n\r\n public GetTotalInsurerAddition(section: string): number {\r\n const partsSectionId: number = this._sections.find(\r\n (item) => item.isActive && item.code === section\r\n )!.id;\r\n\r\n return (\r\n this._parts\r\n .filter((item) => item.calculationSectionId === partsSectionId)\r\n .reduce(\r\n (sum, item) => sum + item.pieceNr * this.GetPrice(item) * this.GetInsurerAddition(item),\r\n 0\r\n )\r\n );\r\n }\r\n\r\n public TotalWithoutVAT(): number {\r\n const totalParts: number = this._parts.reduce(\r\n (sum, item) => sum + item.pieceNr * this.GetPrice(item),\r\n 0\r\n );\r\n\r\n const smallPartsValue: number = this.GetSmallPartsValue();\r\n const discount: number = this.TotalDiscount();\r\n\r\n return totalParts - discount + smallPartsValue;\r\n }\r\n\r\n public TotalVAT(): number {\r\n return this.TotalWithoutVAT() * this._vat;\r\n }\r\n\r\n public Total(): number {\r\n const totalWithoutVAT: number = this.TotalWithoutVAT();\r\n return totalWithoutVAT + totalWithoutVAT * this._vat;\r\n }\r\n\r\n private GetDiscountPercent(part: CaseCalculationPart): number {\r\n const discount =\r\n part.alternativePartQualityId === null || this._ignoreAlternativePart\r\n ? part.discount\r\n : part.alternativePartDiscount;\r\n\r\n return discount !== null ? discount / 100 : 0;\r\n }\r\n\r\n public GetTotalPartsDiscount(section: string): number {\r\n const partsSectionId: number = this._sections.find(\r\n (item) => item.isActive && item.code === section\r\n )!.id;\r\n\r\n return (\r\n this._parts\r\n .filter((item) => item.calculationSectionId === partsSectionId)\r\n .reduce(\r\n (sum, item) => sum + item.pieceNr * this.GetPrice(item) * this.GetDiscountPercent(item),\r\n 0\r\n )\r\n );\r\n }\r\n \r\n}\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, CaseSettingsState, AppState, VehicleState } from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Tooltip,\r\n CardContent,\r\n Card,\r\n Button,\r\n IconButton,\r\n Grid,\r\n Dialog,\r\n DialogTitle,\r\n Typography,\r\n DialogContent,\r\n TextField,\r\n Input,\r\n FormControlLabel\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { CaseCalculationHistory, CaseCalculationPart } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport {\r\n ReferentialCode,\r\n ParametreCode,\r\n InsuredTypeCode,\r\n CalculationSectionCodeEnum,\r\n CalculationTypeCode,\r\n OwnStockCodeEnum\r\n} from '../../helpers/Constants';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n SelectableRows,\r\n MUIDataTableMeta\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport CloudDownloadTwoToneIcon from '@material-ui/icons/CloudDownloadTwoTone';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport NumberFormat from 'react-number-format';\r\nimport { Organization } from '../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { WorkflowCalculation, WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport * as XLSX from 'xlsx';\r\nimport { ImportCalculationOriginalPartsFileHeader } from '../../helpers/Constants';\r\nimport { VehicleHelper } from '../../helpers/VehicleHelper';\r\nimport * as R from 'ramda';\r\nimport { CalculationParts } from '../../interfaces/CalculationParts';\r\nimport { isNullOrUndefined } from 'util';\r\nimport _ from 'lodash';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport { IWorkflowService } from '../../services/Interfaces/IWorkflowService';\r\n\r\nexport interface ExternalCaseDetailsCaseTabCalculationDetailsProps {\r\n calculationHistoryId: number;\r\n handleModifiedPropChanges: (modified: boolean) => void;\r\n onSave: () => void;\r\n stepFormId: number;\r\n hasRights: boolean;\r\n}\r\n\r\ninterface ICaseDetailsCaseTabCalculationDetailsState {\r\n caseCalculationHistoryDetails: CaseCalculationHistory;\r\n calculationSectionList: IReferential[];\r\n calculationParts: CaseCalculationPart[];\r\n newCalculationPart: CaseCalculationPart | null;\r\n newCalculationPartId: number | null;\r\n partQualityTypes: IReferential[];\r\n supplierList: Organization[];\r\n isDialogOpen: boolean;\r\n isLoading: boolean;\r\n currentSection: IReferential | null;\r\n TVA: string;\r\n modified: boolean;\r\n workflowCalculation: WorkflowCalculation | undefined;\r\n solutionValues: IReferential[];\r\n costCenter: IReferential | null;\r\n deliveryAdress: Organization | null;\r\n maintenancePackage: IReferential | null;\r\n}\r\n\r\ntype ICaseDetailsCaseTabCalculationDetailsProps =\r\n ExternalCaseDetailsCaseTabCalculationDetailsProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabCalculationDetails extends React.PureComponent<\r\n ICaseDetailsCaseTabCalculationDetailsProps,\r\n ICaseDetailsCaseTabCalculationDetailsState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n private appuserService!: IAppUserService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n caseCalculationHistoryDetails: {} as CaseCalculationHistory,\r\n calculationSectionList: [],\r\n calculationParts: [],\r\n newCalculationPart: null,\r\n newCalculationPartId: null,\r\n partQualityTypes: [],\r\n supplierList: [],\r\n isDialogOpen: false,\r\n isLoading: true,\r\n currentSection: null,\r\n TVA: '',\r\n modified: false,\r\n workflowCalculation: undefined,\r\n solutionValues: [],\r\n costCenter: null,\r\n deliveryAdress: null,\r\n maintenancePackage: null\r\n } as ICaseDetailsCaseTabCalculationDetailsState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (caseSettings === null || caseSettings === undefined || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCalculationDetails();\r\n }\r\n );\r\n }\r\n\r\n loadCalculationDetails = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (caseSettings === null || caseSettings === undefined || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n const casee = this.props.caseSettingsState.case;\r\n const TVA = this.props.caseSettingsState.case!.caseParameters.find(\r\n (item) => item.parameter!.code === ParametreCode.TVA\r\n )!.value;\r\n\r\n if (casee === null) {\r\n return;\r\n }\r\n\r\n const refQualityPart = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CarPartCategory\r\n );\r\n const currencyRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.Currency\r\n );\r\n const refSolutionValue = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.SolutionValue\r\n );\r\n const maintenancePackageRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.MaintenancePackage\r\n );\r\n\r\n const [\r\n currencyLIst,\r\n caseCalculation,\r\n calculationSections,\r\n caseCalculationParts,\r\n partQualityTypes,\r\n solutionValues,\r\n maintenancePackages\r\n ] = await Promise.all([\r\n this.appReferentialService.Get(currencyRef!.baseUrl),\r\n this.caseService.GetCaseCalculationHistoryDetails(this.props.calculationHistoryId),\r\n this.caseService.GetCalculationSections(),\r\n this.caseService.GetCaseCalculationParts(this.props.calculationHistoryId),\r\n this.appReferentialService.Get(refQualityPart!.baseUrl),\r\n this.appReferentialService.Get(refSolutionValue!.baseUrl),\r\n this.appReferentialService.Get(maintenancePackageRef!.baseUrl)\r\n ]);\r\n const workflowSuppliersList =\r\n this.props.caseSettingsState.caseSettings!.workflow.workflowSuppliers;\r\n const suppliers =\r\n workflowSuppliersList.length > 0\r\n ? await this.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(workflowSuppliersList.map((item) => item.supplierId)))\r\n )\r\n : [];\r\n\r\n caseCalculation.currency = currencyLIst.find(\r\n (item) => item.code === caseCalculation.currencyCode\r\n )!;\r\n\r\n const usr = await this.appuserService.GetUserInfo(caseCalculation.userId);\r\n caseCalculation.user = usr;\r\n const form = this.getWorkflowForm(this.props.stepFormId);\r\n\r\n const workflowCalculation = form!.workflowCalculations.find(\r\n (item) =>\r\n item.workflowPartner!.partnerId === this.props.appState.appUser!.hoId &&\r\n (item.userRoleId === this.props.appState.appUser!.roleId || R.isNil(item.userRoleId)) &&\r\n item.caseStatusId === this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n let costCenter = null;\r\n if (!R.isNil(this.props.caseSettingsState.case!.caseEvent)) {\r\n if (!isNullOrUndefined(this.props.caseSettingsState.case!.caseEvent.organizationId)) {\r\n costCenter = await this.workflowService.GetCostCenter(\r\n this.props.caseSettingsState.case!.caseEvent.organizationId!\r\n );\r\n }\r\n }\r\n\r\n \r\n let partsLocationOrganization = null;\r\n if (!isNullOrUndefined(caseCalculation.partsLocationOrganizationId)) {\r\n partsLocationOrganization = await this.organizationService.GetOrganization(\r\n caseCalculation.partsLocationOrganizationId!\r\n );\r\n }\r\n\r\n let maintenancePackage: IReferential | null = null;\r\n if (!isNullOrUndefined(caseCalculation.maintenancePackageId)) {\r\n maintenancePackage = maintenancePackages.find(\r\n (item) => item.id === caseCalculation.maintenancePackageId\r\n )!;\r\n }\r\n\r\n this.setState({\r\n caseCalculationHistoryDetails: caseCalculation,\r\n calculationSectionList: calculationSections,\r\n calculationParts: caseCalculationParts,\r\n partQualityTypes: partQualityTypes.filter((item) => item.isActive === true),\r\n TVA: TVA,\r\n supplierList: suppliers.filter((ws) => ws.isActive === true),\r\n workflowCalculation: workflowCalculation,\r\n solutionValues: solutionValues,\r\n isLoading: false,\r\n costCenter: costCenter,\r\n deliveryAdress: partsLocationOrganization,\r\n maintenancePackage: maintenancePackage\r\n });\r\n };\r\n\r\n getWorkflowForm = (id: number): WorkflowSectionStepForm | null => {\r\n const sections = this.props.caseSettingsState.caseSettings!.workflow.workflowSections!;\r\n for (const section of sections) {\r\n for (const step of section.workflowSectionSteps) {\r\n const form = step.workflowSectionStepForms.find((form) => form.id === id);\r\n if (!R.isNil(form)) {\r\n return form;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n\r\n displayCalculationPartPrice = (value: number, partId: any) => {\r\n const calculationPartsFiltered = this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === 1\r\n );\r\n const calculationPart = calculationPartsFiltered.find((item) => item.id === partId);\r\n const price =\r\n calculationPart!.alternativePartQualityId === null\r\n ? value\r\n : calculationPart!.alternativePrice;\r\n return (Math.round(price! * 100) / 100).toFixed(2);\r\n };\r\n\r\n displayCalculationPartDiscount = (value: number, partId: any) => {\r\n const calculationPartsFiltered = this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === 1\r\n );\r\n const calculationPart = calculationPartsFiltered.find((item) => item.id === partId);\r\n const discount =\r\n calculationPart!.alternativePartQualityId === null\r\n ? R.isNil(value)\r\n ? 0\r\n : value\r\n : R.isNil(calculationPart!.alternativePartDiscount)\r\n ? 0\r\n : calculationPart!.alternativePartDiscount;\r\n return discount;\r\n };\r\n\r\n calculationPartUnitOEPrice = (calculationPart: CaseCalculationPart) => {\r\n if (R.isNil(calculationPart!.discount)) {\r\n return (\r\n Number((\r\n Math.round(calculationPart!.originalPrice * 100) / 100\r\n ).toFixed(2))\r\n );\r\n }\r\n const value = calculationPart!.originalPrice;\r\n const discount = calculationPart!.discount;\r\n \r\n return (\r\n Number((Math.round(value * (1 - discount / 100) * 100) / 100).toFixed(2))\r\n );\r\n };\r\n\r\n calculationPartUnitSalePrice = (calculationPart: CaseCalculationPart) => {\r\n if (calculationPart!.alternativePartQualityId === null) {\r\n if (R.isNil(calculationPart!.discount)) {\r\n return (\r\n Number((\r\n Math.round(calculationPart!.originalPrice * 100) / 100\r\n ).toFixed(2))\r\n );\r\n }\r\n const value = calculationPart!.originalPrice;\r\n const discount = calculationPart!.discount;\r\n return (\r\n Number((Math.round(value * (1 - discount / 100) * 100) / 100).toFixed(2))\r\n );\r\n } else {\r\n if (R.isNil(calculationPart!.alternativePartDiscount)) {\r\n return (\r\n Number((\r\n Math.round(calculationPart!.alternativePrice! * (1 + (calculationPart!.additionInsurer ?? 0) / 100) * 100) / 100\r\n ).toFixed(2))\r\n );\r\n }\r\n const value = calculationPart!.alternativePrice!;\r\n const discount = calculationPart!.alternativePartDiscount - (calculationPart!.additionInsurer ?? 0);\r\n return (\r\n Number((\r\n Math.round(value * (1 - discount / 100) * 100) / 100\r\n ).toFixed(2))\r\n );\r\n }\r\n };\r\n\r\n displayCalculationPartUnitSalePrice = (row: any) => {\r\n const calculationPartsFiltered = this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === 1\r\n );\r\n const calculationPart = calculationPartsFiltered.find((item) => item.id === row[0]);\r\n if (R.isNil(calculationPart)) {\r\n return 0;\r\n }\r\n \r\n const saleUnitPrice = this.calculationPartUnitSalePrice(calculationPart);\r\n return (saleUnitPrice +\r\n ' ' +\r\n this.state.caseCalculationHistoryDetails.currency!.displayName\r\n );\r\n };\r\n\r\n displayCalculationPartTotalPrice = (row: any) => {\r\n const calculationPartsFiltered = this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === 1\r\n );\r\n const calculationPart = calculationPartsFiltered.find((item) => item.id === row[0]);\r\n if (R.isNil(calculationPart)) {\r\n return 0;\r\n }\r\n const saleUnitPrice = this.calculationPartUnitSalePrice(calculationPart);\r\n console.log('calculationPart', calculationPart);\r\n console.log('saleUnitPrice', saleUnitPrice, 'pieceNr', calculationPart!.pieceNr, 'total', saleUnitPrice * calculationPart!.pieceNr);\r\n return (\r\n (\r\n Math.round(saleUnitPrice * calculationPart!.pieceNr * 100) / 100\r\n ).toFixed(2) +\r\n ' ' +\r\n this.state.caseCalculationHistoryDetails.currency!.displayName\r\n );\r\n };\r\n\r\n calculationTotalPartsOEPrice = () => {\r\n const calculationPartsFiltered = this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === 1\r\n );\r\n \r\n const total = calculationPartsFiltered.reduce((sum, calculationPart: CaseCalculationPart) => {\r\n if (R.isNil(calculationPart!.discount)) {\r\n return sum + (\r\n Number((\r\n Math.round(calculationPart!.originalPrice * calculationPart!.pieceNr * 100) / 100\r\n ).toFixed(2))\r\n );\r\n }\r\n const value = calculationPart!.originalPrice * calculationPart!.pieceNr;\r\n const discount = calculationPart!.discount;\r\n\r\n return sum + (\r\n Number((Math.round(value * (1 - discount / 100) * 100) / 100).toFixed(2))\r\n );\r\n }, 0);\r\n \r\n return total;\r\n };\r\n\r\n calculationTotalPartsAMPrice = () => {\r\n return this.state.caseCalculationHistoryDetails.amountPiecesWithDiscount;\r\n };\r\n\r\n displayCalculationTotalPartsEconomy = () => {\r\n const originalTotal = this.calculationTotalPartsOEPrice(); \r\n const alternativeTotal = this.calculationTotalPartsAMPrice(); \r\n console.log('originalTotal', originalTotal, 'alternativeTotal', alternativeTotal, 'percentage', ((originalTotal - alternativeTotal) * 100) / originalTotal);\r\n const percentageEconomy = (((originalTotal - alternativeTotal) * 100) / originalTotal).toFixed(2) + '%';\r\n return percentageEconomy;\r\n };\r\n\r\n displayCalculationPartPLPVProcent = (row: any) => {\r\n const calculationPartsFiltered = this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === 1\r\n );\r\n const calculationPart = calculationPartsFiltered.find((item) => item.id === row[0]);\r\n if (R.isNil(calculationPart)) {\r\n return 0;\r\n }\r\n\r\n const originalPrice = this.calculationPartUnitOEPrice(calculationPart);\r\n const salePrice = this.calculationPartUnitSalePrice(calculationPart);\r\n console.log('calculationPart', calculationPart);\r\n console.log('originalPrice', originalPrice, 'salePrice', salePrice, 'percentage', ((originalPrice - salePrice) * 100) / originalPrice);\r\n return ((originalPrice - salePrice) * 100) / originalPrice;\r\n };\r\n\r\n\r\n displayCalculationTotalPartsAMPriceBK = () => {\r\n const calculationPartsFiltered = this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === 1\r\n );\r\n const total = calculationPartsFiltered.reduce((sum, calculationPart: CaseCalculationPart) => {\r\n if (calculationPart!.alternativePartQualityId === null) {\r\n if (R.isNil(calculationPart!.discount)) {\r\n return sum + (\r\n Number((\r\n Math.round(calculationPart!.originalPrice * calculationPart!.pieceNr * 100) / 100\r\n ).toFixed(2))\r\n );\r\n }\r\n const value = calculationPart!.originalPrice * calculationPart!.pieceNr;\r\n const discount = calculationPart!.discount;\r\n return sum + (\r\n Number((Math.round(value * (1 - discount / 100) * 100) / 100).toFixed(2))\r\n );\r\n } else {\r\n if (R.isNil(calculationPart!.alternativePartDiscount)) {\r\n return sum + (\r\n Number((\r\n Math.round(calculationPart!.alternativePrice! * calculationPart!.pieceNr * (1 + (calculationPart!.additionInsurer ?? 0) / 100) * 100) / 100\r\n ).toFixed(2))\r\n );\r\n }\r\n const value = calculationPart!.alternativePrice! * calculationPart!.pieceNr;\r\n const discount = calculationPart!.alternativePartDiscount - (calculationPart!.additionInsurer ?? 0);\r\n return sum + (\r\n Number((\r\n Math.round(value * (1 - discount / 100) * 100) / 100\r\n ).toFixed(2))\r\n );\r\n }\r\n }, 0);\r\n\r\n return total;\r\n };\r\n\r\n displayCalculationPartQuality = (value: IReferential, row: any) => {\r\n const calculationPartsFiltered = this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === 1\r\n );\r\n const calculationPart = calculationPartsFiltered.find((item) => item.id === row[0]);\r\n if (calculationPart!.alternativePartQualityId === null) {\r\n return (\r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_PRODUCER_HEADER',\r\n 'Producator'\r\n ) +\r\n ': ' +\r\n (R.isNil(row[6]) ? '' : row[6])}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_DELIVERY_TIME_HEADER',\r\n 'Timp livrare'\r\n ) +\r\n ': ' +\r\n (R.isNil(row[7]) ? '' : row[7])}\r\n
\r\n
\r\n }\r\n >\r\n
\r\n {value.displayName + ' '}\r\n \r\n
\r\n \r\n );\r\n } else {\r\n const partQualityType = this.state.partQualityTypes.find(\r\n (quality) => quality.id === calculationPart!.alternativePartQualityId\r\n );\r\n return (\r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_ALT_PART_GN_LABEL',\r\n 'Cod alternativa'\r\n ) +\r\n ': ' +\r\n (R.isNil(calculationPart!.alternativeGuideNumber)\r\n ? ''\r\n : calculationPart!.alternativeGuideNumber)}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_ALT_PART_NAME_LABEL',\r\n 'Descriere alternativa'\r\n ) +\r\n ': ' +\r\n (R.isNil(calculationPart!.alternativePartName)\r\n ? ''\r\n : calculationPart!.alternativePartName)}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_PRODUCER_HEADER',\r\n 'Producator'\r\n ) +\r\n ': ' +\r\n (R.isNil(calculationPart!.producer) ? '' : calculationPart!.producer)}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_DELIVERY_TIME_HEADER',\r\n 'Timp livrare'\r\n ) +\r\n ': ' +\r\n (R.isNil(calculationPart!.deliveryTime) ? '' : calculationPart!.deliveryTime)}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_ALT_PART_QUANTITY_LABEL',\r\n 'Cantitate disponibila'\r\n ) +\r\n ': ' +\r\n (R.isNil(calculationPart!.availableQuantity)\r\n ? ''\r\n : calculationPart!.availableQuantity)}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_STOCK_LOCATION_LABEL',\r\n 'Locatie'\r\n ) +\r\n ': ' +\r\n (R.isNil(calculationPart!.alternativePartStockLocation)\r\n ? ''\r\n : calculationPart!.alternativePartStockLocation)}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_REMARKS_LABEL',\r\n 'Observatii'\r\n ) +\r\n ': ' +\r\n (R.isNil(calculationPart!.alternativePartRemarks)\r\n ? ''\r\n : calculationPart!.alternativePartRemarks)}\r\n
\r\n \r\n }\r\n >\r\n
\r\n {partQualityType!.displayName + ' '}\r\n \r\n
\r\n \r\n );\r\n }\r\n };\r\n\r\n displayCalculationPartSupplier = (supplierId: any) => {\r\n const supplier = this.state.supplierList.find((item) => item.id === supplierId);\r\n const supplierName = !R.isNil(supplier) ? (supplier.name.toUpperCase() == OwnStockCodeEnum.OWN_STOCK.toString() ? this.translatorService.Tranlate('CALCULATION_DETAILS_OWN_STOCK_HEADER', 'Stoc Propriu') : supplier.name) : '';\r\n return supplierName;\r\n };\r\n\r\n handlePartInsurerAdditionChange = (value: number | null, currentPartId: number) => {\r\n // Find the corresponding part in the calculationParts array\r\n const updatedCalculationParts = this.state.calculationParts.map((part) => {\r\n if (part.id === currentPartId) {\r\n // Reset the additionInsurer for the specific part\r\n return { ...part, \r\n additionInsurer: value\r\n };\r\n }\r\n return part;\r\n });\r\n \r\n // Update the state with the modified calculationParts array\r\n this.setState({\r\n calculationParts: updatedCalculationParts,\r\n },\r\n () => {\r\n this.updateAmount();\r\n });\r\n };\r\n \r\n partDisabled = (part: CaseCalculationPart) => {\r\n return part.alternativeGuideNumber === null || part.supplierId === null ? true : false;\r\n };\r\n\r\n viewPrcNewColumns = () => {\r\n return !R.isNil(this.state.workflowCalculation) && this.state.workflowCalculation!.viewPrcNewColumns && this.state.caseCalculationHistoryDetails.calculationType.code === CalculationTypeCode.ALT;\r\n };\r\n\r\n getColumns = (sectionId: number) => {\r\n let columns = [];\r\n if (sectionId === 1) {\r\n columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'supplierId',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'guideNumber',\r\n label: this.translatorService.Tranlate('CALCULATION_DETAILS_GUIDE_NUMBER_HEADER', 'Cod'),\r\n options: {\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n const item = this.state.calculationParts.find(\r\n (item) => item.id === tableMeta.rowData[0]\r\n );\r\n return (\r\n this.newCalculationPart(tableMeta.rowData[0], sectionId)}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'alternativeGuideNumber',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_ALT_GUIDE_NUMBER_HEADER',\r\n 'Cod Aftermarket'\r\n ),\r\n options: { filter: false } as MUIDataTableColumnOptions\r\n }, \r\n {\r\n name: 'name',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_DESCRIPTION_HEADER',\r\n 'Descriere'\r\n ),\r\n options: {\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n const item = this.state.calculationParts.find(\r\n (item) => item.id === tableMeta.rowData[0]\r\n );\r\n\r\n if (R.isNil(item)) {\r\n return '';\r\n }\r\n return R.isNil(item!.alternativePartQualityId)\r\n ? item!.name\r\n : item!.alternativePartName;\r\n }\r\n }\r\n },\r\n {\r\n name: 'alternativePartDescription',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_ALTERNATIVE_PART_DESCRIPTION_HEADER',\r\n 'Descriere piesa alt'\r\n ),\r\n options: {\r\n display: !R.isNil(this.state.workflowCalculation) && this.state.workflowCalculation!.hasAlternativePartDescription ? 'true' : 'false'\r\n }\r\n },\r\n {\r\n name: '',\r\n label: this.translatorService.Tranlate('CALCULATION_DETAILS_SUPPLIER_HEADER', 'Furnizor'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: IReferential, tableMeta: MUIDataTableMeta) => {\r\n return this.displayCalculationPartSupplier(tableMeta.rowData[1]);\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'producer',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_PRODUCER_HEADER',\r\n 'Producator'\r\n ),\r\n options: { filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'deliveryTime',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'alternativePartQuality',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'carPartCategory',\r\n label: this.translatorService.Tranlate('CALCULATION_DETAILS_QUALITY_HEADER', 'Calitate'),\r\n options: {\r\n customBodyRender: (value: IReferential, tableMeta: MUIDataTableMeta) => {\r\n return this.displayCalculationPartQuality(value, tableMeta.rowData);\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'pieceNr',\r\n label: this.translatorService.Tranlate('CALCULATION_DETAILS_UNITS_HEADER', 'Unitati')\r\n },\r\n {\r\n name: 'alternativePrice',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'alternativeNetPrice',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_NET_PRICE_LKQ_HEADER',\r\n 'Pret Net'\r\n ),\r\n options: {\r\n display: !R.isNil(this.state.workflowCalculation) && this.state.workflowCalculation!.alternativeNetPrice ? 'true' : 'false',\r\n customBodyRender: (value: number | null, tableMeta: MUIDataTableMeta) => {\r\n return value ? Utils.countryNumberFormat((Math.round(value * 100) / 100).toFixed(2), this.props.appState.appUser?.organization?.country ?? null) : '';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'originalPrice',\r\n label: this.viewPrcNewColumns() ? this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_UNIT_AQUISITION_PRICE_HEADER',\r\n 'Pret Achizitie'\r\n ) :\r\n this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_UNIT_PRICE_HEADER',\r\n 'Pret Unitar'\r\n ),\r\n options: {\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return Utils.countryNumberFormat(this.displayCalculationPartPrice(value, tableMeta.rowData[0]), this.props.appState.appUser?.organization?.country ?? null);\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'discount',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_DISCOUNT_HEADER',\r\n 'Discount (%)'\r\n ),\r\n options: {\r\n display: this.viewPrcNewColumns() ? 'false' : 'true',\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return this.displayCalculationPartDiscount(value, tableMeta.rowData[0]);\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'additionInsurer',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_INSURER_ADDITION_HEADER',\r\n 'Adaos Asigurator (%)'\r\n ),\r\n options: {\r\n display: this.viewPrcNewColumns() ? 'true' : 'false',\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n const calculationPartsFiltered = this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === 1\r\n );\r\n const calculationPart = calculationPartsFiltered.find((item) => item.id === tableMeta.rowData[0]);\r\n \r\n if (R.isNil(calculationPart)) {\r\n return '';\r\n }\r\n \r\n return (\r\n \r\n \r\n {\r\n const inputValue = e.target.value.trim();\r\n const numericRegex = /^[0-9]+$/;\r\n if (numericRegex.test(inputValue) || inputValue === '0' || inputValue === '') {\r\n const numericValue = inputValue === '' ? null : parseFloat(inputValue);\r\n this.handlePartInsurerAdditionChange(numericValue, calculationPart.id);\r\n }\r\n }}\r\n disabled={this.partDisabled(calculationPart) || !this.props.hasRights ? true : false} \r\n inputMode=\"numeric\" \r\n />\r\n \r\n \r\n );\r\n },\r\n } as MUIDataTableColumnOptions\r\n }, \r\n {\r\n name: '',\r\n label: this.translatorService.Tranlate('CALCULATION_DETAILS_TOTAL_PRICE_HEADER', 'Pret Total'),\r\n options: {\r\n display: this.viewPrcNewColumns() ? 'false' : 'true',\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return Utils.countryNumberFormat(this.displayCalculationPartTotalPrice(tableMeta.rowData).toString(), this.props.appState.appUser?.organization?.country ?? null);\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_TOTAL_SALE_PRICE_HEADER',\r\n 'Pret Vanzare'\r\n ),\r\n options: {\r\n display: this.viewPrcNewColumns() ? 'true' : 'false',\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return this.displayCalculationPartUnitSalePrice(tableMeta.rowData);\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_PL_PV_PRICE_HEADER',\r\n 'PL/PV'\r\n ),\r\n options: {\r\n display: this.viewPrcNewColumns() ? 'true' : 'false',\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n const percentage = this.displayCalculationPartPLPVProcent(tableMeta.rowData);\r\n const style = percentage < 0 ? { color: 'red' } : { color: 'green' };\r\n return (\r\n \r\n {percentage.toFixed(2) + '%'}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n label: this.translatorService.Tranlate('CALCULATION_DETAILS_TOTAL_PRICE_VALUE_HEADER', 'Valoare'),\r\n options: {\r\n display: this.viewPrcNewColumns() ? 'true' : 'false',\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return Utils.countryNumberFormat(this.displayCalculationPartTotalPrice(tableMeta.rowData).toString(), this.props.appState.appUser?.organization?.country ?? null);\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'remarks',\r\n label: this.translatorService.Tranlate('CALCULATION_DETAILS_REMARKS_HEADER', 'Observatii')\r\n },\r\n {\r\n name: '',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_SOLUTION_HEADER',\r\n 'Solutie Proprietar'\r\n ),\r\n options: {\r\n display:\r\n !R.isNil(this.state.workflowCalculation) &&\r\n (this.state.workflowCalculation!.ownerSolutionView ||\r\n this.state.workflowCalculation!.ownerSolution)\r\n ? 'true'\r\n : 'false',\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n const partId = tableMeta.rowData[0];\r\n const part = this.state.calculationParts.find((item) => item.id === partId);\r\n\r\n if (part === null) {\r\n return '';\r\n }\r\n if (R.isNil(part!.repairMethod) || part!.repairMethod === '') {\r\n return '';\r\n }\r\n\r\n return (\r\n \r\n \r\n this.handleSolutionValueChange(part!, newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n this.handleSolutionCommentChange(e, part!)}\r\n label={this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_SOLUTION_DESCRIPTION',\r\n 'Descriere'\r\n )}\r\n fullWidth\r\n />\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n
\r\n {!R.isNil(this.state.workflowCalculation) &&\r\n !R.isNil(this.state.workflowCalculation.deleteCarParts) &&\r\n this.state.workflowCalculation.deleteCarParts ? (\r\n this.deleteCalculationPart(e, tableMeta)}\r\n >\r\n \r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n }\r\n }\r\n ];\r\n } else {\r\n columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'supplierId',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'alternativeGuideNumber',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'guideNumber',\r\n label: this.translatorService.Tranlate('CALCULATION_DETAILS_GUIDE_NUMBER_HEADER', 'Cod'),\r\n options: {\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.newCalculationPart(tableMeta.rowData[0], sectionId)}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'name',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_DESCRIPTION_HEADER',\r\n 'Descriere'\r\n )\r\n },\r\n {\r\n name: 'pieceNr',\r\n label: this.translatorService.Tranlate('CALCULATION_DETAILS_UNITS_HEADER', 'Unitati')\r\n },\r\n {\r\n name: 'alternativePrice',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'originalPrice',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_UNIT_PRICE_HEADER',\r\n 'Pret Unitar'\r\n ),\r\n options: {\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return Utils.countryNumberFormat((Math.round(value * 100) / 100).toFixed(2), this.props.appState.appUser?.organization?.country ?? null);\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'discount',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_DISCOUNT_HEADER',\r\n 'Discount (%)'\r\n ),\r\n options: {\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return R.isNil(value) ? 0 : value;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_TOTAL_PRICE_HEADER',\r\n 'Pret Total'\r\n ),\r\n options: {\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n if (R.isNil(tableMeta.rowData[8])) {\r\n return (\r\n Utils.countryNumberFormat((Math.round(tableMeta.rowData[5] * tableMeta.rowData[7] * 100) / 100).toFixed(2), this.props.appState.appUser?.organization?.country ?? null) +\r\n ' ' +\r\n this.state.caseCalculationHistoryDetails.currency!.displayName\r\n );\r\n }\r\n return (\r\n Utils.countryNumberFormat((\r\n Math.round(\r\n (tableMeta.rowData[5] * tableMeta.rowData[7] -\r\n (tableMeta.rowData[5] * tableMeta.rowData[7] * tableMeta.rowData[8]) / 100) *\r\n 100\r\n ) / 100\r\n ).toFixed(2), this.props.appState.appUser?.organization?.country ?? null) +\r\n ' ' +\r\n this.state.caseCalculationHistoryDetails.currency!.displayName\r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'remarks',\r\n label: this.translatorService.Tranlate('CALCULATION_DETAILS_REMARKS_HEADER', 'Observatii')\r\n },\r\n {\r\n name: '',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_SOLUTION_HEADER',\r\n 'Solutie Proprietar'\r\n ),\r\n options: {\r\n display:\r\n !R.isNil(this.state.workflowCalculation) &&\r\n (this.state.workflowCalculation!.ownerSolutionView ||\r\n this.state.workflowCalculation!.ownerSolution)\r\n ? 'true'\r\n : 'false',\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n const partId = tableMeta.rowData[0];\r\n const part = this.state.calculationParts.find((item) => item.id === partId);\r\n\r\n if (part === null) {\r\n return '';\r\n }\r\n if (R.isNil(part!.repairMethod) || part!.repairMethod === '') {\r\n return '';\r\n }\r\n\r\n return (\r\n \r\n \r\n this.handleSolutionValueChange(part!, newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n this.handleSolutionCommentChange(e, part!)}\r\n label={this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_SOLUTION_DESCRIPTION',\r\n 'Descriere'\r\n )}\r\n fullWidth\r\n />\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n
\r\n {!R.isNil(this.state.workflowCalculation) &&\r\n !R.isNil(\r\n sectionId === 2\r\n ? this.state.workflowCalculation.deleteLabor\r\n : sectionId === 3\r\n ? this.state.workflowCalculation.deletePaintingMaterials\r\n : sectionId === 4\r\n ? this.state.workflowCalculation.deletePaintingLabor\r\n : false\r\n ) &&\r\n (sectionId === 2\r\n ? this.state.workflowCalculation.deleteLabor\r\n : sectionId === 3\r\n ? this.state.workflowCalculation.deletePaintingMaterials\r\n : sectionId === 4\r\n ? this.state.workflowCalculation.deletePaintingLabor\r\n : false) ? (\r\n this.deleteCalculationPart(e, tableMeta)}\r\n >\r\n \r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n }\r\n }\r\n ];\r\n }\r\n\r\n return columns;\r\n };\r\n\r\n updateAmount = () => {\r\n const calcPartList = new CalculationParts(\r\n this.state.calculationSectionList,\r\n this.state.calculationParts,\r\n parseInt(this.state.TVA),\r\n this.state.caseCalculationHistoryDetails.smallPartsPercent,\r\n false\r\n );\r\n\r\n this.setState({\r\n caseCalculationHistoryDetails: {\r\n ...this.state.caseCalculationHistoryDetails,\r\n amountPieces: calcPartList.GetAmountPieceTotal(),\r\n amountLabor: calcPartList.GetAmountPart(CalculationSectionCodeEnum.LABOR),\r\n amountPaintingMaterials: calcPartList.GetAmountPart(CalculationSectionCodeEnum.PAINT),\r\n amountPaintingLabor: calcPartList.GetAmountPart(CalculationSectionCodeEnum.PAINT_LABOR),\r\n amountPiecesWithDiscount: calcPartList.GetAmountPartWithDiscount(\r\n CalculationSectionCodeEnum.PART\r\n ),\r\n amountLaborWithDiscount: calcPartList.GetAmountPartWithDiscount(\r\n CalculationSectionCodeEnum.LABOR\r\n ),\r\n amountPaintingMaterialsWithDiscount: calcPartList.GetAmountPartWithDiscount(\r\n CalculationSectionCodeEnum.PAINT\r\n ),\r\n amountPaintingLaborWithDiscount: calcPartList.GetAmountPartWithDiscount(\r\n CalculationSectionCodeEnum.PAINT_LABOR\r\n ),\r\n amountDiscount: calcPartList.TotalDiscount(),\r\n amountWithoutTVA: calcPartList.TotalWithoutVAT(),\r\n amountTVA: calcPartList.TotalVAT(),\r\n amount: calcPartList.Total(),\r\n additionInsurerParts: calcPartList.GetTotalInsurerAddition(CalculationSectionCodeEnum.PART),\r\n amountPiecesDiscount: calcPartList.GetTotalPartsDiscount(CalculationSectionCodeEnum.PART),\r\n smallPartsValue: calcPartList.GetSmallPartsValue()\r\n }\r\n });\r\n };\r\n\r\n newCalculationPart = async (calculationPartId: number | null, sectionId: number) => {\r\n let newCalculationPart;\r\n if (calculationPartId === null) {\r\n newCalculationPart = { ...this.state.newCalculationPart } as CaseCalculationPart;\r\n newCalculationPart.caseCalculationHistoryId = this.props.calculationHistoryId;\r\n newCalculationPart.id = -1 * this.state.calculationParts.length;\r\n newCalculationPart.calculationSectionId = sectionId;\r\n newCalculationPart.discount = 0;\r\n newCalculationPart.calculationSection = this.state.calculationSectionList.find(\r\n (item) => item.id === sectionId\r\n )!;\r\n } else {\r\n newCalculationPart = this.state.calculationParts.find(\r\n (item) => item.id === calculationPartId\r\n )!;\r\n if (newCalculationPart.alternativePartQualityId === null) {\r\n newCalculationPart.discount = R.isNil(newCalculationPart.discount)\r\n ? 0\r\n : newCalculationPart.discount;\r\n } else {\r\n newCalculationPart.alternativePartDiscount = R.isNil(\r\n newCalculationPart.alternativePartDiscount\r\n )\r\n ? 0\r\n : newCalculationPart.alternativePartDiscount;\r\n }\r\n if (newCalculationPart.alternativePartQualityId !== null) {\r\n const alternativePartQualityId = newCalculationPart.alternativePartQualityId;\r\n const partQualityTypes = this.state.partQualityTypes.sort(function (a, b) {\r\n return a.displayName.localeCompare(b.displayName);\r\n });\r\n const partQualityTypesFilter = partQualityTypes.filter(\r\n (qualityType) => qualityType.id === alternativePartQualityId\r\n );\r\n newCalculationPart.alternativePartQuality = partQualityTypesFilter[0];\r\n }\r\n\r\n const supplierId = newCalculationPart.supplierId;\r\n const supplier = this.state.supplierList.find((item) => item.id === supplierId);\r\n newCalculationPart.supplier = !R.isNil(supplier) ? supplier : null;\r\n }\r\n\r\n this.setState({\r\n newCalculationPart: newCalculationPart,\r\n newCalculationPartId: calculationPartId,\r\n isDialogOpen: true,\r\n currentSection: this.state.calculationSectionList.find((item) => item.id === sectionId)!\r\n });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState({\r\n isDialogOpen: false,\r\n newCalculationPart: null,\r\n newCalculationPartId: null\r\n });\r\n };\r\n NumberFormatCustomDiscount = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n thousandSeparator\r\n decimalScale={2}\r\n isNumericString\r\n suffix=\" %\"\r\n />\r\n );\r\n };\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n private handleTextChange = (event: React.ChangeEvent) => {\r\n let value: any;\r\n if (event.target.type === 'text' || 'password') {\r\n value = event.currentTarget.value;\r\n }\r\n\r\n this.setState({\r\n newCalculationPart: {\r\n ...this.state.newCalculationPart!,\r\n [event.target.id]: value\r\n }\r\n });\r\n };\r\n\r\n handlePriceChange = (event: React.ChangeEvent, propName: string) => {\r\n this.setState({\r\n newCalculationPart: {\r\n ...this.state.newCalculationPart!,\r\n [propName]: event.target.value === null ? 0 : parseFloat(event.target.value)\r\n }\r\n });\r\n };\r\n\r\n handleDiscountChange = (event: React.ChangeEvent, propName: string) => {\r\n this.setState({\r\n newCalculationPart: {\r\n ...this.state.newCalculationPart!,\r\n [propName]: event.target.value === null ? 0 : parseFloat(event.target.value)\r\n }\r\n });\r\n };\r\n\r\n deleteCalculationPart = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n const calculationPartIndex = this.state.calculationParts.findIndex((item) => item.id === id);\r\n const calculationParts = [...this.state.calculationParts];\r\n calculationParts.splice(calculationPartIndex, 1);\r\n\r\n this.setState(\r\n {\r\n calculationParts: calculationParts\r\n },\r\n () => {\r\n this.updateAmount();\r\n this.props.handleModifiedPropChanges(true);\r\n }\r\n );\r\n } catch (error) {\r\n // this.props.enqueueSnackbar(this.translatorService.Tranlate(\"ERROR_MSG\", \"Eroare\"), { variant: 'error' });\r\n }\r\n };\r\n\r\n addCalculationPartForm = async () => {\r\n try {\r\n const calculationParts = [...this.state.calculationParts];\r\n if (this.state.newCalculationPartId === null) {\r\n //add\r\n // if (this.state.workflowSuppliers.findIndex(item => item.supplierId === this.state.selectedWorkflowSupplierType!.id && this.state.selectedWorkflowCarPartCategoryTypeMultiple.findIndex(itemm => itemm.id === item.carPartCategoryId)!==-1 ) !== -1 ) {\r\n // this.props.enqueueSnackbar(this.translatorService.Tranlate(\"ERROR_MSG_WORKFLOW_SUPPLIER_EXISTS\", \"Furnizorul exista deja!\"), { variant: 'error' });\r\n // return;\r\n // }\r\n calculationParts.push({\r\n ...this.state.newCalculationPart,\r\n carPartCategoryId:\r\n this.state.currentSection!.id === 1\r\n ? this.state.newCalculationPart!.carPartCategory!.id\r\n : null,\r\n carPartCategory:\r\n this.state.currentSection!.id === 1\r\n ? this.state.newCalculationPart!.carPartCategory\r\n : null,\r\n supplier:\r\n this.state.currentSection!.id === 1\r\n ? R.isNil(this.state.newCalculationPart!.supplier)\r\n ? null\r\n : this.state.newCalculationPart!.supplier\r\n : null,\r\n supplierId:\r\n this.state.currentSection!.id === 1\r\n ? R.isNil(this.state.newCalculationPart!.supplier)\r\n ? null\r\n : this.state.newCalculationPart!.supplier.id\r\n : null,\r\n amount: 0,\r\n alternativePartQualityId: null\r\n } as CaseCalculationPart);\r\n } else {\r\n // update\r\n\r\n const index = calculationParts.findIndex(\r\n (item) => item.id === this.state.newCalculationPartId\r\n )!;\r\n calculationParts[index] = {\r\n ...this.state.newCalculationPart!,\r\n carPartCategoryId:\r\n this.state.currentSection!.code === CalculationSectionCodeEnum.PART\r\n ? this.state.newCalculationPart!.carPartCategory!.id\r\n : null,\r\n carPartCategory:\r\n this.state.currentSection!.code === CalculationSectionCodeEnum.PART\r\n ? this.state.newCalculationPart!.carPartCategory\r\n : null,\r\n alternativePartQualityId:\r\n this.state.currentSection!.code === CalculationSectionCodeEnum.PART\r\n ? this.state.newCalculationPart!.alternativePartQuality !== null &&\r\n this.state.newCalculationPart!.alternativePartQualityId !== null\r\n ? this.state.newCalculationPart!.alternativePartQuality!.id\r\n : null\r\n : null,\r\n alternativePartQuality:\r\n this.state.currentSection!.code === CalculationSectionCodeEnum.PART\r\n ? this.state.newCalculationPart!.alternativePartQualityId !== null &&\r\n this.state.newCalculationPart!.alternativePartQuality !== null\r\n ? this.state.newCalculationPart!.alternativePartQuality\r\n : null\r\n : null,\r\n supplier:\r\n this.state.currentSection!.code === CalculationSectionCodeEnum.PART\r\n ? R.isNil(this.state.newCalculationPart!.supplier)\r\n ? null\r\n : this.state.newCalculationPart!.supplier\r\n : null,\r\n supplierId:\r\n this.state.currentSection!.code === CalculationSectionCodeEnum.PART\r\n ? R.isNil(this.state.newCalculationPart!.supplier)\r\n ? null\r\n : this.state.newCalculationPart!.supplier.id\r\n : null,\r\n amount: 0\r\n };\r\n }\r\n\r\n this.setState(\r\n {\r\n calculationParts: calculationParts,\r\n newCalculationPartId: null,\r\n newCalculationPart: null,\r\n // isLoading: true,\r\n isDialogOpen: false\r\n },\r\n () => {\r\n this.updateAmount();\r\n this.props.handleModifiedPropChanges(true);\r\n }\r\n );\r\n } catch (error) {}\r\n };\r\n\r\n handleAutocompletePartQualityChange = async (newValue: IReferential | null, propName: any) => {\r\n if (newValue === null) {\r\n this.setState({\r\n // supplierList: [],\r\n newCalculationPart: {\r\n ...this.state.newCalculationPart!,\r\n [propName]: null\r\n }\r\n });\r\n return;\r\n }\r\n\r\n this.setState({\r\n newCalculationPart: {\r\n ...this.state.newCalculationPart!,\r\n [propName]: newValue\r\n }\r\n });\r\n };\r\n\r\n handleAutocompleteSupplierChange = (newValue: any | null) => {\r\n this.setState({\r\n newCalculationPart: {\r\n ...this.state.newCalculationPart!,\r\n supplier: newValue\r\n }\r\n });\r\n };\r\n\r\n setAlternativePartQuality = (\r\n sectionId: number,\r\n carPartCategoryOriginal: any,\r\n alternativePartQualityId: any,\r\n alternativePartQuality: any,\r\n newCalculationPartId: any\r\n ) => {\r\n if (sectionId === 1) {\r\n if (alternativePartQualityId === null || newCalculationPartId === null) {\r\n return carPartCategoryOriginal;\r\n } else {\r\n return alternativePartQuality;\r\n }\r\n } else {\r\n return carPartCategoryOriginal;\r\n }\r\n };\r\n\r\n public renderAddForm(sectionId: any, newCalcPartId: any) {\r\n return R.isNil(this.state.newCalculationPart) ? null : (\r\n this.addCalculationPartForm()}>\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n this.handlePriceChange(\r\n e,\r\n this.state.newCalculationPart!.alternativePartQualityId === null ||\r\n this.state.newCalculationPartId === null\r\n ? 'originalPrice'\r\n : 'alternativePrice'\r\n )\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_UNIT_PRICE_HEADER',\r\n 'Pret Unitar'\r\n )}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n\r\n \r\n this.handleDiscountChange(\r\n e,\r\n this.state.newCalculationPart!.alternativePartQualityId === null ||\r\n this.state.newCalculationPartId === null\r\n ? 'discount'\r\n : 'alternativePartDiscount'\r\n )\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_DISCOUNT_HEADER',\r\n 'Discount (%)'\r\n )}\r\n validators={['minNumber:0', 'maxNumber:100']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'WORKFLOW_SUPPLIERS_TAB_DISCOUNT_VALIDATORS_NUMBER_BETWENN',\r\n 'Valoarea discount-ului trebuie sa fie cuprinsa intre 0 si 100'\r\n ),\r\n this.translatorService.Tranlate(\r\n 'WORKFLOW_SUPPLIERS_TAB_DISCOUNT_VALIDATORS_NUMBER_BETWENN',\r\n 'Valoarea discount-ului trebuie sa fie cuprinsa intre 0 si 100'\r\n )\r\n ]}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustomDiscount\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n {this.state.currentSection!.id === 1 ? (\r\n
\r\n \r\n this.handleAutocompletePartQualityChange(\r\n newValue,\r\n this.state.newCalculationPart!.alternativePartQualityId === null ||\r\n this.state.newCalculationPartId === null\r\n ? 'carPartCategory'\r\n : 'alternativePartQuality'\r\n )\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n this.handleAutocompleteSupplierChange(newValue)\r\n }\r\n getOptionLabel={(option: Organization) => option.name}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n
\r\n ) : null}\r\n
\r\n
\r\n {newCalcPartId !== null ? (\r\n !R.isNil(this.state.workflowCalculation) &&\r\n !R.isNil(\r\n sectionId === 1\r\n ? this.state.workflowCalculation.editCarParts\r\n : sectionId === 2\r\n ? this.state.workflowCalculation.editLabor\r\n : sectionId === 3\r\n ? this.state.workflowCalculation.editPaintingMaterials\r\n : sectionId === 4\r\n ? this.state.workflowCalculation.editPaintingLabor\r\n : false\r\n ) &&\r\n (sectionId === 1\r\n ? this.state.workflowCalculation.editCarParts\r\n : sectionId === 2\r\n ? this.state.workflowCalculation.editLabor\r\n : sectionId === 3\r\n ? this.state.workflowCalculation.editPaintingMaterials\r\n : sectionId === 4\r\n ? this.state.workflowCalculation.editPaintingLabor\r\n : false) ? (\r\n
\r\n \r\n
\r\n ) : null\r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n );\r\n }\r\n\r\n handleImportOriginalParts = (event: any) => {\r\n event.preventDefault();\r\n\r\n const files = event.target.files,\r\n f = files[0];\r\n const reader = new FileReader();\r\n reader.onload = (e) => {\r\n const data = e.target!.result;\r\n const readedData = XLSX.read(data, { type: 'binary' });\r\n const wsname = readedData.SheetNames[0];\r\n const ws = readedData.Sheets[wsname];\r\n\r\n const fullParsedContent = XLSX.utils.sheet_to_json(ws, { header: 1 });\r\n if (fullParsedContent.length === 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_IMPORT_PARTS_BY_XLSX_FILE',\r\n 'Importul nu s-a putut efectua! Verificati fisierul!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n const header = fullParsedContent[0] as any;\r\n if (\r\n fullParsedContent.length > 0 &&\r\n (header[0] !== ImportCalculationOriginalPartsFileHeader.H1 ||\r\n header[1] !== ImportCalculationOriginalPartsFileHeader.H2 ||\r\n header[2] !== ImportCalculationOriginalPartsFileHeader.H3 ||\r\n header[3] !== ImportCalculationOriginalPartsFileHeader.H4 ||\r\n header[4] !== ImportCalculationOriginalPartsFileHeader.H5 ||\r\n (header[5] !== undefined && header[5] !== ImportCalculationOriginalPartsFileHeader.H6) ||\r\n (header[6] !== undefined && header[6] !== ImportCalculationOriginalPartsFileHeader.H7) ||\r\n (header[7] !== undefined && header[7] !== ImportCalculationOriginalPartsFileHeader.H8) ||\r\n (header[8] !== undefined && header[8] !== ImportCalculationOriginalPartsFileHeader.H9) ||\r\n (header[9] !== undefined && header[9] !== ImportCalculationOriginalPartsFileHeader.H10))\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_IMPORT_PARTS_BY_XLSX_FILE',\r\n 'Importul nu s-a putut efectua! Verificati fisierul!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n /* Convert array to json*/\r\n const dataParse = XLSX.utils\r\n .sheet_to_json(ws, {\r\n header: [\r\n 'guideNumberImported',\r\n 'nameImported',\r\n 'originalPriceImported',\r\n 'qualityImported',\r\n 'unitsImported',\r\n 'discountImported',\r\n 'supplierImported',\r\n 'deliveryTimeImported',\r\n 'producerImported',\r\n 'remarksImported'\r\n ],\r\n defval: ''\r\n })\r\n .slice(1);\r\n\r\n if (dataParse.length <= 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_IMPORT_PARTS_BY_XLSX_FILE',\r\n 'Importul nu s-a putut efectua! Verificati fisierul!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n const partQualityTypes = this.state.partQualityTypes.sort(function (a, b) {\r\n return a.displayName.localeCompare(b.displayName);\r\n });\r\n const supplierList = this.state.supplierList;\r\n const dataParseArr = dataParse as any[];\r\n let emptyRows = false as boolean;\r\n\r\n dataParseArr.map((item) => {\r\n if (\r\n item.guideNumberImported.toString() === '' ||\r\n !item.guideNumberImported.toString().trim().length\r\n ) {\r\n emptyRows = true;\r\n }\r\n if (item.nameImported.toString() === '' || !item.nameImported.toString().trim().length) {\r\n emptyRows = true;\r\n }\r\n if (\r\n item.originalPriceImported.toString() === '' ||\r\n !item.originalPriceImported.toString().trim().length\r\n ) {\r\n emptyRows = true;\r\n }\r\n if (\r\n item.qualityImported.toString() === '' ||\r\n !item.qualityImported.toString().trim().length\r\n ) {\r\n emptyRows = true;\r\n }\r\n if (item.unitsImported.toString() === '' || !item.unitsImported.toString().trim().length) {\r\n emptyRows = true;\r\n }\r\n const partQualityTypesFilter = partQualityTypes.filter(\r\n (qualityType) => qualityType.code === item.qualityImported.toString()\r\n );\r\n if (partQualityTypesFilter.length <= 0) {\r\n emptyRows = true;\r\n }\r\n\r\n const supplierListFilter = supplierList.filter(\r\n (supplier) => supplier.companyNumber === item.supplierImported.toString()\r\n );\r\n if (item.supplierImported.toString() !== '' && supplierListFilter.length <= 0) {\r\n emptyRows = true;\r\n }\r\n });\r\n if (emptyRows === true) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_IMPORT_PARTS_BY_XLSX_FILE',\r\n 'Importul nu s-a putut efectua! Verificati fisierul!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n this.importOriginalParts(dataParse);\r\n };\r\n reader.readAsBinaryString(f);\r\n event.target.value = '';\r\n };\r\n\r\n importOriginalParts = (importedOriginalParts: any) => {\r\n try {\r\n const partQualityTypes = this.state.partQualityTypes.sort(function (a, b) {\r\n return a.displayName.localeCompare(b.displayName);\r\n });\r\n const calculationSection = this.state.calculationSectionList.find((item) => item.id === 1);\r\n const calculationParts = this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === 1\r\n );\r\n const supplierList = this.state.supplierList;\r\n\r\n [...importedOriginalParts].map((item, index) => {\r\n const partQualityTypesFilter = partQualityTypes.filter(\r\n (qualityType) => qualityType.code === item.qualityImported.toString()\r\n );\r\n const supplierListFilter = supplierList.filter(\r\n (supplier) =>\r\n supplier.companyNumber !== '' &&\r\n supplier.companyNumber === item.supplierImported.toString()\r\n );\r\n calculationParts.push({\r\n amount: 0,\r\n calculationSection: calculationSection,\r\n calculationSectionId: 1,\r\n carPartCategory: partQualityTypesFilter.length > 0 ? partQualityTypesFilter[0] : null,\r\n carPartCategoryId:\r\n partQualityTypesFilter.length > 0 ? partQualityTypesFilter[0].id : null,\r\n caseCalculationHistoryId: this.props.calculationHistoryId,\r\n deliveryTime: item.deliveryTimeImported,\r\n guideNumber: item.guideNumberImported,\r\n id: -1 * this.state.calculationParts.length - index,\r\n name: item.nameImported,\r\n originalPrice: item.originalPriceImported,\r\n pieceNr: item.unitsImported,\r\n discount:\r\n !R.isNil(item.discountImported) && item.discountImported !== ''\r\n ? item.discountImported\r\n : 0,\r\n producer: item.producerImported,\r\n remarks: item.remarksImported,\r\n supplierId: supplierListFilter.length > 0 ? supplierListFilter[0].id : null,\r\n supplier: supplierListFilter.length > 0 ? supplierListFilter[0] : null,\r\n alternativePartQualityId: null,\r\n alternativePartQuality: null\r\n } as CaseCalculationPart);\r\n });\r\n\r\n this.setState({\r\n calculationParts: calculationParts\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n public renderTable = (sectionId: number) => {\r\n const options = {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n rowHover: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n elevation: 1,\r\n customToolbar: () => {\r\n return (\r\n
\r\n {sectionId === 1 &&\r\n !R.isNil(this.state.workflowCalculation) &&\r\n !R.isNil(this.state.workflowCalculation.importParts) &&\r\n this.state.workflowCalculation.importParts ? (\r\n \r\n {\r\n this.handleImportOriginalParts(e);\r\n }}\r\n className=\"ml-2\"\r\n component=\"label\"\r\n color=\"primary\"\r\n >\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {!R.isNil(this.state.workflowCalculation) &&\r\n !R.isNil(\r\n sectionId === 1\r\n ? this.state.workflowCalculation.addCarParts\r\n : sectionId === 2\r\n ? this.state.workflowCalculation.addLabor\r\n : sectionId === 3\r\n ? this.state.workflowCalculation.addPaintingMaterials\r\n : sectionId === 4\r\n ? this.state.workflowCalculation.addPaintingLabor\r\n : false\r\n ) &&\r\n (sectionId === 1\r\n ? this.state.workflowCalculation.addCarParts\r\n : sectionId === 2\r\n ? this.state.workflowCalculation.addLabor\r\n : sectionId === 3\r\n ? this.state.workflowCalculation.addPaintingMaterials\r\n : sectionId === 4\r\n ? this.state.workflowCalculation.addPaintingLabor\r\n : false) ? (\r\n \r\n this.newCalculationPart(null, sectionId)}\r\n >\r\n \r\n \r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n \r\n {(this.state.newCalculationPartId === null\r\n ? this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_NEW_MODAL_TITLE',\r\n 'Adauga '\r\n )\r\n : this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_UPDATE_MODAL_TITLE',\r\n 'Actualizeaza '\r\n )) +\r\n (R.isNil(this.state.currentSection)\r\n ? ' '\r\n : this.state.currentSection!.displayName)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm(\r\n R.isNil(this.state.currentSection) ? ' ' : this.state.currentSection!.id,\r\n this.state.newCalculationPartId\r\n )}\r\n \r\n \r\n
\r\n );\r\n }\r\n };\r\n return (\r\n
\r\n {sectionId === 1 && this.viewPrcNewColumns() ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_TOTAL_PARTS_OE_TITLE',\r\n 'Total piese OE'\r\n ) + ' (' + this.state.caseCalculationHistoryDetails.currency!.displayName + ' ' + this.translatorService.Tranlate('WITHOUT_VAT_VALUE', 'fara TVA') + ')'}\r\n
\r\n
\r\n \r\n
\r\n {this.calculationTotalPartsOEPrice().toFixed(2)}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_TOTAL_PARTS_AM_TITLE',\r\n 'Total piese AM'\r\n ) + ' (' + this.state.caseCalculationHistoryDetails.currency!.displayName + ' ' + this.translatorService.Tranlate('WITHOUT_VAT_VALUE', 'fara TVA') + ')'}\r\n
\r\n
\r\n \r\n
\r\n {this.calculationTotalPartsAMPrice().toFixed(2)}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_TOTAL_PARTS_ECONOMY_TITLE',\r\n 'Economisire piese (%)'\r\n )}\r\n
\r\n
\r\n \r\n
\r\n {this.displayCalculationTotalPartsEconomy()}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n ) : ''}\r\n item.calculationSectionId === sectionId\r\n )}\r\n title={this.state.calculationSectionList\r\n .find((item) => item.id === sectionId)!\r\n .displayName.toUpperCase()}\r\n options={options}\r\n />\r\n
\r\n );\r\n };\r\n\r\n getPerson = () => {\r\n if (R.isNil(this.props.caseSettingsState.case!.caseEvent)) {\r\n return 'N/A';\r\n }\r\n if (R.isNil(this.props.caseSettingsState.case!.caseEvent.insuredPersonType)) {\r\n return 'N/A';\r\n }\r\n\r\n if (\r\n this.props.caseSettingsState.case!.caseEvent.insuredPersonType!.code === InsuredTypeCode.PF\r\n ) {\r\n return this.props.caseSettingsState.case!.caseEvent.insuredName;\r\n }\r\n\r\n return this.props.caseSettingsState.case!.caseEvent.companyName;\r\n };\r\n \r\n handleGeneralInsurerAdditionChange = (value: number | null) => {\r\n const updatedCalculationParts = this.state.calculationParts.map((part) => {\r\n if (part.calculationSection!.code === CalculationSectionCodeEnum.PART && !this.partDisabled(part)) {\r\n return { ...part, \r\n additionInsurer: value\r\n };\r\n }\r\n return part;\r\n });\r\n\r\n \r\n this.setState({\r\n caseCalculationHistoryDetails: {\r\n ...this.state.caseCalculationHistoryDetails!,\r\n additionInsurer: value\r\n },\r\n calculationParts: _.cloneDeep(updatedCalculationParts)\r\n }, \r\n () => {\r\n this.updateAmount();\r\n });\r\n };\r\n\r\n\r\n renderCalculationGeneralData = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {this.state.caseCalculationHistoryDetails.calculationType.displayName.toUpperCase() +\r\n ' ' +\r\n this.props.caseSettingsState.case!.id}\r\n
\r\n
\r\n \r\n this.handleOfferNumberChange(e)}\r\n />\r\n \r\n
\r\n\r\n \r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_CALCULATION_DATE',\r\n 'Data calculatie'\r\n )}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_CALCULATION_VIN_INDENTIFICATION',\r\n 'Identificare Vin'\r\n )}\r\n
\r\n
\r\n {this.translatorService.Tranlate('CALCULATION_DETAILS_MADE_BY', 'Efectuat de')}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_INSURED_NAME',\r\n 'Proprietar/Utilizator'\r\n )}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_EVENT_COST_CENTER',\r\n 'Centru de cost'\r\n )}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_PACKAGE_TYPE',\r\n 'Tip Pachet'\r\n )}\r\n
\r\n
\r\n \r\n
\r\n {moment\r\n .utc(this.state.caseCalculationHistoryDetails.date)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n
\r\n
\r\n {this.state.caseCalculationHistoryDetails.vinQuery ? 'GT (VQ)' : 'Local (VD)' }\r\n
\r\n
\r\n {this.state.caseCalculationHistoryDetails.user!.userName}\r\n
\r\n
{this.getPerson()}
\r\n
\r\n {!isNullOrUndefined(this.state.costCenter) ? this.state.costCenter.name : 'N/A'}\r\n
\r\n
\r\n {!isNullOrUndefined(this.state.maintenancePackage) ? this.state.maintenancePackage.displayName : 'N/A'}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {VehicleHelper.GetBrandModel(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle\r\n )}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n {this.translatorService.Tranlate('CALCULATION_DETAILS_UMC', 'UMC')}\r\n
\r\n
\r\n {this.translatorService.Tranlate('CALCULATION_DETAILS_VIN', 'VIN')}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_VEHICLE_MANUFACTURE_DATE',\r\n 'Data fabricatie'\r\n )}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_EVENT_LOCATION_LABEL',\r\n 'Adresa de livrare'\r\n )}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_EVENT_INSURER_NAME_LABEL',\r\n 'Nume Asigurator'\r\n )\r\n }\r\n
\r\n
\r\n \r\n
\r\n {VehicleHelper.GetUMC(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle\r\n )}\r\n
\r\n
\r\n {VehicleHelper.GetVIN(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle\r\n )}\r\n
\r\n
\r\n {VehicleHelper.GetMakeDate(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle,\r\n this.props.appState.language\r\n )}\r\n
\r\n
\r\n {!isNullOrUndefined(this.state.deliveryAdress)\r\n ? \r\n this.state.deliveryAdress.name +\r\n '; ' +\r\n (!isNullOrUndefined(this.state.deliveryAdress.address)\r\n ? 'strada: ' + this.state.deliveryAdress.address\r\n : '')\r\n : 'N/A'}\r\n
\r\n
\r\n {!R.isNil(this.props.caseSettingsState.case!.caseEvent) ? this.props.caseSettingsState.case!.caseEvent.insurerName : 'N/A'}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_VEHICAL_PLATE_NUMBER',\r\n 'Numar inmatriculare'\r\n )}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_VEHICAL_FIRST_REGISTRATION_DATE',\r\n 'Data primei inmatriculari'\r\n )}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_VEHICAL_NUMBER_OF_KM',\r\n 'Numar kilometri'\r\n )}\r\n
\r\n
\r\n \r\n
\r\n {VehicleHelper.GetPlateNumber(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle\r\n )}\r\n
\r\n
\r\n {VehicleHelper.GetFirstRegistrationDate(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle,\r\n this.props.appState.language\r\n )}\r\n
\r\n
\r\n {VehicleHelper.GetKmNr(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle\r\n )}\r\n
\r\n
\r\n \r\n {this.viewPrcNewColumns() ? (\r\n <>\r\n
\r\n {\r\n const inputValue = e.target.value.trim();\r\n const numericRegex = /^[0-9]+$/;\r\n \r\n if (numericRegex.test(inputValue) || inputValue === '0' || inputValue === '') {\r\n const numericValue = inputValue === '' ? null : parseFloat(inputValue);\r\n this.handleGeneralInsurerAdditionChange(numericValue);\r\n }\r\n }}\r\n inputMode=\"numeric\"\r\n disabled={!this.props.hasRights ? true : false}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_INSURER_ADDITION_HEADER',\r\n 'Adaos Asigurator (%)'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n /> \r\n
\r\n ) : ''}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n renderCalculationPart = () => {\r\n return this.state.calculationSectionList.map((item) => this.renderTable(item.id));\r\n };\r\n\r\n handleRemarksChange = (e: React.ChangeEvent) => {\r\n this.setState({\r\n caseCalculationHistoryDetails: {\r\n ...this.state.caseCalculationHistoryDetails,\r\n comment: e.target.value\r\n }\r\n });\r\n };\r\n\r\n handleOfferNumberChange = (e: React.ChangeEvent) => {\r\n this.setState({\r\n caseCalculationHistoryDetails: {\r\n ...this.state.caseCalculationHistoryDetails,\r\n offerNumber: e.target.value\r\n }\r\n });\r\n };\r\n\r\n handleSolutionCommentChange = (\r\n e: React.ChangeEvent,\r\n part: CaseCalculationPart\r\n ) => {\r\n const newArray = [...this.state.calculationParts];\r\n const index = newArray.findIndex((item) => item.id === part.id);\r\n newArray[index] = {\r\n ...newArray[index],\r\n solutionComment: e.target.value\r\n };\r\n this.setState({\r\n calculationParts: newArray\r\n });\r\n };\r\n\r\n handleSolutionValueChange = (part: CaseCalculationPart, newVal: IReferential | null) => {\r\n const newArray = [...this.state.calculationParts];\r\n const index = newArray.findIndex((item) => item.id === part.id);\r\n newArray[index] = {\r\n ...newArray[index],\r\n solutionValue: newVal,\r\n solutionValueId: newVal !== null ? newVal.id : null\r\n };\r\n this.setState({\r\n calculationParts: newArray\r\n });\r\n };\r\n\r\n displayValueWithCurrency = (value: number | null) => {\r\n let result = '0';\r\n if (!R.isNil(value)) {\r\n result = value.toFixed(2);\r\n }\r\n\r\n return Utils.countryNumberFormat(result, this.props.appState.appUser?.organization?.country ?? null) + ' ' + this.state.caseCalculationHistoryDetails.currency!.displayName;\r\n };\r\n\r\n renderCalculationTotal = () => {\r\n return (\r\n \r\n \r\n
\r\n
\r\n
u
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_TOTAL_SMALL_PIECES',\r\n 'Piese mici'\r\n )}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_TOTAL_WITHOUT_DISCOUNT',\r\n 'Total fara discount'\r\n )}\r\n
\r\n
\r\n {this.translatorService.Tranlate('CALCULATION_DETAILS_TOTAL_DISCOUNT', 'Discount')}\r\n
\r\n {this.viewPrcNewColumns() ? (\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_TOTAL_ADAOS',\r\n 'Adaos Asigurator'\r\n )}\r\n
\r\n ) : ''}\r\n
\r\n {this.translatorService.Tranlate('CALCULATION_DETAILS_TOTAL_SECTION', 'TOTAL')}\r\n
\r\n
\r\n {this.state.calculationSectionList.map((item) => {\r\n return item.code === CalculationSectionCodeEnum.PART ? (\r\n
\r\n
{item.displayName}
\r\n
\r\n {this.displayValueWithCurrency(\r\n this.state.caseCalculationHistoryDetails.smallPartsValue\r\n )}\r\n
\r\n
\r\n {this.displayValueWithCurrency(\r\n this.state.caseCalculationHistoryDetails.amountPieces\r\n )}\r\n
\r\n
\r\n {this.displayValueWithCurrency(\r\n this.state.caseCalculationHistoryDetails.amountPiecesDiscount\r\n )}\r\n
\r\n {this.viewPrcNewColumns() ? ( \r\n
\r\n {this.displayValueWithCurrency(\r\n this.state.caseCalculationHistoryDetails.additionInsurerParts\r\n )}\r\n
\r\n ) : ''}\r\n
\r\n {this.displayValueWithCurrency(\r\n this.state.caseCalculationHistoryDetails.amountPiecesWithDiscount\r\n )}\r\n
\r\n
\r\n ) : item.code === CalculationSectionCodeEnum.LABOR ? (\r\n
\r\n
{item.displayName}
\r\n
-
\r\n
\r\n {this.displayValueWithCurrency(\r\n this.state.caseCalculationHistoryDetails.amountLabor\r\n )}\r\n
\r\n
\r\n {this.displayValueWithCurrency(\r\n (this.state.caseCalculationHistoryDetails.amountLabor || 0) -\r\n (this.state.caseCalculationHistoryDetails.amountLaborWithDiscount || 0)\r\n )}\r\n
\r\n {this.viewPrcNewColumns() ? ( \r\n
-
\r\n ) : ''}\r\n
\r\n {R.isNil(this.state.caseCalculationHistoryDetails.amountLaborWithDiscount)\r\n ? 0\r\n : Utils.countryNumberFormat(this.state.caseCalculationHistoryDetails.amountLaborWithDiscount.toFixed(\r\n 2\r\n ), this.props.appState.appUser?.organization?.country ?? null) +\r\n ' ' +\r\n this.state.caseCalculationHistoryDetails.currency!.displayName}\r\n
\r\n
\r\n ) : item.code === CalculationSectionCodeEnum.PAINT ? (\r\n
\r\n
{item.displayName}
\r\n
-
\r\n
\r\n {this.displayValueWithCurrency(\r\n this.state.caseCalculationHistoryDetails.amountPaintingMaterials\r\n )}\r\n
\r\n
\r\n {this.displayValueWithCurrency(\r\n (this.state.caseCalculationHistoryDetails.amountPaintingMaterials || 0) -\r\n (this.state.caseCalculationHistoryDetails\r\n .amountPaintingMaterialsWithDiscount || 0)\r\n )}\r\n
\r\n {this.viewPrcNewColumns() ? ( \r\n
-
\r\n ) : ''}\r\n
\r\n {this.displayValueWithCurrency(\r\n this.state.caseCalculationHistoryDetails.amountPaintingMaterialsWithDiscount\r\n )}\r\n
\r\n
\r\n ) : item.code === CalculationSectionCodeEnum.PAINT_LABOR ? (\r\n
\r\n
{item.displayName}
\r\n
-
\r\n
\r\n {this.displayValueWithCurrency(\r\n this.state.caseCalculationHistoryDetails.amountPaintingLabor\r\n )}\r\n
\r\n
\r\n {this.displayValueWithCurrency(\r\n (this.state.caseCalculationHistoryDetails.amountPaintingLabor || 0) -\r\n (this.state.caseCalculationHistoryDetails.amountPaintingLaborWithDiscount ||\r\n 0)\r\n )}\r\n
\r\n {this.viewPrcNewColumns() ? ( \r\n
-
\r\n ) : ''}\r\n
\r\n {this.displayValueWithCurrency(\r\n this.state.caseCalculationHistoryDetails.amountPaintingLaborWithDiscount\r\n )}\r\n
\r\n
\r\n ) : null;\r\n })}\r\n
\r\n
\r\n {this.translatorService.Tranlate('CALCULATION_DETAILS_TOTAL_SECTION', 'TOTAL')}\r\n
\r\n
\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_ADDITION_AMOUNT',\r\n 'Adaos GTM'\r\n )}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_TOTAL_WITHOUT_VAT',\r\n 'Total fara TVA'\r\n )}\r\n
\r\n
\r\n {this.state.caseCalculationHistoryDetails.amountTVA != 0\r\n ? this.translatorService.Tranlate('CALCULATION_DETAILS_TOTAL_VAT', 'TVA') +\r\n ' (' +\r\n this.state.TVA +\r\n '%)'\r\n : this.translatorService.Tranlate('CALCULATION_DETAILS_TOTAL_VAT', 'TVA') +\r\n ' (0 %)'}\r\n
\r\n
\r\n {this.translatorService.Tranlate('CALCULATION_DETAILS_TOTAL_SECTION', 'TOTAL')}\r\n
\r\n
\r\n
\r\n
\r\n {this.displayValueWithCurrency(\r\n this.state.caseCalculationHistoryDetails.amountAddition\r\n )}\r\n
\r\n
\r\n {this.displayValueWithCurrency(\r\n this.state.caseCalculationHistoryDetails.amountWithoutTVA\r\n )}\r\n
\r\n
\r\n {this.displayValueWithCurrency(\r\n this.state.caseCalculationHistoryDetails.amountTVA\r\n )}\r\n
\r\n
\r\n {this.displayValueWithCurrency(this.state.caseCalculationHistoryDetails.amount)}\r\n
\r\n
\r\n
\r\n
\r\n {this.state.caseCalculationHistoryDetails.calculationType.code !== CalculationTypeCode.ORG && (\r\n
\r\n this.handleRemarksChange(e)}\r\n variant=\"outlined\"\r\n />\r\n
\r\n )}\r\n
\r\n\r\n
\r\n {this.state.caseCalculationHistoryDetails.calculationType.code !== CalculationTypeCode.ORG && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n save = async () => {\r\n const parts = this.state.calculationParts.map((item) => item);\r\n\r\n parts.forEach((item) => {\r\n item.calculationSection = null;\r\n item.carPartCategory = null;\r\n item.alternativePartQuality = null;\r\n item.supplier = null;\r\n });\r\n try {\r\n await this.caseService.UpdateCaseCalculationParts(\r\n this.state.calculationParts,\r\n this.state.caseCalculationHistoryDetails.comment,\r\n this.state.caseCalculationHistoryDetails.offerNumber,\r\n this.props.calculationHistoryId,\r\n this.state.caseCalculationHistoryDetails.partsLocationOrganizationId,\r\n this.state.caseCalculationHistoryDetails.partsOrganizationId,\r\n this.state.caseCalculationHistoryDetails.organizationId,\r\n this.state.caseCalculationHistoryDetails.organizationName,\r\n true,\r\n this.state.caseCalculationHistoryDetails.manipulationPercent,\r\n this.state.caseCalculationHistoryDetails.additionInsurer,\r\n this.state.caseCalculationHistoryDetails.formId,\r\n this.state.caseCalculationHistoryDetails.interogatePartner\r\n );\r\n\r\n this.props.handleModifiedPropChanges(false);\r\n this.props.onSave();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.appuserService = (this.context as AppContext).appUserService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
\r\n {this.renderCalculationGeneralData()}\r\n {this.renderCalculationPart()}\r\n {this.renderCalculationTotal()}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState, ownProps: ExternalCaseDetailsCaseTabCalculationDetailsProps) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle\r\n }),\r\n null\r\n)(withSnackbar(CaseDetailsCaseTabCalculationDetails as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Tooltip,\r\n Card,\r\n CardContent,\r\n Button,\r\n IconButton,\r\n Grid,\r\n Dialog,\r\n DialogTitle,\r\n Typography,\r\n DialogContent,\r\n TextField,\r\n Radio,\r\n Divider,\r\n Box,\r\n CircularProgress\r\n} from '@material-ui/core';\r\nimport { isUndefined, rest } from 'lodash';\r\n\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport {\r\n CarClassRentPrice,\r\n CaseCalculationAlternativePart,\r\n CaseCalculationHistory,\r\n CaseCalculationPart,\r\n CaseVehicleHistory,\r\n ChangeCaseStatusRequest,\r\n ManipulationTariffPercentResponse,\r\n Offer,\r\n OfferLine,\r\n OfferPart,\r\n OriginalPart,\r\n PartNotifySuppportRequest,\r\n TariffPercentResponse,\r\n VehicleDto\r\n} from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport {\r\n ReferentialCode,\r\n ParametreCode,\r\n CarPartQualityRatings,\r\n CalculationSectionCodeEnum,\r\n AlternativeCode,\r\n AdditionalInfoCode,\r\n CaseStatusCodeEnum,\r\n MakeExceptionEnum,\r\n MakeException,\r\n OriginalPartShortNumberException,\r\n SupplierCode,\r\n OrganizationTypeCode\r\n} from '../../helpers/Constants';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport FileCopyOutlinedIcon from '@material-ui/icons/FileCopyOutlined';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport NumberFormat from 'react-number-format';\r\nimport { Organization, OrganizationOilMappingRequest } from '../../interfaces/Organization';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { WorkflowCalculation, WorkflowPartner, WorkflowSupplier } from '../../interfaces/Workflow';\r\nimport * as XLSX from 'xlsx';\r\nimport {\r\n ImportAlternativePartsFileHeader,\r\n ImportOriginalPartsFileHeader\r\n} from '../../helpers/Constants';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport * as R from 'ramda';\r\nimport { FormCode } from '../../helpers/forms/FormCode';\r\nimport { CalculationRequest } from '../../interfaces/GtService';\r\nimport DropdownTreeSelect from 'react-dropdown-tree-select';\r\nimport 'react-dropdown-tree-select/dist/styles.css';\r\nimport _ from 'lodash';\r\nimport { Order, OrderPart, PartToBeOrdered } from '../../interfaces/Order';\r\nimport { IOrderService } from '../../services/Interfaces/IOrderService';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { VehicleHelper } from '../../helpers/VehicleHelper';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport NotificationImportantOutlinedIcon from '@material-ui/icons/NotificationImportantOutlined';\r\n\r\nexport interface ExternalCaseDetailsAlternativeCalculationPiecesProps {\r\n calculationHistoryId: number;\r\n workflowCalculation: WorkflowCalculation | undefined;\r\n handleUpdateAlternativeCalcAmount: (calculationParts: CaseCalculationPart[]) => void;\r\n defaultMaxDeliveryTime: number;\r\n optmizationType: number;\r\n resetOptimizatonType: () => void;\r\n onSave: () => void;\r\n orderList: Order[];\r\n manipulationTariff: ManipulationTariffPercentResponse;\r\n additionTariff: TariffPercentResponse;\r\n insurerList: IReferential[];\r\n serviceId: number | null;\r\n discountTariff: TariffPercentResponse;\r\n packageCalculationId: number | null;\r\n nonStockSuppliers: WorkflowSupplier[];\r\n}\r\n\r\ninterface ICaseDetailsAlternativeCalculationPiecesState {\r\n caseCalculationHistoryDetails: CaseCalculationHistory;\r\n calculationParts: CaseCalculationPart[];\r\n newCalculationPart: CaseCalculationPart | null;\r\n newCalculationPartId: number | null;\r\n partQualityTypes: IReferential[];\r\n supplierList: Organization[];\r\n isDialogOpen: boolean;\r\n isAddOriginalPartDialogOpen: boolean;\r\n isLoading: boolean;\r\n currentSection: IReferential | null;\r\n TVA: string;\r\n modified: boolean;\r\n selectedAlternativePartValue: number;\r\n caseCalculationAlternativePart: CaseCalculationAlternativePart[];\r\n newCaseCalculationAlternativePart: CaseCalculationAlternativePart | null;\r\n clearStateAlternativeParts: boolean;\r\n calculationPartFormTypeAdd: boolean;\r\n partLoaders: boolean[];\r\n partSection: IReferential | null;\r\n isDialogModifiedOpen: boolean;\r\n isConfirm: boolean;\r\n selectedOrganizationBranch: OrganizationBranch | null;\r\n organizationBranches: OrganizationBranch[];\r\n currentWorkflowContainsOrderFormOrInterogatePartner: boolean;\r\n isDialogOpenConfirmationOrgPartner: boolean;\r\n orderPartList: OrderPart[];\r\n calculationPartsOrdered: CaseCalculationPart[];\r\n isDialogOpenFunctionToBeCalled: GenericVoidFunc | null;\r\n caseStatuses: IReferential[];\r\n isDialogOpenOptimConfirmation: boolean;\r\n caseCalculationAlternativePartCopy: CaseCalculationAlternativePart[];\r\n includeChild: boolean;\r\n carClassRentPrice: CarClassRentPrice | null;\r\n interogateParts: boolean[];\r\n hasBillingForm: boolean;\r\n rentVehiclePrices: VehicleDto | null;\r\n ownStockOrganization: Organization | null;\r\n packageCalculationParts: CaseCalculationPart[];\r\n executing: boolean;\r\n isNotifySupportDialogOpen: boolean;\r\n sendNotificationToSupportLoading: boolean;\r\n}\r\n\r\ninterface OrganizationBranch {\r\n id: number;\r\n organizationId: number;\r\n organizationName: string;\r\n organizationAddress: string;\r\n children: OrganizationBranch[];\r\n parentId: number | null;\r\n path: string | null;\r\n label: string;\r\n checked: boolean | null;\r\n}\r\ntype GenericVoidFunc = (...args: any[]) => void;\r\n\r\ntype ICaseDetailsAlternativeCalculationPiecesProps =\r\n ExternalCaseDetailsAlternativeCalculationPiecesProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n } & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsAlternativeCalculationPieces extends React.PureComponent<\r\n ICaseDetailsAlternativeCalculationPiecesProps,\r\n ICaseDetailsAlternativeCalculationPiecesState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n private appuserService!: IAppUserService;\r\n private organizationService!: IOrganizationService;\r\n private orderService!: IOrderService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n partSection: null,\r\n caseCalculationHistoryDetails: {} as CaseCalculationHistory,\r\n caseVehicle: {} as CaseVehicleHistory,\r\n calculationParts: [],\r\n newCalculationPart: null,\r\n newCalculationPartId: null,\r\n partQualityTypes: [],\r\n supplierList: [],\r\n isDialogOpen: false,\r\n isAddOriginalPartDialogOpen: false,\r\n isLoading: true,\r\n currentSection: null,\r\n TVA: '',\r\n modified: false,\r\n selectedAlternativePartValue: 9999999999999,\r\n caseCalculationAlternativePart: [],\r\n newCaseCalculationAlternativePart: null,\r\n clearStateAlternativeParts: false,\r\n calculationPartFormTypeAdd: true,\r\n partLoaders: [],\r\n isDialogModifiedOpen: false,\r\n isConfirm: false,\r\n selectedOrganizationBranch: null,\r\n organizationBranches: [],\r\n currentWorkflowContainsOrderFormOrInterogatePartner: false,\r\n isDialogOpenConfirmationOrgPartner: false,\r\n isDialogOpenFunctionToBeCalled: null,\r\n orderPartList: [],\r\n calculationPartsOrdered: [],\r\n caseStatuses: [],\r\n isDialogOpenOptimConfirmation: false,\r\n caseCalculationAlternativePartCopy: [],\r\n includeChild: false,\r\n carClassRentPrice: null,\r\n interogateParts: [],\r\n hasBillingForm: false,\r\n rentVehiclePrices: null,\r\n ownStockOrganization: null,\r\n packageCalculationParts: [],\r\n executing: false,\r\n isNotifySupportDialogOpen: false,\r\n sendNotificationToSupportLoading: false\r\n } as ICaseDetailsAlternativeCalculationPiecesState;\r\n rowRefs: { [key: number]: React.RefObject } = {};\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (caseSettings === null || caseSettings === undefined || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n console.log('nonStockSuppliers', this.props.nonStockSuppliers);\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadPiecesDetails();\r\n }\r\n );\r\n }\r\n\r\n componentDidUpdate(prevProps: ICaseDetailsAlternativeCalculationPiecesProps) {\r\n if (this.props.optmizationType === 0) {\r\n return;\r\n }\r\n if (this.props.optmizationType !== prevProps.optmizationType) {\r\n this.filterAlternativePartsByOptimization();\r\n this.props.resetOptimizatonType();\r\n }\r\n }\r\n\r\n getInsurerId = () : number | null => {\r\n if (isNullOrUndefined(this.props.workflowCalculation)) {\r\n return null;\r\n }\r\n \r\n if (R.isNil(this.props.caseSettingsState.case!.caseEvent)) {\r\n return null;\r\n }\r\n\r\n if (R.isNil(this.props.caseSettingsState.case!.caseEvent.insurerName)) {\r\n return null;\r\n }\r\n\r\n const insurerName = this.props.caseSettingsState.case!.caseEvent.insurerName;\r\n console.log('insurerName', insurerName);\r\n const insurer = _.find(this.props.insurerList, function (insurer) {\r\n return insurer.displayName.toLowerCase() === insurerName.toLowerCase();\r\n });\r\n console.log('insurer', insurer);\r\n if (R.isNil(insurer)) {\r\n return null;\r\n }\r\n return insurer.id;\r\n }\r\n\r\n loadPiecesDetails = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (caseSettings === null || caseSettings === undefined || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n const casee = this.props.caseSettingsState.case;\r\n const TVA = this.props.caseSettingsState.case!.caseParameters.find(\r\n (item) => item.parameter!.code === ParametreCode.TVA\r\n )!.value;\r\n\r\n if (casee === null) {\r\n return;\r\n }\r\n\r\n const refQualityPart = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CarPartCategory\r\n );\r\n const currencyRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.Currency\r\n );\r\n const refCaseStatus = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CaseStatus\r\n );\r\n\r\n const orderList = this.props.orderList;\r\n const orderPartList: OrderPart[] = [];\r\n orderList.forEach((order) => {\r\n if (order.orderParts?.length) {\r\n order.orderParts.forEach((orderPart) => {\r\n if (!orderPart.isDeleted) {\r\n orderPartList.push(orderPart);\r\n }\r\n });\r\n }\r\n });\r\n console.log('orderList', orderList);\r\n console.log('orderPartList', orderPartList);\r\n const [\r\n currencyLIst,\r\n caseCalculation,\r\n caseCalculationParts,\r\n partQualityTypes,\r\n sections,\r\n caseStatuses,\r\n ownStockOrganization,\r\n packageCalculationParts\r\n ] = await Promise.all([\r\n this.appReferentialService.Get(currencyRef!.baseUrl),\r\n this.props.calculationHistoryId\r\n ? this.caseService.GetCaseCalculationHistoryDetails(this.props.calculationHistoryId)\r\n : ({} as CaseCalculationHistory),\r\n this.props.calculationHistoryId\r\n ? this.caseService.GetCaseCalculationParts(this.props.calculationHistoryId)\r\n : ([] as CaseCalculationPart[]),\r\n this.appReferentialService.Get(refQualityPart!.baseUrl),\r\n this.caseService.GetCalculationSections(),\r\n this.appReferentialService.Get(refCaseStatus!.baseUrl),\r\n this.organizationService.GetSupplierStockOrganization(OrganizationTypeCode.SUPPLIER),\r\n this.props.packageCalculationId\r\n ? this.caseService.GetCaseCalculationParts(this.props.packageCalculationId)\r\n : ([] as CaseCalculationPart[]),\r\n ]);\r\n\r\n console.log('packageCalculationParts', packageCalculationParts);\r\n let carClassRentPrices: CarClassRentPrice[] = [];\r\n let rentVehiclePrices : VehicleDto[] = [];\r\n if (!R.isNil(casee) && !R.isNil(casee.caseVehicle)) {\r\n const carClassId = casee.caseVehicle.carClassId;\r\n if (!R.isNil(carClassId)) {\r\n carClassRentPrices = await this.caseService.GetCarClassRentPriceByClassId(carClassId);\r\n }\r\n\r\n //verify if is PRC integration\r\n if (this.props.caseSettingsState.caseSettings!.workflow.isPrcIntegration) {\r\n rentVehiclePrices = await this.caseService.FleetSearchVehicle(casee.caseVehicle.vin!, casee.caseVehicle.modelId!);\r\n console.log('rentVehiclePrices', rentVehiclePrices);\r\n //Check if the vehicle or the model class is found in the fleet\r\n if (!rentVehiclePrices.length) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('NO_CAR_CLASS_FOUNDED_IN_FLEET', 'Nu s-a gasit masina/clasa in flota!'), {\r\n variant: 'warning'\r\n });\r\n } \r\n }\r\n \r\n const brand = VehicleHelper.GetBrand(\r\n this.props.caseSettingsState.case,\r\n null\r\n );\r\n console.log('brand', brand);\r\n console.log('MakeException', MakeException);\r\n if (MakeException.includes(brand.toUpperCase())) {\r\n for (const cp of caseCalculationParts) {\r\n if (cp.calculationSection!.code === CalculationSectionCodeEnum.PART) {\r\n const trimmedNumber = cp.guideNumber.replace(/^0+/, '');\r\n console.log('before', cp.guideNumber);\r\n console.log('after', trimmedNumber);\r\n cp.guideNumber = _.cloneDeep(trimmedNumber);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.props.caseSettingsState.caseSettings!.workflow.useRoundUp) {\r\n for (const cp of caseCalculationParts) {\r\n if (cp.calculationSection!.code === CalculationSectionCodeEnum.PART) {\r\n if (OriginalPartShortNumberException.includes(cp.repairMethod)) {\r\n const result = Math.ceil(cp.pieceNr);\r\n console.log('before', cp.pieceNr);\r\n console.log('after', result);\r\n cp.pieceNr = _.cloneDeep(result);\r\n }\r\n }\r\n }\r\n }\r\n const workflowSuppliersList =\r\n this.props.caseSettingsState.caseSettings!.workflow.workflowSuppliers;\r\n caseCalculation.currency = currencyLIst.find(\r\n (item) => item.code === caseCalculation.currencyCode\r\n )!;\r\n\r\n const caseCalculationPartsCopy = _.cloneDeep(caseCalculationParts);\r\n const calculationPartsOrdered: CaseCalculationPart[] = [];\r\n const packageCalculationId = this.props.packageCalculationId;\r\n console.log('caseCalculationParts before', caseCalculationParts);\r\n for (let i = 0; i < caseCalculationPartsCopy.length; i++) {\r\n if (caseCalculationPartsCopy[i].calculationSection!.code === CalculationSectionCodeEnum.PART) {\r\n if (this.props.packageCalculationId) {\r\n caseCalculationPartsCopy[i].isNew = true;\r\n }\r\n const orderPart = _.find(orderPartList, function (orderPart) {\r\n return (\r\n (orderPart.guideNumber === caseCalculationParts[i].guideNumber && orderPart.name === caseCalculationParts[i].name)\r\n ||\r\n (packageCalculationId != null && OriginalPartShortNumberException.includes(caseCalculationParts[i].repairMethod) && orderPart.repairMethod === caseCalculationParts[i].repairMethod)\r\n );\r\n });\r\n\r\n if (orderPart) {\r\n caseCalculationPartsCopy[i].isOrdered = true;\r\n caseCalculationPartsCopy[i].alternativeGuideNumber = orderPart.alternativeGuideNumber;\r\n caseCalculationPartsCopy[i].alternativePartCode = orderPart.alternativePartCode;\r\n caseCalculationPartsCopy[i].alternativePartDiscount = orderPart.alternativePartDiscount;\r\n caseCalculationPartsCopy[i].alternativePartName = orderPart.alternativePartName;\r\n caseCalculationPartsCopy[i].alternativePartQualityId = orderPart.alternativePartQualityId;\r\n caseCalculationPartsCopy[i].alternativePartRemarks = orderPart.alternativePartRemarks;\r\n caseCalculationPartsCopy[i].alternativePartStockLocation =\r\n orderPart.alternativePartStockLocation;\r\n caseCalculationPartsCopy[i].alternativePartStockQuantity =\r\n orderPart.alternativePartStockQuantity;\r\n caseCalculationPartsCopy[i].alternativePrice = orderPart.alternativePrice;\r\n caseCalculationPartsCopy[i].alternativePartDiscount = orderPart.alternativePartDiscount;\r\n caseCalculationPartsCopy[i].carPartCategoryId = orderPart.carPartCategoryId;\r\n caseCalculationPartsCopy[i].codeType = orderPart.codeType;\r\n caseCalculationPartsCopy[i].deliveryTime = orderPart.deliveryTime?.toString() ?? '';\r\n caseCalculationPartsCopy[i].discount = orderPart.discount ?? 0;\r\n caseCalculationPartsCopy[i].excludeFromOrder = orderPart.excludeFromOrder;\r\n caseCalculationPartsCopy[i].guideNumber = orderPart.guideNumber;\r\n caseCalculationPartsCopy[i].name = orderPart.name;\r\n caseCalculationPartsCopy[i].originalPrice = orderPart.originalPrice;\r\n caseCalculationPartsCopy[i].pieceNr = orderPart.pieceNr;\r\n caseCalculationPartsCopy[i].producer = orderPart.producer;\r\n caseCalculationPartsCopy[i].remarks = orderPart.remarks;\r\n caseCalculationPartsCopy[i].supplierId = orderPart.supplierId;\r\n caseCalculationPartsCopy[i].type = orderPart.type;\r\n caseCalculationPartsCopy[i].validityTime = orderPart.validityTime\r\n ? orderPart.validityTime.toString()\r\n : null;\r\n caseCalculationPartsCopy[i].orderCode = orderPart.orderCode;\r\n caseCalculationPartsCopy[i].locationId = orderPart.locationId;\r\n caseCalculationPartsCopy[i].productId = orderPart.productId;\r\n caseCalculationPartsCopy[i].codEan = orderPart.codEan;\r\n calculationPartsOrdered.push(caseCalculationPartsCopy[i]);\r\n } else {\r\n if (orderPartList.length > 0) { \r\n caseCalculationPartsCopy[i].isNew = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n console.log('after', caseCalculationPartsCopy);\r\n const usr = caseCalculation.userId\r\n ? await this.appuserService.GetUserInfo(caseCalculation.userId)\r\n : this.props.appState.appUser;\r\n\r\n caseCalculation.user = usr;\r\n\r\n const suppliers =\r\n workflowSuppliersList.length > 0\r\n ? await this.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(workflowSuppliersList.map((item) => item.supplierId)))\r\n )\r\n : [];\r\n const partLoaders: boolean[] = [];\r\n const interogateParts: boolean[] = [];\r\n caseCalculationPartsCopy\r\n .filter((item) => item.calculationSection!.code === CalculationSectionCodeEnum.PART)\r\n .forEach((item) => {\r\n partLoaders.push(false);\r\n if (!item.isOrdered) {\r\n interogateParts.push(false);\r\n }\r\n });\r\n\r\n let workflowPartners = [] as OrganizationBranch[];\r\n let currentWorkflowPartner = {} as OrganizationBranch | null;\r\n\r\n const workflowSectionStepForms =\r\n this.props.caseSettingsState.caseSettings?.workflow.workflowSections\r\n ?.map((x) => x.workflowSectionSteps)\r\n .reduce((acc, val) => acc.concat(val), [])\r\n .map((x) => x.workflowSectionStepForms)\r\n .reduce((acc, val) => acc.concat(val), []) || [];\r\n const currentWorkflowContainsOrderFormOrInterogatePartner =\r\n workflowSectionStepForms.some((x) => x.form.code === FormCode.CASE_ORDER) &&\r\n (this.props.workflowCalculation?.interogatePartner ?? false);\r\n\r\n const hasBillingForm = workflowSectionStepForms.some(\r\n (x) => x.form.code === FormCode.CASE_EVENT_DATE_FACT\r\n );\r\n\r\n if (\r\n this.props.caseSettingsState.caseSettings?.workflow.workflowPartners &&\r\n this.props.caseSettingsState.caseSettings?.workflow.workflowPartners.length > 0\r\n ) {\r\n const partnerOrganizations =\r\n this.props.caseSettingsState.caseSettings?.workflow.workflowPartners.map((x) => x.partner);\r\n for (const x of partnerOrganizations) {\r\n workflowPartners.push({\r\n id: x!.id,\r\n organizationId: x!.id,\r\n organizationName: x!.name,\r\n organizationAddress: x!.address,\r\n children: [],\r\n parentId: x!.parentId,\r\n path: null,\r\n label: x?.name + (x?.address ? ' ' + x?.address : ''),\r\n checked: false\r\n });\r\n }\r\n }\r\n\r\n const parentIds = workflowPartners.filter((x) => !x.parentId).map((x) => x.id);\r\n\r\n const organizationHierarchy = await this.organizationService.GetOrganizationDescendents(\r\n parentIds\r\n );\r\n\r\n const organizationBranches =\r\n organizationHierarchy.map((x) => {\r\n return {\r\n id: x.id,\r\n organizationId: x.id,\r\n organizationName: x.name,\r\n organizationAddress: x.address,\r\n children: [],\r\n parentId: x.parentId,\r\n path: null,\r\n label: x.name + (x.address ? ' ' + x.address : ''),\r\n checked: false\r\n } as OrganizationBranch;\r\n }) || [];\r\n\r\n organizationBranches.forEach((x) => {\r\n workflowPartners.push(x);\r\n });\r\n\r\n let deliveryOrganizationId: number | null | undefined;\r\n if (!isNullOrUndefined(this.props.caseSettingsState.case!.caseEvent)) {\r\n deliveryOrganizationId = this.props.caseSettingsState.case!.caseEvent!.deliveryOrganizationId;\r\n } else {\r\n deliveryOrganizationId = this.props.appState.appUser?.organizationId;\r\n }\r\n \r\n console.log('deliveryOrganizationId', deliveryOrganizationId);\r\n\r\n if (currentWorkflowContainsOrderFormOrInterogatePartner) {\r\n const arrMap = workflowPartners.reduce((acc: any, el: any, i) => {\r\n acc[el.id] = i;\r\n return acc;\r\n }, {});\r\n\r\n const roots = [] as OrganizationBranch[];\r\n\r\n // Push each element to parent's children array\r\n workflowPartners.forEach((el) => {\r\n if (el.parentId === null || arrMap[el.parentId] == null) {\r\n roots.push(el);\r\n } else {\r\n workflowPartners[arrMap[el.parentId]].children.push(el);\r\n }\r\n });\r\n\r\n currentWorkflowPartner =\r\n roots.find((x) => x.organizationId === deliveryOrganizationId) || null;\r\n workflowPartners = roots;\r\n this.assignObjectPaths(workflowPartners, '');\r\n if (currentWorkflowPartner) {\r\n const selectedItemFromTree = this.findRecursive(\r\n workflowPartners,\r\n currentWorkflowPartner?.organizationId\r\n );\r\n if (selectedItemFromTree) {\r\n selectedItemFromTree.checked = true;\r\n }\r\n }\r\n } else {\r\n currentWorkflowPartner =\r\n organizationBranches.find(\r\n (x) => x.organizationId === deliveryOrganizationId\r\n ) || null;\r\n }\r\n if (currentWorkflowPartner == null) {\r\n currentWorkflowPartner =\r\n organizationBranches.find(\r\n (x) => x.organizationId === deliveryOrganizationId\r\n ) || null;\r\n if (currentWorkflowPartner != null) {\r\n currentWorkflowPartner.checked = true;\r\n }\r\n }\r\n\r\n console.log('currentWorkflowPartner', currentWorkflowPartner);\r\n console.log('workflowPartners', workflowPartners);\r\n console.log('carClassRentPrices', carClassRentPrices);\r\n this.setState({\r\n caseCalculationHistoryDetails: caseCalculation,\r\n calculationParts: caseCalculationPartsCopy,\r\n partQualityTypes: partQualityTypes.filter((item) => item.isActive === true),\r\n TVA: TVA,\r\n supplierList: suppliers.filter((ws) => ws.isActive === true),\r\n isLoading: false,\r\n partLoaders: partLoaders,\r\n partSection: sections.find((item) => item.code === CalculationSectionCodeEnum.PART)!,\r\n selectedOrganizationBranch: currentWorkflowPartner || null,\r\n organizationBranches: workflowPartners || [],\r\n currentWorkflowContainsOrderFormOrInterogatePartner:\r\n currentWorkflowContainsOrderFormOrInterogatePartner,\r\n calculationPartsOrdered: calculationPartsOrdered,\r\n caseStatuses: caseStatuses,\r\n carClassRentPrice: carClassRentPrices.length ? carClassRentPrices[0] : null,\r\n interogateParts: interogateParts,\r\n hasBillingForm: hasBillingForm,\r\n rentVehiclePrices: rentVehiclePrices.length ? rentVehiclePrices[0] : null,\r\n ownStockOrganization: ownStockOrganization,\r\n packageCalculationParts: packageCalculationParts,\r\n orderPartList: orderPartList\r\n }, () => {\r\n this.checkPackageNotification();\r\n });\r\n };\r\n\r\n assignObjectPaths = (obj: any, stack: any) => {\r\n Object.keys(obj).forEach((k) => {\r\n const node = obj[k];\r\n if (node && typeof node === 'object' && !Array.isArray(node)) {\r\n node.path = stack ? `${stack}.${k}` : k;\r\n this.assignObjectPaths(node, node.path);\r\n }\r\n });\r\n };\r\n\r\n isDialogOpenOptimizeConfirmationHandler = () => {\r\n const decimalError = this.validateOrginalParts();\r\n console.log('Decimal Error: ', decimalError);\r\n if (decimalError) {\r\n return;\r\n }\r\n \r\n const hasChildItem = [...this.state.caseCalculationAlternativePartCopy].find(caseCalculationAlternativePart => caseCalculationAlternativePart.isChild);\r\n console.log('Has Child Items', hasChildItem);\r\n if (hasChildItem) {\r\n this.setState({\r\n isDialogOpenOptimConfirmation: true\r\n });\r\n return;\r\n } else {\r\n this.setState({\r\n isDialogOpenOptimConfirmation: false\r\n });\r\n this.optimizeAllParts(true);\r\n return;\r\n }\r\n };\r\n\r\n checkIfOptimIsPossible = () : boolean => {\r\n return _.findIndex(this.state.interogateParts, function(el) {\r\n return !el;\r\n }) != -1 ? false : true;\r\n }\r\n\r\n getParentParts = (originalPartId: number) => {\r\n //Toate piesele alternative\r\n const groupedParts = _.filter(\r\n [...this.state.caseCalculationAlternativePartCopy],\r\n function (object) {\r\n return object.originalPartId === originalPartId;\r\n }\r\n );\r\n\r\n //Toate piesele alternative care nu sunt copiii\r\n const parentParts = _.filter(_.cloneDeep(groupedParts), function (object) {\r\n return !object.isChild && object.formatedDeliveryTime != null;\r\n });\r\n const excludedParentParts = _.filter(_.cloneDeep(groupedParts), function (object) {\r\n return !object.isChild && object.formatedDeliveryTime == null;\r\n });\r\n\r\n console.log(groupedParts);\r\n console.log('Before: ', parentParts);\r\n console.log('Piese altenative excluse din cauza ca au formatedDeliveryTime = null:', excludedParentParts);\r\n\r\n if (this.state.includeChild) {\r\n for(let i = 0; i < parentParts.length; i++) {\r\n //Toti copiii asociati unei piese alternative parinte\r\n const childParts = _.filter(groupedParts, function (object) {\r\n return (\r\n object.isChild &&\r\n object.bundleNo != null &&\r\n object.bundleNo == parentParts[i].bundleNo &&\r\n object.alternativePartCode !=\r\n parentParts[i].alternativePartCode\r\n );\r\n });\r\n parentParts[i].alternativePrice = parentParts[i].alternativePrice + _.cloneDeep(_.sumBy(childParts, 'alternativePrice'));\r\n }\r\n }\r\n console.log('After: ', parentParts);\r\n\r\n return parentParts;\r\n }\r\n\r\n optimize = async () => {\r\n this.setState(\r\n {\r\n partLoaders: this.state.partLoaders.map(() => true)\r\n },\r\n async () => {\r\n const offerLines : OfferLine[] = [];\r\n\r\n const parts = this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === this.state.partSection!.id\r\n );\r\n for (const cp of parts) { \r\n if (cp.calculationSectionId === this.state.partSection!.id) {\r\n const parentParts = this.getParentParts(cp.id);\r\n if (parentParts.length == 0) {\r\n console.log('Nu avem piese alternative');\r\n } else {\r\n offerLines.push({\r\n originalPartId: cp.id,\r\n guideNumber: cp.guideNumber,\r\n quantity: cp.pieceNr,\r\n offerParts: parentParts.map((part: CaseCalculationAlternativePart) => {\r\n return {\r\n alternativePartCode: part.alternativePartCode,\r\n alternativePartName: part.name,\r\n alternativePrice: part.alternativePrice,\r\n deliveryTime: part.formatedDeliveryTime,\r\n availableQuantity: part.availableQuantity ?? 99999,\r\n rowId: part.id\r\n } as OfferPart;\r\n })\r\n } as OfferLine);\r\n }\r\n }\r\n }\r\n \r\n const getBestOfferRequest = {\r\n caseId: this.props.caseSettingsState.case!.id,\r\n price: this.props.caseSettingsState.caseSettings!.workflow.isPrcIntegration ? this.getPriceForInsurer(this.state.rentVehiclePrices) \r\n : this.state.carClassRentPrice?.price ?? 0,\r\n offerLines: offerLines\r\n } as Offer;\r\n\r\n console.log('Best offer request', getBestOfferRequest);\r\n const bestOfferResult = await this.caseService.GetBestOffer(\r\n getBestOfferRequest\r\n );\r\n console.log('Best offer result', bestOfferResult);\r\n for (const cp of parts) { \r\n if (cp.calculationSectionId === this.state.partSection!.id) {\r\n const bestOfferLine = _.find(bestOfferResult.offerLines, function(offerLine) {\r\n return offerLine.originalPartId == cp.id;\r\n });\r\n console.log('bestOfferLine', bestOfferLine);\r\n if (bestOfferLine) {\r\n if (bestOfferLine.offerParts.length) {\r\n const bestOfferPart = bestOfferLine!.offerParts[0];\r\n console.log('bestOfferPart', bestOfferPart);\r\n const alternativePart = this.state.caseCalculationAlternativePartCopy.find(\r\n (item) => item.id === bestOfferPart.rowId\r\n );\r\n console.log('alternativePart', alternativePart);\r\n this.handleAlternativePartSelect(\r\n bestOfferPart.rowId,\r\n bestOfferLine.originalPartId,\r\n this.state.includeChild ? alternativePart!\r\n : {...alternativePart!, bundleNo: null}\r\n );\r\n } else {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('NO_OPTIM', 'Nu s-a gasit niciun optim pentru:') + ' ' + cp.guideNumber, {\r\n variant: 'warning'\r\n });\r\n }\r\n }\r\n }\r\n }\r\n \r\n this.setState({\r\n partLoaders: this.state.partLoaders.map(() => false)\r\n }, () => {\r\n this.scrollToSelectedItems();\r\n });\r\n }\r\n );\r\n };\r\n\r\n\r\n scrollToSelectedItems = () => {\r\n console.log('rowRefs', this.rowRefs);\r\n const caseCalculationOriginalPartsCopy = [...this.state.calculationParts].reverse();\r\n const caseCalculationAlternativePartCopy = [...this.state.caseCalculationAlternativePart];\r\n caseCalculationOriginalPartsCopy\r\n .filter((item) => item.calculationSectionId === this.state.partSection!.id)\r\n .map((calculationOriginalPart, index) => {\r\n const altParts = caseCalculationAlternativePartCopy.filter(\r\n (item2) => item2.originalPartId === calculationOriginalPart.id && item2.selectedAlternativePart != 9999999999999\r\n );\r\n if (altParts.length > 0) {\r\n // Verifică dacă piesa selectată este vizibilă și derulează la ea\r\n const selectedAlternativePartId = altParts[0].selectedAlternativePart;\r\n if (this.rowRefs[selectedAlternativePartId]?.current) {\r\n console.log('Scroll to row', altParts[0]);\r\n this.rowRefs[selectedAlternativePartId].current?.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center'\r\n });\r\n }\r\n }\r\n });\r\n }\r\n getPriceForInsurer(item: VehicleDto | null): number {\r\n if (item === null) return 0;\r\n\r\n if (R.isNil(this.props.caseSettingsState.case!.caseEvent)) {\r\n return 0;\r\n }\r\n //verify is insurerName is null or empty\r\n const insurerName = this.props.caseSettingsState.case!.caseEvent!.insurerName.toLowerCase();\r\n if (R.isNil(insurerName) || insurerName === '') {\r\n return 0;\r\n }\r\n const insurer = _.find(this.props.insurerList, function (insurer) {\r\n return insurer.displayName.toLowerCase() === insurerName.toLowerCase();\r\n });\r\n console.log('insurer', insurer);\r\n if (R.isNil(insurer)) {\r\n return 0;\r\n }\r\n\r\n let insurerCode = insurer.code?.toLowerCase() ?? '';\r\n insurerCode += 'Pret';\r\n // Check if the insurer name is a valid property in the item object\r\n if (item.hasOwnProperty(insurerCode)) {\r\n const value = item[insurerCode as keyof VehicleDto];\r\n if (typeof value === 'undefined' || value === null) {\r\n return 0;\r\n }\r\n\r\n // Convert the value to a number\r\n const numericValue = parseFloat(value.toString());\r\n\r\n \r\n // Check if the conversion was successful\r\n if (!isNaN(numericValue)) {\r\n return numericValue;\r\n } else {\r\n return 0; // Return 0 if the value cannot be converted to a number\r\n }\r\n } else {\r\n return 0; // Return 0 if the insurer name is not found\r\n }\r\n }\r\n\r\n validateOrginalParts = () : boolean => {\r\n const calculationParts = this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === this.state.partSection!.id && !item.isOrdered\r\n );\r\n let decimalError = false;\r\n calculationParts.map((calcPart) => {\r\n if (!this.props.caseSettingsState.caseSettings!.workflow.useRoundUp && OriginalPartShortNumberException.includes(calcPart.repairMethod)) {\r\n return;\r\n }\r\n if (!Number.isInteger(calcPart.pieceNr)) {\r\n decimalError = true;\r\n this.validateOrigPartUnitsAdd(calcPart.id);\r\n return;\r\n }\r\n });\r\n\r\n if (decimalError) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'DECIMAL_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie un numar intreg fara zecimale'\r\n ),\r\n {\r\n variant: 'error'\r\n }\r\n );\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n optimizeAllParts = async (includeChild: boolean) => {\r\n this.setState({\r\n isDialogOpenOptimConfirmation: false,\r\n includeChild: includeChild\r\n });\r\n \r\n try {\r\n await this.optimize();\r\n } catch (error) {\r\n console.log('Eroare', error);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n this.setState({\r\n partLoaders: this.state.partLoaders.map(() => false)\r\n });\r\n }\r\n \r\n }\r\n\r\n\r\n isDialogOpenConfirmationHandler = (func: GenericVoidFunc) => {\r\n if (this.state.currentWorkflowContainsOrderFormOrInterogatePartner) {\r\n this.setState({\r\n isDialogOpenConfirmationOrgPartner:\r\n this.state.currentWorkflowContainsOrderFormOrInterogatePartner,\r\n isDialogOpenFunctionToBeCalled: func\r\n });\r\n } else {\r\n func();\r\n }\r\n };\r\n\r\n interogateAll = async () => {\r\n try {\r\n const parts = this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === this.state.partSection!.id && !item.isOrdered\r\n );\r\n this.setState({\r\n caseCalculationAlternativePart: [],\r\n caseCalculationAlternativePartCopy: []\r\n });\r\n\r\n for (const cp of parts) {\r\n const index = parts.indexOf(cp);\r\n if (cp.calculationSectionId === this.state.partSection!.id) {\r\n await Promise.all([\r\n this.oilMapping(cp),\r\n this.interogate(cp.id, cp.guideNumber, index)\r\n ]);\r\n }\r\n }\r\n\r\n // this.props.enqueueSnackbar(this.translatorService.Tranlate(\"SUCCES_MSG\", \"OK\"), { variant: 'success' });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n uuidToNumber = (): number => {\r\n const uniqueId = uuid();\r\n const hexString = uniqueId.replace(/-/g, '');\r\n const numericValue = parseInt(hexString, 16);\r\n //number with 9 characters\r\n return numericValue % 1000000000;\r\n }\r\n\r\n oilMapping = async (cp: CaseCalculationPart) => {\r\n const oilMapping = this.props.workflowCalculation!.oilMapping ? await this.organizationService.GetOrganizationOilMapping(\r\n {\r\n organizationId: this.state.selectedOrganizationBranch?.organizationId ?? this.props.appState.appUser!.organizationId,\r\n partCode: cp.guideNumber,\r\n cupiCode: cp.repairMethod,\r\n auxiliarInformation: cp.auxiliarInformation\r\n } as OrganizationOilMappingRequest\r\n ) : null;\r\n\r\n if (oilMapping != null && oilMapping.price) { \r\n console.log('oilMapping', oilMapping);\r\n cp.originalPrice = oilMapping.price;\r\n }\r\n }\r\n\r\n interogate = async (originalPartId: number, partCode: string, index: number) => {\r\n this.setState(\r\n {\r\n partLoaders: this.state.partLoaders.map((item, itemIndex) =>\r\n itemIndex === index ? true : item\r\n )\r\n },\r\n async () => {\r\n const alternativeParts = await this.caseService.InterogateCaseCalculationsAlternativeParts(\r\n originalPartId,\r\n partCode,\r\n this.props.additionTariff.value,\r\n this.props.discountTariff.value,\r\n this.props.caseSettingsState.caseSettings!.workflow.id,\r\n this.state.selectedOrganizationBranch?.organizationId\r\n );\r\n\r\n const differentCaseCalculationAlternativePart: CaseCalculationAlternativePart[] = _.filter(\r\n [...this.state.caseCalculationAlternativePart],\r\n function (object) {\r\n return object.originalPartId != originalPartId;\r\n }\r\n );\r\n const calculationsAlternativeParts = [...differentCaseCalculationAlternativePart];\r\n [...alternativeParts].forEach((item, index) => {\r\n item.id = this.uuidToNumber();\r\n console.log(item.id);\r\n });\r\n\r\n console.log(\r\n 'differentCaseCalculationAlternativePart',\r\n differentCaseCalculationAlternativePart\r\n );\r\n calculationsAlternativeParts.push(...alternativeParts);\r\n console.log('NEW calculationsAlternativeParts', calculationsAlternativeParts);\r\n this.setState({\r\n caseCalculationAlternativePart: calculationsAlternativeParts,\r\n caseCalculationAlternativePartCopy: calculationsAlternativeParts,\r\n partLoaders: this.state.partLoaders.map((item, itemIndex) =>\r\n itemIndex === index ? false : item\r\n ),\r\n interogateParts: this.state.interogateParts.map((item, itemIndex) => \r\n itemIndex === index ? true : item\r\n )\r\n });\r\n }\r\n );\r\n };\r\n\r\n interogateAlternativeParts = async (originalPartId: number, partCode: string, cp: CaseCalculationPart, index: number) => {\r\n try {\r\n await Promise.all([\r\n this.oilMapping(cp),\r\n this.interogate(originalPartId, partCode, index)\r\n ]);\r\n\r\n // this.props.enqueueSnackbar(this.translatorService.Tranlate(\"SUCCES_MSG\", \"OK\"), { variant: 'success' });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n newCalculationPart = async (calculationPartId: number | null) => {\r\n this.setState({\r\n calculationPartFormTypeAdd: true\r\n });\r\n\r\n let newCalculationPart;\r\n if (calculationPartId === null) {\r\n newCalculationPart = { ...this.state.newCalculationPart } as CaseCalculationPart;\r\n newCalculationPart.caseCalculationHistoryId = this.props.calculationHistoryId;\r\n newCalculationPart.id = -1 * this.state.calculationParts.length;\r\n newCalculationPart.discount = 0;\r\n newCalculationPart.alternativePartQualityId = null;\r\n newCalculationPart.additionInsurer = null;\r\n } else {\r\n newCalculationPart = this.state.calculationParts.find(\r\n (item) => item.id === calculationPartId\r\n )!;\r\n newCalculationPart.discount = R.isNil(newCalculationPart.discount)\r\n ? 0\r\n : newCalculationPart.discount;\r\n newCalculationPart.alternativePartQualityId = R.isNil(newCalculationPart.alternativePartQualityId)\r\n ? null\r\n : newCalculationPart.alternativePartQualityId;\r\n newCalculationPart.additionInsurer = R.isNil(newCalculationPart.additionInsurer) ? null : newCalculationPart.additionInsurer;\r\n }\r\n \r\n this.setState({\r\n newCalculationPart: newCalculationPart,\r\n newCalculationPartId: calculationPartId,\r\n isAddOriginalPartDialogOpen: true\r\n });\r\n };\r\n\r\n copyCalculationPart = async (calculationPartId: number | null) => {\r\n this.setState({\r\n calculationPartFormTypeAdd: false\r\n });\r\n const originalPart = this.state.calculationParts.find(\r\n (calcPart) => calcPart.id === calculationPartId\r\n );\r\n const newCalculationPart = { ...originalPart } as CaseCalculationPart;\r\n newCalculationPart.id = -1 * this.state.calculationParts.length;\r\n newCalculationPart.pieceNr = 0;\r\n newCalculationPart.alternativeGuideNumber = '';\r\n newCalculationPart.alternativePartCode = '';\r\n newCalculationPart.alternativePartQuality = null;\r\n newCalculationPart.alternativePrice = null;\r\n newCalculationPart.alternativePartDiscount = null;\r\n newCalculationPart.alternativePartName = null;\r\n newCalculationPart.alternativePartQualityId = null;\r\n newCalculationPart.alternativePartStockLocation = null;\r\n newCalculationPart.alternativePartStockQuantity = null;\r\n newCalculationPart.alternativePartRemarks = null;\r\n newCalculationPart.minQty = 0;\r\n newCalculationPart.packing = null;\r\n newCalculationPart.bundleItem = null;\r\n newCalculationPart.bundleNo = null;\r\n newCalculationPart.bundleQuantity = null;\r\n newCalculationPart.alternativeNetPrice = null;\r\n newCalculationPart.alternativePriceWithoutDiscount = null;\r\n\r\n this.setState({\r\n newCalculationPart: newCalculationPart,\r\n newCalculationPartId: newCalculationPart.id,\r\n isAddOriginalPartDialogOpen: true\r\n });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState({\r\n isDialogOpen: false,\r\n newCalculationPart: null,\r\n newCalculationPartId: null\r\n });\r\n };\r\n\r\n closeAddOriginalPartDialog = async () => {\r\n this.setState({\r\n isAddOriginalPartDialogOpen: false,\r\n newCalculationPart: null,\r\n newCalculationPartId: null\r\n });\r\n };\r\n\r\n notifySupportCalculationPart = async (calculationPartId: number | null) => {\r\n const originalPart = this.state.calculationParts.find(\r\n (calcPart) => calcPart.id === calculationPartId\r\n );\r\n const newCalculationPart = { ...originalPart } as CaseCalculationPart;\r\n newCalculationPart.id = -1 * this.state.calculationParts.length;\r\n newCalculationPart.pieceNr = 0;\r\n newCalculationPart.alternativeGuideNumber = '';\r\n newCalculationPart.alternativePartCode = '';\r\n newCalculationPart.alternativePartQuality = null;\r\n newCalculationPart.alternativePrice = null;\r\n newCalculationPart.alternativePartDiscount = null;\r\n newCalculationPart.alternativePartName = null;\r\n newCalculationPart.alternativePartQualityId = null;\r\n newCalculationPart.alternativePartStockLocation = null;\r\n newCalculationPart.alternativePartStockQuantity = null;\r\n newCalculationPart.alternativePartRemarks = null;\r\n newCalculationPart.minQty = 0;\r\n newCalculationPart.packing = null;\r\n newCalculationPart.bundleItem = null;\r\n newCalculationPart.bundleNo = null;\r\n newCalculationPart.bundleQuantity = null;\r\n newCalculationPart.alternativeNetPrice = null;\r\n newCalculationPart.alternativePriceWithoutDiscount = null;\r\n this.setState({\r\n newCalculationPart: newCalculationPart,\r\n newCalculationPartId: newCalculationPart.id,\r\n isNotifySupportDialogOpen: true\r\n });\r\n };\r\n\r\n closeNotifySupportDialog = async () => {\r\n this.setState({\r\n isNotifySupportDialogOpen: false,\r\n newCalculationPart: null,\r\n newCalculationPartId: null\r\n });\r\n };\r\n\r\n sendNotificationToSupport = async () => {\r\n console.log('sendNotificationToSupport');\r\n try {\r\n this.setState({\r\n sendNotificationToSupportLoading: true\r\n });\r\n const request = {\r\n caseId: this.props.caseSettingsState.case!.id,\r\n organizationOwnerId: this.props.caseSettingsState.case!.organizationOwnerId,\r\n template: 'GTM_NOTIFY_SUPPORT',\r\n originalPart: {\r\n oeCode: this.state.newCalculationPart!.guideNumber,\r\n name: this.state.newCalculationPart!.name,\r\n price: this.state.newCalculationPart!.originalPrice,\r\n quality: this.state.newCalculationPart!.carPartCategory!.displayName,\r\n comment: this.state.newCalculationPart!.supportComment\r\n } as OriginalPart\r\n } as PartNotifySuppportRequest;\r\n await this.caseService.SendPartNotifySupport(request);\r\n this.setState({\r\n sendNotificationToSupportLoading: false,\r\n isNotifySupportDialogOpen: false\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('NOTIFICATION_SEND_SUCCCESS_MSG', 'Notificarea catre support a fost trimisa cu succces!'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n public renderNotifySupportOriginalPartForm() {\r\n return R.isNil(this.state.newCalculationPart) ? null : (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.handleAutocompleteOriginalPartQualityChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n ) => {\r\n this.setState({\r\n newCalculationPart: {\r\n ...this.state.newCalculationPart!,\r\n supportComment: e.target.value\r\n }\r\n });\r\n }}\r\n variant=\"outlined\"\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n \r\n \r\n
\r\n {this.state.sendNotificationToSupportLoading && \r\n \r\n }\r\n \r\n
\r\n \r\n );\r\n }\r\n\r\n\r\n addAlternativePart = async (id: number) => {\r\n const addNewAlternativePart = {\r\n id: this.state.caseCalculationAlternativePart.length,\r\n originalPartId: id,\r\n selectedAlternativePart: 9999999999999\r\n } as CaseCalculationAlternativePart;\r\n this.setState({\r\n isDialogOpen: true,\r\n newCaseCalculationAlternativePart: addNewAlternativePart\r\n });\r\n };\r\n\r\n clearSelectedAlternativeParts = async (originalPartId: number) => {\r\n let alternativePartsCopy = [...this.state.caseCalculationAlternativePart];\r\n alternativePartsCopy = alternativePartsCopy.map((item) => {\r\n item.selectedAlternativePart =\r\n item.originalPartId === originalPartId ? 9999999999999 : item.selectedAlternativePart;\r\n item.partFromGroup =\r\n item.originalPartId === originalPartId ? 9999999999999 : item.partFromGroup;\r\n return item;\r\n });\r\n\r\n const caseCalculationOriginalPartsCopy = [...this.state.calculationParts];\r\n const originalPartIndex = caseCalculationOriginalPartsCopy.findIndex(\r\n (item) => item.id === originalPartId\r\n );\r\n\r\n caseCalculationOriginalPartsCopy[originalPartIndex] = {\r\n ...caseCalculationOriginalPartsCopy[originalPartIndex],\r\n alternativePrice: null,\r\n alternativePartDiscount: null,\r\n alternativeGuideNumber: null,\r\n alternativePartCode: null,\r\n alternativePartName: null,\r\n alternativePartQuality: null,\r\n alternativePartQualityId: null,\r\n alternativePartStockLocation: null,\r\n alternativePartStockQuantity: null,\r\n alternativePartRemarks: null,\r\n alternativeNetPrice: null,\r\n alternativePriceWithoutDiscount: null\r\n };\r\n\r\n this.validateOrigPartUnitsRemove(originalPartId);\r\n this.setState(\r\n {\r\n caseCalculationAlternativePart: alternativePartsCopy,\r\n caseCalculationAlternativePartCopy: alternativePartsCopy,\r\n calculationParts: caseCalculationOriginalPartsCopy,\r\n clearStateAlternativeParts: true\r\n },\r\n () => this.props.handleUpdateAlternativeCalcAmount(caseCalculationOriginalPartsCopy)\r\n );\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n isNumericString\r\n />\r\n );\r\n };\r\n\r\n handleTextChange = (event: React.ChangeEvent) => {\r\n const value = event.currentTarget.value;\r\n\r\n this.setState({\r\n newCaseCalculationAlternativePart: {\r\n ...this.state.newCaseCalculationAlternativePart!,\r\n [event.target.id]: value\r\n }\r\n });\r\n };\r\n\r\n handlePriceChange = (event: React.ChangeEvent) => {\r\n this.setState({\r\n newCaseCalculationAlternativePart: {\r\n ...this.state.newCaseCalculationAlternativePart!,\r\n alternativePrice: event.target.value === null ? 0 : parseFloat(event.target.value)\r\n }\r\n });\r\n };\r\n handleAvailableQuantityChange = (event: React.ChangeEvent) => {\r\n this.setState({\r\n newCaseCalculationAlternativePart: {\r\n ...this.state.newCaseCalculationAlternativePart!,\r\n availableQuantity: event.target.value === null ? 0 : parseFloat(event.target.value)\r\n }\r\n });\r\n };\r\n\r\n handleDiscountChange = (event: React.ChangeEvent) => {\r\n this.setState({\r\n newCalculationPart: {\r\n ...this.state.newCalculationPart!,\r\n discount: event.target.value === null ? 0 : parseFloat(event.target.value)\r\n }\r\n });\r\n };\r\n\r\n deleteCalculationPart = async (id: number) => {\r\n try {\r\n const calculationPartIndex = this.state.calculationParts.findIndex((item) => item.id === id);\r\n const calculationParts = [...this.state.calculationParts];\r\n calculationParts.splice(calculationPartIndex, 1);\r\n\r\n const calculationAlternativeParts = this.state.caseCalculationAlternativePart.filter(\r\n (item) => item.originalPartId !== id\r\n );\r\n\r\n const interogateParts = _.cloneDeep(this.state.interogateParts);\r\n interogateParts.splice(calculationPartIndex, 1);\r\n\r\n this.setState(\r\n {\r\n calculationParts: calculationParts,\r\n caseCalculationAlternativePart: calculationAlternativeParts,\r\n caseCalculationAlternativePartCopy: calculationAlternativeParts,\r\n interogateParts: interogateParts\r\n },\r\n () => this.props.handleUpdateAlternativeCalcAmount(calculationParts)\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n addAlternativeCalculationPartForm = async () => {\r\n try {\r\n const caseCalculationAlternativePart = [...this.state.caseCalculationAlternativePart];\r\n caseCalculationAlternativePart.push({\r\n ...this.state.newCaseCalculationAlternativePart!\r\n });\r\n\r\n this.setState({\r\n caseCalculationAlternativePart: caseCalculationAlternativePart,\r\n caseCalculationAlternativePartCopy: caseCalculationAlternativePart,\r\n newCaseCalculationAlternativePart: null,\r\n isDialogOpen: false\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n addCalculationPartForm = async () => {\r\n try {\r\n const calculationParts = [...this.state.calculationParts];\r\n let isNew = false;\r\n if (this.state.orderPartList.length > 0) { \r\n const newPart = {...this.state.newCalculationPart};\r\n const orderPart = _.find(this.state.orderPartList, function (orderPart) {\r\n return (\r\n orderPart.guideNumber === newPart.guideNumber &&\r\n orderPart.name === newPart.name \r\n );\r\n });\r\n \r\n if (!orderPart) {\r\n isNew = true;\r\n }\r\n } \r\n if (this.state.newCalculationPartId === null) {\r\n calculationParts.push({\r\n ...this.state.newCalculationPart,\r\n amount: 0,\r\n calculationSectionId: this.state.partSection!.id,\r\n calculationSection: this.state.partSection,\r\n isNew: isNew\r\n } as CaseCalculationPart);\r\n } else {\r\n const index = calculationParts.findIndex(\r\n (item) => item.id === this.state.newCalculationPartId\r\n )!;\r\n calculationParts[index] = {\r\n ...this.state.newCalculationPart!,\r\n carPartCategoryId:\r\n this.state.currentSection!.id === 1\r\n ? this.state.newCalculationPart!.carPartCategory!.id\r\n : null,\r\n carPartCategory:\r\n this.state.currentSection!.id === 1\r\n ? this.state.newCalculationPart!.carPartCategory\r\n : null,\r\n amount: 0,\r\n isNew: isNew\r\n };\r\n }\r\n\r\n this.setState(\r\n {\r\n calculationParts: calculationParts,\r\n newCalculationPartId: null,\r\n newCalculationPart: null,\r\n isAddOriginalPartDialogOpen: false,\r\n partLoaders: [...this.state.partLoaders, false],\r\n interogateParts: [...this.state.interogateParts, false]\r\n },\r\n () => this.props.handleUpdateAlternativeCalcAmount(calculationParts)\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n copyCalculationPartForm = async () => {\r\n try {\r\n const calculationParts = [...this.state.calculationParts];\r\n calculationParts.push({\r\n ...this.state.newCalculationPart,\r\n amount: 0\r\n } as CaseCalculationPart);\r\n\r\n this.setState(\r\n {\r\n calculationParts: calculationParts,\r\n newCalculationPartId: null,\r\n newCalculationPart: null,\r\n isAddOriginalPartDialogOpen: false\r\n },\r\n () => this.props.handleUpdateAlternativeCalcAmount(calculationParts)\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleAutocompletePartQualityChange = async (newValue: IReferential | null) => {\r\n this.setState({\r\n newCaseCalculationAlternativePart: {\r\n ...this.state.newCaseCalculationAlternativePart!,\r\n alternativePartQuality: newValue,\r\n alternativePartQualityId: R.isNil(newValue) ? 0 : newValue.id\r\n }\r\n });\r\n };\r\n\r\n handleAutocompleteSupplierChange = (newValue: any | null) => {\r\n this.setState({\r\n newCaseCalculationAlternativePart: {\r\n ...this.state.newCaseCalculationAlternativePart!,\r\n supplier: newValue,\r\n supplierId: R.isNil(newValue) ? null : newValue.id\r\n }\r\n });\r\n };\r\n\r\n handleAlternativePartSelect = (\r\n id: number,\r\n originalPartid: number,\r\n alternativePart: CaseCalculationAlternativePart\r\n ) => {\r\n const groupedUniqueId = uuid();\r\n const caseCalculationOriginalPartsCopy = [...this.state.calculationParts];\r\n const originalPartIndex = caseCalculationOriginalPartsCopy.findIndex(\r\n (item) => item.id === originalPartid\r\n );\r\n caseCalculationOriginalPartsCopy[originalPartIndex] = {\r\n ...caseCalculationOriginalPartsCopy[originalPartIndex],\r\n alternativePrice: alternativePart.alternativePrice,\r\n alternativePartDiscount: alternativePart.alternativePartDiscount,\r\n alternativeGuideNumber: alternativePart.alternativeGuideNumber,\r\n alternativePartCode: alternativePart.alternativePartCode,\r\n alternativePartQuality: alternativePart.alternativePartQuality,\r\n alternativePartQualityId: alternativePart.alternativePartQualityId,\r\n alternativePartName: alternativePart.name,\r\n alternativePartStockLocation: alternativePart.stockLocation,\r\n alternativePartStockQuantity: alternativePart.availableQuantity,\r\n supplier: alternativePart.supplier,\r\n supplierId: alternativePart.supplierId,\r\n producer: alternativePart.producer,\r\n deliveryTime: alternativePart.deliveryTime.toString(),\r\n validityTime: alternativePart.validityTime?.toString() || null,\r\n codeType: alternativePart.codeType?.toString() || null,\r\n type: alternativePart.type?.toString() || null,\r\n orderCode: alternativePart.orderCode?.toString() || null,\r\n locationId: alternativePart.locationId || null,\r\n alternativePartRemarks: alternativePart.remarks,\r\n minQty: alternativePart.minQty,\r\n packing: alternativePart.packing,\r\n bundleItem: alternativePart.bundleItem,\r\n bundleNo: alternativePart.bundleNo,\r\n bundleQuantity: alternativePart.bundleQuantity,\r\n excludeFromOrder: alternativePart.excludeFromOrder,\r\n isChild: alternativePart.isChild,\r\n productId: alternativePart.productId || null,\r\n codEan: alternativePart.codEan?.toString() || null,\r\n groupedUniqueId: groupedUniqueId || null,\r\n alternativeNetPrice: alternativePart.alternativeNetPrice,\r\n alternativePriceWithoutDiscount: alternativePart.alternativePriceWithoutDiscount,\r\n availableQuantity: alternativePart.availableQuantity\r\n };\r\n\r\n const currentPacking =\r\n caseCalculationOriginalPartsCopy[originalPartIndex].packing?.split('|')[0];\r\n const secondItemOfPacking =\r\n caseCalculationOriginalPartsCopy[originalPartIndex].packing?.split('|')[1];\r\n const caseCalculationAlternativePartCopy = [...this.state.caseCalculationAlternativePart];\r\n\r\n console.log('Specific alternative parts');\r\n const specificAlternativeParts = this.state.caseCalculationAlternativePart\r\n .filter(\r\n (alternativePart) =>\r\n alternativePart.originalPartId === caseCalculationOriginalPartsCopy[originalPartIndex].id\r\n )\r\n .sort(function (a: any, b: any) {\r\n return a.id - b.id;\r\n });\r\n console.log(specificAlternativeParts);\r\n const findAlternativePartGroup = _.filter(specificAlternativeParts, function (object) {\r\n return (\r\n object.bundleNo != null &&\r\n object.bundleNo == caseCalculationOriginalPartsCopy[originalPartIndex].bundleNo &&\r\n object.alternativePartCode !=\r\n caseCalculationOriginalPartsCopy[originalPartIndex].alternativePartCode\r\n );\r\n });\r\n console.log('Alternative Part Group');\r\n console.log(findAlternativePartGroup);\r\n\r\n const idList: any = [];\r\n for (let i = 0; i < findAlternativePartGroup.length; i++) {\r\n idList.push(findAlternativePartGroup[i].id);\r\n }\r\n\r\n caseCalculationAlternativePartCopy.forEach((item) => {\r\n item.selectedAlternativePart =\r\n item.originalPartId === originalPartid\r\n ? item.id === id\r\n ? id\r\n : 9999999999999\r\n : item.selectedAlternativePart;\r\n item.partFromGroup =\r\n item.originalPartId === originalPartid\r\n ? idList.includes(item.id)\r\n ? item.id\r\n : 9999999999999\r\n : item.partFromGroup;\r\n if (\r\n item.originalPartId === originalPartid &&\r\n item.selectedAlternativePart !== 9999999999999\r\n ) {\r\n const initialCaseCalculationOriginalParts = {\r\n ...caseCalculationOriginalPartsCopy[originalPartIndex]\r\n };\r\n caseCalculationOriginalPartsCopy[originalPartIndex].package = [];\r\n if (currentPacking && secondItemOfPacking) {\r\n const currentPackingNumber = parseFloat(currentPacking);\r\n if (\r\n caseCalculationOriginalPartsCopy[originalPartIndex].pieceNr % currentPackingNumber !=\r\n 0 ||\r\n caseCalculationOriginalPartsCopy[originalPartIndex].pieceNr <\r\n caseCalculationOriginalPartsCopy[originalPartIndex].minQty\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'MIN_PACKING_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie '\r\n ) +\r\n currentPackingNumber +\r\n this.translatorService.Tranlate('MIN_PACKING_MULTIPLE_ERROR_MSG', ' sau multiplul acesteia!'),\r\n { variant: 'error',\r\n autoHideDuration: 5000 }\r\n );\r\n }\r\n } else if (\r\n caseCalculationOriginalPartsCopy[originalPartIndex].pieceNr <\r\n caseCalculationOriginalPartsCopy[originalPartIndex].minQty\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'MIN_PACKING_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie '\r\n ) +\r\n caseCalculationOriginalPartsCopy[originalPartIndex].minQty +\r\n this.translatorService.Tranlate('MIN_PACKING_MULTIPLE_ERROR_MSG', ' sau multiplul acesteia!'),\r\n { variant: 'error',\r\n autoHideDuration: 5000 }\r\n );\r\n }\r\n if (findAlternativePartGroup.length) {\r\n let displayPopup = true;\r\n let alternativePartString = '';\r\n for (let i = 0; i < findAlternativePartGroup.length; i++) {\r\n if (\r\n findAlternativePartGroup[i].alternativePartCode == AlternativeCode.TAXAMEDIU &&\r\n findAlternativePartGroup.length == 1\r\n ) {\r\n displayPopup = false;\r\n }\r\n alternativePartString +=\r\n findAlternativePartGroup[i].name +\r\n '(' +\r\n findAlternativePartGroup[i].alternativePrice +\r\n ' RON)' +\r\n '\\n';\r\n caseCalculationOriginalPartsCopy[originalPartIndex].package.push({\r\n ...initialCaseCalculationOriginalParts,\r\n id: 0,\r\n originalPrice: 0,\r\n alternativePrice: findAlternativePartGroup[i].alternativePrice,\r\n alternativePartDiscount: findAlternativePartGroup[i].alternativePartDiscount,\r\n alternativeGuideNumber: findAlternativePartGroup[i].alternativeGuideNumber,\r\n alternativePartCode: findAlternativePartGroup[i].alternativePartCode,\r\n alternativePartQuality: findAlternativePartGroup[i].alternativePartQuality,\r\n alternativePartQualityId: findAlternativePartGroup[i].alternativePartQualityId,\r\n alternativePartName: findAlternativePartGroup[i].name,\r\n alternativePartStockLocation: findAlternativePartGroup[i].stockLocation,\r\n alternativePartStockQuantity: findAlternativePartGroup[i].availableQuantity,\r\n supplier: findAlternativePartGroup[i].supplier,\r\n supplierId: findAlternativePartGroup[i].supplierId,\r\n producer: findAlternativePartGroup[i].producer,\r\n deliveryTime: findAlternativePartGroup[i].deliveryTime.toString(),\r\n validityTime: findAlternativePartGroup[i].validityTime?.toString() || null,\r\n codeType: findAlternativePartGroup[i].codeType?.toString() || null,\r\n type: findAlternativePartGroup[i].type?.toString() || null,\r\n orderCode: findAlternativePartGroup[i].orderCode?.toString() || null,\r\n locationId: findAlternativePartGroup[i].locationId || null,\r\n alternativePartRemarks: findAlternativePartGroup[i].remarks,\r\n minQty: findAlternativePartGroup[i].minQty,\r\n packing: findAlternativePartGroup[i].packing,\r\n bundleItem: findAlternativePartGroup[i].bundleItem,\r\n bundleNo: findAlternativePartGroup[i].bundleNo,\r\n bundleQuantity: findAlternativePartGroup[i].bundleQuantity,\r\n excludeFromOrder: true,\r\n productId: findAlternativePartGroup[i].productId || null,\r\n codEan: findAlternativePartGroup[i].codEan || null,\r\n groupedUniqueId: groupedUniqueId || null,\r\n alternativePartNetPrice: findAlternativePartGroup[i].alternativeNetPrice,\r\n alternativePriceWithoutDiscount: findAlternativePartGroup[i].alternativePriceWithoutDiscount,\r\n availableQuantity: findAlternativePartGroup[i].availableQuantity\r\n });\r\n }\r\n if (displayPopup) {\r\n this.props.enqueueSnackbar(\r\n ' Componente adaugate la comanda: \\n' + alternativePartString,\r\n {\r\n variant: 'error',\r\n style: { whiteSpace: 'pre-line' },\r\n autoHideDuration: 5000 \r\n }\r\n );\r\n }\r\n }\r\n if (!Number.isInteger(caseCalculationOriginalPartsCopy[originalPartIndex].pieceNr)) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'DECIMAL_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie un numar intreg fara zecimale'\r\n ),\r\n {\r\n variant: 'error',\r\n autoHideDuration: 5000 \r\n }\r\n );\r\n }\r\n if (\r\n item.availableQuantity !== null &&\r\n item.availableQuantity < caseCalculationOriginalPartsCopy[originalPartIndex].pieceNr\r\n ) {\r\n this.validateOrigPartUnitsAdd(originalPartid);\r\n } else {\r\n this.validateOrigPartUnitsRemove(originalPartid);\r\n }\r\n if (!R.isNil(this.props.workflowCalculation) && this.props.workflowCalculation.hasAlternativePartDescription) {\r\n const nonStockSupplier = this.props.nonStockSuppliers.find(x => x.supplierId === item.supplierId);\r\n if (!R.isNil(nonStockSupplier) && R.isNil(item.availableQuantity) &&\r\n (R.isNil(caseCalculationOriginalPartsCopy[originalPartIndex].alternativePartDescription) || R.isEmpty(caseCalculationOriginalPartsCopy[originalPartIndex].alternativePartDescription))\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ALTERNATIVE_PART_DESCRIPTION_ERROR_MSG',\r\n 'Va rugam sa completati campul Descriere piesa alt'\r\n ),\r\n { \r\n variant: 'error',\r\n autoHideDuration: 5000 \r\n }\r\n );\r\n this.validateAlternativePartDescriptionAdd(originalPartid);\r\n } else {\r\n this.validateAlternativePartDescriptionRemove(originalPartid);\r\n }\r\n }\r\n }\r\n });\r\n\r\n console.log('caseCalculationOriginalPartsCopy');\r\n console.log(caseCalculationOriginalPartsCopy);\r\n\r\n this.setState(\r\n {\r\n caseCalculationAlternativePart: caseCalculationAlternativePartCopy,\r\n caseCalculationAlternativePartCopy: caseCalculationAlternativePartCopy,\r\n calculationParts: caseCalculationOriginalPartsCopy\r\n },\r\n () => this.props.handleUpdateAlternativeCalcAmount(caseCalculationOriginalPartsCopy)\r\n );\r\n };\r\n\r\n handleAlternativePartChecked = (selected: number, id: number, partFromGroup: number) => {\r\n return selected === id || partFromGroup == id;\r\n };\r\n\r\n validateOriginalPartPriceAdd = (originalPartid: number) => {\r\n const labelParent = document.getElementsByClassName('id-' + originalPartid + '-price')[0] as HTMLElement;\r\n const identifylabel = labelParent.firstChild as any;\r\n const labelValidate = identifylabel.classList.add('Mui-error');\r\n\r\n const inputParent = document\r\n .getElementsByClassName('id-' + originalPartid + '-price')[0]\r\n .closest('div') as HTMLElement;\r\n const identifyInput = inputParent.children[1].firstChild as any;\r\n const inputValidate = identifyInput.classList.add('text-danger');\r\n\r\n const borderParent = document\r\n .getElementsByClassName('id-' + originalPartid + '-price')[0]\r\n .closest('div') as HTMLElement;\r\n const borderIdentify = borderParent.children[1] as any;\r\n const borderValidate = borderIdentify.classList.add('Mui-error');\r\n\r\n return labelValidate && inputValidate && borderValidate;\r\n };\r\n\r\n validateOriginalPartPriceRemove = (originalPartid: number) => {\r\n const labelParent = document.getElementsByClassName('id-' + originalPartid + '-price')[0] as HTMLElement;\r\n const identifylabel = labelParent.firstChild as any;\r\n const labelValidate = identifylabel.classList.remove('Mui-error');\r\n\r\n const inputParent = document\r\n .getElementsByClassName('id-' + originalPartid + '-price')[0]\r\n .closest('div') as HTMLElement;\r\n const identifyInput = inputParent.children[1].firstChild as any;\r\n const inputValidate = identifyInput.classList.remove('text-danger');\r\n\r\n const borderParent = document\r\n .getElementsByClassName('id-' + originalPartid + '-price')[0]\r\n .closest('div') as HTMLElement;\r\n const borderIdentify = borderParent.children[1] as any;\r\n const borderValidate = borderIdentify.classList.remove('Mui-error');\r\n\r\n return labelValidate && inputValidate && borderValidate;\r\n };\r\n\r\n\r\n validateOrigPartUnitsAdd = (originalPartid: number) => {\r\n const labelParent = document.getElementsByClassName('id-' + originalPartid)[0] as HTMLElement;\r\n const identifylabel = labelParent.firstChild as any;\r\n const labelValidate = identifylabel.classList.add('Mui-error');\r\n\r\n const inputParent = document\r\n .getElementsByClassName('id-' + originalPartid)[0]\r\n .closest('div') as HTMLElement;\r\n const identifyInput = inputParent.children[1].firstChild as any;\r\n const inputValidate = identifyInput.classList.add('text-danger');\r\n\r\n const borderParent = document\r\n .getElementsByClassName('id-' + originalPartid)[0]\r\n .closest('div') as HTMLElement;\r\n const borderIdentify = borderParent.children[1] as any;\r\n const borderValidate = borderIdentify.classList.add('Mui-error');\r\n\r\n return labelValidate && inputValidate && borderValidate;\r\n };\r\n\r\n validateOrigPartUnitsRemove = (originalPartid: number) => {\r\n const labelParent = document.getElementsByClassName('id-' + originalPartid)[0] as HTMLElement;\r\n const identifylabel = labelParent.firstChild as any;\r\n const labelValidate = identifylabel.classList.remove('Mui-error');\r\n\r\n const inputParent = document\r\n .getElementsByClassName('id-' + originalPartid)[0]\r\n .closest('div') as HTMLElement;\r\n const identifyInput = inputParent.children[1].firstChild as any;\r\n const inputValidate = identifyInput.classList.remove('text-danger');\r\n\r\n const borderParent = document\r\n .getElementsByClassName('id-' + originalPartid)[0]\r\n .closest('div') as HTMLElement;\r\n const borderIdentify = borderParent.children[1] as any;\r\n const borderValidate = borderIdentify.classList.remove('Mui-error');\r\n\r\n return labelValidate && inputValidate && borderValidate;\r\n };\r\n\r\n validateAlternativePartDescriptionAdd = (originalPartid: number) => {\r\n const labelParent = document.getElementsByClassName('id-' + originalPartid + '-alternative-part-description')[0] as HTMLElement;\r\n const identifylabel = labelParent.firstChild as any;\r\n const labelValidate = identifylabel.classList.add('Mui-error');\r\n\r\n const inputParent = document\r\n .getElementsByClassName('id-' + originalPartid + '-alternative-part-description')[0]\r\n .closest('div') as HTMLElement;\r\n const identifyInput = inputParent.children[1].firstChild as any;\r\n const inputValidate = identifyInput.classList.add('text-danger');\r\n\r\n const borderParent = document\r\n .getElementsByClassName('id-' + originalPartid + '-alternative-part-description')[0]\r\n .closest('div') as HTMLElement;\r\n const borderIdentify = borderParent.children[1] as any;\r\n const borderValidate = borderIdentify.classList.add('Mui-error');\r\n\r\n return labelValidate && inputValidate && borderValidate;\r\n };\r\n\r\n validateAlternativePartDescriptionRemove = (originalPartid: number) => {\r\n const labelParent = document.getElementsByClassName('id-' + originalPartid + '-alternative-part-description')[0] as HTMLElement;\r\n const identifylabel = labelParent.firstChild as any;\r\n const labelValidate = identifylabel.classList.remove('Mui-error');\r\n\r\n const inputParent = document\r\n .getElementsByClassName('id-' + originalPartid + '-alternative-part-description')[0]\r\n .closest('div') as HTMLElement;\r\n const identifyInput = inputParent.children[1].firstChild as any;\r\n const inputValidate = identifyInput.classList.remove('text-danger');\r\n\r\n const borderParent = document\r\n .getElementsByClassName('id-' + originalPartid + '-alternative-part-description')[0]\r\n .closest('div') as HTMLElement;\r\n const borderIdentify = borderParent.children[1] as any;\r\n const borderValidate = borderIdentify.classList.remove('Mui-error');\r\n\r\n return labelValidate && inputValidate && borderValidate;\r\n };\r\n\r\n filterAlternativePartsByOptimization = () => {\r\n if (this.props.optmizationType === 1 || this.props.optmizationType === 2) {\r\n const caseCalculationOriginalPartsCopy = [...this.state.calculationParts].reverse();\r\n\r\n let caseCalculationAlternativePartCopy = [...this.state.caseCalculationAlternativePart];\r\n caseCalculationAlternativePartCopy = caseCalculationAlternativePartCopy.map((item) => {\r\n item.selectedAlternativePart = 9999999999999;\r\n return item;\r\n });\r\n caseCalculationOriginalPartsCopy\r\n .filter((item) => item.calculationSectionId === this.state.partSection!.id)\r\n .map((calculationOriginalPart, index) => {\r\n let altParts = caseCalculationAlternativePartCopy.filter(\r\n (item2) => item2.originalPartId === calculationOriginalPart.id\r\n );\r\n if (altParts.length > 0) {\r\n altParts = this.filterAlternativePartsByDeliveryTime(altParts);\r\n if (this.props.optmizationType === 1 && altParts.length > 0) {\r\n altParts = this.filterAlternativePartsByPrice(altParts);\r\n if (altParts.length > 1) {\r\n altParts = this.filterAlternativePartsByQuality(altParts);\r\n if (altParts.length > 1) {\r\n const altPart = altParts.sort(function (a, b) {\r\n return a.deliveryTime - b.deliveryTime;\r\n })[0];\r\n altParts = [altPart];\r\n }\r\n }\r\n } else if (this.props.optmizationType === 2 && altParts.length > 0) {\r\n altParts = this.filterAlternativePartsByQuality(altParts);\r\n if (altParts.length > 1) {\r\n altParts = this.filterAlternativePartsByPrice(altParts);\r\n if (altParts.length > 1) {\r\n const altPart = altParts.sort(function (a, b) {\r\n return a.deliveryTime - b.deliveryTime;\r\n })[0];\r\n altParts = [altPart];\r\n }\r\n }\r\n }\r\n }\r\n if (altParts.length > 0) {\r\n altParts[0].selectedAlternativePart = altParts[0].id;\r\n const index = caseCalculationAlternativePartCopy.findIndex(\r\n (item) => item.id === altParts[0].id\r\n );\r\n\r\n caseCalculationAlternativePartCopy[index] = altParts[0];\r\n calculationOriginalPart.alternativePrice = altParts[0].alternativePrice;\r\n calculationOriginalPart.alternativePartDiscount = altParts[0].alternativePartDiscount;\r\n calculationOriginalPart.alternativeGuideNumber = altParts[0].alternativeGuideNumber;\r\n calculationOriginalPart.alternativePartCode = altParts[0].alternativePartCode;\r\n calculationOriginalPart.alternativePartQuality = altParts[0].alternativePartQuality;\r\n calculationOriginalPart.alternativePartQualityId = altParts[0].alternativePartQualityId;\r\n calculationOriginalPart.alternativePartName = altParts[0].name;\r\n calculationOriginalPart.alternativePartStockLocation = altParts[0].stockLocation;\r\n calculationOriginalPart.alternativePartStockQuantity = altParts[0].availableQuantity;\r\n calculationOriginalPart.supplier = altParts[0].supplier;\r\n calculationOriginalPart.supplierId = altParts[0].supplierId;\r\n calculationOriginalPart.producer = altParts[0].producer;\r\n calculationOriginalPart.deliveryTime = altParts[0].deliveryTime.toString();\r\n calculationOriginalPart.alternativePartRemarks = altParts[0].remarks;\r\n calculationOriginalPart.minQty = altParts[0].minQty;\r\n calculationOriginalPart.packing = altParts[0].packing;\r\n calculationOriginalPart.bundleItem = altParts[0].bundleItem;\r\n calculationOriginalPart.bundleNo = altParts[0].bundleNo;\r\n calculationOriginalPart.bundleQuantity = altParts[0].bundleQuantity;\r\n calculationOriginalPart.excludeFromOrder = altParts[0].excludeFromOrder;\r\n calculationOriginalPart.validityTime = altParts[0].validityTime;\r\n calculationOriginalPart.codeType = altParts[0].codeType;\r\n calculationOriginalPart.locationId = altParts[0].locationId;\r\n calculationOriginalPart.type = altParts[0].type;\r\n calculationOriginalPart.orderCode = altParts[0].orderCode;\r\n calculationOriginalPart.productId = altParts[0].productId;\r\n calculationOriginalPart.codEan = altParts[0].codEan;\r\n calculationOriginalPart.alternativeNetPrice = altParts[0].alternativeNetPrice;\r\n calculationOriginalPart.alternativePriceWithoutDiscount = altParts[0].alternativePriceWithoutDiscount;\r\n calculationOriginalPart.availableQuantity = altParts[0].availableQuantity;\r\n if (\r\n calculationOriginalPart.id === altParts[0].originalPartId &&\r\n altParts[0].selectedAlternativePart !== 9999999999999\r\n ) {\r\n if (\r\n !R.isNil(altParts[0].availableQuantity) &&\r\n altParts[0].availableQuantity < calculationOriginalPart.pieceNr\r\n ) {\r\n this.validateOrigPartUnitsAdd(calculationOriginalPart.id);\r\n } else {\r\n this.validateOrigPartUnitsRemove(calculationOriginalPart.id);\r\n }\r\n\r\n if (!R.isNil(this.props.workflowCalculation) && this.props.workflowCalculation.hasAlternativePartDescription) {\r\n const nonStockSupplier = this.props.nonStockSuppliers.find(x => x.supplierId === altParts[0].supplierId);\r\n if (!R.isNil(nonStockSupplier) && R.isNil(altParts[0].availableQuantity) &&\r\n (R.isNil(calculationOriginalPart.alternativePartDescription) || R.isEmpty(calculationOriginalPart.alternativePartDescription))\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ALTERNATIVE_PART_DESCRIPTION_ERROR_MSG',\r\n 'Va rugam sa completati campul Descriere piesa alt'\r\n ),\r\n { \r\n variant: 'error',\r\n autoHideDuration: 5000 \r\n }\r\n );\r\n this.validateAlternativePartDescriptionAdd(calculationOriginalPart.id);\r\n } else {\r\n this.validateAlternativePartDescriptionRemove(calculationOriginalPart.id);\r\n }\r\n }\r\n }\r\n \r\n // Verifică dacă piesa selectată este vizibilă și derulează la ea\r\n const selectedAlternativePartId = altParts[0].selectedAlternativePart;\r\n if (selectedAlternativePartId !== 9999999999999 && this.rowRefs[selectedAlternativePartId]?.current) {\r\n console.log('Scroll to row', altParts[0]);\r\n this.rowRefs[selectedAlternativePartId].current?.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center'\r\n });\r\n }\r\n }\r\n });\r\n\r\n this.setState(\r\n {\r\n caseCalculationAlternativePart: caseCalculationAlternativePartCopy,\r\n caseCalculationAlternativePartCopy: caseCalculationAlternativePartCopy,\r\n calculationParts: caseCalculationOriginalPartsCopy.reverse()\r\n },\r\n () => this.props.handleUpdateAlternativeCalcAmount(this.state.calculationParts)\r\n );\r\n }\r\n };\r\n\r\n filterAlternativePartsByDeliveryTime = (alternativeParts: CaseCalculationAlternativePart[]) => {\r\n return alternativeParts.filter(\r\n (item) =>\r\n item.deliveryTime <= this.props.defaultMaxDeliveryTime ||\r\n item.deliveryTime.toString().match(/^[0-9]+$/) === null\r\n );\r\n };\r\n\r\n filterAlternativePartsByPrice = (alternativeParts: CaseCalculationAlternativePart[]) => {\r\n if (this.props.workflowCalculation!.byAquisitionPrice) {\r\n const min = alternativeParts.reduce((prev, curr) =>\r\n prev.alternativeNetPrice! < curr.alternativeNetPrice! ? prev : curr\r\n ).alternativeNetPrice;\r\n \r\n return alternativeParts.filter((item) => item.alternativeNetPrice === min);\r\n } else {\r\n const min = alternativeParts.reduce((prev, curr) =>\r\n prev.alternativePrice < curr.alternativePrice ? prev : curr\r\n ).alternativePrice;\r\n \r\n return alternativeParts.filter((item) => item.alternativePrice === min);\r\n }\r\n };\r\n\r\n filterAlternativePartsByQuality = (alternativeParts: CaseCalculationAlternativePart[]) => {\r\n const qualityRatings = CarPartQualityRatings;\r\n const qualities = qualityRatings.filter((elem) =>\r\n alternativeParts.find(\r\n ({ alternativePartQuality }) => elem.CarPartQualityTypeCode === alternativePartQuality!.code\r\n )\r\n );\r\n const maxRatingQuality = qualities.sort(function (a, b) {\r\n return b.Rating - a.Rating;\r\n });\r\n const bestQuality = maxRatingQuality[0];\r\n\r\n return alternativeParts.filter(\r\n (item) => item.alternativePartQuality!.code === bestQuality.CarPartQualityTypeCode\r\n );\r\n };\r\n\r\n public renderAddForm() {\r\n return R.isNil(this.state.newCaseCalculationAlternativePart) ? null : (\r\n this.addAlternativeCalculationPartForm()}>\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.handleAutocompletePartQualityChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n this.handleAutocompleteSupplierChange(newValue)\r\n }\r\n getOptionLabel={(option: Organization) => option.name}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n handleTextChangeOriginalPart = (event: React.ChangeEvent) => {\r\n const value = event.currentTarget.value;\r\n \r\n this.setState({\r\n newCalculationPart: {\r\n ...this.state.newCalculationPart!,\r\n [event.target.id]: event.target.id == 'guideNumber' ? value.trimLeft() : value\r\n }\r\n });\r\n };\r\n\r\n handlePriceChangeOriginalPart = (event: React.ChangeEvent) => {\r\n this.setState({\r\n newCalculationPart: {\r\n ...this.state.newCalculationPart!,\r\n originalPrice: event.target.value === null ? 0 : parseFloat(event.target.value)\r\n }\r\n });\r\n };\r\n\r\n handleAutocompleteOriginalPartQualityChange = async (newValue: IReferential | null) => {\r\n this.setState({\r\n newCalculationPart: {\r\n ...this.state.newCalculationPart!,\r\n carPartCategory: newValue,\r\n carPartCategoryId: R.isNil(newValue) ? 0 : newValue.id\r\n }\r\n });\r\n };\r\n\r\n handleUnitsOriginalPart = (event: React.ChangeEvent) => {\r\n this.setState({\r\n newCalculationPart: {\r\n ...this.state.newCalculationPart!,\r\n pieceNr: event.target.value === null ? 0 : parseFloat(event.target.value)\r\n }\r\n });\r\n };\r\n\r\n handleSelectedWorkflowPartner = (newValue: OrganizationBranch | null) => {\r\n this.setState({\r\n ...this.state,\r\n selectedOrganizationBranch: newValue\r\n });\r\n };\r\n\r\n public renderAddOriginalPartForm() {\r\n return R.isNil(this.state.newCalculationPart) ? null : (\r\n \r\n this.state.calculationPartFormTypeAdd\r\n ? this.addCalculationPartForm()\r\n : this.copyCalculationPartForm()\r\n }\r\n >\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n this.handleAutocompleteOriginalPartQualityChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n\r\n displayCalculationPartSupplier = (supplierId: any) => {\r\n const supplier = this.state.supplierList.find((item) => item.id === supplierId);\r\n const supplierName = !R.isNil(supplier) ? supplier.name : '';\r\n return supplierName;\r\n };\r\n\r\n displayCalculationPartPrice = (value: number, partId: any) => {\r\n const calculationPartsFiltered = this.state.calculationPartsOrdered.filter(\r\n (item) => item.calculationSectionId === 1\r\n );\r\n const calculationPart = calculationPartsFiltered.find((item) => item.id === partId);\r\n const price =\r\n calculationPart!.alternativePartQualityId === null\r\n ? value\r\n : calculationPart!.alternativePrice;\r\n return (Math.round(price! * 100) / 100).toFixed(2);\r\n };\r\n\r\n displayCalculationPartDiscount = (value: number, partId: any) => {\r\n const calculationPartsFiltered = this.state.calculationPartsOrdered.filter(\r\n (item) => item.calculationSectionId === 1\r\n );\r\n const calculationPart = calculationPartsFiltered.find((item) => item.id === partId);\r\n const discount =\r\n calculationPart!.alternativePartQualityId === null\r\n ? R.isNil(value)\r\n ? 0\r\n : value\r\n : R.isNil(calculationPart!.alternativePartDiscount)\r\n ? 0\r\n : calculationPart!.alternativePartDiscount;\r\n return discount;\r\n };\r\n\r\n displayCalculationPartTotalPrice = (row: any) => {\r\n const calculationPartsFiltered = this.state.calculationPartsOrdered.filter(\r\n (item) => item.calculationSectionId === 1\r\n );\r\n const calculationPart = calculationPartsFiltered.find((item) => item.id === row[0]);\r\n\r\n if (calculationPart!.alternativePartQualityId === null) {\r\n if (R.isNil(calculationPart!.discount)) {\r\n return (\r\n (\r\n Math.round(calculationPart!.originalPrice * calculationPart!.pieceNr * 100) / 100\r\n ).toFixed(2) +\r\n ' ' +\r\n this.state.caseCalculationHistoryDetails.currency!.displayName\r\n );\r\n }\r\n const value = calculationPart!.originalPrice * calculationPart!.pieceNr;\r\n return (\r\n (Math.round(value * (1 - calculationPart!.discount / 100) * 100) / 100).toFixed(2) +\r\n ' ' +\r\n this.state.caseCalculationHistoryDetails.currency!.displayName\r\n );\r\n } else {\r\n if (R.isNil(calculationPart!.alternativePartDiscount)) {\r\n return (\r\n (\r\n Math.round(calculationPart!.alternativePrice! * calculationPart!.pieceNr * 100) / 100\r\n ).toFixed(2) +\r\n ' ' +\r\n this.state.caseCalculationHistoryDetails.currency!.displayName\r\n );\r\n }\r\n const value = calculationPart!.alternativePrice! * calculationPart!.pieceNr;\r\n return (\r\n (\r\n Math.round(value * (1 - calculationPart!.alternativePartDiscount / 100) * 100) / 100\r\n ).toFixed(2) +\r\n ' ' +\r\n this.state.caseCalculationHistoryDetails.currency!.displayName\r\n );\r\n }\r\n };\r\n\r\n displayCalculationPartQuality = (value: IReferential, row: any) => {\r\n const calculationPartsFiltered = this.state.calculationPartsOrdered.filter(\r\n (item) => item.calculationSectionId === 1\r\n );\r\n const calculationPart = calculationPartsFiltered.find((item) => item.id === row[0]);\r\n if (calculationPart!.alternativePartQualityId === null) {\r\n return (\r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_PRODUCER_HEADER',\r\n 'Producator'\r\n ) +\r\n ': ' +\r\n (R.isNil(row[6]) ? '' : row[6])}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_DELIVERY_TIME_HEADER',\r\n 'Timp livrare'\r\n ) +\r\n ': ' +\r\n (R.isNil(row[7]) ? '' : row[7])}\r\n
\r\n \r\n }\r\n >\r\n
\r\n {value.displayName + ' '}\r\n \r\n
\r\n \r\n );\r\n } else {\r\n const partQualityType = this.state.partQualityTypes.find(\r\n (quality) => quality.id === calculationPart!.alternativePartQualityId\r\n );\r\n return (\r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_ALT_PART_GN_LABEL',\r\n 'Cod alternativa'\r\n ) +\r\n ': ' +\r\n (R.isNil(calculationPart!.alternativeGuideNumber)\r\n ? ''\r\n : calculationPart!.alternativeGuideNumber)}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_ALT_PART_NAME_LABEL',\r\n 'Descriere alternativa'\r\n ) +\r\n ': ' +\r\n (R.isNil(calculationPart!.alternativePartName)\r\n ? ''\r\n : calculationPart!.alternativePartName)}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_PRODUCER_HEADER',\r\n 'Producator'\r\n ) +\r\n ': ' +\r\n (R.isNil(calculationPart!.producer) ? '' : calculationPart!.producer)}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_DELIVERY_TIME_HEADER',\r\n 'Timp livrare'\r\n ) +\r\n ': ' +\r\n (R.isNil(calculationPart!.deliveryTime) ? '' : calculationPart!.deliveryTime)}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_ALT_PART_QUANTITY_LABEL',\r\n 'Cantitate disponibila'\r\n ) +\r\n ': ' +\r\n (R.isNil(calculationPart!.availableQuantity)\r\n ? ''\r\n : calculationPart!.availableQuantity)}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_STOCK_LOCATION_LABEL',\r\n 'Locatie'\r\n ) +\r\n ': ' +\r\n (R.isNil(calculationPart!.alternativePartStockLocation)\r\n ? ''\r\n : calculationPart!.alternativePartStockLocation)}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_REMARKS_LABEL',\r\n 'Observatii'\r\n ) +\r\n ': ' +\r\n (R.isNil(calculationPart!.alternativePartRemarks)\r\n ? ''\r\n : calculationPart!.alternativePartRemarks)}\r\n
\r\n \r\n }\r\n >\r\n
\r\n {partQualityType!.displayName + ' '}\r\n \r\n
\r\n \r\n );\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'supplierId',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'guideNumber',\r\n label: this.translatorService.Tranlate('CALCULATION_DETAILS_GUIDE_NUMBER_HEADER', 'Cod'),\r\n options: {\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n const item = this.state.calculationPartsOrdered.find(\r\n (item) => item.id === tableMeta.rowData[0]\r\n );\r\n return {value};\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'alternativeGuideNumber',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_ALT_GUIDE_NUMBER_HEADER',\r\n 'Cod Aftermarket'\r\n ),\r\n options: { filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'name',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_DESCRIPTION_HEADER',\r\n 'Descriere'\r\n ),\r\n options: {\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n const item = this.state.calculationPartsOrdered.find(\r\n (item) => item.id === tableMeta.rowData[0]\r\n );\r\n\r\n if (R.isNil(item)) {\r\n return '';\r\n }\r\n return R.isNil(item!.alternativePartQualityId) ? item!.name : item!.alternativePartName;\r\n }\r\n }\r\n },\r\n {\r\n name: '',\r\n label: this.translatorService.Tranlate('CALCULATION_DETAILS_SUPPLIER_HEADER', 'Furnizor'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: IReferential, tableMeta: MUIDataTableMeta) => {\r\n return this.displayCalculationPartSupplier(tableMeta.rowData[1]);\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'producer',\r\n label: this.translatorService.Tranlate('CALCULATION_DETAILS_PRODUCER_HEADER', 'Producator'),\r\n options: { filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'deliveryTime',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'alternativePartQuality',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'carPartCategory',\r\n label: this.translatorService.Tranlate('CALCULATION_DETAILS_QUALITY_HEADER', 'Calitate'),\r\n options: {\r\n customBodyRender: (value: IReferential, tableMeta: MUIDataTableMeta) => {\r\n return this.displayCalculationPartQuality(value, tableMeta.rowData);\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'pieceNr',\r\n label: this.translatorService.Tranlate('CALCULATION_DETAILS_UNITS_HEADER', 'Unitati')\r\n },\r\n {\r\n name: 'alternativePrice',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'originalPrice',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_UNIT_PRICE_HEADER',\r\n 'Pret Unitar'\r\n ),\r\n options: {\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return Utils.countryNumberFormat(this.displayCalculationPartPrice(value, tableMeta.rowData[0]), this.props.appState.appUser?.organization?.country ?? null);\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'discount',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_DISCOUNT_HEADER',\r\n 'Discount (%)'\r\n ),\r\n options: {\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return this.displayCalculationPartDiscount(value, tableMeta.rowData[0]);\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_TOTAL_PRICE_HEADER',\r\n 'Pret Total'\r\n ),\r\n options: {\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return Utils.countryNumberFormat(this.displayCalculationPartTotalPrice(tableMeta.rowData), this.props.appState.appUser?.organization?.country ?? null);\r\n }\r\n } as MUIDataTableColumnOptions\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n public renderOrderedPartsTable = () => {\r\n const options = {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n rowHover: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n elevation: 1\r\n };\r\n return (\r\n
\r\n \r\n
\r\n );\r\n };\r\n\r\n save = async () => {\r\n if (this.state.hasBillingForm) {\r\n if (this.state.selectedOrganizationBranch?.organizationId == null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ALTERNATIVE_CALCULATION_NO_DELIVERY_ADDRESS', 'Va rugam selectati adresa de livrare!'),\r\n { \r\n variant: 'warning',\r\n autoHideDuration: 6000\r\n }\r\n );\r\n return;\r\n }\r\n }\r\n \r\n try {\r\n const calculationParts = this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === this.state.partSection!.id && !item.isOrdered\r\n );\r\n\r\n if (this.props.workflowCalculation!.allPartsHasBeenInterogated) {\r\n const allPartsHasBeenInterogated = this.checkIfOptimIsPossible();\r\n if (!allPartsHasBeenInterogated) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ALTERNATIVE_CALCULATION_WITHOUT_ALL_PARTS_INTEROGATED', 'Va rugam interogati toate piesele!'),\r\n { \r\n variant: 'warning',\r\n autoHideDuration: 6000\r\n }\r\n );\r\n return;\r\n }\r\n } else {\r\n if (calculationParts.filter((item) => !R.isNil(item.alternativePartQualityId)).length == 0 && !this.state.isConfirm) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ALTERNATIVE_CALCULATION_WITHOUT_INTEROGATE_PARTS', 'O calculatie alternativa nu poate fi salvata daca nu are niciun reper interogat!'),\r\n { \r\n variant: 'warning',\r\n autoHideDuration: 6000\r\n }\r\n );\r\n return;\r\n } \r\n }\r\n\r\n const alternativeParts = [...this.state.caseCalculationAlternativePart];\r\n let validateError = 0;\r\n let errorString = '';\r\n let decimalError = false;\r\n let zeroPriceError = false;\r\n let alternativePartDescriptionError = false;\r\n calculationParts.map((calcPart) => {\r\n const interogateList : CaseCalculationAlternativePart[] = [];\r\n [...alternativeParts].map((item) => {\r\n if (item.originalPartId === calcPart.id) {\r\n interogateList.push(item);\r\n if (item.selectedAlternativePart !== 9999999999999) {\r\n const filtercalculationParts = _.filter(\r\n [...calculationParts],\r\n function (calcPartObject) {\r\n return (\r\n calcPartObject.alternativeGuideNumber == calcPart.alternativeGuideNumber &&\r\n calcPartObject.alternativePartCode == calcPart.alternativePartCode &&\r\n calcPartObject.supplierId == calcPart.supplierId\r\n );\r\n }\r\n );\r\n if (!R.isNil(this.props.workflowCalculation) && this.props.workflowCalculation.hasAlternativePartDescription) {\r\n const nonStockSupplier = this.props.nonStockSuppliers.find(x => x.supplierId === item.supplierId);\r\n if (!R.isNil(nonStockSupplier) && R.isNil(item.availableQuantity) &&\r\n (R.isNil(calcPart.alternativePartDescription) || R.isEmpty(calcPart.alternativePartDescription))\r\n ) {\r\n alternativePartDescriptionError = true;\r\n this.validateAlternativePartDescriptionAdd(calcPart.id);\r\n } else {\r\n this.validateAlternativePartDescriptionRemove(calcPart.id);\r\n }\r\n }\r\n const currentPacking = item.packing?.split('|')[0];\r\n const secondItemOfPacking = item.packing?.split('|')[1];\r\n if (currentPacking && secondItemOfPacking) {\r\n const currentPackingNumber = parseFloat(currentPacking);\r\n if (filtercalculationParts && filtercalculationParts.length) {\r\n const pieceNr = _.sumBy(filtercalculationParts, 'pieceNr');\r\n console.log('filtercalculationParts');\r\n console.log(filtercalculationParts);\r\n console.log(pieceNr);\r\n if (pieceNr % currentPackingNumber == 0) {\r\n return;\r\n }\r\n }\r\n if (\r\n calcPart.pieceNr % currentPackingNumber != 0 ||\r\n calcPart.pieceNr < calcPart.minQty\r\n ) {\r\n errorString +=\r\n this.translatorService.Tranlate(\r\n 'MIN_PACKING_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie '\r\n ) +\r\n currentPackingNumber +\r\n this.translatorService.Tranlate('MIN_PACKING_MULTIPLE_ERROR_MSG', ' sau multiplul acesteia!') + ' \\n';\r\n this.validateOrigPartUnitsAdd(calcPart.id);\r\n return;\r\n }\r\n } else {\r\n if (calcPart.pieceNr < calcPart.minQty) {\r\n errorString +=\r\n this.translatorService.Tranlate(\r\n 'MIN_PACKING_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie '\r\n ) +\r\n calcPart.minQty +\r\n this.translatorService.Tranlate('MIN_PACKING_MULTIPLE_ERROR_MSG', ' sau multiplul acesteia!') + ' \\n';\r\n this.validateOrigPartUnitsAdd(calcPart.id);\r\n return;\r\n }\r\n }\r\n if (!Number.isInteger(calcPart.pieceNr)) {\r\n decimalError = true;\r\n this.validateOrigPartUnitsAdd(calcPart.id);\r\n return;\r\n }\r\n if (!R.isNil(item.availableQuantity) && item.availableQuantity < calcPart.pieceNr) {\r\n validateError++;\r\n this.validateOrigPartUnitsAdd(calcPart.id);\r\n } else {\r\n this.validateOrigPartUnitsRemove(calcPart.id);\r\n } \r\n \r\n }\r\n }\r\n });\r\n calcPart.interogationList = JSON.stringify(interogateList);\r\n });\r\n\r\n const calculationPartsList = _.cloneDeep(this.state.calculationParts);\r\n if (this.props.workflowCalculation!.serviceOwnStock && this.state.ownStockOrganization) {\r\n calculationPartsList.forEach((item) => {\r\n const alternativePartsList = [...alternativeParts].filter(x => x.originalPartId === item.id);\r\n if (alternativePartsList.length > 0) { \r\n return;\r\n }\r\n if (item.calculationSection!.code === CalculationSectionCodeEnum.PART &&\r\n !item.isOrdered && !item.supplierId && item.originalPrice === 0) {\r\n zeroPriceError = true;\r\n item.editOriginalPrice = true;\r\n }\r\n });\r\n }\r\n\r\n if (errorString) {\r\n this.props.enqueueSnackbar(errorString, {\r\n variant: 'error',\r\n style: { whiteSpace: 'pre-line' }\r\n });\r\n return;\r\n }\r\n\r\n if (decimalError) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'DECIMAL_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie un numar intreg fara zecimale'\r\n ),\r\n {\r\n variant: 'error'\r\n }\r\n );\r\n return;\r\n }\r\n\r\n if (alternativePartDescriptionError) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ALTERNATIVE_PART_DESCRIPTION_ERROR_MSG',\r\n 'Va rugam completati descrierea piesei alternative!'\r\n ),\r\n {\r\n variant: 'error'\r\n }\r\n )\r\n return;\r\n }\r\n\r\n if (zeroPriceError) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ZERO_PRICE_ERROR_MSG',\r\n 'Pretul trebuie sa fie diferit de 0!'\r\n ),\r\n {\r\n variant: 'error'\r\n }\r\n );\r\n this.setState({\r\n calculationParts: calculationPartsList\r\n }, () => {\r\n const calculationPartsList = _.cloneDeep(this.state.calculationParts);\r\n const alternativeParts = _.cloneDeep(this.state.caseCalculationAlternativePart);\r\n if (this.props.workflowCalculation!.serviceOwnStock && this.state.ownStockOrganization) {\r\n calculationPartsList.forEach((item) => {\r\n const alternativePartsList = [...alternativeParts].filter(x => x.originalPartId === item.id);\r\n if (alternativePartsList.length > 0) { \r\n return;\r\n }\r\n if (item.calculationSection!.code === CalculationSectionCodeEnum.PART &&\r\n !item.isOrdered && !item.supplierId && item.originalPrice === 0) {\r\n this.validateOriginalPartPriceAdd(item.id);\r\n }\r\n });\r\n }\r\n });\r\n return;\r\n }\r\n\r\n if (validateError > 0) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n return;\r\n }\r\n\r\n if (\r\n calculationParts.filter((item) => R.isNil(item.alternativePartQualityId)).length !== 0 &&\r\n !this.state.isConfirm\r\n ) {\r\n this.setState({ isDialogModifiedOpen: true });\r\n return;\r\n }\r\n\r\n this.setState({ executing: true });\r\n let caseCalculationHistoryId = this.props.calculationHistoryId;\r\n if (!caseCalculationHistoryId) {\r\n caseCalculationHistoryId = (\r\n await this.caseService.CreateCalculationHistory({\r\n caseId: this.props.caseSettingsState.case!.id,\r\n formId: this.props.workflowCalculation?.workflowSectionStepFormId,\r\n calculationId: null,\r\n calculationTypeId: 2, // Alternative\r\n workflowCalculationId: this.props.workflowCalculation!.id,\r\n partsLocationOrganizationId: this.state.selectedOrganizationBranch?.organizationId,\r\n partsOrganizationId: this.props.appState.appUser?.organizationId,\r\n organizationId: this.props.appState.appUser!.organizationId,\r\n organizationName: this.props.appState.appUser!.organization!.name,\r\n manipulationPercent: this.props.manipulationTariff!.value\r\n } as CalculationRequest)\r\n ).id;\r\n }\r\n\r\n let calculationPartsToSave = _.cloneDeep(this.state.calculationParts.concat(\r\n this.getPackageFromCalculationParts([...this.state.calculationParts])\r\n ));\r\n console.log('calculationPartsToSave before', calculationPartsToSave);\r\n console.log('ownStockOrganization: ', this.state.ownStockOrganization, 'serviceOwnStock: ', this.props.workflowCalculation!.serviceOwnStock);\r\n if (this.props.workflowCalculation!.serviceOwnStock && this.state.ownStockOrganization) {\r\n calculationPartsToSave.forEach((item) => {\r\n if (item.calculationSection!.code === CalculationSectionCodeEnum.PART && !item.isOrdered && !item.supplierId) {\r\n item.supplierId = this.state.ownStockOrganization!.id;\r\n item.isOwnStock = true;\r\n }\r\n });\r\n }\r\n calculationPartsToSave = calculationPartsToSave.concat([...this.state.packageCalculationParts]);\r\n console.log('calculationPartsToSave after', calculationPartsToSave);\r\n await this.caseService.UpdateCaseCalculationParts(\r\n calculationPartsToSave,\r\n this.state.caseCalculationHistoryDetails.comment,\r\n this.state.caseCalculationHistoryDetails.offerNumber,\r\n caseCalculationHistoryId,\r\n this.state.selectedOrganizationBranch?.organizationId || null,\r\n this.props.appState.appUser!.organizationId,\r\n this.props.appState.appUser!.organizationId,\r\n this.props.appState.appUser!.organization!.name,\r\n false,\r\n this.props.manipulationTariff!.value,\r\n null,\r\n this.props.workflowCalculation!.workflowSectionStepFormId,\r\n this.state.currentWorkflowContainsOrderFormOrInterogatePartner\r\n );\r\n\r\n if (this.props.appState.appUser!.organization!.changeCaseStatusBasedCalculation) {\r\n const status = _.find(this.state.caseStatuses, function (caseStatus) {\r\n return caseStatus.code === CaseStatusCodeEnum.AM;\r\n });\r\n const caseStatusRequest = {\r\n caseId: this.props.caseSettingsState.case!.id,\r\n statusId: status!.id\r\n } as ChangeCaseStatusRequest;\r\n\r\n const currentStatus = await this.caseService.ChangeCaseStatus(caseStatusRequest);\r\n this.props.SetCaseStatus(currentStatus);\r\n }\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n\r\n this.props.onSave();\r\n\r\n this.setState({ isConfirm: false });\r\n this.setState({ executing: false });\r\n } catch (err) {\r\n console.log(err);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n getPackageFromCalculationParts = (calculationParts: CaseCalculationPart[]) => {\r\n const newcalculationParts = [];\r\n for (let i = 0; i < calculationParts.length; i++) {\r\n if (calculationParts[i].package && calculationParts[i].package.length) {\r\n for (let j = 0; j < calculationParts[i].package.length; j++) {\r\n newcalculationParts.push({\r\n ...calculationParts[i].package[j],\r\n availableQuantity: calculationParts[i].availableQuantity,\r\n });\r\n }\r\n }\r\n }\r\n return newcalculationParts;\r\n };\r\n\r\n handleImportOriginalParts = (event: any) => {\r\n event.preventDefault();\r\n\r\n const files = event.target.files,\r\n f = files[0];\r\n const reader = new FileReader();\r\n reader.onload = (e) => {\r\n const data = e.target!.result;\r\n const readedData = XLSX.read(data, { type: 'binary' });\r\n const wsname = readedData.SheetNames[0];\r\n const ws = readedData.Sheets[wsname];\r\n\r\n const fullParsedContent = XLSX.utils.sheet_to_json(ws, { header: 1 });\r\n if (fullParsedContent.length === 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_IMPORT_PARTS_BY_XLSX_FILE',\r\n 'Importul nu s-a putut efectua! Verificati fisierul!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n const header = fullParsedContent[0] as any;\r\n if (\r\n fullParsedContent.length > 0 &&\r\n (header[0] !== ImportOriginalPartsFileHeader.H1 ||\r\n header[1] !== ImportOriginalPartsFileHeader.H2 ||\r\n header[2] !== ImportOriginalPartsFileHeader.H3 ||\r\n header[3] !== ImportOriginalPartsFileHeader.H4 ||\r\n header[4] !== ImportOriginalPartsFileHeader.H5)\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_IMPORT_PARTS_BY_XLSX_FILE',\r\n 'Importul nu s-a putut efectua! Verificati fisierul!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n /* Convert array to json*/\r\n const dataParse = XLSX.utils\r\n .sheet_to_json(ws, {\r\n header: [\r\n 'guideNumberImported',\r\n 'nameImported',\r\n 'originalPriceImported',\r\n 'qualityImported',\r\n 'unitsImported'\r\n ],\r\n defval: ''\r\n })\r\n .slice(1);\r\n if (dataParse.length <= 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_IMPORT_PARTS_BY_XLSX_FILE',\r\n 'Importul nu s-a putut efectua! Verificati fisierul!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n const partQualityTypes = this.state.partQualityTypes.sort(function (a, b) {\r\n return a.displayName.localeCompare(b.displayName);\r\n });\r\n const dataParseArr = dataParse as any[];\r\n let emptyRows = false as boolean;\r\n dataParseArr.map((item) => {\r\n if (\r\n item.guideNumberImported.toString() === '' ||\r\n !item.guideNumberImported.toString().trim().length\r\n ) {\r\n emptyRows = true;\r\n }\r\n if (item.nameImported.toString() === '' || !item.nameImported.toString().trim().length) {\r\n emptyRows = true;\r\n }\r\n if (\r\n item.originalPriceImported.toString() === '' ||\r\n !item.originalPriceImported.toString().trim().length\r\n ) {\r\n emptyRows = true;\r\n }\r\n if (\r\n item.qualityImported.toString() === '' ||\r\n !item.qualityImported.toString().trim().length\r\n ) {\r\n emptyRows = true;\r\n }\r\n if (item.unitsImported.toString() === '' || !item.unitsImported.toString().trim().length) {\r\n emptyRows = true;\r\n }\r\n const partQualityTypesFilter = partQualityTypes.filter(\r\n (qualityType) => qualityType.code === item.qualityImported.toString()\r\n );\r\n if (partQualityTypesFilter.length <= 0) {\r\n emptyRows = true;\r\n }\r\n });\r\n if (emptyRows === true) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_IMPORT_PARTS_BY_XLSX_FILE',\r\n 'Importul nu s-a putut efectua! Verificati fisierul!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n this.importOriginalParts(dataParse);\r\n };\r\n reader.readAsBinaryString(f);\r\n event.target.value = '';\r\n };\r\n\r\n importOriginalParts = (importedOriginalParts: any) => {\r\n try {\r\n const partQualityTypes = this.state.partQualityTypes.sort(function (a, b) {\r\n return a.displayName.localeCompare(b.displayName);\r\n });\r\n const calculationParts = [...this.state.calculationParts];\r\n const loaders = [...this.state.partLoaders];\r\n const interogateParts = [...this.state.interogateParts];\r\n [...importedOriginalParts].map((item, index) => {\r\n const partQualityTypesFilter = partQualityTypes.filter(\r\n (qualityType) => qualityType.code === item.qualityImported\r\n );\r\n calculationParts.push({\r\n carPartCategory: partQualityTypesFilter[0],\r\n carPartCategoryId: partQualityTypesFilter[0].id,\r\n amount: 0,\r\n caseCalculationHistoryId: this.props.calculationHistoryId,\r\n id: -1 * this.state.calculationParts.length - index,\r\n discount: 0,\r\n calculationSectionId: this.state.partSection!.id,\r\n calculationSection: this.state.partSection,\r\n guideNumber: item.guideNumberImported,\r\n name: item.nameImported,\r\n originalPrice: item.originalPriceImported,\r\n pieceNr: item.unitsImported\r\n } as CaseCalculationPart);\r\n\r\n loaders.push(false);\r\n interogateParts.push(false);\r\n });\r\n\r\n this.setState(\r\n {\r\n calculationParts: calculationParts,\r\n partLoaders: loaders,\r\n interogateParts: interogateParts\r\n },\r\n () => this.props.handleUpdateAlternativeCalcAmount(calculationParts)\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleImportAlternativeParts = (event: any) => {\r\n event.preventDefault();\r\n\r\n const originalParts = this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === this.state.partSection!.id\r\n );\r\n if (originalParts.length === 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'NO_ORIGINAL_PARTS_FOUND',\r\n 'Nu exista nicio piesa originala!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n event.target.value = '';\r\n return;\r\n }\r\n\r\n const files = event.target.files,\r\n f = files[0];\r\n const reader = new FileReader();\r\n reader.onload = (e) => {\r\n const data = e.target!.result;\r\n const readedData = XLSX.read(data, { type: 'binary' });\r\n const wsname = readedData.SheetNames[0];\r\n const ws = readedData.Sheets[wsname];\r\n const fullParsedContent = XLSX.utils.sheet_to_json(ws, { header: 1 });\r\n if (fullParsedContent.length === 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_IMPORT_PARTS_BY_XLSX_FILE',\r\n 'Importul nu s-a putut efectua! Verificati fisierul!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n const header = fullParsedContent[0] as any;\r\n if (\r\n fullParsedContent.length > 0 &&\r\n (header[0] !== ImportAlternativePartsFileHeader.H1 ||\r\n header[1] !== ImportAlternativePartsFileHeader.H2 ||\r\n header[2] !== ImportAlternativePartsFileHeader.H3 ||\r\n header[3] !== ImportAlternativePartsFileHeader.H4 ||\r\n header[4] !== ImportAlternativePartsFileHeader.H5 ||\r\n header[5] !== ImportAlternativePartsFileHeader.H6 ||\r\n header[6] !== ImportAlternativePartsFileHeader.H7 ||\r\n header[7] !== ImportAlternativePartsFileHeader.H8 ||\r\n (header[8] !== undefined && header[8] !== ImportAlternativePartsFileHeader.H9) ||\r\n (header[9] !== undefined && header[9] !== ImportAlternativePartsFileHeader.H10) ||\r\n (header[10] !== undefined && header[10] !== ImportAlternativePartsFileHeader.H11))\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_IMPORT_PARTS_BY_XLSX_FILE',\r\n 'Importul nu s-a putut efectua! Verificati fisierul!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n /* Convert array to json*/\r\n const dataParse = XLSX.utils\r\n .sheet_to_json(ws, {\r\n header: [\r\n 'originalPartGuideNumberImported',\r\n 'alternativePartGuideNumberImported',\r\n 'nameImported',\r\n 'originalPriceImported',\r\n 'qualityImported',\r\n 'producerImported',\r\n 'supplierImported',\r\n 'deliveryTimeImported',\r\n 'availableQuantityImported',\r\n 'stockLocationImported',\r\n 'remarksImported'\r\n ],\r\n defval: ''\r\n })\r\n .slice(1);\r\n\r\n if (dataParse.length <= 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_IMPORT_PARTS_BY_XLSX_FILE',\r\n 'Importul nu s-a putut efectua! Verificati fisierul!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n const partQualityTypes = this.state.partQualityTypes.sort(function (a, b) {\r\n return a.displayName.localeCompare(b.displayName);\r\n });\r\n const supplierList = this.state.supplierList;\r\n const dataParseArr = dataParse as any[];\r\n let emptyRows = false as boolean;\r\n\r\n const originalPartsGuideNrs = [] as any[];\r\n originalParts.map((item) => {\r\n originalPartsGuideNrs.push({ guideNumber: item.guideNumber });\r\n });\r\n\r\n dataParseArr.map((item) => {\r\n if (\r\n item.originalPartGuideNumberImported.toString() === '' ||\r\n !item.originalPartGuideNumberImported.toString().trim().length\r\n ) {\r\n emptyRows = true;\r\n }\r\n if (\r\n item.alternativePartGuideNumberImported.toString() === '' ||\r\n !item.alternativePartGuideNumberImported.toString().trim().length\r\n ) {\r\n emptyRows = true;\r\n }\r\n if (item.nameImported.toString() === '' || !item.nameImported.toString().trim().length) {\r\n emptyRows = true;\r\n }\r\n if (\r\n item.originalPriceImported.toString() === '' ||\r\n !item.originalPriceImported.toString().trim().length\r\n ) {\r\n emptyRows = true;\r\n }\r\n if (\r\n item.qualityImported.toString() === '' ||\r\n !item.qualityImported.toString().trim().length\r\n ) {\r\n emptyRows = true;\r\n }\r\n if (\r\n item.producerImported.toString() === '' ||\r\n !item.producerImported.toString().trim().length\r\n ) {\r\n emptyRows = true;\r\n }\r\n if (\r\n item.supplierImported.toString() === '' ||\r\n !item.supplierImported.toString().trim().length\r\n ) {\r\n emptyRows = true;\r\n }\r\n if (\r\n item.deliveryTimeImported.toString() === '' ||\r\n !item.deliveryTimeImported.toString().trim().length\r\n ) {\r\n emptyRows = true;\r\n }\r\n const partQualityTypesFilter = partQualityTypes.filter(\r\n (qualityType) => qualityType.code === item.qualityImported.toString()\r\n );\r\n if (partQualityTypesFilter.length <= 0) {\r\n emptyRows = true;\r\n }\r\n const filterByOriginalGuideNumber = originalPartsGuideNrs.filter(\r\n (cls) => item.originalPartGuideNumberImported.toString() === cls.guideNumber.toString()\r\n );\r\n if (filterByOriginalGuideNumber.length === 0) {\r\n emptyRows = true;\r\n }\r\n\r\n const supplierListFilter = supplierList.filter(\r\n (supplier) => supplier.companyNumber === item.supplierImported.toString()\r\n );\r\n if (supplierListFilter.length <= 0) {\r\n emptyRows = true;\r\n }\r\n });\r\n if (emptyRows === true) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_IMPORT_PARTS_BY_XLSX_FILE',\r\n 'Importul nu s-a putut efectua! Verificati fisierul!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n this.importAlternativeParts(dataParse);\r\n };\r\n reader.readAsBinaryString(f);\r\n event.target.value = '';\r\n };\r\n\r\n importAlternativeParts = (importedAlternativeParts: any) => {\r\n try {\r\n const partQualityTypes = this.state.partQualityTypes.sort(function (a, b) {\r\n return a.displayName.localeCompare(b.displayName);\r\n });\r\n const supplierList = this.state.supplierList;\r\n const calculationParts = this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === this.state.partSection!.id\r\n );\r\n const alternativeParts = [...this.state.caseCalculationAlternativePart];\r\n\r\n calculationParts.map((calcPart) => {\r\n [...importedAlternativeParts].map((item, index) => {\r\n if (item.originalPartGuideNumberImported.toString() === calcPart.guideNumber.toString()) {\r\n const partQualityTypesFilter = partQualityTypes.filter(\r\n (qualityType) => qualityType.code === item.qualityImported\r\n );\r\n const supplierListFilter = supplierList.filter(\r\n (supplier) =>\r\n supplier.companyNumber !== '' &&\r\n supplier.companyNumber === item.supplierImported.toString()\r\n );\r\n alternativeParts.push({\r\n id: this.state.caseCalculationAlternativePart.length + index,\r\n alternativeGuideNumber: item.alternativePartGuideNumberImported,\r\n alternativePartQuality: partQualityTypesFilter[0],\r\n alternativePartQualityId: partQualityTypesFilter[0].id,\r\n alternativePrice: item.originalPriceImported,\r\n availableQuantity: isNaN(Number.parseFloat(item.availableQuantityImported))\r\n ? null\r\n : Number.parseFloat(item.availableQuantityImported),\r\n deliveryTime: item.deliveryTimeImported,\r\n name: item.nameImported,\r\n originalPartId: calcPart.id,\r\n producer: item.producerImported,\r\n remarks: item.remarksImported,\r\n selectedAlternativePart: 9999999999999,\r\n stockLocation: item.stockLocationImported,\r\n supplierId: supplierListFilter.length > 0 ? supplierListFilter[0].id : null,\r\n supplier: supplierListFilter.length > 0 ? supplierListFilter[0] : null\r\n } as CaseCalculationAlternativePart);\r\n }\r\n });\r\n });\r\n\r\n this.setState(\r\n {\r\n // calculationParts: calculationParts,\r\n caseCalculationAlternativePart: alternativeParts,\r\n caseCalculationAlternativePartCopy: alternativeParts\r\n },\r\n () => this.props.handleUpdateAlternativeCalcAmount(calculationParts)\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n renderPartsButtons = () => {\r\n return (\r\n \r\n
\r\n
\r\n {!R.isNil(this.props.workflowCalculation) &&\r\n !R.isNil(this.props.workflowCalculation.addOriginalPart) &&\r\n this.props.workflowCalculation.addOriginalPart ? (\r\n this.newCalculationPart(null)}\r\n className=\"mr-2\"\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_ADD_ORIGINAL_PART_LABEL',\r\n 'Adauga piesa originala'\r\n )}\r\n \r\n ) : null}\r\n {!R.isNil(this.props.workflowCalculation) &&\r\n !R.isNil(this.props.workflowCalculation.importOriginalParts) &&\r\n this.props.workflowCalculation.importOriginalParts ? (\r\n {\r\n this.handleImportOriginalParts(e);\r\n }}\r\n component=\"label\"\r\n variant=\"contained\"\r\n color=\"secondary\"\r\n >\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_IMPORT_NEW_PARTS_LABEL',\r\n 'Importa piese noi'\r\n )}\r\n \r\n \r\n ) : null}\r\n
\r\n
\r\n {!R.isNil(this.props.workflowCalculation) &&\r\n !R.isNil(this.props.workflowCalculation.importAlternativeParts) &&\r\n this.props.workflowCalculation.importAlternativeParts ? (\r\n {\r\n this.handleImportAlternativeParts(e);\r\n }}\r\n component=\"label\"\r\n variant=\"contained\"\r\n color=\"secondary\"\r\n >\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_IMPORT_ALTERNATIVE_PARTS_LABEL',\r\n 'Importa piese alternative'\r\n )}\r\n \r\n \r\n ) : null}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n handleOriginalPartPriceChange = (e: React.ChangeEvent, id: number) => {\r\n const calculationParts = [...this.state.calculationParts];\r\n const index = calculationParts.findIndex((item) => item.id === id);\r\n calculationParts[index] = { ...calculationParts[index], originalPrice: e.target.value === null ? 0 : parseFloat(e.target.value)};\r\n \r\n if (this.props.workflowCalculation!.serviceOwnStock && this.state.ownStockOrganization) {\r\n if (!calculationParts[index].supplierId && calculationParts[index].originalPrice === 0) {\r\n this.validateOriginalPartPriceAdd(calculationParts[index].id);\r\n } else {\r\n this.validateOriginalPartPriceRemove(calculationParts[index].id);\r\n }\r\n }\r\n\r\n this.setState({ calculationParts: calculationParts });\r\n };\r\n\r\n handleOriginalPartGuideNumberChange = (e: React.ChangeEvent, id: number) => {\r\n const calculationParts = [...this.state.calculationParts];\r\n const index = calculationParts.findIndex((item) => item.id === id);\r\n calculationParts[index] = { ...calculationParts[index], guideNumber: (e.target.value).trimLeft()};\r\n this.setState({ calculationParts: calculationParts });\r\n };\r\n\r\n handleAlternativePartDescriptionChange = (e: React.ChangeEvent, id: number) => {\r\n const calculationParts = [...this.state.calculationParts];\r\n const index = calculationParts.findIndex((item) => item.id === id);\r\n calculationParts[index] = {\r\n ...calculationParts[index],\r\n alternativePartDescription: e.target.value\r\n };\r\n const caseCalculationAlternativePartCopy = [...this.state.caseCalculationAlternativePart];\r\n const alternativePartChecked = caseCalculationAlternativePartCopy.find(\r\n (item) =>\r\n item.originalPartId === calculationParts[index].id &&\r\n item.selectedAlternativePart !== 9999999999999\r\n );\r\n\r\n if (!R.isNil(alternativePartChecked)) {\r\n if (!R.isNil(this.props.workflowCalculation) && this.props.workflowCalculation.hasAlternativePartDescription) {\r\n if (R.isNil(calculationParts[index].alternativePartDescription) ||\r\n R.isEmpty(calculationParts[index].alternativePartDescription)\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ALTERNATIVE_PART_DESCRIPTION_ERROR_MSG',\r\n 'Va rugam sa completati campul Descriere piesa alt'\r\n ),\r\n { \r\n variant: 'error',\r\n autoHideDuration: 5000 \r\n }\r\n );\r\n this.validateAlternativePartDescriptionAdd(calculationParts[index].id);\r\n } else {\r\n this.validateAlternativePartDescriptionRemove(calculationParts[index].id);\r\n }\r\n }\r\n }\r\n\r\n this.setState({ calculationParts: calculationParts });\r\n };\r\n\r\n handleOriginalPartQuantityChange = (e: React.ChangeEvent, id: number) => {\r\n const calculationParts = [...this.state.calculationParts];\r\n const index = calculationParts.findIndex((item) => item.id === id);\r\n calculationParts[index] = {\r\n ...calculationParts[index],\r\n pieceNr: isNaN(parseFloat(e.target.value)) ? 0 : parseFloat(e.target.value)\r\n };\r\n if (calculationParts[index].package && calculationParts[index].package.length) {\r\n for (let i = 0; i < calculationParts[index].package.length; i++) {\r\n calculationParts[index].package[i].pieceNr = isNaN(parseFloat(e.target.value))\r\n ? 0\r\n : parseFloat(e.target.value);\r\n }\r\n }\r\n\r\n const caseCalculationAlternativePartCopy = [...this.state.caseCalculationAlternativePart];\r\n const alternativePartChecked = caseCalculationAlternativePartCopy.find(\r\n (item) =>\r\n item.originalPartId === calculationParts[index].id &&\r\n item.selectedAlternativePart !== 9999999999999\r\n );\r\n\r\n if (!R.isNil(alternativePartChecked)) {\r\n const currentPacking = alternativePartChecked.packing?.split('|')[0];\r\n const secondItemOfPacking = alternativePartChecked.packing?.split('|')[1];\r\n if (currentPacking && secondItemOfPacking) {\r\n const currentPackingNumber = parseFloat(currentPacking);\r\n if (\r\n parseFloat(e.target.value) % currentPackingNumber != 0 ||\r\n parseFloat(e.target.value) < alternativePartChecked.minQty\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'MIN_PACKING_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie '\r\n ) +\r\n currentPackingNumber +\r\n this.translatorService.Tranlate('MIN_PACKING_MULTIPLE_ERROR_MSG', ' sau multiplul acesteia!'),\r\n { variant: 'error',\r\n autoHideDuration: 5000 }\r\n );\r\n }\r\n } else if (parseFloat(e.target.value) < alternativePartChecked.minQty) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'MIN_PACKING_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie '\r\n ) +\r\n alternativePartChecked.minQty +\r\n this.translatorService.Tranlate('MIN_PACKING_MULTIPLE_ERROR_MSG', ' sau multiplul acesteia!'),\r\n { variant: 'error',\r\n autoHideDuration: 5000 }\r\n );\r\n }\r\n if (\r\n !R.isNil(alternativePartChecked!.availableQuantity) &&\r\n alternativePartChecked!.availableQuantity < parseFloat(e.target.value)\r\n ) {\r\n this.validateOrigPartUnitsAdd(calculationParts[index].id);\r\n } else {\r\n this.validateOrigPartUnitsRemove(calculationParts[index].id);\r\n }\r\n }\r\n\r\n this.setState({ calculationParts: calculationParts }, () =>\r\n this.props.handleUpdateAlternativeCalcAmount(calculationParts)\r\n );\r\n };\r\n\r\n checkPackageNotification = () => {\r\n const { packageCalculationParts, calculationParts } = this.state;\r\n \r\n // Găsește piesele care se potrivesc pe baza guideNumber și name\r\n const matchingParts = calculationParts.filter(part => \r\n packageCalculationParts.some(pkgPart => \r\n (pkgPart.guideNumber === part.guideNumber && pkgPart.name === part.name)\r\n ||\r\n (pkgPart.repairMethod === part.repairMethod && OriginalPartShortNumberException.includes(pkgPart.repairMethod))\r\n )\r\n );\r\n \r\n if (matchingParts.length > 0) {\r\n const combinedMessage = matchingParts.map(({ guideNumber, name }) => \r\n `\\n ${guideNumber} - ${name} `\r\n ).join(\", \");\r\n\r\n\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'PARTS_ALREADY_EXIST_IN_PACKAGE',\r\n 'Piesele de mai jos se regasesc deja in pachetul selectat si nu mai pot fi adaugate: '\r\n ) + combinedMessage,\r\n {\r\n variant: 'warning',\r\n style: { whiteSpace: 'pre-line' },\r\n autoHideDuration: 5000 \r\n }\r\n );\r\n } \r\n };\r\n \r\n\r\n renderCalculationPieces = () => {\r\n return (\r\n
\r\n {this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === this.state.partSection!.id && !item.isOrdered\r\n ).length > 0 ? (\r\n this.state.calculationParts\r\n .filter(\r\n (item) => item.calculationSectionId === this.state.partSection!.id && !item.isOrdered\r\n )\r\n .map((item, index) => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {R.isNil(item!.name) ? '' : item!.name}\r\n {!R.isNil(this.props.workflowCalculation) && (\r\n
\r\n {!R.isNil(this.props.workflowCalculation.addOriginalPart) && this.props.workflowCalculation.addOriginalPart ? (\r\n \r\n this.copyCalculationPart(item.id)}\r\n aria-label=\"copy\"\r\n color=\"primary\"\r\n className=\"pt-0\"\r\n >\r\n \r\n \r\n \r\n ) : null}\r\n {!R.isNil(this.props.workflowCalculation.addNotifySupportOriginalPart) && this.props.workflowCalculation.addNotifySupportOriginalPart ? (\r\n \r\n this.notifySupportCalculationPart(item.id)}\r\n >\r\n \r\n \r\n \r\n ) : null}\r\n
\r\n )}\r\n
\r\n
\r\n \r\n ) => {\r\n this.handleOriginalPartGuideNumberChange(e, item.id);\r\n }}\r\n />\r\n {!R.isNil(this.props.workflowCalculation) && this.props.workflowCalculation.hasAlternativePartDescription ? (\r\n ) => {\r\n this.handleAlternativePartDescriptionChange(e, item.id);\r\n }}\r\n />\r\n ) : null\r\n }\r\n {\r\n item!.editOriginalPrice ? (\r\n ) => {\r\n this.handleOriginalPartPriceChange(e, item.id);\r\n }}\r\n autoFocus={false}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n ) : (\r\n \r\n )\r\n }\r\n \r\n ) => {\r\n this.handleOriginalPartQuantityChange(e, item.id);\r\n }}\r\n autoFocus={false}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n
\r\n \r\n {!R.isNil(this.props.workflowCalculation) &&\r\n !R.isNil(this.props.workflowCalculation.deleteOriginalPart) &&\r\n this.props.workflowCalculation.deleteOriginalPart ? (\r\n this.deleteCalculationPart(item.id)}\r\n size=\"small\"\r\n variant=\"contained\"\r\n color=\"secondary\"\r\n className=\"mr-3\"\r\n >\r\n \r\n {this.translatorService.Tranlate(\r\n 'DELETE_ORIGINAL_PART_LABEL',\r\n 'Sterge piesa'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n {\r\n this.isDialogOpenConfirmationHandler(async () => {\r\n await this.interogateAlternativeParts(\r\n item.id,\r\n item.guideNumber,\r\n item,\r\n index\r\n );\r\n });\r\n }}\r\n className=\"float-right\"\r\n size=\"small\"\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n {this.translatorService.Tranlate('INTEROGATE', 'Interogheaza')}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {!R.isNil(this.props.workflowCalculation) &&\r\n !R.isNil(this.props.workflowCalculation.addAlternativePart) &&\r\n this.props.workflowCalculation.addAlternativePart ? (\r\n \r\n this.addAlternativePart(item.id)}\r\n aria-label=\"add\"\r\n color=\"primary\"\r\n className=\"pt-0 float-right\"\r\n >\r\n \r\n \r\n \r\n ) : null}\r\n
\r\n
\r\n
\r\n \r\n
\r\n {this.state.partLoaders[index] ? null : (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n alternativePart.originalPartId === item.id\r\n ).length > 0 &&\r\n this.state.caseCalculationAlternativePart\r\n .filter(\r\n (alternativePart) =>\r\n alternativePart.originalPartId === item.id\r\n )\r\n .some(\r\n (el) => el.selectedAlternativePart !== 9999999999999\r\n )\r\n ? false\r\n : true\r\n }\r\n title={this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_CLEAR_LABEL',\r\n 'Goleste'\r\n )}\r\n onClick={(e) =>\r\n this.clearSelectedAlternativeParts(item.id)\r\n }\r\n className=\"min min-w-auto\"\r\n size=\"small\"\r\n variant=\"contained\"\r\n color=\"secondary\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_CODE_LABEL',\r\n 'Cod'\r\n )}\r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'ORDER_PART_DETAILS_NAME_LABEL',\r\n 'Denumire'\r\n )}\r\n \r\n {!R.isNil(this.props.workflowCalculation) && this.props.workflowCalculation!.alternativeNetPrice ? (\r\n \r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_NET_PRICE_LKQ_HEADER',\r\n 'Pret Net'\r\n )}\r\n \r\n ): null}\r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_PRICE_LABEL',\r\n 'Pret'\r\n )}\r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_QUALITY_LABEL',\r\n 'Calitate'\r\n )}\r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_DELIVERY_LABEL',\r\n 'Livrare'\r\n )}\r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_OWNER_LABEL_ACRONYM',\r\n 'Producator'\r\n )}\r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_SUPLIER_LABEL',\r\n 'Furnizor'\r\n )}\r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_QUANTITY_INFO_LABEL',\r\n 'Cant.'\r\n )}\r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_STOCK_LOCATION_LABEL',\r\n 'Locatie'\r\n )}\r\n \r\n \r\n \r\n \r\n {this.state.caseCalculationAlternativePart.filter(\r\n (alternativePart) =>\r\n alternativePart.originalPartId === item.id\r\n ).length > 0 ? (\r\n this.state.caseCalculationAlternativePart\r\n .filter(\r\n (alternativePart) =>\r\n alternativePart.originalPartId === item.id\r\n )\r\n .sort(function (a: any, b: any) {\r\n console.log(a.supplierName);\r\n return a.supplierName - b.supplierName;\r\n })\r\n .map((alternativePart, alternativePartindex) => {\r\n // Creează o referință pentru fiecare rând\r\n this.rowRefs[alternativePart.id] = React.createRef();\r\n return (\r\n \r\n \r\n \r\n this.handleAlternativePartSelect(\r\n alternativePart.id,\r\n alternativePart.originalPartId,\r\n alternativePart\r\n )\r\n }\r\n value={alternativePart.id}\r\n id={alternativePart.id.toString()}\r\n name={item.id.toString()}\r\n />\r\n \r\n \r\n {alternativePart.alternativeGuideNumber}\r\n \r\n \r\n {!R.isNil(alternativePart.remarks) &&\r\n alternativePart.remarks !== '' ? (\r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_REMARKS_LABEL',\r\n 'Observatii'\r\n )}\r\n \r\n
{alternativePart.remarks}
\r\n \r\n }\r\n >\r\n
{alternativePart.name}
\r\n \r\n ) : (\r\n \r\n
{alternativePart.name}
\r\n \r\n }\r\n >\r\n
{alternativePart.name}
\r\n \r\n )}\r\n \r\n {!R.isNil(this.props.workflowCalculation) && this.props.workflowCalculation!.alternativeNetPrice ? (\r\n \r\n {alternativePart.alternativeNetPrice ? Utils.countryNumberFormat((\r\n Math.round(\r\n alternativePart.alternativeNetPrice * 100\r\n ) / 100\r\n ).toFixed(2), this.props.appState.appUser?.organization?.country ?? null) \r\n : null}\r\n \r\n ) : null}\r\n \r\n {R.isNil(alternativePart!.alternativePartDiscount)\r\n ? Utils.countryNumberFormat(\r\n (Math.round(alternativePart.alternativePrice * 100) / 100).toFixed(2),\r\n this.props.appState.appUser?.organization?.country ?? null\r\n )\r\n : Utils.countryNumberFormat(\r\n (\r\n Math.round(\r\n alternativePart.alternativePrice * (1 - alternativePart!.alternativePartDiscount / 100) * 100\r\n ) / 100\r\n ).toFixed(2),\r\n this.props.appState.appUser?.organization?.country ?? null\r\n )\r\n }\r\n \r\n \r\n {R.isNil(alternativePart.alternativePartQuality)\r\n ? ''\r\n : alternativePart.alternativePartQuality.code}\r\n \r\n \r\n {alternativePart.deliveryTime.toString().includes(\"in cazul in care piesa se afla in stocul extern\") ? \r\n <>{alternativePart.deliveryTime.toString().split(\"in cazul in care piesa se afla in stocul extern\")[0]}in cazul in care piesa se afla in stocul extern: alternativePart.deliveryTime}\r\n }\r\n >\r\n
{alternativePart.deliveryTime.toString().includes(\"in cazul in care piesa se afla in stocul extern\") ? \r\n <>{alternativePart.deliveryTime.toString().split(\"in cazul in care piesa se afla in stocul extern\")[0]}in cazul in care piesa se afla in stocul extern: alternativePart.deliveryTime}
\r\n \r\n \r\n \r\n {alternativePart.producer}\r\n \r\n \r\n {!R.isNil(alternativePart.supplier)\r\n ? alternativePart.supplier!.name\r\n : ''}\r\n \r\n \r\n {alternativePart.quantityAdditionalInfo &&\r\n alternativePart.availableQuantity ? (\r\n \r\n
\r\n {alternativePart.quantityAdditionalInfo}\r\n
\r\n \r\n }\r\n >\r\n
\r\n \r\n {alternativePart.availableQuantity}\r\n \r\n \r\n
\r\n \r\n ) : (\r\n (this.displayCalculationPartSupplier(alternativePart.supplierId).toUpperCase() == SupplierCode.LKQ.toString().toUpperCase()\r\n ? (\r\n \r\n {isNaN(alternativePart.availableQuantity)\r\n ? null\r\n : alternativePart.availableQuantity > 5 ? '5+' : alternativePart.availableQuantity}\r\n \r\n ) \r\n : (\r\n \r\n {isNaN(alternativePart.availableQuantity)\r\n ? null\r\n : alternativePart.availableQuantity}\r\n \r\n ) \r\n ) \r\n )}\r\n \r\n \r\n {alternativePart.stockLocation ? (\r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'ORDER_PART_DETAILS_LOCATION_LABEL',\r\n 'Locatie'\r\n ) +\r\n ': ' +\r\n alternativePart.stockLocation}\r\n
\r\n \r\n }\r\n >\r\n
\r\n \r\n {\r\n alternativePart.stockLocation.split(\r\n '\\n'\r\n )[0]\r\n }\r\n \r\n \r\n
\r\n \r\n ) : (\r\n alternativePart.stockLocation\r\n )}\r\n\r\n {!R.isNil(alternativePart.additionalInfo) &&\r\n alternativePart.additionalInfo !== '' &&\r\n AdditionalInfoCode.PRODUS_NU_POATE_FI_RETURNAT ==\r\n alternativePart.additionalInfo ? (\r\n \r\n {alternativePart.additionalInfo}\r\n

\r\n ) : (\r\n ''\r\n )}\r\n \r\n \r\n );\r\n })\r\n ) : (\r\n \r\n
\r\n \r\n )}\r\n \r\n
\r\n \r\n {this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista inregistrari de afisat'\r\n )}\r\n \r\n
\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n );\r\n })\r\n ) : (\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista inregistrari de afisat'\r\n )}\r\n
\r\n \r\n
\r\n )}\r\n {this.state.calculationParts.filter(\r\n (item) => item.calculationSectionId === this.state.partSection!.id && item.isOrdered\r\n ).length > 0 ? (\r\n
\r\n \r\n {this.renderOrderedPartsTable()}\r\n \r\n
\r\n ) : (\r\n ''\r\n )}\r\n {this.renderPartsButtons()}\r\n
\r\n );\r\n };\r\n\r\n closeModifiedDialog = async () => {\r\n this.setState({\r\n isDialogModifiedOpen: false,\r\n isConfirm: false\r\n });\r\n };\r\n\r\n onDropDownChange = (currentNode: any, selectedNodes: any) => {\r\n // react-dropdown-tree-select doesn't have an intrinsic mechanism for keeping track of selected items, only provides what is selected\r\n // So we have to manually check/uncheck the leaves from this tree used by this component\r\n let newSelectionOrganizationBranch: OrganizationBranch | null = null;\r\n if (this.state.selectedOrganizationBranch) {\r\n const oldSelectionOrganizationBranch = this.findRecursive(\r\n this.state.organizationBranches,\r\n this.state.selectedOrganizationBranch.organizationId\r\n );\r\n if (oldSelectionOrganizationBranch) {\r\n oldSelectionOrganizationBranch.checked = false;\r\n }\r\n }\r\n\r\n if (selectedNodes.length == 1) {\r\n const newPartialSelectionOrganizationBranch =\r\n this.findRecursive(\r\n this.state.organizationBranches,\r\n (selectedNodes[0] as OrganizationBranch)?.organizationId\r\n ) || null;\r\n\r\n if (newPartialSelectionOrganizationBranch) {\r\n newPartialSelectionOrganizationBranch.checked = true;\r\n newSelectionOrganizationBranch = newPartialSelectionOrganizationBranch;\r\n }\r\n }\r\n\r\n if (this.state.caseCalculationAlternativePart.length > 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('REINTEROGATE_ALTERANTIVE_PARTS', 'Adresa de livrare a fost modificată , vă rugăm să reinterogați piesele!'),\r\n { \r\n variant: 'warning',\r\n autoHideDuration: 6000\r\n }\r\n );\r\n }\r\n\r\n const caseCalculationOriginalPartsCopy = this.state.calculationParts.map((item: CaseCalculationPart) => {\r\n if (item.calculationSectionId === this.state.partSection!.id && !item.isOrdered) {\r\n return {\r\n ...item,\r\n alternativePrice: null,\r\n alternativePartDiscount: null,\r\n alternativeGuideNumber: null,\r\n alternativePartCode: null,\r\n alternativePartName: null,\r\n alternativePartQuality: null,\r\n alternativePartQualityId: null,\r\n alternativePartStockLocation: null,\r\n alternativePartStockQuantity: null,\r\n alternativePartRemarks: null,\r\n minQty: 0,\r\n packing: null,\r\n bundleItem: null,\r\n bundleNo: null,\r\n bundleQuantity: null,\r\n supplierId: null,\r\n supplier: null,\r\n producer: '',\r\n deliveryTime: '',\r\n alternativeNetPrice: null,\r\n alternativePriceWithoutDiscount: null\r\n };\r\n } else return item;\r\n });\r\n \r\n this.setState({\r\n ...this.state,\r\n selectedOrganizationBranch: newSelectionOrganizationBranch,\r\n caseCalculationAlternativePart: [],\r\n caseCalculationAlternativePartCopy: [],\r\n calculationParts: caseCalculationOriginalPartsCopy\r\n },\r\n () => this.props.handleUpdateAlternativeCalcAmount(caseCalculationOriginalPartsCopy));\r\n };\r\n\r\n findRecursive = (\r\n arr: OrganizationBranch[],\r\n organizationId: number\r\n ): OrganizationBranch | null => {\r\n let result: OrganizationBranch | null = null;\r\n for (const entry in arr) {\r\n if (arr[entry].organizationId == organizationId) {\r\n result = arr[entry];\r\n break;\r\n }\r\n if (arr[entry].children?.length) {\r\n const partialResult = this.findRecursive(arr[entry].children, organizationId);\r\n if (partialResult != null) {\r\n result = partialResult;\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.appuserService = (this.context as AppContext).appUserService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.orderService = (this.context as AppContext).orderService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
\r\n
\r\n \r\n
\r\n

\r\n {this.translatorService.Tranlate(\r\n 'INTEROGATE_ALTERNATIVE_PARTS_DIALOG_TITLE',\r\n 'Disponibilitatea pieselor va fi afisata conform adresei'\r\n ) +\r\n ' ' +\r\n this.state.selectedOrganizationBranch?.organizationName +\r\n ' ' +\r\n (this.state.selectedOrganizationBranch?.organizationAddress ?? '')}\r\n

\r\n
\r\n {\r\n this.setState({\r\n isDialogOpenConfirmationOrgPartner: false\r\n });\r\n if (this.state.isDialogOpenFunctionToBeCalled) {\r\n this.state.isDialogOpenFunctionToBeCalled();\r\n }\r\n }}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n className=\"mx-1\"\r\n >\r\n \r\n {this.translatorService.Tranlate('WORKFLOW_DOCUMENTS_TYPE_TAB_YES', 'Da')}\r\n \r\n \r\n {\r\n this.setState({\r\n isDialogOpenConfirmationOrgPartner: false\r\n });\r\n }}\r\n variant=\"outlined\"\r\n color=\"secondary\"\r\n className=\"mx-1\"\r\n >\r\n \r\n {this.translatorService.Tranlate('WORKFLOW_DOCUMENTS_TYPE_TAB_NO', 'Nu')}\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n

\r\n {this.translatorService.Tranlate(\r\n 'OPTIM_PARTS_DIALOG_TITLE',\r\n 'Atentie! Exista o componenta suplimentara. Doriti adaugarea acesteia ?'\r\n )}\r\n

\r\n
\r\n {\r\n this.optimizeAllParts(true);\r\n }}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n className=\"mx-1\"\r\n >\r\n \r\n {this.translatorService.Tranlate('WORKFLOW_DOCUMENTS_TYPE_TAB_YES', 'Da')}\r\n \r\n \r\n {\r\n this.optimizeAllParts(false);\r\n }}\r\n variant=\"outlined\"\r\n color=\"secondary\"\r\n className=\"mx-1\"\r\n >\r\n \r\n {this.translatorService.Tranlate('WORKFLOW_DOCUMENTS_TYPE_TAB_NO', 'Nu')}\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n {\r\n this.isDialogOpenConfirmationHandler(this.interogateAll);\r\n }}\r\n >\r\n {this.translatorService.Tranlate('INTEROGATE', 'Interogheaza')}\r\n \r\n {!R.isNil(this.props.workflowCalculation) && this.props.workflowCalculation!.viewOptim ? ( \r\n {\r\n this.isDialogOpenOptimizeConfirmationHandler();\r\n }}\r\n disabled={!this.checkIfOptimIsPossible()}\r\n >\r\n {this.translatorService.Tranlate('OPTIM', 'Optimizeaza')}\r\n \r\n ) : null}\r\n
\r\n
\r\n {this.state.currentWorkflowContainsOrderFormOrInterogatePartner ? (\r\n <>\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_LOCATION_TEXT',\r\n 'Adresa de livrare:'\r\n )}\r\n
\r\n
\r\n \r\n
\r\n \r\n ) : null}\r\n
\r\n
\r\n\r\n
\r\n {this.renderCalculationPieces()}\r\n
\r\n ) : null}\r\n\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'ADD_ALTERNATIVE_PARTS_TITLE',\r\n 'Adauga piese alternativa'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {this.state.calculationPartFormTypeAdd\r\n ? this.translatorService.Tranlate(\r\n 'ADD_ORIGINALS_PARTS_TITLE',\r\n 'Adauga piesa originala'\r\n )\r\n : this.translatorService.Tranlate(\r\n 'COPY_ORIGINALS_PARTS_TITLE',\r\n 'Copiaza piesa originala'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddOriginalPartForm()}\r\n \r\n \r\n
\r\n

\r\n {this.translatorService.Tranlate(\r\n 'ERROR_MSG_NO_PARTS_SELECTED',\r\n 'Aveti repere neoptimizate. Doriti sa salvati?'\r\n )}\r\n

\r\n
\r\n {\r\n this.setState(\r\n {\r\n isDialogModifiedOpen: false,\r\n isConfirm: true\r\n },\r\n this.save\r\n );\r\n }}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n className=\"mx-1\"\r\n >\r\n \r\n {this.translatorService.Tranlate('WORKFLOW_DOCUMENTS_TYPE_TAB_YES', 'Da')}\r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('WORKFLOW_DOCUMENTS_TYPE_TAB_NO', 'Nu')}\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n {this.state.isNotifySupportDialogOpen ? (\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('NOTIFY_SUPPORT_TITLE', 'Notifica support')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderNotifySupportOriginalPartForm()}\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsAlternativeCalculationPiecesProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n null,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsAlternativeCalculationPieces as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, CaseSettingsState, AppState, VehicleState } from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n CardContent,\r\n Card,\r\n Button,\r\n Grid,\r\n Typography,\r\n FormControlLabel,\r\n Divider,\r\n Input\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { CaseCalculationHistory, CaseCalculationPart, ManipulationTariffPercentResponse, TariffPercentResponse } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport {\r\n ReferentialCode,\r\n ParametreCode,\r\n CalculationSectionCodeEnum\r\n} from '../../helpers/Constants';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport {\r\n WorkflowCalculation,\r\n WorkflowOptimization,\r\n WorkflowSectionStepForm,\r\n WorkflowSupplier\r\n} from '../../interfaces/Workflow';\r\nimport CaseDetailsAlternativeCalculationPieces from './CaseDetailsAlternativeCalculationPieces';\r\nimport { CalculationParts } from '../../interfaces/CalculationParts';\r\nimport * as R from 'ramda';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { VehicleHelper } from '../../helpers/VehicleHelper';\r\nimport { Order } from '../../interfaces/Order';\r\nimport { Utils } from '../../helpers/Utils';\r\n\r\nexport interface ExternalCaseDetailsAlternativeCalculationDetailsProps {\r\n calculationHistoryId: number;\r\n stepFormId: number;\r\n orderList: Order[];\r\n closeDialog: () => void;\r\n manipulationTariff: ManipulationTariffPercentResponse;\r\n insurerList: IReferential[];\r\n serviceId: number | null;\r\n additionTariff: TariffPercentResponse;\r\n discountTariff: TariffPercentResponse;\r\n packageCalculationId: number | null;\r\n nonStockSuppliers: WorkflowSupplier[];\r\n}\r\n\r\ninterface ICaseDetailsAlternativeCalculationDetailsState {\r\n caseCalculationHistoryDetails: CaseCalculationHistory;\r\n isLoading: boolean;\r\n modified: boolean;\r\n workflowCalculation: WorkflowCalculation | undefined;\r\n workflowOptimization: WorkflowOptimization[];\r\n openMenuItem: any | null;\r\n totalAlternativeCalculation: number;\r\n totalAlternativeCalculationSmallParts: number;\r\n totalPartsAlternativeCalculation: number;\r\n TVA: string;\r\n calculationSectionList: IReferential[];\r\n setOptimizationType: number;\r\n}\r\n\r\ntype ICaseDetailsAlternativeCalculationDetailsProps =\r\n ExternalCaseDetailsAlternativeCalculationDetailsProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n workflowCalculation: WorkflowCalculation;\r\n } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsAlternativeCalculationDetails extends React.PureComponent<\r\n ICaseDetailsAlternativeCalculationDetailsProps,\r\n ICaseDetailsAlternativeCalculationDetailsState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n private appuserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n caseCalculationHistoryDetails: {} as CaseCalculationHistory,\r\n isLoading: true,\r\n modified: false,\r\n workflowCalculation: undefined,\r\n workflowOptimization: [],\r\n openMenuItem: null,\r\n totalAlternativeCalculation: 0,\r\n totalAlternativeCalculationSmallParts: 0,\r\n totalPartsAlternativeCalculation: 0,\r\n TVA: '',\r\n calculationSectionList: [],\r\n setOptimizationType: 0\r\n } as ICaseDetailsAlternativeCalculationDetailsState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (caseSettings === null || caseSettings === undefined || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCalculationDetails();\r\n }\r\n );\r\n }\r\n\r\n loadCalculationDetails = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (caseSettings === null || caseSettings === undefined || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n const TVA = this.props.caseSettingsState.case!.caseParameters.find(\r\n (item) => item.parameter!.code === ParametreCode.TVA\r\n )!.value;\r\n const currencyRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.Currency\r\n );\r\n const [currencyLIst, caseCalculation, calculationSections] = await Promise.all([\r\n this.appReferentialService.Get(currencyRef!.baseUrl),\r\n this.props.calculationHistoryId\r\n ? this.caseService.GetCaseCalculationHistoryDetails(this.props.calculationHistoryId)\r\n : ({} as CaseCalculationHistory),\r\n this.caseService.GetCalculationSections()\r\n ]);\r\n\r\n const form = this.getWorkflowForm(this.props.stepFormId);\r\n\r\n const workflowCalculation = form!.workflowCalculations.find(\r\n (item) =>\r\n item.workflowPartner!.partnerId === this.props.appState.appUser!.hoId &&\r\n (item.userRoleId === this.props.appState.appUser!.roleId || R.isNil(item.userRoleId)) &&\r\n item.caseStatusId === this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n const workflowOptimization = form!.workflowOptimizations.filter(\r\n (item) =>\r\n item.workflowPartner!.partnerId === this.props.appState.appUser!.hoId &&\r\n (item.userRoleId === this.props.appState.appUser!.roleId || R.isNil(item.userRoleId)) &&\r\n item.caseStatusId === this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n caseCalculation.currency = currencyLIst.find(\r\n (item) => item.code === caseCalculation.currencyCode\r\n )!;\r\n\r\n this.setState({\r\n caseCalculationHistoryDetails: caseCalculation,\r\n workflowCalculation: workflowCalculation,\r\n workflowOptimization: workflowOptimization,\r\n totalAlternativeCalculation: caseCalculation.amountWithoutTVA,\r\n totalPartsAlternativeCalculation: caseCalculation.amountPiecesWithDiscount,\r\n totalAlternativeCalculationSmallParts: caseCalculation.smallPartsValue,\r\n TVA: TVA,\r\n calculationSectionList: calculationSections,\r\n isLoading: false\r\n });\r\n };\r\n\r\n getWorkflowForm = (id: number): WorkflowSectionStepForm | null => {\r\n const sections = this.props.caseSettingsState.caseSettings!.workflow.workflowSections!;\r\n for (const section of sections) {\r\n for (const step of section.workflowSectionSteps) {\r\n const form = step.workflowSectionStepForms.find((form) => form.id === id);\r\n if (!R.isNil(form)) {\r\n return form;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n\r\n closeDialog = async () => {\r\n this.props.closeDialog();\r\n };\r\n\r\n handleTml = (e: React.ChangeEvent) => {\r\n const workflowCalculation = {\r\n ...this.state.workflowCalculation,\r\n defaultMaxDeliveryTime: Number.parseInt(e.target.value)\r\n } as WorkflowCalculation;\r\n this.setState({ workflowCalculation: workflowCalculation });\r\n };\r\n\r\n displayValueWithCurrency = (value: number | null) => {\r\n let result = '0';\r\n if (!R.isNil(value)) {\r\n result = value.toFixed(2);\r\n }\r\n if (isNaN(Number(result))) {\r\n result = '0';\r\n }\r\n let currency = '';\r\n if (this.state.caseCalculationHistoryDetails.currency) {\r\n currency = this.state.caseCalculationHistoryDetails.currency?.displayName;\r\n }\r\n\r\n return Utils.countryNumberFormat(result, this.props.appState.appUser?.organization?.country ?? null) + ' ' + currency;\r\n };\r\n\r\n renderSection1 = () => {\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n ) => {\r\n this.handleTml(e);\r\n }}\r\n />\r\n }\r\n label={\r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_TML_LABEL',\r\n 'Timp maxim de livrare'\r\n )}\r\n \r\n }\r\n labelPlacement=\"start\"\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {VehicleHelper.GetBrandModel(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle\r\n )}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n {this.translatorService.Tranlate('CALCULATION_DETAILS_UMC', 'UMC')}\r\n
\r\n
\r\n {this.translatorService.Tranlate('CALCULATION_DETAILS_VIN', 'VIN')}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_VEHICLE_MANUFACTURE_DATE',\r\n 'Data fabricatie'\r\n )}\r\n
\r\n
\r\n \r\n
\r\n {VehicleHelper.GetUMC(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle\r\n )}\r\n
\r\n
\r\n {VehicleHelper.GetVIN(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle\r\n )}\r\n
\r\n
\r\n {VehicleHelper.GetMakeDate(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle,\r\n this.props.appState.language\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_VEHICAL_PLATE_NUMBER',\r\n 'Numar inmatriculare'\r\n )}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_VEHICAL_FIRST_REGISTRATION_DATE',\r\n 'Data primei inmatriculari'\r\n )}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_VEHICAL_NUMBER_OF_KM',\r\n 'Numar kilometri'\r\n )}\r\n
\r\n
\r\n \r\n
\r\n {VehicleHelper.GetPlateNumber(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle\r\n )}\r\n
\r\n
\r\n {VehicleHelper.GetFirstRegistrationDate(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle,\r\n this.props.appState.language\r\n )}\r\n
\r\n
\r\n {VehicleHelper.GetKmNr(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {this.state.workflowOptimization.length !== 0 ? (\r\n
\r\n {this.state.workflowOptimization.map((item) => {\r\n return (\r\n \r\n this.setState({ setOptimizationType: item.optimizationTypeId })\r\n }\r\n key={item.id}\r\n className=\"m-2\"\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n {item.optimizationType!.displayName}\r\n \r\n );\r\n })}\r\n
\r\n ) : null}\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_ORIGINAL_CALC_TOTAL',\r\n 'Total calculatie originala'\r\n )}\r\n :\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_ALT_CALC_TOTAL',\r\n 'Total calculatie alternativa'\r\n )}\r\n :\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_CALC_ECONOMY',\r\n 'Economisire calculatie'\r\n )}\r\n :\r\n
\r\n
\r\n
\r\n
\r\n {this.displayValueWithCurrency(\r\n Math.round(\r\n this.state.caseCalculationHistoryDetails.amountWithoutTVA * 100\r\n ) / 100\r\n )}\r\n
\r\n
\r\n {this.displayValueWithCurrency(this.state.totalAlternativeCalculation)}\r\n
\r\n = 0\r\n ? 'success'\r\n : 'danger'\r\n }`}\r\n >\r\n {isNaN(\r\n parseInt(\r\n (\r\n (this.state.totalAlternativeCalculation /\r\n this.state.caseCalculationHistoryDetails.amountWithoutTVA -\r\n 1) *\r\n 100 *\r\n -1\r\n ).toFixed(2)\r\n )\r\n )\r\n ? 0.0\r\n : (\r\n (this.state.totalAlternativeCalculation /\r\n this.state.caseCalculationHistoryDetails.amountWithoutTVA -\r\n 1) *\r\n 100 *\r\n -1\r\n ).toFixed(2)}\r\n %\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_SMALL_PIECES_ORIGINAL',\r\n 'Piese mici originala'\r\n )}\r\n :\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_SMALL_PIECES',\r\n 'Piese mici alternativa'\r\n )}\r\n :\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_ORIGINAL_CALC_PARTS_TOTAL',\r\n 'Total piese calculatie originala'\r\n )}\r\n :\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_ALT_CALC_PARTS_TOTAL',\r\n 'Total piese calculatie alternativa'\r\n )}\r\n :\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_CALC_PARTS_ECONOMY',\r\n 'Economisire piese'\r\n )}\r\n :\r\n
\r\n
\r\n
\r\n
\r\n {this.displayValueWithCurrency(\r\n this.state.caseCalculationHistoryDetails.smallPartsValue\r\n )}\r\n
\r\n
\r\n {this.displayValueWithCurrency(\r\n this.state.totalAlternativeCalculationSmallParts\r\n )}\r\n
\r\n
\r\n {this.displayValueWithCurrency(\r\n this.state.caseCalculationHistoryDetails.amountPiecesWithDiscount\r\n )}\r\n
\r\n
\r\n {this.displayValueWithCurrency(\r\n this.state.totalPartsAlternativeCalculation\r\n )}\r\n
\r\n = 0\r\n ? 'success'\r\n : 'danger'\r\n }`}\r\n >\r\n {isNaN(\r\n parseInt(\r\n (\r\n (this.state.totalPartsAlternativeCalculation /\r\n this.state.caseCalculationHistoryDetails\r\n .amountPiecesWithDiscount -\r\n 1) *\r\n 100 *\r\n -1\r\n ).toFixed(2)\r\n )\r\n )\r\n ? 0.0\r\n : (\r\n (this.state.totalPartsAlternativeCalculation /\r\n this.state.caseCalculationHistoryDetails\r\n .amountPiecesWithDiscount -\r\n 1) *\r\n 100 *\r\n -1\r\n ).toFixed(2)}\r\n %\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n ) : null}\r\n
\r\n );\r\n };\r\n\r\n getPackageFromCalculationParts = (calculationParts: CaseCalculationPart[]) => {\r\n const newcalculationParts = [];\r\n for (let i = 0; i < calculationParts.length; i++) {\r\n if (calculationParts[i].package && calculationParts[i].package.length) {\r\n for (let j = 0; j < calculationParts[i].package.length; j++) {\r\n newcalculationParts.push({\r\n ...calculationParts[i].package[j],\r\n availableQuantity: calculationParts[i].availableQuantity,\r\n }); \r\n }\r\n }\r\n }\r\n return newcalculationParts;\r\n };\r\n\r\n updateAmount = (calculationParts: CaseCalculationPart[]) => {\r\n const originalCalculationPartsList = new CalculationParts(\r\n this.state.calculationSectionList,\r\n calculationParts,\r\n parseInt(this.state.TVA),\r\n this.state.caseCalculationHistoryDetails.smallPartsPercent,\r\n true\r\n );\r\n\r\n const alternativeCalculationPartsList = new CalculationParts(\r\n this.state.calculationSectionList,\r\n calculationParts.concat(this.getPackageFromCalculationParts(calculationParts)),\r\n parseInt(this.state.TVA),\r\n this.state.caseCalculationHistoryDetails.smallPartsPercent,\r\n false\r\n );\r\n\r\n this.setState({\r\n caseCalculationHistoryDetails: {\r\n ...this.state.caseCalculationHistoryDetails,\r\n amountPieces: originalCalculationPartsList.GetAmountPieceTotal(),\r\n amountLabor: originalCalculationPartsList.GetAmountPart(CalculationSectionCodeEnum.LABOR),\r\n amountPaintingMaterials: originalCalculationPartsList.GetAmountPart(\r\n CalculationSectionCodeEnum.PAINT\r\n ),\r\n amountPaintingLabor: originalCalculationPartsList.GetAmountPart(\r\n CalculationSectionCodeEnum.PAINT_LABOR\r\n ),\r\n amountPiecesWithDiscount: originalCalculationPartsList.GetAmountPartWithDiscount(\r\n CalculationSectionCodeEnum.PART\r\n ),\r\n amountLaborWithDiscount: originalCalculationPartsList.GetAmountPartWithDiscount(\r\n CalculationSectionCodeEnum.LABOR\r\n ),\r\n amountPaintingMaterialsWithDiscount: originalCalculationPartsList.GetAmountPartWithDiscount(\r\n CalculationSectionCodeEnum.PAINT\r\n ),\r\n amountPaintingLaborWithDiscount: originalCalculationPartsList.GetAmountPartWithDiscount(\r\n CalculationSectionCodeEnum.PAINT_LABOR\r\n ),\r\n amountDiscount: originalCalculationPartsList.TotalDiscount(),\r\n amountWithoutTVA: originalCalculationPartsList.TotalWithoutVAT(),\r\n amountTVA: originalCalculationPartsList.TotalVAT(),\r\n amount: originalCalculationPartsList.Total()\r\n },\r\n totalAlternativeCalculation: alternativeCalculationPartsList.TotalWithoutVAT(),\r\n totalPartsAlternativeCalculation: alternativeCalculationPartsList.GetAmountPartWithDiscount(\r\n CalculationSectionCodeEnum.PART\r\n ),\r\n totalAlternativeCalculationSmallParts: alternativeCalculationPartsList.GetSmallPartsValue()\r\n });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.appuserService = (this.context as AppContext).appUserService;\r\n\r\n return (\r\n \r\n {this.renderSection1()}\r\n \r\n \r\n this.updateAmount(calculationParts)\r\n }\r\n defaultMaxDeliveryTime={\r\n R.isNil(this.state.workflowCalculation) ||\r\n R.isNil(this.state.workflowCalculation.defaultMaxDeliveryTime)\r\n ? 0\r\n : this.state.workflowCalculation.defaultMaxDeliveryTime\r\n }\r\n optmizationType={this.state.setOptimizationType}\r\n resetOptimizatonType={() => this.setState({ setOptimizationType: 0 })}\r\n onSave={this.closeDialog}\r\n orderList={this.props.orderList}\r\n manipulationTariff={this.props.manipulationTariff}\r\n insurerList={this.props.insurerList}\r\n serviceId={this.props.serviceId}\r\n additionTariff={this.props.additionTariff}\r\n discountTariff={this.props.discountTariff}\r\n packageCalculationId={this.props.packageCalculationId}\r\n nonStockSuppliers={this.props.nonStockSuppliers}\r\n />\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState, ownProps: ExternalCaseDetailsAlternativeCalculationDetailsProps) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(CaseDetailsAlternativeCalculationDetails as any));\r\n","export default __webpack_public_path__ + \"static/media/car-image-not-available.5188514e.jpg\";","import React, { useContext } from 'react';\r\nimport {\r\n Card,\r\n CardActionArea,\r\n CardMedia,\r\n CardContent,\r\n Typography,\r\n CardActions,\r\n Button\r\n} from '@material-ui/core';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport ImageNotAvailable from '../../assets/images/car-image-not-available.jpg';\r\n\r\ninterface Props {\r\n option: IReferential;\r\n fieldName: string;\r\n onChange: (fieldName: string) => (event: any, option: IReferential) => void;\r\n}\r\n\r\nconst CarCard: React.FC = ({ option, fieldName, onChange }) => {\r\n const context = useContext(ApplicationContext);\r\n const translatorService = context.translatorService;\r\n\r\n const checkIfImageExists = (url: string) => {\r\n if (url.includes('undefined') || url.includes('null')) {\r\n return ImageNotAvailable;\r\n }\r\n\r\n return url;\r\n };\r\n\r\n return (\r\n <>\r\n {option.extraData && (\r\n \r\n \r\n {option.extraData && (\r\n \r\n {option.extraData?.manufacturer} {option.extraData?.model}\r\n \r\n )}\r\n\r\n {option.extraData?.minPrice &&\r\n option.extraData?.maxPrice &&\r\n option.extraData?.currency && (\r\n \r\n {option.extraData?.minPrice} {option.extraData?.currency === 'EUR' ? '€' : ''} -{' '}\r\n {''}\r\n {option.extraData?.maxPrice} {option.extraData?.currency === 'EUR' ? '€' : ''}\r\n {''} {translatorService.Tranlate('GROSS_VALUE', 'brut')}\r\n \r\n )}\r\n \r\n {option.extraData?.generation && option.extraData?.modelYear && (\r\n \r\n {translatorService.Tranlate('GENERATION', 'Generatia')}{' '}\r\n {option.extraData?.generation} -{''}\r\n {option.extraData?.modelYear}\r\n \r\n )}\r\n {option.extraData?.body && option.extraData?.doorsNo && (\r\n \r\n {option.extraData?.body} - {option.extraData?.doorsNo}{' '}\r\n {translatorService.Tranlate('DOORS', 'usi')}\r\n \r\n )}\r\n \r\n \r\n {\r\n onChange(fieldName)(null, option);\r\n }}\r\n >\r\n {translatorService.Tranlate('SELECT_CAR_BUTTON', 'Selecteaza')}\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default CarCard;\r\n","import React, { memo, useEffect, useState } from 'react';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\nimport { ExternalCaseDetailsValuationWizardComponentProps } from './ExternalCaseDetailsValuationWizardComponentProps';\r\nimport Stepper from '@material-ui/core/Stepper';\r\nimport Step from '@material-ui/core/Step';\r\nimport StepButton from '@material-ui/core/StepButton';\r\nimport { Box } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { useContext } from 'react';\r\nimport { StepLabel, TextField } from '@material-ui/core';\r\nimport CarCard from '../../evaluation/CarCard';\r\nimport { first, random } from 'lodash';\r\nimport Loader from '../../Loader';\r\nimport { MuiPickersUtilsProvider, DatePicker } from '@material-ui/pickers';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { useAppSelector } from '../../../store/configureStore';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: '100%'\r\n },\r\n instructions: {\r\n marginTop: theme.spacing(5),\r\n marginBottom: theme.spacing(7)\r\n }\r\n}));\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\nconst renderAutocomplete = (\r\n options: any,\r\n value: any,\r\n label: string,\r\n fieldName: string,\r\n step: number,\r\n onChange: (fieldName: string) => (e: any, newValue?: IReferential | null | undefined) => void,\r\n showNoDataMessage?: boolean,\r\n translatorService?: any,\r\n language?: string,\r\n firstRegistrationDate?: Date | null,\r\n onDateChange?: (date: Date | null) => void,\r\n isFromValuationModule?: boolean\r\n) => {\r\n const handleDateChange = (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n if (onDateChange) {\r\n const selectedDate = date ? new Date(date.format('YYYY-MM-DD')) : null;\r\n\r\n onDateChange(selectedDate);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <>\r\n \r\n {step === 0 && (\r\n \r\n \r\n \r\n )}\r\n\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n {options.length !== 0 ? (\r\n (step === 1 || step === 2 || step === 3) && (\r\n \r\n {true &&\r\n options.map((option: IReferential) => (\r\n \r\n ))}\r\n \r\n )\r\n ) : showNoDataMessage ? (\r\n \r\n \r\n {translatorService.Tranlate(\r\n 'CAR_MANUAL_IDENTIFICATION_NO_DATA_AVAILABLE',\r\n 'Nu există date disponibile! Vă rugăm să verificați dacă pașii anteriori au fost completați cu succes!'\r\n )}\r\n \r\n \r\n ) : (\r\n step <= 3 && (\r\n
\r\n \r\n
\r\n )\r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nconst ValuationFiltersWizardComponent = memo(\r\n ({\r\n steps,\r\n activeStep,\r\n handleStep,\r\n onChange,\r\n state,\r\n makeList,\r\n models,\r\n bodyTypesList,\r\n generationTypesList,\r\n fuelTypes,\r\n powerTypes,\r\n transmissionTypes,\r\n tractionTypes,\r\n firstRegistrationDate,\r\n onChangeFirstRegistrationDate,\r\n isFromValuationModule\r\n }) => {\r\n const classes = useStyles();\r\n const context = useContext(ApplicationContext);\r\n const translatorService = context.translatorService;\r\n const [showNoDataMessage, setShowNoDataMessage] = useState(false);\r\n const language = useAppSelector((state) => state.app?.language);\r\n const [firstRegistrationDateLocal, setFirstRegistrationDate] = useState(\r\n firstRegistrationDate\r\n );\r\n\r\n useEffect(() => {\r\n setShowNoDataMessage(false);\r\n const timer = setTimeout(() => {\r\n setShowNoDataMessage(true);\r\n }, 3000);\r\n\r\n return () => clearTimeout(timer);\r\n }, [activeStep]);\r\n\r\n const onDateChange = (date: Date | null) => {\r\n setFirstRegistrationDate(date);\r\n };\r\n\r\n useEffect(() => {\r\n if (firstRegistrationDateLocal && onChangeFirstRegistrationDate) {\r\n onChangeFirstRegistrationDate(firstRegistrationDateLocal);\r\n }\r\n }, [firstRegistrationDateLocal]);\r\n\r\n const getStepContent = (step: number) => {\r\n switch (step) {\r\n case 0:\r\n return renderAutocomplete(\r\n makeList,\r\n state.brand,\r\n translatorService.Tranlate('CAR_DETAILS_BRAND', 'Marca'),\r\n 'brand',\r\n step,\r\n onChange([\r\n 'model',\r\n 'body',\r\n 'generation',\r\n 'fuelType',\r\n 'powerType',\r\n 'transmissionType',\r\n 'tractionType'\r\n ]),\r\n showNoDataMessage,\r\n translatorService,\r\n language,\r\n firstRegistrationDateLocal,\r\n onDateChange,\r\n isFromValuationModule\r\n );\r\n case 1:\r\n return renderAutocomplete(\r\n models,\r\n state.model,\r\n translatorService.Tranlate('CAR_DETAILS_MODEL', 'Model'),\r\n 'model',\r\n step,\r\n onChange([\r\n 'body',\r\n 'generation',\r\n 'fuelType',\r\n 'powerType',\r\n 'transmissionType',\r\n 'tractionType'\r\n ]),\r\n showNoDataMessage,\r\n translatorService\r\n );\r\n case 2:\r\n return renderAutocomplete(\r\n bodyTypesList,\r\n state.body,\r\n translatorService.Tranlate('CAR_DETAILS_BODY_TYPE', 'Caroserie'),\r\n 'body',\r\n step,\r\n onChange(['generation', 'fuelType', 'powerType', 'transmissionType', 'tractionType']),\r\n showNoDataMessage,\r\n translatorService\r\n );\r\n\r\n case 3:\r\n return renderAutocomplete(\r\n generationTypesList,\r\n state.generation,\r\n translatorService.Tranlate('WIZARD_GENERATION', 'Generatie'),\r\n 'generation',\r\n step,\r\n onChange(['fuelType', 'powerType', 'transmissionType', 'tractionType']),\r\n showNoDataMessage,\r\n translatorService\r\n );\r\n\r\n case 4:\r\n return renderAutocomplete(\r\n fuelTypes,\r\n state.fuelType,\r\n translatorService.Tranlate('WIZARD_FUEL', 'Combustibil'),\r\n 'fuelType',\r\n step,\r\n onChange(['powerType', 'transmissionType', 'tractionType'])\r\n );\r\n case 5:\r\n return renderAutocomplete(\r\n powerTypes,\r\n state.powerType,\r\n translatorService.Tranlate('WIZARD_POWER', 'Putere'),\r\n 'powerType',\r\n step,\r\n onChange(['transmissionType', 'tractionType'])\r\n );\r\n case 6:\r\n return renderAutocomplete(\r\n transmissionTypes,\r\n state.transmissionType,\r\n translatorService.Tranlate('WIZARD_FUEL_TRANSMISSION_TYPE', 'Transmisie'),\r\n 'transmissionType',\r\n step,\r\n onChange(['tractionType'])\r\n );\r\n case 7:\r\n return renderAutocomplete(\r\n tractionTypes,\r\n state.tractionType,\r\n translatorService.Tranlate('WIZARD_TRACTION_TYPE', 'Tractiune'),\r\n 'tractionType',\r\n step,\r\n onChange()\r\n );\r\n default:\r\n return 'Unknown step';\r\n }\r\n };\r\n\r\n //useEffect(() => {\r\n\r\n // if (!R.isNil(state.brand)) {\r\n // console.log('state.brand' + state.brand.displayName);\r\n // stepsLabel[0] = state.brand.displayName as string;\r\n // }\r\n //}, [state.brand])\r\n\r\n //useEffect(() => {\r\n // if (!R.isNil(state.model)) {\r\n // stepsLabel[1] = state.model.displayName as string;\r\n // }\r\n //}, [state.model])\r\n\r\n const getTextContent = (step: number) => {\r\n switch (step) {\r\n case 0:\r\n return state.brand?.displayName;\r\n case 1:\r\n return state.model?.displayName;\r\n case 2:\r\n return state.body?.displayName;\r\n case 3:\r\n return `${state.generation?.extraData?.generation} (${state.generation?.extraData?.modelYear})`;\r\n case 4:\r\n return state.fuelType?.displayName;\r\n case 5:\r\n return state.powerType?.displayName;\r\n case 6:\r\n return state.transmissionType?.displayName;\r\n case 7:\r\n return state.tractionType?.displayName;\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n {steps.map((label, index) => {\r\n const labelProps: { optional?: React.ReactNode } = {};\r\n if (index < activeStep) {\r\n labelProps.optional = (\r\n {getTextContent(index)}\r\n );\r\n }\r\n return (\r\n \r\n handleStep(index)} {...labelProps}>\r\n {label}\r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n {activeStep === steps.length ? (\r\n
\r\n {/* All steps completed\r\n */}\r\n
\r\n ) : (\r\n
\r\n \r\n {getStepContent(activeStep)}\r\n \r\n
\r\n )}\r\n
\r\n
\r\n );\r\n }\r\n);\r\n\r\nexport default ValuationFiltersWizardComponent;\r\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, CaseSettingsActionCreators } from '../../../store';\r\nimport { withSnackbar } from 'notistack';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\nimport { ExternalCaseDetailsValuationWizardContainerProps } from './ExternalCaseDetailsValuationWizardContainerProps';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { useContext } from 'react';\r\nimport * as R from 'ramda';\r\nimport { ICaseService } from '../../../services/Interfaces/ICaseService';\r\nimport { VehicleInfo } from './VehicleInfo';\r\nimport { RefConstants } from '../../../helpers/Constants';\r\nimport ValuationFiltersWizardComponent from './ValuationFiltersWizardComponent';\r\nimport { ValuationVehicle } from '../../../interfaces/Case';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { on } from 'process';\r\n\r\nconst initialVehicleInfo: VehicleInfo = {\r\n brand: null,\r\n model: null,\r\n body: null,\r\n generation: null,\r\n fuelType: null,\r\n powerType: null,\r\n transmissionType: null,\r\n tractionType: null\r\n};\r\n\r\nconst ValuationFiltersWizardContainer: React.FC =\r\n ({\r\n brandTypes,\r\n modelTypes,\r\n bodyTypes,\r\n fuelTypes,\r\n tractionTypes,\r\n transmissionTypes,\r\n firstRegistrationDate,\r\n onWizardCallback,\r\n onFilterChanged,\r\n onShowCarList,\r\n onChangeFirstRegistrationDate,\r\n isFromValuationModule\r\n }) => {\r\n const [activeStep, setActiveStep] = useState(0);\r\n const context = useContext(ApplicationContext);\r\n const translatorService = context.translatorService;\r\n const referentialService = context.referentialService;\r\n const caseService = context.caseService;\r\n const [state, setVehicleInfo] = useState(initialVehicleInfo);\r\n const [filteredBodyTypes, setFilteredBodyTypes] = useState([]);\r\n const [generationTypes, setGenerationTypes] = useState([]);\r\n const [filteredModels, setFilteredModels] = useState([]);\r\n const [filteredFuelTypes, setFilteredFuelTypes] = useState([]);\r\n const [filteredPowerTypes, setFilteredPowerTypes] = useState([]);\r\n const [filteredVehicles, setFilteredVehicles] = useState([]);\r\n const [filteredTractionTypes, setFilteredTractionTypes] = useState([]);\r\n const [filteredTransmissionTypes, setFilteredTransmissionTypes] = useState([]);\r\n const [localMakeList, setLocalMakeList] = useState([]);\r\n const [localBodyTypes, setLocalBodyTypes] = useState([]);\r\n const [localModels, setLocalModels] = useState([]);\r\n const [localfuelTypes, setLocalfuelTypes] = useState([]);\r\n const [localTractionTypes, setLocalTractionTypes] = useState(\r\n []\r\n );\r\n const [localTransmissionTypes, setLocalTransmissionTypes] = useState<\r\n IReferential[] | null | undefined\r\n >([]);\r\n const isFirstRender = useRef(true);\r\n const {\r\n vehicleMakeRef,\r\n bodyTypeRef,\r\n modelRef,\r\n fuelTypeRef,\r\n tractionTypeRef,\r\n transmissionTypeRef\r\n } = RefConstants;\r\n\r\n const loadMakeList = async () => await referentialService.Get(vehicleMakeRef?.baseUrl);\r\n const loadBodytypeList = async () => await referentialService.Get(bodyTypeRef?.baseUrl);\r\n const loadModelList = async () => await referentialService.Get(modelRef?.baseUrl);\r\n const loadFuelTypesList = async () => await referentialService.Get(fuelTypeRef?.baseUrl);\r\n const localTractionTypesList = async () =>\r\n await referentialService.Get(tractionTypeRef?.baseUrl);\r\n const localTransmissionTypesList = async () =>\r\n await referentialService.Get(transmissionTypeRef?.baseUrl);\r\n\r\n useEffect(() => {\r\n if (onShowCarList) {\r\n if (activeStep >= 4) {\r\n onShowCarList(true);\r\n } else {\r\n onShowCarList(false);\r\n }\r\n }\r\n }, [activeStep, onShowCarList]);\r\n\r\n useEffect(() => {\r\n const loadData = async () => {\r\n const [a, b, c, d, e, f] = await Promise.all([\r\n R.isNil(brandTypes) ? await loadMakeList() : brandTypes,\r\n R.isNil(bodyTypes) ? await loadBodytypeList() : bodyTypes,\r\n R.isNil(modelTypes) ? await loadModelList() : modelTypes,\r\n R.isNil(fuelTypes) ? await loadFuelTypesList() : fuelTypes,\r\n R.isNil(tractionTypes) ? await localTractionTypesList() : tractionTypes,\r\n R.isNil(transmissionTypes) ? await localTransmissionTypesList() : transmissionTypes\r\n ]);\r\n\r\n setLocalMakeList(a);\r\n setLocalBodyTypes(b);\r\n setLocalModels(c);\r\n setLocalfuelTypes(d);\r\n setLocalTractionTypes(e);\r\n setLocalTransmissionTypes(f);\r\n };\r\n\r\n loadData();\r\n }, []);\r\n\r\n const getSteps = () => [\r\n translatorService.Tranlate('WIZARD_BRAND', 'Producator'),\r\n translatorService.Tranlate('WIZARD_MODEL', 'Model'),\r\n translatorService.Tranlate('WIZARD_BODY_TYPE', 'Caroserie'),\r\n translatorService.Tranlate('GENERATION_TYPE', 'Generatie'),\r\n translatorService.Tranlate('WIZARD_FUEL', 'Combustibil'),\r\n translatorService.Tranlate('WIZARD_POWER', 'Putere'),\r\n translatorService.Tranlate('WIZARD_FUEL_TRANSMISSION', 'Transmisie'),\r\n translatorService.Tranlate('WIZARD_TRACTION_TYPE', 'Tractiune')\r\n ];\r\n\r\n const filterVehicles = (): ValuationVehicle[] => {\r\n let vehiclesResult: ValuationVehicle[] = filteredVehicles;\r\n\r\n if (!isNullOrUndefined(state.fuelType)) {\r\n const enFuelTranslation = state.fuelType.translations?.find((t) => t.language === 'en');\r\n if (enFuelTranslation) {\r\n vehiclesResult = vehiclesResult.filter((v) => v.fuelType === enFuelTranslation.name);\r\n }\r\n }\r\n\r\n if (!isNullOrUndefined(state.powerType)) {\r\n vehiclesResult = vehiclesResult.filter((v) => v.kw.toString() === state.powerType?.code);\r\n }\r\n\r\n if (!isNullOrUndefined(state.transmissionType)) {\r\n vehiclesResult = vehiclesResult.filter(\r\n (v) => v.transmission === state.transmissionType?.code\r\n );\r\n }\r\n\r\n if (!isNullOrUndefined(state.tractionType)) {\r\n vehiclesResult = vehiclesResult.filter((v) => v.drivenWheels === state.tractionType?.code);\r\n }\r\n\r\n onFilterChanged(vehiclesResult);\r\n\r\n return vehiclesResult;\r\n };\r\n\r\n const steps = getSteps();\r\n\r\n const onChange =\r\n (toNullProperties?: string[]) =>\r\n (fieldName: string) =>\r\n (e: any, newValue?: IReferential | null) => {\r\n let newState = {} as VehicleInfo;\r\n newState = { ...state, [fieldName]: newValue };\r\n\r\n toNullProperties?.forEach((element) => {\r\n newState = { ...newState, [element]: null };\r\n });\r\n\r\n if (isNullOrUndefined(newValue)) {\r\n // stay on current step if the value is cleared\r\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\r\n }\r\n\r\n // if the selected value is the same as the previous one, force the state update to trigger the useEffect\r\n if (state[fieldName]?.code === newValue?.code) {\r\n setVehicleInfo({ ...state, [fieldName]: null });\r\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\r\n setTimeout(() => {\r\n setVehicleInfo(newState);\r\n }, 0);\r\n } else {\r\n setVehicleInfo(newState);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (isFirstRender.current) {\r\n isFirstRender.current = false; // toggle flag after first render/mounting\r\n return;\r\n }\r\n\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n }, [state]);\r\n\r\n const checkIfIsValidDate = (date: Date | null) => {\r\n const registrationTimestamp = date!.getTime();\r\n\r\n if (isNaN(registrationTimestamp)) {\r\n return null;\r\n }\r\n\r\n return date;\r\n };\r\n\r\n useEffect(() => {\r\n if (!R.isNil(state.brand)) {\r\n const fetchValuationModels = async (\r\n caseService: ICaseService,\r\n state: VehicleInfo,\r\n firstRegistrationDate: Date | null\r\n ) => {\r\n setFilteredModels([]);\r\n\r\n const valuationModels = await caseService.GetValuationModels(\r\n state.brand?.code,\r\n checkIfIsValidDate(firstRegistrationDate)\r\n );\r\n\r\n const newModels = R.innerJoin(\r\n (stateModel, valuationModel) =>\r\n stateModel.code === valuationModel.model &&\r\n stateModel.dependencyId === state.brand?.id,\r\n localModels!,\r\n valuationModels\r\n );\r\n\r\n newModels.forEach((model) => {\r\n const valuationModel = valuationModels.find(\r\n (valModel) => valModel.model === model.code\r\n );\r\n if (valuationModel) {\r\n model.extraData = valuationModel;\r\n }\r\n });\r\n\r\n newModels.sort((a, b) => (a.displayName > b.displayName ? 1 : -1));\r\n\r\n setFilteredModels(newModels);\r\n if (newModels.length === 1) {\r\n setVehicleInfo({ ...state, model: newModels[0] });\r\n }\r\n };\r\n fetchValuationModels(caseService, state, firstRegistrationDate);\r\n }\r\n }, [state.brand]);\r\n\r\n useEffect(() => {\r\n if (!R.isNil(state.model) && !R.isNil(state.brand)) {\r\n const fetchValuationBodies = async (\r\n caseService: ICaseService,\r\n state: VehicleInfo,\r\n firstRegistrationDate: Date | null\r\n ) => {\r\n setFilteredBodyTypes([]);\r\n const valuationBodies = await caseService.GetValuationBodies(\r\n state.brand?.code,\r\n state.model?.code,\r\n checkIfIsValidDate(firstRegistrationDate)\r\n );\r\n\r\n const newBodyTypes = R.innerJoin(\r\n (stateBody, valuationBody) => {\r\n const enBodyTranslation = stateBody.translations?.find((t) => t.language === 'en');\r\n if (!enBodyTranslation) return false;\r\n\r\n return enBodyTranslation.name === valuationBody.body;\r\n },\r\n localBodyTypes!,\r\n valuationBodies\r\n );\r\n\r\n newBodyTypes.forEach((bodyType) => {\r\n const enBodyTranslation = bodyType.translations?.find((t) => t.language === 'en');\r\n const valuationBody = valuationBodies.find(\r\n (valBody) => valBody.body === enBodyTranslation?.name\r\n );\r\n if (valuationBody) {\r\n bodyType.extraData = valuationBody;\r\n }\r\n });\r\n\r\n setFilteredBodyTypes(newBodyTypes);\r\n\r\n if (newBodyTypes.length === 1) {\r\n setVehicleInfo({ ...state, body: newBodyTypes[0] });\r\n }\r\n };\r\n fetchValuationBodies(caseService, state, firstRegistrationDate);\r\n }\r\n }, [state.model]);\r\n\r\n useEffect(() => {\r\n if (!R.isNil(state.model) && !R.isNil(state.brand)) {\r\n const fetchValuationGeneration = async (\r\n caseService: ICaseService,\r\n state: VehicleInfo,\r\n firstRegistrationDate: Date | null\r\n ) => {\r\n setGenerationTypes([]);\r\n const enBodyTranslation = state.body?.translations?.find((t) => t.language === 'en');\r\n\r\n if (!enBodyTranslation?.name || !state.body?.extraData?.doorsNo) return;\r\n\r\n const generationValuation = await caseService.GetValuationGenerations(\r\n state.brand?.code,\r\n state.model?.code,\r\n enBodyTranslation?.name,\r\n state.body?.extraData?.doorsNo,\r\n checkIfIsValidDate(firstRegistrationDate)\r\n );\r\n\r\n const newGenerationType = R.innerJoin(\r\n (stateBody, generationBody) => {\r\n const enTranslation = stateBody.translations?.find((t) => t.language === 'en');\r\n if (!enTranslation) return false;\r\n return enTranslation.name === generationBody.body;\r\n },\r\n localBodyTypes!,\r\n generationValuation\r\n );\r\n\r\n newGenerationType.forEach((generationType) => {\r\n const enTranslation = generationType.translations?.find((t) => t.language === 'en');\r\n const valuationBody = generationValuation.find(\r\n (valGen) => valGen.body === enTranslation?.name\r\n );\r\n if (valuationBody) {\r\n generationType.extraData = valuationBody;\r\n }\r\n });\r\n\r\n const updatedGenerationType = generationValuation.map((generation, index) => {\r\n const data = { ...newGenerationType[0] };\r\n\r\n data.extraData = { ...generation };\r\n data.displayName = `${generation.generation} (${generation.modelYear})`;\r\n\r\n return data;\r\n });\r\n\r\n setGenerationTypes(updatedGenerationType);\r\n\r\n if (updatedGenerationType.length === 1) {\r\n setVehicleInfo({ ...state, generation: updatedGenerationType[0] });\r\n }\r\n };\r\n fetchValuationGeneration(caseService, state, firstRegistrationDate);\r\n }\r\n }, [state.body]);\r\n\r\n useEffect(() => {\r\n if (\r\n !R.isNil(state.generation) &&\r\n !R.isNil(state.model) &&\r\n !R.isNil(state.brand) &&\r\n !R.isNil(state.body)\r\n ) {\r\n const onWizardCallbackWrapper = async () => {\r\n const enBodyTranslation = state.body?.translations?.find((t) => t.language === 'en');\r\n const resultVehicles = await onWizardCallback(\r\n state?.brand?.code || '',\r\n state?.model?.code || '',\r\n enBodyTranslation?.name || '',\r\n checkIfIsValidDate(firstRegistrationDate),\r\n state?.generation?.extraData?.generation\r\n );\r\n const newFuelTypes = R.innerJoin(\r\n (stateFuelType, vehicle) => {\r\n const enFuelTranslation = stateFuelType.translations?.find(\r\n (t) => t.language === 'en'\r\n );\r\n if (!enFuelTranslation) return false;\r\n\r\n return enFuelTranslation.name === vehicle.fuelType;\r\n },\r\n localfuelTypes!,\r\n resultVehicles\r\n );\r\n\r\n newFuelTypes.sort((a, b) => (a.displayName > b.displayName ? 1 : -1));\r\n\r\n setFilteredFuelTypes(newFuelTypes);\r\n setFilteredVehicles(resultVehicles);\r\n };\r\n onWizardCallbackWrapper();\r\n }\r\n }, [state.generation]);\r\n\r\n useEffect(() => {\r\n if (!R.isNil(state.fuelType)) {\r\n const data = filterVehicles();\r\n\r\n const newPowerTypes = data\r\n .map((x) => x.kw)\r\n .filter((x, i, a) => a.indexOf(x) === i)\r\n .map((x) => {\r\n return {\r\n id: x,\r\n code: x.toString(),\r\n isActive: true,\r\n displayName: x.toString()\r\n } as IReferential;\r\n })\r\n .sort((a, b) => parseInt(a.displayName) - parseInt(b.displayName));\r\n\r\n const newTransmissionTypes = data\r\n .map((x) => x.transmission)\r\n .filter((x, i, a) => a.indexOf(x) === i)\r\n .map((x) => {\r\n return { id: 0, code: x, isActive: true, displayName: x } as IReferential;\r\n })\r\n .sort((a, b) => a.displayName.localeCompare(b.displayName));\r\n\r\n const newTractionTypes = data\r\n .map((x) => x.drivenWheels)\r\n .filter((x, i, a) => a.indexOf(x) === i)\r\n .map((x) => {\r\n return { id: 0, code: x, isActive: true, displayName: x } as IReferential;\r\n })\r\n .sort((a, b) => a.displayName.localeCompare(b.displayName));\r\n\r\n setFilteredPowerTypes(newPowerTypes);\r\n setFilteredTransmissionTypes(newTransmissionTypes);\r\n setFilteredTractionTypes(newTractionTypes);\r\n }\r\n }, [state.fuelType, state.powerType, state.transmissionType, state.tractionType]);\r\n\r\n const handleStep = useCallback(\r\n (step: number) => {\r\n setActiveStep(step);\r\n },\r\n [setActiveStep]\r\n );\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\nexport default connect(\r\n (state: ApplicationState, ownProps: ExternalCaseDetailsValuationWizardContainerProps) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle,\r\n ...ownProps\r\n }),\r\n CaseSettingsActionCreators\r\n)(withSnackbar(ValuationFiltersWizardContainer as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n VehicleState\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Button,\r\n Grid,\r\n Card,\r\n CardContent,\r\n FormControlLabel,\r\n Switch,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { WorkflowCalculation } from '../../interfaces/Workflow';\r\nimport {\r\n ValuationExtraOption,\r\n ValuationRequest,\r\n ValuationVehicle,\r\n ValuationVehicleOptions,\r\n ValuationVehicles\r\n} from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport MUIDataTable, { MUIDataTableColumnOptions, SelectableRows } from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport { Label } from 'reactstrap';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport NumberFormat from 'react-number-format';\r\nimport { VehicleHelper } from '../../helpers/VehicleHelper';\r\nimport * as R from 'ramda';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport ValuationFiltersWizardContainer from './ValuationFiltersWizard/ValuationFiltersWizardContainer';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport { ParametreCode } from '../../helpers/Constants';\r\nimport { CaseTypeCode } from '../../helpers/Constants';\r\nimport Loader from '../Loader';\r\nimport { VehicleOption } from '../../interfaces/Vehicle';\r\n\r\ntype ParsedConditions = {\r\n mandatory: number[];\r\n atLeastOne: number[];\r\n};\r\n\r\ninterface ICaseDetailsValuationState {\r\n vehicles: ValuationVehicle[];\r\n isLoading: boolean;\r\n viewOptions: boolean;\r\n selectedVehicle: ValuationVehicle | null;\r\n options: ValuationVehicleOptions | null;\r\n optionCodes: string[];\r\n optionsValue: number;\r\n selectedOptionIndexes: number[];\r\n excludedOptionsIndexes: number[];\r\n includedOptionsIndexes: number[];\r\n requiredOptionsIndexes: number[];\r\n showOtionalRequiredOptions: boolean;\r\n optinalRequiredOptionsIndexes: number[];\r\n isloadingIncludeExcludeOptions: boolean;\r\n tireWear: number;\r\n bodyDamage: number;\r\n hasGpl: boolean;\r\n valuationLoading: boolean;\r\n showWizard: boolean;\r\n hideVehicleSelection: boolean;\r\n showCarTable: boolean;\r\n}\r\n\r\nexport interface ExternalCaseDetailsValuationProps {\r\n workflowFlowCalculation: WorkflowCalculation | null;\r\n vin: string | null;\r\n firstRegistrationDate: Date | null;\r\n onSelectedVehicle?: (selectedVehicle: any, options: string[]) => void;\r\n valuationVehicles?: ValuationVehicle[];\r\n optionCodes?: string[] | null;\r\n brandTypes?: IReferential[];\r\n modelTypes?: IReferential[];\r\n bodyTypes?: IReferential[];\r\n fuelTypes?: IReferential[];\r\n tractionTypes?: IReferential[];\r\n transmissionTypes?: IReferential[];\r\n onChangeFirstRegistrationDate?: (date: Date | null) => void;\r\n}\r\n\r\ntype ICCaseDetailsValuationProps = ExternalCaseDetailsValuationProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n} & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string; calcId: string | undefined; formId: string | undefined }>;\r\n\r\nclass CaseDetailsValuation extends React.PureComponent<\r\n ICCaseDetailsValuationProps,\r\n ICaseDetailsValuationState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n isLoading: true,\r\n vehicles: [],\r\n viewOptions: false,\r\n selectedVehicle: null,\r\n options: null,\r\n optionCodes: [],\r\n optionsValue: 0,\r\n selectedOptionIndexes: [],\r\n excludedOptionsIndexes: [],\r\n includedOptionsIndexes: [],\r\n requiredOptionsIndexes: [],\r\n showOtionalRequiredOptions: false,\r\n optinalRequiredOptionsIndexes: [],\r\n isloadingIncludeExcludeOptions: false,\r\n tireWear: 0,\r\n bodyDamage: 0,\r\n hasGpl: false,\r\n valuationLoading: false,\r\n showWizard: false,\r\n hideVehicleSelection: true,\r\n showCarTable: false\r\n } as ICaseDetailsValuationState;\r\n\r\n public async componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n await this.loadData();\r\n }\r\n\r\n onWizardCallback = async (\r\n make: string,\r\n model: string,\r\n body: string,\r\n firstRegistrationDate: Date,\r\n generation: number\r\n ) => {\r\n this.setState({ isLoading: true });\r\n const result = await this.caseService.GetValuationVehiclesWithoutVin(\r\n make,\r\n model,\r\n body,\r\n R.isNil(firstRegistrationDate) ? new Date() : firstRegistrationDate,\r\n generation\r\n );\r\n\r\n if (result && !R.isEmpty(result.vehicles)) {\r\n this.setState({\r\n isLoading: false,\r\n showWizard: false,\r\n vehicles: result.vehicles,\r\n optionCodes: result.extraOptionCodes\r\n });\r\n } else {\r\n this.setState({\r\n isLoading: false,\r\n showWizard: false,\r\n vehicles: result.vehicles,\r\n optionCodes: result.extraOptionCodes\r\n });\r\n }\r\n return result.vehicles;\r\n };\r\n\r\n onShowCarList = (show: boolean) => {\r\n this.setState({ showCarTable: show });\r\n };\r\n\r\n onChangeFirstRegistrationDate = (date: Date | null) => {\r\n if (this.props.onChangeFirstRegistrationDate) {\r\n this.props.onChangeFirstRegistrationDate(date);\r\n }\r\n };\r\n\r\n onFilterChanged = (vehicles: ValuationVehicle[]) => {\r\n this.setState({ vehicles: vehicles });\r\n };\r\n\r\n loadData = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n if (\r\n this.props.vin !== null &&\r\n this.props.vin === '' &&\r\n R.isNil(this.props.workflowFlowCalculation)\r\n ) {\r\n return;\r\n }\r\n const firstRegistrationDate =\r\n this.props.firstRegistrationDate ||\r\n VehicleHelper.GetFirstRegistrationDateObject(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle\r\n );\r\n const vin =\r\n this.props.vin ||\r\n VehicleHelper.GetVIN(this.props.caseSettingsState.case, this.props.vehicleState.vehicle);\r\n const carOptionalSelectedOptions =\r\n this.props.vehicleState.vehicle?.vehicleOptions.filter(\r\n (o) => !o.isStandard && o.isSelected\r\n ) ?? [];\r\n const carSelectedOptionalCodes = carOptionalSelectedOptions.map((x) => x.code);\r\n const valuationVehicleId = !R.isNil(this.props.vehicleState.vehicle)\r\n ? this.props.vehicleState.vehicle!.valuationVehicleId\r\n : null;\r\n if (!R.isNil(valuationVehicleId)) {\r\n const valuationVehicle = await this.caseService.GetValuationVehicle(valuationVehicleId);\r\n this.setState(\r\n {\r\n vehicles: [valuationVehicle],\r\n selectedVehicle: valuationVehicle,\r\n optionCodes: carSelectedOptionalCodes,\r\n viewOptions: true,\r\n showWizard: false,\r\n hideVehicleSelection: true\r\n },\r\n this.loadOptions\r\n );\r\n } else {\r\n let result = {\r\n vehicles: this.props.valuationVehicles,\r\n extraOptionCodes: this.props.optionCodes ?? []\r\n } as ValuationVehicles;\r\n\r\n if (R.isNil(this.props.valuationVehicles)) {\r\n const body = {\r\n registration_date: R.isNil(firstRegistrationDate) ? new Date() : firstRegistrationDate,\r\n ignore_date: false,\r\n override_existing_match: false\r\n };\r\n\r\n result = await this.caseService.GetValuationVehiclesInfo(\r\n vin,\r\n R.isNil(this.props.workflowFlowCalculation)\r\n ? null\r\n : this.props.workflowFlowCalculation!.id,\r\n body\r\n );\r\n }\r\n\r\n const vehicleState = this.props.vehicleState;\r\n if (!isNullOrUndefined(vehicleState)) {\r\n const valuationVehicles = result.vehicles.filter((v) => {\r\n return v.version === vehicleState.vehicle?.version;\r\n });\r\n if (valuationVehicles.length !== 0) {\r\n result.vehicles = valuationVehicles;\r\n } else {\r\n // vehicle is not found on GTValuation by VIN so we have to get a list of results by make/model/body and version\r\n const resultCustomValuationVehicles =\r\n await this.caseService.GetValuationVehiclesWithoutVin(\r\n vehicleState.vehicle?.make?.name || undefined,\r\n vehicleState.vehicle?.model?.name || undefined,\r\n vehicleState.vehicle?.bodyType?.name || undefined,\r\n !vehicleState.vehicle?.firstRegistrationDate\r\n ? new Date()\r\n : new Date(vehicleState.vehicle.firstRegistrationDate)\r\n );\r\n const perfectMatchFoundByVersionList = resultCustomValuationVehicles.vehicles.filter(\r\n (v) => {\r\n return v.version === vehicleState.vehicle?.version;\r\n }\r\n );\r\n if (perfectMatchFoundByVersionList.length === 1) {\r\n result.vehicles = perfectMatchFoundByVersionList;\r\n }\r\n }\r\n }\r\n\r\n if (result && R.isEmpty(result.vehicles)) {\r\n this.setState({\r\n isLoading: false,\r\n showWizard: true,\r\n hideVehicleSelection: false\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (result) {\r\n if (result.vehicles.length === 1) {\r\n this.setState(\r\n {\r\n vehicles: result.vehicles,\r\n selectedVehicle: result.vehicles[0],\r\n optionCodes: result.extraOptionCodes,\r\n viewOptions: true,\r\n showWizard: false,\r\n hideVehicleSelection: true\r\n },\r\n this.loadOptions\r\n );\r\n } else {\r\n this.setState({\r\n vehicles: result.vehicles,\r\n isLoading: false,\r\n hideVehicleSelection: false,\r\n optionCodes: result.extraOptionCodes\r\n });\r\n this.onShowCarList(true);\r\n }\r\n }\r\n }\r\n };\r\n\r\n getVehicleColumns = () => {\r\n const columns = [\r\n {\r\n name: 'vehicleId',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'manufacturer',\r\n label: this.translatorService.Tranlate('CASE_VALUATION_BRAND_LABEL', 'Marca'),\r\n options: { filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'model',\r\n label: this.translatorService.Tranlate('CASE_VALUATION_MODEL_LABEL', 'Model'),\r\n options: { filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'version',\r\n label: this.translatorService.Tranlate('CASE_VALUATION_VERSION_LABEL', 'Versiune'),\r\n options: { filter: true } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'trimLevel',\r\n label: this.translatorService.Tranlate('CASE_VALUATION_TRIMLEVEL_LABEL', 'Nivel echipare'),\r\n options: { filter: true } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'modelYear',\r\n label: this.translatorService.Tranlate('MODEL_YEAR', 'An model'),\r\n options: {\r\n filter: true\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'fuelType',\r\n label: this.translatorService.Tranlate('CASE_VALUATION_FUEL_TYPE_LABEL', 'Combustibil'),\r\n options: { filter: true } as MUIDataTableColumnOptions\r\n },\r\n //{\r\n // name: 'transmission',\r\n // label: this.translatorService.Tranlate(\r\n // 'CASE_VALUATION_GEARBOX_TYPE_LABEL',\r\n // 'Cutie de viteze'\r\n // ),\r\n // options: { filter: false } as MUIDataTableColumnOptions\r\n //},\r\n {\r\n name: 'powerHP',\r\n label: this.translatorService.Tranlate('CASE_VALUATION_KW_HP_TYPE_LABEL', 'Putere KW/HP'),\r\n options: {\r\n display: 'false',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'kw',\r\n label: this.translatorService.Tranlate('CASE_VALUATION_KW_HP_TYPE_LABEL', 'Putere KW/HP'),\r\n options: {\r\n filter: true,\r\n customBodyRender: (value, tableMeta) => {\r\n return
{value + '/' + tableMeta.rowData[7]}
;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'transmission',\r\n label: this.translatorService.Tranlate(\r\n 'CASE_VALUATION_FUEL_TRANSMISSION_LABEL',\r\n 'Transmisie'\r\n ),\r\n options: { filter: true } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'drivenWheels',\r\n label: this.translatorService.Tranlate('CASE_VALUATION_DRIVEN_WHEELS_LABEL', 'Tractiune'),\r\n options: { filter: true } as MUIDataTableColumnOptions\r\n },\r\n\r\n {\r\n name: 'cc',\r\n label: this.translatorService.Tranlate(\r\n 'CASE_VALUATION_CC_TYPE_LABEL',\r\n 'Capacitate cilindrica'\r\n ),\r\n options: { filter: true } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'wholesalePrice',\r\n label: this.translatorService.Tranlate(\r\n 'VALUATION_BASE_PRICE_LABEL',\r\n 'Pret de Baza (incl. TVA)'\r\n ),\r\n options: { filter: false } as MUIDataTableColumnOptions\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n geOptionsColumns = () => {\r\n const columns = [\r\n {\r\n name: 'optionCode',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'description',\r\n label: ' ',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n const rowData = tableMeta.rowData;\r\n const rowIndex = tableMeta.rowIndex;\r\n const optionCode = rowData[0];\r\n const description = rowData[1];\r\n const price = rowData[2];\r\n const isExcluded = this.state.excludedOptionsIndexes.includes(rowIndex);\r\n const isIncluded = this.state.includedOptionsIndexes.includes(rowIndex);\r\n const isRequired = this.state.requiredOptionsIndexes.includes(rowIndex);\r\n const style = {\r\n color: '#fff',\r\n borderRadius: '0.15rem',\r\n padding: '2px 5px',\r\n marginLeft: '7px',\r\n fontSize: '12px',\r\n fontWeight: 'bold'\r\n };\r\n const excludedStyle = {\r\n backgroundColor: '#6c757d'\r\n };\r\n const includedStyle = {\r\n backgroundColor: '#28a745'\r\n };\r\n const mandatoryStyle = {\r\n backgroundColor: '#007bff'\r\n };\r\n\r\n return (\r\n \r\n {`[${optionCode}] ${description} - ${price} €`}\r\n {isExcluded && Indisponibila}\r\n {isIncluded && (\r\n Inclusa in alt pachet\r\n )}\r\n {isRequired && (\r\n Obligatorie din alt pachet\r\n )}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'price',\r\n options: { display: 'excluded', filter: false, sort: false } as MUIDataTableColumnOptions\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n getIncludedExcludedRequiredOptions = (options: VehicleOption[]) => {\r\n const includedOptionsIndexes: string[] = [];\r\n const excludedOptionsIndexes: string[] = [];\r\n const requiredOptionsIndexes: string[] = [];\r\n\r\n options.forEach((option, index) => {\r\n if (option.isIncluded) {\r\n includedOptionsIndexes.push(option.code);\r\n }\r\n if (option.isExcluded) {\r\n excludedOptionsIndexes.push(option.code);\r\n }\r\n if (option.isRequired) {\r\n requiredOptionsIndexes.push(option.code);\r\n }\r\n });\r\n\r\n return {\r\n included: includedOptionsIndexes,\r\n excluded: excludedOptionsIndexes,\r\n required: requiredOptionsIndexes\r\n };\r\n };\r\n\r\n findIndexesByCode = (extraOptions: ValuationExtraOption[] | null, codes: string[]): number[] => {\r\n if (extraOptions === null) return [];\r\n const indexes: number[] = [];\r\n\r\n extraOptions.forEach((object, index) => {\r\n if (codes.includes(object.optionCode)) {\r\n indexes.push(index);\r\n }\r\n });\r\n\r\n return indexes;\r\n };\r\n\r\n loadOptions = async () => {\r\n if (this.state.selectedVehicle === null) {\r\n return;\r\n }\r\n const options = await this.caseService.GetValuationVehicleOptions(\r\n this.state.selectedVehicle!.vehicleId\r\n );\r\n // get the included, excluded and required options from the vehicle\r\n const { included, excluded, required } = this.props.vehicleState.vehicle\r\n ? this.getIncludedExcludedRequiredOptions(this.props.vehicleState.vehicle?.vehicleOptions)\r\n : { included: [], excluded: [], required: [] };\r\n const includedIndexex = options.extraOptions\r\n ? this.findIndexesByCode(options.extraOptions, included)\r\n : [];\r\n const excludedIndexex = options.extraOptions\r\n ? this.findIndexesByCode(options.extraOptions, excluded)\r\n : [];\r\n const requiredIndexex = options.extraOptions\r\n ? this.findIndexesByCode(options.extraOptions, required)\r\n : [];\r\n const updatedIncludedIndexes = Array.from(\r\n new Set([...this.state.includedOptionsIndexes, ...includedIndexex])\r\n );\r\n const updatedExcludedIndexes = Array.from(\r\n new Set([...this.state.excludedOptionsIndexes, ...excludedIndexex])\r\n );\r\n const updatedRequiredIndexes = Array.from(\r\n new Set([...this.state.requiredOptionsIndexes, ...requiredIndexex])\r\n );\r\n\r\n // update the state of included, excluded and required options\r\n this.setState({\r\n ...this.state,\r\n includedOptionsIndexes: updatedIncludedIndexes,\r\n excludedOptionsIndexes: updatedExcludedIndexes,\r\n requiredOptionsIndexes: updatedRequiredIndexes\r\n });\r\n\r\n const selectedOptionIndexes = this.getSelectedRows(options.extraOptions);\r\n\r\n this.setState({\r\n isLoading: false,\r\n options: options,\r\n selectedOptionIndexes: selectedOptionIndexes,\r\n optionsValue: this.getExtraOptionsPrice(options, selectedOptionIndexes)\r\n });\r\n };\r\n\r\n getSelectedRows = (extraoptions: ValuationExtraOption[]) => {\r\n const indexArray: number[] = [];\r\n this.state.optionCodes.forEach((item) => {\r\n const index = extraoptions.findIndex((o) => o.optionCode === item);\r\n if (index !== undefined && index !== -1) {\r\n indexArray.push(index);\r\n }\r\n });\r\n\r\n return indexArray;\r\n };\r\n\r\n getVehicleOptions = () => {\r\n return {\r\n viewColumns: false,\r\n filter: true,\r\n search: false,\r\n pagination: false,\r\n selectableRows: 'single' as SelectableRows,\r\n selectableRowsHeader: false,\r\n disableToolbarSelect: true,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1,\r\n onRowsSelect: (rowSelected: any) => {\r\n if (this.props.vin !== null && !R.isNil(this.props.onSelectedVehicle)) {\r\n this.props.onSelectedVehicle(\r\n this.state.vehicles[rowSelected[0].dataIndex],\r\n this.state.optionCodes\r\n );\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n viewOptions: true,\r\n isLoading: true,\r\n selectedVehicle: this.state.vehicles[rowSelected[0].dataIndex]\r\n },\r\n this.loadOptions\r\n );\r\n }\r\n };\r\n };\r\n\r\n getExtraOptionsPrice = (options: ValuationVehicleOptions | null, selectedIndexes: number[]) => {\r\n if (options === null) {\r\n return 0;\r\n }\r\n if (options.extraOptions === null) {\r\n return 0;\r\n }\r\n const caseParameters = this.props.caseSettingsState.case!.caseParameters;\r\n const vatParameter = caseParameters.filter(\r\n (parameter) => parameter.parameter!.code === ParametreCode.TVA\r\n );\r\n\r\n const vatValue = +vatParameter[0]?.value || 0;\r\n let sum = 0;\r\n selectedIndexes.forEach((item) => {\r\n sum += options.extraOptions[item].price;\r\n });\r\n\r\n return Utils.getPriceWithVat(sum, vatValue);\r\n };\r\n\r\n getOptionsOptions = () => {\r\n return {\r\n viewColumns: false,\r\n filter: false,\r\n search: false,\r\n pagination: false,\r\n selectableRows: 'multiple' as SelectableRows,\r\n rowsSelected: this.state.selectedOptionIndexes,\r\n selectableRowsHeader: false,\r\n disableToolbarSelect: true,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1,\r\n\r\n onRowsSelect: async (rowSelected: any, rowsSelected: any[]) => {\r\n const selected = rowsSelected.map((item) => item.index).filter((item) => item !== -1);\r\n const lastSelectedIndex = rowSelected[0].dataIndex;\r\n const lastSelectedOptionIndex =\r\n this.state.options!.extraOptions[lastSelectedIndex].optionId;\r\n const { includedOptionIds, excludedOptionIds, requiredOptionIds } =\r\n await this.fetchIncludeAndExcludeOptions(\r\n lastSelectedOptionIndex,\r\n this.state.selectedVehicle!.vehicleId\r\n );\r\n let finalSelectedIndexes = [...selected];\r\n let finalIncludedIndexes = Array.from(new Set([...this.state.includedOptionsIndexes]));\r\n let finalExcludedIndexes = Array.from(new Set([...this.state.excludedOptionsIndexes]));\r\n let finalRequiredIndexes = Array.from(new Set([...this.state.requiredOptionsIndexes]));\r\n\r\n // if the selected option is selected\r\n if (selected.includes(lastSelectedIndex)) {\r\n if (includedOptionIds) {\r\n const includedIndexes = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n includedOptionIds\r\n );\r\n\r\n finalIncludedIndexes = Array.from(\r\n new Set([...finalIncludedIndexes, ...includedIndexes])\r\n );\r\n\r\n finalSelectedIndexes = this.removeIndexes(finalSelectedIndexes, includedIndexes);\r\n }\r\n\r\n if (requiredOptionIds) {\r\n // if there are mandatory options\r\n if (requiredOptionIds.mandatory.length > 0) {\r\n const mandatoryIndexes = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n requiredOptionIds.mandatory\r\n );\r\n\r\n finalRequiredIndexes = Array.from(\r\n new Set([...finalRequiredIndexes, ...mandatoryIndexes])\r\n );\r\n finalSelectedIndexes = Array.from(\r\n new Set([...finalSelectedIndexes, ...mandatoryIndexes])\r\n );\r\n }\r\n\r\n // if user has to select at least one option from the mandatory ones\r\n if (requiredOptionIds.atLeastOne.length > 0) {\r\n this.setState({\r\n showOtionalRequiredOptions: true,\r\n optinalRequiredOptionsIndexes: requiredOptionIds.atLeastOne\r\n });\r\n }\r\n }\r\n\r\n if (excludedOptionIds) {\r\n const excludedIndexes = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n excludedOptionIds\r\n );\r\n\r\n finalExcludedIndexes = Array.from(\r\n new Set([...finalExcludedIndexes, ...excludedIndexes])\r\n );\r\n\r\n finalSelectedIndexes = this.removeIndexes(finalSelectedIndexes, excludedIndexes);\r\n }\r\n }\r\n // if the selected option is deselected\r\n else {\r\n if (includedOptionIds) {\r\n const includedIndexes = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n includedOptionIds\r\n );\r\n\r\n finalIncludedIndexes = this.removeIndexes(finalIncludedIndexes, includedIndexes);\r\n finalSelectedIndexes = this.removeIndexes(finalSelectedIndexes, includedIndexes);\r\n }\r\n\r\n if (requiredOptionIds) {\r\n if (requiredOptionIds.mandatory.length > 0) {\r\n const mandatoryIndexes = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n requiredOptionIds.mandatory\r\n );\r\n\r\n finalRequiredIndexes = this.removeIndexes(finalRequiredIndexes, mandatoryIndexes);\r\n finalSelectedIndexes = this.removeIndexes(finalSelectedIndexes, mandatoryIndexes);\r\n finalExcludedIndexes = this.removeIndexes(finalExcludedIndexes, mandatoryIndexes);\r\n }\r\n\r\n if (requiredOptionIds.atLeastOne.length > 0) {\r\n const atLeastOneIndexes = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n requiredOptionIds.atLeastOne\r\n );\r\n\r\n finalRequiredIndexes = this.removeIndexes(finalRequiredIndexes, atLeastOneIndexes);\r\n finalSelectedIndexes = this.removeIndexes(finalSelectedIndexes, atLeastOneIndexes);\r\n finalExcludedIndexes = this.removeIndexes(finalExcludedIndexes, atLeastOneIndexes);\r\n }\r\n }\r\n\r\n if (excludedOptionIds) {\r\n const excludedIndexes = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n excludedOptionIds\r\n );\r\n\r\n finalExcludedIndexes = this.removeIndexes(finalExcludedIndexes, excludedIndexes);\r\n finalSelectedIndexes = this.removeIndexes(finalSelectedIndexes, excludedIndexes);\r\n }\r\n }\r\n\r\n finalSelectedIndexes = this.removeIndexes(finalSelectedIndexes, finalExcludedIndexes);\r\n finalSelectedIndexes = Array.from(\r\n new Set([...finalSelectedIndexes, ...finalRequiredIndexes])\r\n );\r\n finalExcludedIndexes = this.removeIndexes(finalExcludedIndexes, finalRequiredIndexes);\r\n finalIncludedIndexes = this.removeIndexes(finalIncludedIndexes, finalRequiredIndexes);\r\n\r\n this.setState({\r\n selectedOptionIndexes: finalSelectedIndexes,\r\n optionsValue: this.getExtraOptionsPrice(this.state.options, finalSelectedIndexes),\r\n excludedOptionsIndexes: finalExcludedIndexes,\r\n includedOptionsIndexes: finalIncludedIndexes,\r\n requiredOptionsIndexes: finalRequiredIndexes\r\n });\r\n },\r\n isRowSelectable: (dataIndex: any) =>\r\n !this.state.excludedOptionsIndexes.includes(dataIndex) &&\r\n !this.state.includedOptionsIndexes.includes(dataIndex) &&\r\n !this.state.requiredOptionsIndexes.includes(dataIndex)\r\n };\r\n };\r\n\r\n fetchIncludeOptions = async (optionId: number, vehicleId: number): Promise => {\r\n let includeOptionsRequest = null;\r\n\r\n try {\r\n includeOptionsRequest = await this.caseService.GetIncludeOptions(optionId, vehicleId);\r\n } catch (error) {}\r\n\r\n if (includeOptionsRequest) {\r\n const extractedIndexes = this.extractIndexes(includeOptionsRequest.rule);\r\n return extractedIndexes;\r\n }\r\n\r\n return includeOptionsRequest;\r\n };\r\n\r\n fetchExcludeOptions = async (optionId: number, vehicleId: number): Promise => {\r\n let excludeOptionsRequest = null;\r\n\r\n try {\r\n excludeOptionsRequest = await this.caseService.GetExcludeOptions(optionId, vehicleId);\r\n } catch (error) {}\r\n\r\n if (excludeOptionsRequest) {\r\n const extractedIndexes = this.extractIndexes(excludeOptionsRequest.rule);\r\n return extractedIndexes;\r\n }\r\n\r\n return excludeOptionsRequest;\r\n };\r\n\r\n fetchRequiredOptions = async (\r\n optionId: number,\r\n vehicleId: number\r\n ): Promise => {\r\n let requiredOptionsRequest = null;\r\n\r\n try {\r\n requiredOptionsRequest = await this.caseService.GetRequiredOptions(optionId, vehicleId);\r\n } catch (error) {}\r\n\r\n if (requiredOptionsRequest) {\r\n const parsedConditions = this.parseRequiredConditions(requiredOptionsRequest.rule);\r\n return parsedConditions;\r\n }\r\n\r\n return requiredOptionsRequest;\r\n };\r\n\r\n fetchIncludeAndExcludeOptions = async (optionId: number, vehicleId: number) => {\r\n let includedOptionIds = null;\r\n let excludedOptionIds = null;\r\n let requiredOptionIds = null;\r\n\r\n try {\r\n this.setState({ isloadingIncludeExcludeOptions: true });\r\n\r\n includedOptionIds = await this.fetchIncludeOptions(optionId, vehicleId);\r\n excludedOptionIds = await this.fetchExcludeOptions(optionId, vehicleId);\r\n requiredOptionIds = await this.fetchRequiredOptions(optionId, vehicleId);\r\n } catch (error) {\r\n this.setState({ isloadingIncludeExcludeOptions: false });\r\n }\r\n\r\n this.setState({ isloadingIncludeExcludeOptions: false });\r\n return {\r\n includedOptionIds,\r\n excludedOptionIds,\r\n requiredOptionIds\r\n };\r\n };\r\n\r\n findIndexes = (extraOptions: ValuationExtraOption[] | null, codes: number[]): number[] => {\r\n if (extraOptions === null) return [];\r\n const indexes: number[] = [];\r\n\r\n extraOptions.forEach((object, index) => {\r\n if (codes.includes(object.optionId)) {\r\n indexes.push(index);\r\n }\r\n });\r\n\r\n return indexes;\r\n };\r\n\r\n removeIndexes(excludedOptionsIndexes: number[], excludedIndexes: number[]): number[] {\r\n return excludedOptionsIndexes.filter((item) => !excludedIndexes.includes(item));\r\n }\r\n\r\n extractIndexes = (input: string): number[] => {\r\n // Use regular expression to match all numbers within braces\r\n const matches = input.match(/\\{(\\d+)\\}/g);\r\n\r\n // If no matches found, return an empty array\r\n if (!matches) {\r\n return [];\r\n }\r\n\r\n // Extract the numbers and convert them to integers\r\n const indexes = matches.map((match) => parseInt(match.replace(/[{}]/g, ''), 10));\r\n\r\n return indexes;\r\n };\r\n\r\n parseRequiredConditions(input: string): ParsedConditions {\r\n const mandatory: number[] = [];\r\n const atLeastOne: number[] = [];\r\n\r\n // Regex for extracting all conditions (e.g., {1234})\r\n const allConditionsRegex = /{(\\d+)}/g;\r\n let match;\r\n\r\n // Collect all numbers within curly braces\r\n const allConditions: number[] = [];\r\n while ((match = allConditionsRegex.exec(input)) !== null) {\r\n allConditions.push(parseInt(match[1], 10));\r\n }\r\n\r\n // Check if the input contains 'AND' or 'OR'\r\n if (input.includes('AND')) {\r\n // Regex for extracting mandatory conditions before 'AND'\r\n const mandatoryPart = input.split(' AND ')[0];\r\n const mandatoryRegex = /{(\\d+)}/g;\r\n let mandatoryMatch;\r\n while ((mandatoryMatch = mandatoryRegex.exec(mandatoryPart)) !== null) {\r\n mandatory.push(parseInt(mandatoryMatch[1], 10));\r\n }\r\n\r\n // Regex for extracting optional conditions within parentheses\r\n const optionalPartMatch = input.match(/\\(([^)]+)\\)/);\r\n if (optionalPartMatch) {\r\n const optionalRegex = /{(\\d+)}/g;\r\n let optionalMatch;\r\n while ((optionalMatch = optionalRegex.exec(optionalPartMatch[1])) !== null) {\r\n atLeastOne.push(parseInt(optionalMatch[1], 10));\r\n }\r\n }\r\n } else if (input.includes('OR')) {\r\n // If there are no 'AND' conditions, treat all as optional\r\n for (const num of allConditions) {\r\n atLeastOne.push(num);\r\n }\r\n } else {\r\n // If no logical operator is present, all conditions are mandatory\r\n mandatory.push(...allConditions);\r\n }\r\n\r\n return {\r\n mandatory,\r\n atLeastOne\r\n };\r\n }\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n isNumericString\r\n />\r\n );\r\n };\r\n handleBodyDamageTextChange = (event: React.ChangeEvent) => {\r\n this.setState({\r\n bodyDamage: event.target.value === null ? 0 : parseFloat(event.target.value)\r\n });\r\n };\r\n\r\n handleTireWearTextChange = (event: React.ChangeEvent) => {\r\n this.setState({\r\n tireWear: event.target.value === null ? 0 : parseFloat(event.target.value)\r\n });\r\n };\r\n\r\n handleGplChange = (checked: boolean) => {\r\n this.setState({\r\n hasGpl: checked\r\n });\r\n };\r\n\r\n performValuation = async () => {\r\n try {\r\n const options: ValuationExtraOption[] = [];\r\n\r\n this.state.selectedOptionIndexes.forEach((index) =>\r\n options.push(this.state.options!.extraOptions[index])\r\n );\r\n const valuationRequest = {\r\n attritionValue: this.state.tireWear,\r\n bodyDamageValue: this.state.bodyDamage,\r\n extraOptionsPrice: this.state.optionsValue,\r\n gpl: this.state.hasGpl,\r\n numberOfKilometers: VehicleHelper.GetKmNr(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle\r\n ),\r\n priceAsNew: this.state.selectedVehicle!.wholesalePrice,\r\n vehicleId: this.state.selectedVehicle!.vehicleId,\r\n options: options,\r\n registrationDate: VehicleHelper.GetFirstRegistrationDateFormat(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle,\r\n 'YYYY-MM-DD'\r\n ),\r\n fabricationDate: VehicleHelper.GetMakeDateFormat(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle,\r\n 'YYYY-MM-DD'\r\n ),\r\n imageUrl: this.state.selectedVehicle?.imageUrl ? this.state.selectedVehicle?.imageUrl : '',\r\n vin:\r\n this.props.vin ||\r\n VehicleHelper.GetVIN(this.props.caseSettingsState.case, this.props.vehicleState.vehicle),\r\n version: this.state.selectedVehicle!.version,\r\n equipmentVersion: this.state.selectedVehicle!.trimLevel,\r\n make: this.state.selectedVehicle!.manufacturer,\r\n model: this.state.selectedVehicle!.model,\r\n fuelType: this.state.selectedVehicle!.fuelType,\r\n bodyType: this.state.selectedVehicle!.body,\r\n horsePower: this.state.selectedVehicle!.powerHP,\r\n nrOfDoors: this.state.selectedVehicle!.noOfDoors,\r\n transmissionType: this.state.selectedVehicle!.transmission\r\n } as ValuationRequest;\r\n\r\n this.setState({ valuationLoading: true });\r\n\r\n const result = await this.caseService.PerformValuation(\r\n valuationRequest,\r\n this.props.caseSettingsState.case!.id\r\n );\r\n\r\n this.props.SetCaseValuation(result);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n\r\n this.setState({ valuationLoading: false });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n renderOptions = () => {\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n\r\n const caseParameters = this.props.caseSettingsState?.case?.caseParameters || [];\r\n let caseVatRate =\r\n caseParameters.find((x) => x.parameter?.code === ParametreCode.TVA)?.value || 0;\r\n caseVatRate = +caseVatRate;\r\n const caseValuation = this.props.caseSettingsState?.case?.caseValuation;\r\n\r\n const basePrice = this.state.selectedVehicle?.wholesalePrice || 0;\r\n const optionsPrice = this.state.optionsValue;\r\n const totalPrice = basePrice + optionsPrice;\r\n\r\n const caseHasNoVAT = offerTypeCode === CaseTypeCode.AQUISITION && caseVatRate === 0;\r\n const vehicleHasNoVat =\r\n offerTypeCode === CaseTypeCode.SALE && this.props.vehicleState.vehicle?.purchaseVatRate === 0;\r\n\r\n const purchasePrice = (this.props.vehicleState.vehicle?.purchasePrice as number) || 0;\r\n\r\n let tradeInPrice = 0;\r\n let offerPrice = 0;\r\n let retailPrice = 0;\r\n\r\n const basePriceLabel = this.translatorService.Tranlate(\r\n 'VALUATION_BASE_PRICE_LABEL',\r\n 'Pret de Baza (incl. TVA)'\r\n );\r\n const optionsPriceLabel = this.translatorService.Tranlate(\r\n 'VALUATION_OPTIONS_PRICE_LABEL',\r\n 'Pret Optionale (incl. TVA)'\r\n );\r\n const totalPriceLabel = this.translatorService.Tranlate(\r\n 'VALUATION_TOTAL_LABEL',\r\n 'Total (incl. TVA)'\r\n );\r\n\r\n const tradeInPriceLabel = 'Trade-in price (incl. VAT)';\r\n const offerPriceLabel = 'Offer price (incl. VAT)';\r\n const retailPriceLabel = 'Retail price (incl. VAT)';\r\n\r\n if (caseValuation) {\r\n tradeInPrice = caseValuation.tradeInPrice;\r\n offerPrice = caseValuation.offerPrice;\r\n retailPrice = caseValuation.retailPrice;\r\n\r\n // if (caseHasNoVAT) {\r\n // tradeInPrice = Utils.getPriceWithoutVat(tradeInPrice, caseValuation.vatRate);\r\n // offerPrice = Utils.getPriceWithoutVat(offerPrice, caseValuation.vatRate);\r\n // retailPrice = Utils.getPriceWithoutVat(retailPrice, caseValuation.vatRate);\r\n // }\r\n\r\n // if (vehicleHasNoVat) {\r\n // tradeInPrice = Utils.getPriceWithoutVat(tradeInPrice, caseValuation.vatRate);\r\n // offerPrice = Utils.getPriceWithoutVat(offerPrice, caseValuation.vatRate);\r\n // retailPrice = Utils.getPriceWithoutVat(retailPrice, caseValuation.vatRate);\r\n\r\n // tradeInPrice = Utils.getPriceWithMarginVat(tradeInPrice, +purchasePrice, caseVatRate);\r\n // offerPrice = Utils.getPriceWithMarginVat(offerPrice, +purchasePrice, caseVatRate);\r\n // retailPrice = Utils.getPriceWithMarginVat(retailPrice, +purchasePrice, caseVatRate);\r\n // }\r\n }\r\n\r\n // if (caseHasNoVAT) {\r\n // tradeInPriceLabel = Utils.removeVatFromPriceLabel(tradeInPriceLabel);\r\n // offerPriceLabel = Utils.removeVatFromPriceLabel(offerPriceLabel);\r\n // retailPriceLabel = Utils.removeVatFromPriceLabel(retailPriceLabel);\r\n // }\r\n\r\n return (\r\n
\r\n

\r\n {`${this.state.selectedVehicle!.manufacturer} ${this.state.selectedVehicle!.model} ${\r\n this.state.selectedVehicle!.version\r\n }`}\r\n

\r\n

\r\n\r\n \r\n \r\n \r\n \r\n {VehicleHelper.GetMakeDateFormat(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle,\r\n 'YYYY-MM-DD'\r\n ) ? (\r\n \r\n ) : null}\r\n {VehicleHelper.GetFirstRegistrationDateFormat(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle,\r\n 'YYYY-MM-DD'\r\n ) ? (\r\n \r\n ) : null}\r\n \r\n \r\n \r\n\r\n this.handleGplChange(checked)}\r\n color=\"primary\"\r\n id=\"hasGpl\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={this.translatorService.Tranlate('VALUATION_GPL_LABEL', 'GPL')}\r\n />\r\n\r\n
\r\n \r\n {this.translatorService.Tranlate('VALUATION_ACTION_START_LABEL', 'Evalueaza')}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
{basePrice.toFixed(2)} €
\r\n
{optionsPrice.toFixed(2)} €
\r\n
{totalPrice.toFixed(2)} €
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.valuationLoading ? (\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
{tradeInPrice ? tradeInPrice.toFixed(2) : 0} €
\r\n
{offerPrice ? offerPrice.toFixed(2) : 0} €
\r\n
{retailPrice ? retailPrice.toFixed(2) : 0} €
\r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n
\r\n
\r\n\r\n

\r\n\r\n \r\n \r\n\r\n {this.state.showOtionalRequiredOptions && this.renderMandatoryOptionsDialog()}\r\n
\r\n\r\n \r\n {this.state.isloadingIncludeExcludeOptions ? : null}\r\n \r\n \r\n );\r\n };\r\n\r\n renderMandatoryOptionsDialog = () => {\r\n const data = this.state.options?.extraOptions.filter((option) => {\r\n return this.state.optinalRequiredOptionsIndexes.includes(option.optionId);\r\n });\r\n return (\r\n \r\n \r\n {'Pentru selectia anterioara este necesara adaugarea unei optiuni din lista'}\r\n \r\n \r\n {\r\n const rowData = tableMeta.rowData;\r\n return `[${rowData[0]}] ${value} - ${rowData[2]} €`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'price',\r\n label: 'Pret',\r\n options: {\r\n display: 'excluded',\r\n filter: false,\r\n sort: false\r\n }\r\n }\r\n ]}\r\n options={{\r\n viewColumns: false,\r\n filter: false,\r\n search: false,\r\n pagination: false,\r\n selectableRows: 'single' as SelectableRows,\r\n selectableRowsHeader: false,\r\n disableToolbarSelect: true,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1,\r\n onRowsSelect: (rowSelected: any, allRows: any) => {\r\n const { dataIndex } = rowSelected[0];\r\n const rowData = this.state.options?.extraOptions.filter((option) => {\r\n return this.state.optinalRequiredOptionsIndexes.includes(option.optionId);\r\n })[dataIndex];\r\n const selectedOptionIndexInExtraOptions = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n [rowData!.optionId]\r\n );\r\n const unselectedOptionsToBeRemoved =\r\n this.state.optinalRequiredOptionsIndexes.filter(\r\n (item) => item !== rowData!.optionId\r\n );\r\n const findOptionsToBeExcluded = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n unselectedOptionsToBeRemoved\r\n );\r\n let finalSelectedIndexes = Array.from(\r\n new Set([\r\n ...this.state.selectedOptionIndexes,\r\n ...selectedOptionIndexInExtraOptions\r\n ])\r\n );\r\n const finalRequiredIndexes = Array.from(\r\n new Set([\r\n ...this.state.requiredOptionsIndexes,\r\n ...selectedOptionIndexInExtraOptions\r\n ])\r\n );\r\n let finalExcludedIndexes = Array.from(\r\n new Set([...this.state.excludedOptionsIndexes, ...findOptionsToBeExcluded])\r\n );\r\n let finalIncludedIndexes = Array.from(\r\n new Set([...this.state.includedOptionsIndexes])\r\n );\r\n finalSelectedIndexes = this.removeIndexes(\r\n finalSelectedIndexes,\r\n finalExcludedIndexes\r\n );\r\n finalSelectedIndexes = Array.from(\r\n new Set([...finalSelectedIndexes, ...finalRequiredIndexes])\r\n );\r\n finalExcludedIndexes = this.removeIndexes(\r\n finalExcludedIndexes,\r\n finalRequiredIndexes\r\n );\r\n finalIncludedIndexes = this.removeIndexes(\r\n finalIncludedIndexes,\r\n finalRequiredIndexes\r\n );\r\n this.setState({\r\n ...this.state,\r\n showOtionalRequiredOptions: false,\r\n selectedOptionIndexes: finalSelectedIndexes,\r\n requiredOptionsIndexes: finalRequiredIndexes,\r\n optionsValue: this.getExtraOptionsPrice(this.state.options, finalSelectedIndexes),\r\n excludedOptionsIndexes: finalExcludedIndexes,\r\n includedOptionsIndexes: finalIncludedIndexes,\r\n optinalRequiredOptionsIndexes: []\r\n });\r\n }\r\n }}\r\n />\r\n \r\n \r\n );\r\n };\r\n\r\n renderVehicleSelection = () => {\r\n return (\r\n
\r\n \r\n\r\n {this.state.showCarTable ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n
\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n\r\n {this.state.hideVehicleSelection ? null : this.renderVehicleSelection()}\r\n\r\n {!this.state.isLoading &&\r\n this.state.viewOptions &&\r\n this.state.options &&\r\n !this.state.showWizard\r\n ? this.renderOptions()\r\n : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsValuationProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsValuation as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, CaseSettingsState, AppState } from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Grid, Divider } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CaseCalculationHistory, CaseCalculationPart } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\n\r\nexport interface ExternalCaseDetailsCaseTabCompareCalculationsProps {\r\n calculationHistoryIds: number[];\r\n}\r\n\r\ninterface ICaseDetailsCaseTabCompareCalculationsState {\r\n firstCalculation: CaseCalculationHistory;\r\n secondCalculation: CaseCalculationHistory;\r\n calculationSectionList: IReferential[];\r\n calculationParts: CaseCalculationPart[];\r\n isLoading: boolean;\r\n}\r\n\r\ntype ICaseDetailsCaseTabCompareCalculationsProps =\r\n ExternalCaseDetailsCaseTabCompareCalculationsProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabCompareCalculations extends React.PureComponent<\r\n ICaseDetailsCaseTabCompareCalculationsProps,\r\n ICaseDetailsCaseTabCompareCalculationsState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n firstCalculation: {} as CaseCalculationHistory,\r\n secondCalculation: {} as CaseCalculationHistory,\r\n calculationSectionList: [],\r\n calculationParts: [],\r\n isLoading: true\r\n } as ICaseDetailsCaseTabCompareCalculationsState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (caseSettings === null || caseSettings === undefined || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n }\r\n\r\n loadData = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (caseSettings === null || caseSettings === undefined || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n const casee = this.props.caseSettingsState.case;\r\n\r\n if (casee === null) {\r\n return;\r\n }\r\n\r\n const [\r\n first,\r\n second,\r\n calculationSections,\r\n caseFirstCalculationParts,\r\n caseSecondCalculationParts\r\n ] = await Promise.all([\r\n this.caseService.GetCaseCalculationHistoryDetails(this.props.calculationHistoryIds[0]),\r\n this.caseService.GetCaseCalculationHistoryDetails(this.props.calculationHistoryIds[1]),\r\n this.caseService.GetCalculationSections(),\r\n this.caseService.GetCaseCalculationParts(this.props.calculationHistoryIds[0]),\r\n this.caseService.GetCaseCalculationParts(this.props.calculationHistoryIds[1])\r\n ]);\r\n\r\n this.setState({\r\n firstCalculation: first,\r\n secondCalculation: second,\r\n calculationSectionList: calculationSections,\r\n calculationParts: caseFirstCalculationParts\r\n .concat(caseSecondCalculationParts)\r\n .sort(function (a, b) {\r\n return a.calculationSectionId - b.calculationSectionId;\r\n }),\r\n isLoading: false\r\n });\r\n };\r\n\r\n textColor = (x: number | undefined, y: number | undefined, backgroud: boolean) => {\r\n return backgroud === false\r\n ? x === undefined\r\n ? 'text-danger'\r\n : y === undefined\r\n ? ''\r\n : y < x\r\n ? 'text-success'\r\n : x < y\r\n ? 'text-danger'\r\n : ''\r\n : x === undefined\r\n ? 'bg-danger'\r\n : y === undefined\r\n ? ''\r\n : y < x\r\n ? 'bg-success'\r\n : x < y\r\n ? 'bg-danger'\r\n : '';\r\n };\r\n\r\n renderCalculationParts = (sectionId: number) => {\r\n const calculationPartsForSectionId = [...this.state.calculationParts].filter(\r\n (item) => item.calculationSectionId === sectionId\r\n );\r\n const distinctCalculationPartCode = Array.from(\r\n new Set(calculationPartsForSectionId.map((item) => item.guideNumber))\r\n );\r\n return distinctCalculationPartCode.map((item) => {\r\n const firstCalculationPart = calculationPartsForSectionId.find(\r\n (calcPart) =>\r\n calcPart.caseCalculationHistoryId === this.state.firstCalculation.id &&\r\n calcPart.guideNumber === item\r\n );\r\n const secondCalculationPart = calculationPartsForSectionId.find(\r\n (calcPart) =>\r\n calcPart.caseCalculationHistoryId === this.state.secondCalculation.id &&\r\n calcPart.guideNumber === item\r\n );\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n {\r\n calculationPartsForSectionId.find((calcPart) => calcPart.guideNumber === item)!\r\n .name\r\n }\r\n
\r\n
{item}
\r\n
\r\n \r\n {isNullOrUndefined(firstCalculationPart) ? null : (\r\n
\r\n
\r\n {this.dynamicPrice(firstCalculationPart).toFixed(2) +\r\n ' ' +\r\n this.state.firstCalculation.currencyCode}\r\n
\r\n
{firstCalculationPart.pieceNr}
\r\n
\r\n {(isNullOrUndefined(this.dynamicDiscount(firstCalculationPart))\r\n ? '0'\r\n : this.dynamicDiscount(firstCalculationPart).toFixed(2)) + ' %'}\r\n
\r\n
\r\n {isNullOrUndefined(firstCalculationPart)\r\n ? ''\r\n : (\r\n this.dynamicPrice(firstCalculationPart) *\r\n firstCalculationPart.pieceNr *\r\n (1 - this.dynamicDiscount(firstCalculationPart) / 100)\r\n ).toFixed(2) +\r\n ' ' +\r\n this.state.firstCalculation.currencyCode}\r\n
\r\n
\r\n )}\r\n
\r\n \r\n {isNullOrUndefined(secondCalculationPart) ? null : (\r\n
\r\n \r\n {isNullOrUndefined(secondCalculationPart)\r\n ? ''\r\n : this.dynamicPrice(secondCalculationPart).toFixed(2) +\r\n ' ' +\r\n this.state.secondCalculation.currencyCode}\r\n
\r\n \r\n {secondCalculationPart.pieceNr}\r\n
\r\n \r\n {(isNullOrUndefined(this.dynamicDiscount(secondCalculationPart))\r\n ? '0.00'\r\n : this.dynamicDiscount(secondCalculationPart).toFixed(2)) + ' %'}\r\n \r\n \r\n {isNullOrUndefined(secondCalculationPart)\r\n ? ''\r\n : (\r\n this.dynamicPrice(secondCalculationPart) *\r\n secondCalculationPart.pieceNr *\r\n (1 - this.dynamicDiscount(secondCalculationPart) / 100)\r\n ).toFixed(2) +\r\n ' ' +\r\n this.state.secondCalculation.currencyCode}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n });\r\n };\r\n\r\n dynamicPrice = (calculation: any) => {\r\n let price = calculation.originalPrice;\r\n if (calculation.alternativePartQualityId !== null) {\r\n price = calculation.alternativePrice;\r\n }\r\n return price;\r\n };\r\n\r\n dynamicDiscount = (calculation: any) => {\r\n let generalDiscount = calculation.discount;\r\n if (calculation.alternativePartQualityId !== null) {\r\n generalDiscount = calculation.alternativePartDiscount;\r\n }\r\n return generalDiscount;\r\n };\r\n\r\n renderCalculation = () => {\r\n const calculationSections = Array.from(\r\n new Set(this.state.calculationParts.map((item) => item.calculationSectionId))\r\n ).sort(function (a, b) {\r\n return a - b;\r\n });\r\n\r\n return calculationSections.map((item: number, index: number) => {\r\n const textColor =\r\n item === 1\r\n ? this.textColor(\r\n this.state.firstCalculation.amountPiecesWithDiscount,\r\n this.state.secondCalculation.amountPiecesWithDiscount,\r\n true\r\n )\r\n : item === 2\r\n ? this.textColor(\r\n this.state.firstCalculation.amountLaborWithDiscount,\r\n this.state.secondCalculation.amountLaborWithDiscount,\r\n true\r\n )\r\n : item === 3\r\n ? this.textColor(\r\n this.state.firstCalculation.amountPaintingMaterialsWithDiscount,\r\n this.state.secondCalculation.amountPaintingMaterialsWithDiscount,\r\n true\r\n )\r\n : this.textColor(\r\n this.state.firstCalculation.amountPaintingLaborWithDiscount,\r\n this.state.secondCalculation.amountPaintingLaborWithDiscount,\r\n true\r\n );\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n {\r\n this.state.calculationSectionList.find((section) => section.id === item)!\r\n .displayName\r\n }\r\n
\r\n
\r\n \r\n
\r\n {(item === 1\r\n ? this.state.firstCalculation.amountPiecesWithDiscount.toFixed(2)\r\n : item === 2\r\n ? this.state.firstCalculation.amountLaborWithDiscount.toFixed(2)\r\n : item === 3\r\n ? this.state.firstCalculation.amountPaintingMaterialsWithDiscount.toFixed(2)\r\n : this.state.firstCalculation.amountPaintingLaborWithDiscount.toFixed(2)) +\r\n ' ' +\r\n this.state.firstCalculation.currencyCode}\r\n
\r\n
\r\n \r\n
\r\n {(item === 1\r\n ? this.state.secondCalculation.amountPiecesWithDiscount.toFixed(2)\r\n : item === 2\r\n ? this.state.secondCalculation.amountLaborWithDiscount.toFixed(2)\r\n : item === 3\r\n ? this.state.secondCalculation.amountPaintingMaterialsWithDiscount.toFixed(2)\r\n : this.state.secondCalculation.amountPaintingLaborWithDiscount.toFixed(2)) +\r\n ' ' +\r\n this.state.secondCalculation.currencyCode}\r\n
\r\n
\r\n \r\n\r\n {this.renderCalculationParts(item)}\r\n
\r\n );\r\n });\r\n };\r\n\r\n renderTotalCalculation = () => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n {this.translatorService.Tranlate('CALCULATION_COMPARE_TOTAL', 'Total')}\r\n
\r\n
\r\n \r\n
\r\n {(\r\n this.state.firstCalculation.amountLaborWithDiscount +\r\n this.state.firstCalculation.amountPiecesWithDiscount +\r\n this.state.firstCalculation.amountPaintingLaborWithDiscount +\r\n this.state.firstCalculation.amountPaintingMaterialsWithDiscount\r\n ).toFixed(2) +\r\n ' ' +\r\n this.state.firstCalculation.currencyCode}\r\n
\r\n
\r\n \r\n \r\n {(\r\n this.state.secondCalculation.amountLaborWithDiscount +\r\n this.state.secondCalculation.amountPiecesWithDiscount +\r\n this.state.secondCalculation.amountPaintingLaborWithDiscount +\r\n this.state.secondCalculation.amountPaintingMaterialsWithDiscount\r\n ).toFixed(2) +\r\n ' ' +\r\n this.state.secondCalculation.currencyCode}\r\n
\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
\r\n {this.renderCalculation()}\r\n {this.renderTotalCalculation()}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabCompareCalculationsProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n null,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabCompareCalculations as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n VehicleState\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Button,\r\n Grid,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n ListItemSecondaryAction,\r\n Checkbox\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { ReferentialCode } from '../../helpers/Constants';\r\nimport { ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport NumberFormat from 'react-number-format';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { VehicleQualityControlCert, QCItem } from '../../interfaces/Vehicle';\r\ninterface ICertificateOfControlFormState {\r\n isLoading: boolean;\r\n hasRights: boolean;\r\n executing: boolean;\r\n isUserHidden: boolean;\r\n qualityControlItems: VehicleQualityControlCert[];\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\r\nexport interface ExternalCertificateOfControlFormProps {\r\n // workflowForm: WorkflowSectionStepForm\r\n}\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\ntype ICertificateOfControlFormProps = ExternalCertificateOfControlFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n} & AppState &\r\n typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CertificateOfControlForm extends React.PureComponent<\r\n ICertificateOfControlFormProps,\r\n ICertificateOfControlFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: true,\r\n hasRights: false,\r\n executing: false,\r\n isUserHidden: false,\r\n qualityControlItems: [] as VehicleQualityControlCert[]\r\n } as ICertificateOfControlFormState;\r\n\r\n public async componentDidMount() {\r\n if (isNullOrUndefined(this.props.caseSettingsState.case!.vehicleId)) {\r\n return;\r\n }\r\n\r\n const refQcItem = Referentials.referential.find((item) => item.code === ReferentialCode.QCItem);\r\n const refQcItemCateg = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.QCItemCategory\r\n );\r\n const [vehicleQCList, qcItems, qcItemCateg] = await Promise.all([\r\n this.vehicleService.VehicleQualityControlCert.GetUser(\r\n this.props.caseSettingsState.case!.vehicleId\r\n ),\r\n this.appReferentialService.Get(refQcItem!.baseUrl),\r\n this.appReferentialService.Get(refQcItemCateg!.baseUrl)\r\n ]);\r\n\r\n if (vehicleQCList.length === 0) {\r\n qcItems\r\n .filter((item) => item.isActive)\r\n .forEach((qcItem) => {\r\n // const categ = qcItemCateg.find(item=> item.id === (qcItem as QCItem).qcItemCategoryId);\r\n\r\n const newItem = {\r\n id: 0,\r\n vehicleId: this.props.caseSettingsState.case!.vehicleId,\r\n isChecked: false,\r\n isReplaced: false,\r\n qcItemId: qcItem.id,\r\n qcItem: qcItem\r\n } as VehicleQualityControlCert;\r\n\r\n //newItem.qCItem!.qcItemCategory = categ!;\r\n\r\n vehicleQCList.push(newItem);\r\n });\r\n }\r\n\r\n vehicleQCList.forEach((itemQC) => {\r\n const categ = qcItemCateg.find(\r\n (item) => item.id === (itemQC.qcItem as QCItem).qcItemCategoryId\r\n );\r\n itemQC.qcItem!.qcItemCategory = categ!;\r\n });\r\n\r\n this.setState(\r\n {\r\n isLoading: true,\r\n qualityControlItems: vehicleQCList\r\n },\r\n async () => {\r\n this.setState({\r\n isLoading: false\r\n });\r\n }\r\n );\r\n }\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n\r\n submitData = async (e: any) => {\r\n try {\r\n this.setState({ executing: true });\r\n\r\n await this.vehicleService.VehicleQualityControlCert.SaveList(this.state.qualityControlItems);\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({\r\n executing: false\r\n });\r\n }\r\n };\r\n\r\n rendeCertificateOfControlForm = () => {\r\n return (\r\n {\r\n this.submitData(e);\r\n }}\r\n >\r\n
\r\n\r\n \r\n {this.translatorService.Tranlate('CASE_COMMENT_SEND', 'Trimite')}\r\n \r\n \r\n );\r\n };\r\n\r\n renderVehicleInfo = () => {\r\n const vehicle = this.props.vehicleState.vehicle!;\r\n if (isNullOrUndefined(vehicle)) {\r\n return;\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n {this.translatorService.Tranlate('CERTIFICATE_OF_CONTROL_TITLE', 'Detalii vehicul')}\r\n
\r\n
\r\n
\r\n
{this.translatorService.Tranlate('CERTIFICATE_OF_CONTROL_MAKE', 'Make')}
\r\n
\r\n {this.translatorService.Tranlate('CERTIFICATE_OF_CONTROL_MODEL', 'Model')}\r\n
\r\n
{this.translatorService.Tranlate('CERTIFICATE_OF_CONTROL_VIN', 'VIN')}
\r\n
{this.translatorService.Tranlate('CERTIFICATE_OF_CONTROL_KM', 'Km')}
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CERTIFICATE_OF_CONTROL_FIRST_REGISTRATION_DATE',\r\n 'Data primei inmatriculari'\r\n )}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CERTIFICATE_OF_CONTROL_PLATE_NUMBER',\r\n 'Nr. inmatriculare'\r\n )}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CERTIFICATE_OF_CONTROL_RADIO_CODE',\r\n 'Nr. cod radio'\r\n )}\r\n
\r\n
\r\n
\r\n
{vehicle!.make!.displayName}
\r\n
{vehicle!.model!.displayName}
\r\n
{vehicle!.vin}
\r\n
{vehicle!.kilometersNr}
\r\n
\r\n {moment\r\n .utc(vehicle!.firstRegistrationDate)\r\n .local()\r\n .format(this.props.dateFormat)}\r\n
\r\n
{vehicle!.plateNumber}
\r\n
{vehicle!.radioCode}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n handleToggleIsCheckedOption = (e: any, id: number, qcItemId: number) => {\r\n const indexValue = this.state.qualityControlItems.findIndex(\r\n (item) => item.id === id && item.qcItemId === qcItemId\r\n );\r\n const newQualityControlItems = [...this.state.qualityControlItems];\r\n\r\n newQualityControlItems[indexValue].isChecked = e.currentTarget.checked;\r\n newQualityControlItems[indexValue].isReplaced = !e.currentTarget.checked;\r\n\r\n this.setState({\r\n ...this.state,\r\n qualityControlItems: newQualityControlItems\r\n });\r\n };\r\n\r\n handleToggleIsReplacedOption = (e: any, id: number, qcItemId: number) => {\r\n const indexValue = this.state.qualityControlItems.findIndex(\r\n (item) => item.id === id && item.qcItemId === qcItemId\r\n );\r\n const newQualityControlItems = [...this.state.qualityControlItems];\r\n\r\n newQualityControlItems[indexValue].isReplaced = e.currentTarget.checked;\r\n newQualityControlItems[indexValue].isChecked = !e.currentTarget.checked;\r\n\r\n this.setState({\r\n ...this.state,\r\n qualityControlItems: newQualityControlItems\r\n });\r\n };\r\n\r\n renderCertificateOfControlList = () => {\r\n let valuesCategories = [];\r\n valuesCategories = this.state.qualityControlItems\r\n .map((val) => val.qcItem!.qcItemCategory!.displayName)\r\n .filter((v, i, a) => a.indexOf(v) === i);\r\n\r\n return (\r\n
\r\n
{this.renderVehicleInfo()}
\r\n \r\n {valuesCategories.map((val, index) => {\r\n return (\r\n \r\n
\r\n {val}\r\n
\r\n
\r\n
{this.translatorService.Tranlate('CONTROLLED_LABEL', 'Controlat')}
\r\n
{this.translatorService.Tranlate('REPLACED_LABEL', 'Inlocuit')}
\r\n
\r\n \r\n {this.state.qualityControlItems\r\n .filter((item) => item.qcItem!.qcItemCategory!.displayName === val)\r\n .map((val, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n this.handleToggleIsCheckedOption(e, val.id, val.qcItemId)\r\n }\r\n checked={val.isChecked as any}\r\n // inputProps={{ 'aria-labelledby': labelId }}\r\n />\r\n \r\n this.handleToggleIsReplacedOption(e, val.id, val.qcItemId)\r\n }\r\n checked={val.isReplaced as any}\r\n // inputProps={{ 'aria-labelledby': labelId }}\r\n />\r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n );\r\n })}\r\n
\r\n \r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n
\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
{this.renderCertificateOfControlList()}
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCertificateOfControlFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CertificateOfControlForm as any));\r\n","import { Grid, Paper, Slider, TextField, Typography } from '@material-ui/core';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport React, { useMemo, useContext } from 'react';\r\nimport { SelectItem } from '../../interfaces/Radar/SelectItem';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { RadarFilters as Filters } from '../../interfaces/Radar/RadarFilters';\r\nimport { useSelector } from 'react-redux';\r\nimport Loader from '../Loader';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\n\r\nconst SLIDER_MIN = 1;\r\nconst SLIDER_MAX = 12;\r\nconst SLIDER_STEP = 1;\r\n\r\ninterface Props {\r\n filters: Filters;\r\n setFilters(filters: Filters): void;\r\n}\r\n\r\nconst RadarFilters: React.FC = ({ filters, setFilters }) => {\r\n const {\r\n app: { language, dateFormat }\r\n } = useSelector((state: any) => state);\r\n\r\n const context = useContext(ApplicationContext);\r\n\r\n const sliderMarks = useMemo(() => {\r\n const result = [];\r\n for (let i = SLIDER_MIN; i <= SLIDER_MAX; i += SLIDER_STEP) {\r\n result.push({\r\n value: i,\r\n label: i.toString()\r\n });\r\n }\r\n\r\n return result;\r\n }, []);\r\n\r\n const makes = useMemo(() => {\r\n if (filters.selectedMakes.length >= 3) {\r\n return [];\r\n }\r\n\r\n const selectedMakesIds = filters.selectedMakes.map(({ id }) => id);\r\n return filters.makes.filter((c) => !selectedMakesIds.includes(c.id));\r\n }, [filters.makes, filters.selectedMakes]);\r\n\r\n const models = useMemo(() => {\r\n if (filters.selectedModels.length >= 3) {\r\n return [];\r\n }\r\n\r\n let filterModels = filters.models;\r\n if (filters.selectedMakes.length) {\r\n const selectedMakeIds = filters.selectedMakes.map(({ id }) => id);\r\n filterModels = filterModels.filter((c) => selectedMakeIds.includes(c.makeId!));\r\n }\r\n\r\n const selectedModelsIds = filters.selectedModels.map(({ id }) => id);\r\n return filterModels.filter((c) => !selectedModelsIds.includes(c.id));\r\n }, [filters.models, filters.selectedModels, filters.selectedMakes]);\r\n\r\n const handleFormChange = (value: any, name: string) => {\r\n if (name === 'selectedMakes') {\r\n if (!value.length) {\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const valueIds = value.map((item: any) => item.id);\r\n\r\n if (!valueIds.includes(filters.selectedMakes[0].id)) {\r\n return;\r\n }\r\n }\r\n\r\n if (name === 'selectedModels') {\r\n if (!value.length) {\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const valueIds = value.map((item: any) => item.id);\r\n\r\n if (!valueIds.includes(filters.selectedModels[0].id)) {\r\n return;\r\n }\r\n }\r\n\r\n setFilters({\r\n ...filters,\r\n [name]: value\r\n });\r\n };\r\n\r\n if (!filters.period) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n handleFormChange(newValue, 'selectedMakes')}\r\n getOptionLabel={(option: SelectItem) => option.name}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n handleFormChange(newValue, 'selectedModels')}\r\n getOptionLabel={(option: SelectItem) => option.name}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n {\r\n handleFormChange(value, 'firstRegistrationDate');\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n {context.translatorService.Tranlate('RADAR_PERIOD_FILTER', 'Perioada')}\r\n \r\n handleFormChange(value, 'period')}\r\n valueLabelDisplay=\"on\"\r\n max={SLIDER_MAX}\r\n step={SLIDER_STEP}\r\n min={SLIDER_MIN}\r\n marks={sliderMarks}\r\n track={false}\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default RadarFilters;\r\n","import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\r\nimport { MapContainer, TileLayer, Marker } from 'react-leaflet';\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-ignore\r\nimport EnhancedMarker from 'react-leaflet-enhanced-marker';\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-ignore\r\nimport GeocoderArcGIS from 'geocoder-arcgis';\r\nimport Loader from '../Loader';\r\nimport L from 'leaflet';\r\n\r\nimport 'leaflet/dist/leaflet.css';\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-ignore\r\nimport icon from 'leaflet/dist/images/marker-icon.png';\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-ignore\r\nimport iconShadow from 'leaflet/dist/images/marker-shadow.png';\r\nimport { Tooltip } from '@material-ui/core';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport { MarketData } from '../../interfaces/Radar/MarketData';\r\nimport { RadarMapMarker } from '../../interfaces/Radar/RadarMapMarker';\r\n\r\nconst DefaultIcon = L.icon({\r\n iconUrl: icon,\r\n shadowUrl: iconShadow,\r\n iconSize: [25, 41],\r\n iconAnchor: [15, 25]\r\n});\r\n\r\nL.Marker.prototype.options.icon = DefaultIcon;\r\n\r\ninterface CustomMarkerProps {\r\n price: number;\r\n name: string;\r\n selected: boolean;\r\n}\r\nconst CustomMarker: React.FC = ({ price, name, selected }) => {\r\n const markerStyle = {\r\n backgroundColor: selected ? '#00008B' : '#207AC9',\r\n color: 'white',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n width: '80px',\r\n height: '30px',\r\n alignItems: 'center',\r\n borderRadius: '10px'\r\n };\r\n\r\n return (\r\n \r\n
{`${price} EUR`}
\r\n
\r\n );\r\n};\r\n\r\ninterface Props {\r\n filteredMarketData: MarketData[];\r\n selectedMarketData?: MarketData;\r\n setSelectedMarketData(marketData?: MarketData): void;\r\n}\r\n\r\nconst RadarMap: React.FC = ({\r\n filteredMarketData = [],\r\n selectedMarketData,\r\n setSelectedMarketData\r\n}) => {\r\n const [mapMarkers, setMapMarkers] = useState([]);\r\n const [mapLoading, setMapLoading] = useState(false);\r\n\r\n const context = useContext(ApplicationContext);\r\n\r\n const handleMapMarkerClick = useCallback(\r\n (id: string) => {\r\n if (selectedMarketData?.id === id) {\r\n setSelectedMarketData(undefined);\r\n } else {\r\n const item = filteredMarketData.find((item) => item.id === id);\r\n if (item) {\r\n setSelectedMarketData(item);\r\n }\r\n }\r\n },\r\n [filteredMarketData, selectedMarketData, setSelectedMarketData]\r\n );\r\n\r\n useEffect(() => {\r\n const getGeoData = async () => {\r\n setMapLoading(true);\r\n const geocoder = new GeocoderArcGIS();\r\n const markers: RadarMapMarker[] = [];\r\n for (const item of filteredMarketData) {\r\n // TODO read country from organization\r\n const params = {\r\n country: 'ro',\r\n address: `${item.county ? item.county + ',' : ''} ${\r\n item.postalCode ? item.postalCode : ''\r\n }`\r\n };\r\n\r\n try {\r\n const response = await geocoder.findAddressCandidates(params);\r\n\r\n if (response && response.candidates.length) {\r\n markers.push({\r\n price: item.price,\r\n lat: response.candidates[0].location.y,\r\n long: response.candidates[0].location.x,\r\n name: item.name,\r\n id: item.id\r\n });\r\n }\r\n } catch {\r\n continue;\r\n }\r\n }\r\n\r\n setMapMarkers(markers);\r\n setMapLoading(false);\r\n };\r\n\r\n if (filteredMarketData.length) {\r\n getGeoData();\r\n }\r\n }, [context.organizationService, filteredMarketData]);\r\n\r\n if (mapLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n {mapMarkers.map(({ lat, long, price, id, name }, index) => {\r\n return (\r\n <>\r\n \r\n \r\n }\r\n position={[lat, long]}\r\n key={index}\r\n eventHandlers={{\r\n click: () => {\r\n handleMapMarkerClick(id);\r\n }\r\n }}\r\n />\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default RadarMap;\r\n","export const fuelTypes: { [unit: string]: string } = {\r\n U: 'Benzina',\r\n D: 'Diesel'\r\n};\r\n","import { Card, CardContent, CardMedia, Grid, Paper, Tooltip } from '@material-ui/core';\r\nimport React, { useContext } from 'react';\r\nimport { MarketData } from '../../interfaces/Radar/MarketData';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport { fuelTypes } from './fuelTypes';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\n\r\ninterface Props {\r\n filteredMarketData: MarketData[];\r\n}\r\n\r\nconst RecentAdds: React.FC = ({ filteredMarketData }) => {\r\n const context = useContext(ApplicationContext);\r\n return (\r\n \r\n
\r\n
\r\n {context.translatorService.Tranlate('RADAR_MOST_RECENT_ADS', 'Cele mai recente anunturi')}\r\n
\r\n
\r\n
\r\n \r\n {filteredMarketData.slice(0, 18).map((item) => {\r\n return (\r\n \r\n \r\n \r\n
\r\n
\r\n {item.source}\r\n
\r\n
\r\n {\r\n if (item.addId) {\r\n window.open(item.addId, '_blank');\r\n }\r\n }}\r\n >{`${item.name}, ${item.offeredBy}, ${item.source}`}\r\n {item.description && (\r\n \r\n \r\n \r\n )}\r\n

\r\n {`${item.manufacturerYear}, ${fuelTypes[item.fuelType]},\r\n ${item.kmNo} km${\r\n item.transmissionType ? ', ' + item.transmissionType : ''\r\n }`}\r\n
\r\n {`${item.county}${item.postalCode ? ', ' + item.postalCode : ''}`}\r\n

\r\n
\r\n
{`${item.price} EUR`}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default RecentAdds;\r\n","import { isNil } from 'lodash';\r\nimport React, { useMemo } from 'react';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport { DonutChartItem } from '../../interfaces/Radar/DonutChartItem';\r\nimport { MarketData } from '../../interfaces/Radar/MarketData';\r\nimport uniqBy from 'lodash/uniqBy';\r\n\r\ninterface Props {\r\n title: string;\r\n property: string;\r\n filteredMarketData: MarketData[];\r\n handleDonutClick(dataIndex?: number): void;\r\n}\r\n\r\nconst RadarDonutChart: React.FC = ({\r\n title,\r\n property,\r\n filteredMarketData,\r\n handleDonutClick\r\n}) => {\r\n const items = useMemo(() => {\r\n const sources = uniqBy(filteredMarketData, property);\r\n\r\n const items: DonutChartItem[] = [];\r\n for (const item of sources) {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n const value = item[property];\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n const count = filteredMarketData.filter((x: MarketData) => x[property] === value).length;\r\n\r\n items.push({ id: item.id, name: value, value: count });\r\n }\r\n\r\n return items;\r\n }, [filteredMarketData, property]);\r\n\r\n const series = useMemo(() => {\r\n return items.map((i) => i.value);\r\n }, [items]);\r\n\r\n const options = useMemo(() => {\r\n const labels = items.map((i) => i.name);\r\n return {\r\n chart: {\r\n type: 'donut',\r\n events: {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dataPointSelection: (event: any, chartContext: any, config: any) => {\r\n if (!isNil(config.dataPointIndex)) {\r\n handleDonutClick(config.dataPointIndex);\r\n }\r\n }\r\n }\r\n },\r\n labels,\r\n legend: {\r\n position: 'bottom'\r\n },\r\n responsive: [\r\n {\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n position: 'bottom'\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n }, [handleDonutClick, items]);\r\n\r\n return (\r\n
\r\n
{title}
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default RadarDonutChart;\r\n","import React, { useMemo, useContext } from 'react';\r\nimport { MarketData } from '../../interfaces/Radar/MarketData';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport isNil from 'lodash/isNil';\r\nimport { fuelTypes } from './fuelTypes';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\n\r\ninterface Props {\r\n title: string;\r\n filteredMarketData: MarketData[];\r\n currentVehicleMileage?: number;\r\n handleScatterClick(dataIndex?: number): void;\r\n}\r\n\r\nconst ScatterChart: React.FC = ({\r\n title,\r\n filteredMarketData,\r\n currentVehicleMileage,\r\n handleScatterClick\r\n}) => {\r\n const context = useContext(ApplicationContext);\r\n const series = useMemo(() => {\r\n return [\r\n {\r\n name: 'Pret',\r\n data: filteredMarketData.map((item) => [item.kmNo, item.price])\r\n }\r\n ];\r\n }, [filteredMarketData]);\r\n\r\n const options = useMemo(() => {\r\n return {\r\n chart: {\r\n id: 'radarScatterChart',\r\n type: 'scatter',\r\n events: {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dataPointSelection: (event: any, chartContext: any, config: any) => {\r\n if (!isNil(config.dataPointIndex)) {\r\n handleScatterClick(config.dataPointIndex);\r\n }\r\n }\r\n },\r\n zoom: {\r\n enabled: true\r\n }\r\n },\r\n tooltip: {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n custom: function ({ series, seriesIndex, dataPointIndex }) {\r\n const item = filteredMarketData[dataPointIndex];\r\n return `
\r\n
\r\n \r\n
\r\n
\r\n
${item.name}, ${item.offeredBy}, ${item.source}
\r\n

${item.manufacturerYear}, ${fuelTypes[item.fuelType]}, ${item.kmNo} km${\r\n item.transmissionType ? ', ' + item.transmissionType : ''\r\n }\r\n
\r\n ${item.county}${item.postalCode ? ', ' + item.postalCode : ''}\r\n

\r\n
${item.price} EUR
\r\n
\r\n
`;\r\n }\r\n },\r\n annotations: {\r\n xaxis: [\r\n {\r\n x: currentVehicleMileage,\r\n borderColor: '#775DD0',\r\n label: {\r\n style: {\r\n color: '#000'\r\n },\r\n text: context.translatorService.Tranlate('RADAR_MY_VEHICLE', 'Vehiculul meu')\r\n }\r\n }\r\n ]\r\n }\r\n };\r\n }, [currentVehicleMileage, filteredMarketData, handleScatterClick]);\r\n\r\n return (\r\n
\r\n
{title}
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default ScatterChart;\r\n","import React, { useMemo, useRef, useContext } from 'react';\r\nimport { MarketData } from '../../interfaces/Radar/MarketData';\r\nimport isNil from 'lodash/isNil';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport meanBy from 'lodash/meanBy';\r\nimport minBy from 'lodash/minBy';\r\nimport moment from 'moment';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\n\r\ninterface Props {\r\n title: string;\r\n period: number;\r\n filteredMarketData: MarketData[];\r\n handleLineClick(dataIndex?: number): void;\r\n}\r\nconst RadarLineChart: React.FC = ({\r\n title,\r\n period,\r\n filteredMarketData,\r\n handleLineClick\r\n}) => {\r\n const meanKmArray = useRef([]);\r\n const context = useContext(ApplicationContext);\r\n\r\n const monthMap = useMemo(\r\n () =>\r\n new Map([\r\n ['01', context.translatorService.Tranlate('RADAR_JANUARY', 'Ianuarie')],\r\n ['02', context.translatorService.Tranlate('RADAR_FEBRUARY', 'Februarie')],\r\n ['03', context.translatorService.Tranlate('RADAR_MARCH', 'Martie')],\r\n ['04', context.translatorService.Tranlate('RADAR_APRIL', 'Aprilie')],\r\n ['05', context.translatorService.Tranlate('RADAR_MAY', 'Mai')],\r\n ['06', context.translatorService.Tranlate('RADAR_JUNE', 'Iunie')],\r\n ['07', context.translatorService.Tranlate('RADAR_JULY', 'Iulie')],\r\n ['08', context.translatorService.Tranlate('RADAR_AUGUST', 'August')],\r\n ['09', context.translatorService.Tranlate('RADAR_SEPTEMBER', 'Septembrie')],\r\n ['10', context.translatorService.Tranlate('RADAR_OCTOBER', 'Octombrie')],\r\n ['11', context.translatorService.Tranlate('RADAR_NOVEMBER', 'Noiembrie')],\r\n ['12', context.translatorService.Tranlate('RADAR_DECEMBER', 'Decembrie')]\r\n ]),\r\n [context]\r\n );\r\n\r\n const labels = useMemo(() => {\r\n const dateEnd = moment();\r\n const dateStart = moment().add(-period, 'month');\r\n\r\n const labels: string[] = [];\r\n\r\n while (dateEnd > dateStart || dateStart.format('M') === dateEnd.format('M')) {\r\n const month = dateStart.format('MM');\r\n if (monthMap.has(month)) {\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n labels.push(monthMap.get(month)!);\r\n }\r\n dateStart.add(1, 'month');\r\n }\r\n\r\n return labels;\r\n }, [period, monthMap]);\r\n\r\n const series = useMemo(() => {\r\n const dateEnd = moment();\r\n const dateStart = moment().add(-period, 'month');\r\n\r\n const months: string[] = [];\r\n\r\n while (dateEnd > dateStart || dateStart.format('M') === dateEnd.format('M')) {\r\n const month = dateStart.format('MM');\r\n months.push(month);\r\n dateStart.add(1, 'month');\r\n }\r\n\r\n const dataMin = [];\r\n for (const month of months) {\r\n const results = filteredMarketData.filter((item) => {\r\n return moment(item.addDate, 'YYYY-MM-DD').format('MM') === month;\r\n });\r\n\r\n if (results.length) {\r\n const min = minBy(results, 'price');\r\n if (!isNil(min)) {\r\n dataMin.push(+min.price.toFixed(2));\r\n }\r\n } else {\r\n dataMin.push(null);\r\n }\r\n }\r\n\r\n const dataMed = [];\r\n for (const month of months) {\r\n const results = filteredMarketData.filter((item) => {\r\n return moment(item.addDate, 'YYYY-MM-DD').format('MM') === month;\r\n });\r\n\r\n if (results.length) {\r\n const mean = meanBy(results, 'price');\r\n const meanKm = meanBy(results, 'kmNo');\r\n if (!isNil(mean)) {\r\n dataMed.push(+mean.toFixed(2));\r\n }\r\n if (!isNil(meanKm)) {\r\n meanKmArray.current.push(+meanKm.toFixed(2));\r\n }\r\n } else {\r\n dataMed.push(null);\r\n }\r\n }\r\n\r\n return [\r\n {\r\n name: context.translatorService.Tranlate('RADAR_MINIMUM_PRICE', 'Pret minim'),\r\n data: dataMin\r\n },\r\n {\r\n name: context.translatorService.Tranlate('RADAR_AVERAGE_PRICE', 'Pret mediu'),\r\n data: dataMed\r\n }\r\n ];\r\n }, [filteredMarketData, period, context]);\r\n\r\n const options = useMemo(() => {\r\n return {\r\n chart: {\r\n type: 'line',\r\n events: {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dataPointSelection: (event: any, chartContext: any, config: any) => {\r\n if (!isNil(config.dataPointIndex)) {\r\n handleLineClick(config.dataPointIndex);\r\n }\r\n }\r\n },\r\n toolbar: {\r\n show: false\r\n }\r\n },\r\n tooltip: {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n custom: function ({ series, seriesIndex, dataPointIndex }) {\r\n const minPriceSeries = series[0].filter((item: any) => item !== null);\r\n const mediumPriceSeries = series[1].filter((item: any) => item !== null);\r\n return `
\r\n

${context.translatorService.Tranlate('RADAR_AVERAGE_PRICE', 'Pret mediu')}: ${\r\n mediumPriceSeries[seriesIndex]\r\n } EUR

\r\n

${context.translatorService.Tranlate('RADAR_MINIMUM_PRICE', 'Pret minim')}: ${\r\n minPriceSeries[seriesIndex]\r\n } EUR

\r\n

${context.translatorService.Tranlate(\r\n 'RADAR_AVERAGE_TURNOVER',\r\n 'Rulaj mediu'\r\n )}: ${meanKmArray.current[seriesIndex]} km

\r\n
`;\r\n }\r\n },\r\n xaxis: {\r\n categories: labels\r\n }\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [handleLineClick, labels, filteredMarketData]);\r\n\r\n return (\r\n
\r\n
{title}
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default RadarLineChart;\r\n","import { RadarState } from '../../interfaces/Radar/RadarState';\r\n\r\nexport const SET_FILTERS = '[RADAR] SET_FILTERS';\r\nexport const SET_SELECTED_MARKET_DATA = '[RADAR] SET_SELECTED_MARKET_DATA';\r\nexport const SET_MARKET_DATA = '[RADAR] SET_MARKET_DATA';\r\nexport const SET_SELECTED_SELLER_TYPE = '[RADAR SET_SELECTED_SELLER_TYPE';\r\nexport const SET_SELECTED_SELLER = '[RADAR] SET_SELECTED_SELLER';\r\nexport const SET_MARKET_DATA_LOADING = '[RADAR] SET_MARKET_DATA_LOADING';\r\nexport const SET_SELECTED_VEHICLE = '[RADAR] SET_SELECTED_VEHICLE';\r\n\r\nexport const radarReducer = (state: RadarState, action: any) => {\r\n switch (action.type) {\r\n case SET_FILTERS:\r\n return { ...state, filters: action.filters };\r\n case SET_SELECTED_MARKET_DATA:\r\n return {\r\n ...state,\r\n selectedMarketData: action.selectedMarketData\r\n ? action.selectedMarketData.id !== state.selectedMarketData?.id\r\n ? action.selectedMarketData\r\n : undefined\r\n : undefined\r\n };\r\n case SET_MARKET_DATA:\r\n return { ...state, marketData: action.marketData };\r\n case SET_SELECTED_SELLER_TYPE:\r\n return {\r\n ...state,\r\n selectedSellerType:\r\n action.selectedSellerType !== state.selectedSellerType\r\n ? action.selectedSellerType\r\n : undefined\r\n };\r\n case SET_SELECTED_SELLER:\r\n return {\r\n ...state,\r\n selectedSeller:\r\n action.selectedSeller !== state.selectedSeller ? action.selectedSeller : undefined\r\n };\r\n case SET_MARKET_DATA_LOADING:\r\n return { ...state, marketDataLoading: action.marketDataLoading };\r\n case SET_SELECTED_VEHICLE:\r\n return { ...state, selectedVehicle: action.selectedVehicle };\r\n default:\r\n return state;\r\n }\r\n};\r\n","import React, { useCallback, useContext, useEffect, useMemo, useReducer, useRef } from 'react';\r\nimport { Grid, Paper } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport { MarketData } from '../../interfaces/Radar/MarketData';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport RadarFilters from './RadarFilters';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport RadarMap from './RadarMap';\r\nimport RecentAdds from './RecentAdds';\r\nimport RadarDonutChart from './RadarDonutChart';\r\nimport RadarScatterChart from './RadarScatterChart';\r\nimport RadarLineChart from './RadarLineChart';\r\nimport noop from 'lodash/noop';\r\nimport Loader from '../Loader';\r\nimport {\r\n radarReducer,\r\n SET_FILTERS,\r\n SET_MARKET_DATA_LOADING,\r\n SET_MARKET_DATA,\r\n SET_SELECTED_MARKET_DATA,\r\n SET_SELECTED_SELLER,\r\n SET_SELECTED_SELLER_TYPE,\r\n SET_SELECTED_VEHICLE\r\n} from './radarReducer';\r\nimport { RadarFilters as Filters } from '../../interfaces/Radar/RadarFilters';\r\nimport ApexCharts from 'apexcharts';\r\nimport isNil from 'lodash/isNil';\r\nimport uniqBy from 'lodash/uniqBy';\r\nimport { Vehicle } from '../../interfaces/Vehicle';\r\ninterface Props {\r\n vehicleId?: number;\r\n}\r\n\r\nconst Radar: React.FC = ({ vehicleId }) => {\r\n const [state, dispatch] = useReducer(radarReducer, {\r\n filters: {\r\n makes: [],\r\n selectedMakes: [],\r\n models: [],\r\n selectedModels: [],\r\n firstRegistrationDate: moment().add(-5, 'year')\r\n },\r\n marketData: [],\r\n marketDataLoading: false\r\n });\r\n\r\n const { filters } = state;\r\n\r\n const selectedDataIndex = useRef();\r\n\r\n const context = useContext(ApplicationContext);\r\n\r\n const filteredMarketData = useMemo(() => {\r\n let result: MarketData[] = state.marketData;\r\n\r\n if (state.selectedSeller) {\r\n result = result.filter((item) => item.source === state.selectedSeller);\r\n }\r\n\r\n if (state.selectedSellerType) {\r\n result = result.filter((item) => item.offeredBy === state.selectedSellerType);\r\n }\r\n\r\n return result;\r\n }, [state.marketData, state.selectedSeller, state.selectedSellerType]);\r\n\r\n const setFilters = useCallback((newFilters: Filters) => {\r\n dispatch({ type: SET_FILTERS, filters: newFilters });\r\n }, []);\r\n\r\n const setMarketDataLoading = useCallback((marketDataLoading: boolean) => {\r\n dispatch({ type: SET_MARKET_DATA_LOADING, marketDataLoading });\r\n }, []);\r\n\r\n const setMarketData = useCallback((marketData: MarketData[]) => {\r\n dispatch({ type: SET_MARKET_DATA, marketData });\r\n }, []);\r\n\r\n const setSelectedSeller = useCallback((selectedSeller?: string) => {\r\n dispatch({ type: SET_SELECTED_SELLER, selectedSeller });\r\n }, []);\r\n\r\n const setSelectedVehicle = useCallback((selectedVehicle?: Vehicle) => {\r\n dispatch({ type: SET_SELECTED_VEHICLE, selectedVehicle });\r\n }, []);\r\n\r\n const setSelectedSellerType = useCallback((selectedSellerType?: string) => {\r\n dispatch({ type: SET_SELECTED_SELLER_TYPE, selectedSellerType });\r\n }, []);\r\n\r\n const handleSelectedSellerDonutClick = useCallback(\r\n (dataIndex?: number) => {\r\n if (!isNil(dataIndex)) {\r\n const data = uniqBy(filteredMarketData, 'source');\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n const source = data[dataIndex].source;\r\n if (!isNil(source)) {\r\n setSelectedSeller(source);\r\n }\r\n }\r\n },\r\n [filteredMarketData, setSelectedSeller]\r\n );\r\n\r\n const handleSelectedSellerTypeDonutClick = useCallback(\r\n (dataIndex?: number) => {\r\n if (!isNil(dataIndex)) {\r\n const data = uniqBy(filteredMarketData, 'offeredBy');\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n const offeredBy = data[dataIndex].offeredBy;\r\n if (!isNil(offeredBy)) {\r\n setSelectedSellerType(offeredBy);\r\n }\r\n }\r\n },\r\n [filteredMarketData, setSelectedSellerType]\r\n );\r\n\r\n const setSelectedMarketData = useCallback((selectedMarketData: MarketData) => {\r\n dispatch({ type: SET_SELECTED_MARKET_DATA, selectedMarketData });\r\n // if (selectedMarketData) {\r\n // const index = filteredMarketData.findIndex(\r\n // (item: MarketData) => item.id === selectedMarketData?.id\r\n // );\r\n // ApexCharts.exec('radarScatterChart', 'toggleDataPointSelection', 0, index);\r\n // selectedDataIndex.current = index;\r\n // } else {\r\n // ApexCharts.exec(\r\n // 'radarScatterChart',\r\n // 'toggleDataPointSelection',\r\n // 0,\r\n // selectedDataIndex.current\r\n // );\r\n // selectedDataIndex.current = undefined;\r\n // }\r\n }, []);\r\n\r\n const handleScatterClick = useCallback(\r\n (dataIndex?: number) => {\r\n if (!isNil(dataIndex)) {\r\n const selectedMarketData = filteredMarketData[dataIndex];\r\n dispatch({ type: SET_SELECTED_MARKET_DATA, selectedMarketData });\r\n }\r\n },\r\n [filteredMarketData]\r\n );\r\n\r\n useEffect(() => {\r\n const getVehicleFilters = async () => {\r\n const vehicleHistory = true;\r\n const vehicleFilters = await context.vehicleService.GetVehiclesFilters(vehicleHistory);\r\n\r\n let vehicle;\r\n\r\n if (vehicleId) {\r\n vehicle = await context.vehicleService.GetVehicle(vehicleId);\r\n }\r\n\r\n if (\r\n vehicleFilters &&\r\n vehicle &&\r\n vehicle.modelId &&\r\n vehicle.makeId &&\r\n vehicle.make &&\r\n vehicle.model\r\n ) {\r\n setSelectedVehicle(vehicle);\r\n setFilters({\r\n period: 3,\r\n firstRegistrationDate: moment.utc(vehicle.firstRegistrationDate),\r\n makes: vehicleFilters.makeList.map(({ id, displayName }) => {\r\n return {\r\n id,\r\n name: displayName\r\n };\r\n }),\r\n models: vehicleFilters.modelList.map(({ id, displayName, dependencyId }) => {\r\n return {\r\n id,\r\n name: displayName,\r\n makeId: dependencyId || -1\r\n };\r\n }),\r\n selectedMakes: [{ id: vehicle.makeId || -1, name: vehicle.make?.displayName || '' }],\r\n selectedModels: [{ id: +vehicle.modelId || -1, name: vehicle.model?.displayName || '' }]\r\n });\r\n }\r\n };\r\n\r\n getVehicleFilters();\r\n }, [context.vehicleService, setFilters, setSelectedVehicle, vehicleId]);\r\n\r\n useEffect(() => {\r\n const getMarketData = async () => {\r\n setMarketDataLoading(true);\r\n const marketData = await context.vehicleService.GetVehicleMarketData({\r\n make: filters.selectedMakes[0].name,\r\n model: filters.selectedModels[0].name,\r\n registrationDate: filters.firstRegistrationDate.toDate(),\r\n months: filters.period\r\n });\r\n\r\n for (const item of marketData) {\r\n item.id = uuidv4();\r\n }\r\n\r\n if (marketData) {\r\n setMarketData(marketData);\r\n setMarketDataLoading(false);\r\n }\r\n };\r\n if (\r\n filters.makes.length &&\r\n filters.makes.length &&\r\n filters.selectedMakes.length &&\r\n filters.selectedModels.length\r\n ) {\r\n getMarketData();\r\n }\r\n }, [\r\n context.vehicleService,\r\n filters.selectedMakes,\r\n filters.selectedModels,\r\n filters.firstRegistrationDate,\r\n filters.period,\r\n filters.makes.length,\r\n setMarketDataLoading,\r\n setMarketData\r\n ]);\r\n\r\n if (!filters.makes.length && !filters.models.length) {\r\n return ;\r\n }\r\n\r\n return (\r\n
\r\n \r\n {state.marketDataLoading ? (\r\n \r\n ) : !state.marketData.length ? (\r\n \r\n
\r\n {context?.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n )}\r\n
\r\n
\r\n ) : null}\r\n {!state.marketDataLoading && state.marketData.length ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nexport default Radar;\r\n","import React, { Fragment, useContext, useEffect, useState } from 'react';\r\nimport { Box, Card, CardContent, Dialog, DialogContent, DialogTitle, IconButton, Typography } from '@material-ui/core';\r\nimport { Label } from 'reactstrap';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport { ValuationHistory } from '../../interfaces/Case';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport moment from 'moment';\r\nimport { useAppSelector } from '../../store/configureStore';\r\n\r\nconst CaseValuationHistory = ({ isOpen, close, id }: { isOpen: boolean, close:()=>void, id:string}) => {\r\n const [isLoading, setIsLoading] = React.useState(false);\r\n const context = useContext(ApplicationContext);\r\n const [historyList, setHistoryList] = useState([]);\r\n const caseService = context.caseService;\r\n const translatorService = context.translatorService;\r\n const appUserService = context.appUserService;\r\n const language = useAppSelector((state) => state.app?.language);\r\n const longDateFormat = useAppSelector((state) => state.app?.longDateFormat);\r\n\r\n const fetchHistory = async () => {\r\n setIsLoading(true);\r\n const response = await caseService.GetValuationHistory(Number.parseInt(id))\r\n\r\n if (!response?.length) {\r\n setIsLoading(false)\r\n return\r\n }\r\n const userIds = response.map((item) => item.modifiedBy);\r\n const users = await appUserService.GetUsersInfo(Array.from(new Set(userIds)));\r\n const futureHistoryList = [...response]\r\n \r\n for (let i=0; i< futureHistoryList?.length; i++) {\r\n futureHistoryList[i].updatedByUserFullName = users[i]?.updatedByUserFullName;\r\n futureHistoryList[i].email = users[i]?.email;\r\n }\r\n setHistoryList(futureHistoryList);\r\n setIsLoading(false);\r\n };\r\n\r\n useEffect(()=>{\r\n fetchHistory();\r\n },[])\r\n\r\n const showHistory = () => {\r\n if (historyList.length === 0) {\r\n return (\r\n \r\n {translatorService.Tranlate('TARIFF_EDIT_LABOR_TAB_NO_DATA', 'Nu exista date de afisat!')}\r\n \r\n );\r\n }\r\n\r\n const labelStyle = {\r\n fontSize: '0.8rem !important',\r\n fontWeight: '500',\r\n padding: '0px',\r\n margin: '0px 6px 0px 0px'\r\n };\r\n const priceStyle = {\r\n fontSize: '0.8rem',\r\n fontWeight: '600',\r\n display: 'flex',\r\n alignItems: 'center'\r\n };\r\n const boxStyle = {\r\n fontSize: '0.8rem',\r\n display: 'flex',\r\n alignItems: 'center'\r\n };\r\n\r\n return historyList.map((item, index) => (\r\n
\r\n
\r\n
\r\n \r\n \r\n {item.updatedByUserFullName + ' (' + item.email + ')'}\r\n \r\n \r\n {moment\r\n .utc(item.date)\r\n .local()\r\n .format(longDateFormat || 'DD/MM/YYYY HH:mm')}\r\n \r\n \r\n\r\n \r\n {index === 0 ? (\r\n \r\n \r\n \r\n {item.priceAsNew ? item.priceAsNew.toFixed(2) : 0} €\r\n \r\n \r\n ) : null}\r\n\r\n \r\n \r\n \r\n {item.tradeInPrice ? item.tradeInPrice.toFixed(2) : 0} €\r\n \r\n \r\n\r\n \r\n \r\n \r\n {item.offerPrice ? item.offerPrice.toFixed(2) : 0} €\r\n \r\n \r\n\r\n \r\n \r\n \r\n {item.retailPrice ? item.retailPrice.toFixed(2) : 0} €\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n ));\r\n };\r\n return (\r\n \r\n \r\n \r\n {translatorService.Tranlate('CASE_CALCULATION_EVALUATION_HISTORY', 'Istoric Evaluari')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!isLoading ? (\r\n \r\n \r\n \r\n
\r\n
\r\n {' '}\r\n {showHistory()}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default CaseValuationHistory;\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, CaseSettingsState, AppState } from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Grid, Button } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CaseClient, CaseRequest } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport moment from 'moment';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport FileSaver from 'file-saver';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport * as R from 'ramda';\r\n\r\ninterface ICaseDetailsCaseRequestsState {\r\n caseRequests: CaseRequest[];\r\n isLoading: boolean;\r\n clientData: CaseClient;\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseRequestsProps {\r\n formId: number;\r\n caseRequests: CaseRequest[] | null;\r\n carfixOfferComments: boolean;\r\n}\r\n\r\ntype ICaseDetailsCaseRequestsProps = {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & AppState &\r\n ExternalCaseDetailsCaseRequestsProps &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseRequests extends React.PureComponent<\r\n ICaseDetailsCaseRequestsProps,\r\n ICaseDetailsCaseRequestsState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n private caseService!: ICaseService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n caseRequests: [],\r\n isLoading: false,\r\n clientData: {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n caseSectionStepFormId: 0,\r\n clientId: 0,\r\n pin: '',\r\n companyNumber: '',\r\n companyName: '',\r\n gdprAgreement: true,\r\n address: '',\r\n city: null,\r\n region: null,\r\n district: null,\r\n bankAccount: '',\r\n email: '',\r\n phone: ''\r\n } as CaseClient\r\n } as ICaseDetailsCaseRequestsState;\r\n\r\n public componentDidMount() {\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (Number.isNaN(caseId)) {\r\n return;\r\n }\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseRequests();\r\n }\r\n );\r\n }\r\n\r\n loadCaseRequests = async () => {\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n const casee = this.props.caseSettingsState.case;\r\n let caseClient = this.state.clientData;\r\n if (!R.isNil(casee!.caseClient)) {\r\n caseClient = casee!.caseClient;\r\n }\r\n\r\n let caseRequests = this.props.caseRequests;\r\n\r\n if (caseRequests == null) {\r\n caseRequests = await this.caseService.GetCaseRequests(caseId, this.props.formId);\r\n\r\n const userIds = caseRequests.map((item) => item.userId);\r\n userIds.push(...caseRequests.map((item) => item.userId));\r\n\r\n const users = await this.appUserService.GetUsersInfo(Array.from(new Set(userIds)));\r\n\r\n for (const i of caseRequests) {\r\n const user = users.find((u) => u.id === i.userId);\r\n i.user = isNullOrUndefined(user) ? null : user;\r\n }\r\n }\r\n\r\n this.setState({\r\n isLoading: false,\r\n caseRequests: caseRequests.sort(function (a: any, b: any) {\r\n return b.date - a.date;\r\n }),\r\n clientData: caseClient\r\n });\r\n };\r\n\r\n downloadFile = async (fileName: string, origFileName: string) => {\r\n const fileBlob = await this.caseService.GetCaseAttachment(fileName);\r\n FileSaver.saveAs(fileBlob, origFileName);\r\n };\r\n\r\n downloadVehicleCostFile = async (fileName: string, origFileName: string) => {\r\n const fileBlob = await this.vehicleService.GetVehicleCostAttachment(fileName);\r\n FileSaver.saveAs(fileBlob, origFileName);\r\n };\r\n\r\n showTimeline = () => {\r\n const requests = this.state.caseRequests;\r\n\r\n if (requests.length === 0) {\r\n return null;\r\n }\r\n return requests.map((request, index) => (\r\n
\r\n
\r\n
\r\n

\r\n {moment.utc(request.date).local().toDate().toLocaleString(this.props.language) +\r\n ' (' +\r\n (!this.props.carfixOfferComments ? request.user!.userName : this.state.clientData.email ?? request.user!.userName) +\r\n ')'}{' '}\r\n

\r\n

\r\n {request.to !== null ? (\r\n \r\n {' '}\r\n {request.to} - {request.subject}\r\n \r\n ) : (\r\n ''\r\n )}\r\n

\r\n {\r\n this.props.carfixOfferComments ? (\r\n index === 0 ? (\r\n

\r\n

\r\n

\r\n ) : (\r\n

\r\n

\r\n

\r\n )\r\n ) : (\r\n

\r\n

\r\n

\r\n )\r\n }\r\n\r\n {request.isVehicleCost == true ? (\r\n

\r\n {request.costType?.name}\r\n

\r\n ) : (\r\n ''\r\n )}\r\n {request.isVehicleCost == true ? (\r\n

\r\n \r\n {request.secondValue +\r\n ' ' +\r\n request.secondCurrency +\r\n ' (' +\r\n request.value +\r\n ' ' +\r\n request.currency +\r\n ')'}\r\n \r\n

\r\n ) : (\r\n ''\r\n )}\r\n {this.renderAttachmentBox(request)}\r\n
\r\n
\r\n ));\r\n };\r\n\r\n renderAttachmentBox = (caseRequest: CaseRequest) => {\r\n if (this.props.caseSettingsState.caseSettings!.workflow.isPrcIntegration && this.props.appState.appUser!.organization!.organizationType!.hideOtherAttachments) {\r\n return null;\r\n }\r\n \r\n return (\r\n \r\n \r\n {caseRequest.attachments.length !== 0\r\n ? caseRequest.attachments.map((attach, index) => {\r\n return (\r\n
\r\n
\r\n \r\n caseRequest.isVehicleCost\r\n ? this.downloadVehicleCostFile(attach.fileName, attach.originalFileName)\r\n : this.downloadFile(attach.fileName, attach.originalFileName)\r\n }\r\n >\r\n {attach.originalFileName}\r\n \r\n
\r\n
\r\n );\r\n })\r\n : null}\r\n
\r\n
\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading && this.state.caseRequests.length !== 0 ? (\r\n
\r\n
{this.showTimeline()}
\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseRequestsProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n null,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseRequests as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n VehicleState\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Button,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n Typography,\r\n DialogContent,\r\n Divider,\r\n Menu,\r\n MenuItem,\r\n Grid,\r\n DialogActions,\r\n Tooltip,\r\n Box,\r\n Modal,\r\n DialogContentText\r\n} from '@material-ui/core';\r\nimport { Label } from 'reactstrap';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport {\r\n Workflow,\r\n WorkflowCalculation,\r\n WorkflowFormAction,\r\n WorkflowFormReport,\r\n WorkflowOptimization,\r\n WorkflowPartner,\r\n WorkflowSectionStep,\r\n WorkflowSectionStepForm,\r\n WorkflowSupplier\r\n} from '../../interfaces/Workflow';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CarfixAlternativeCalculationRequest, CarfixAlternativeCalculationResponse, CaseAttachment, CaseCalculationHistory, CaseCalculationPart, CaseRequest, CaseStatusHistory, ChangeCaseStatusRequest, ClaimServiceAlternativeCalculationRequest, ClaimServiceCalculationRequest, ClaimServiceCalculationResponse, ManipulationTariffPercentResponse, PartsHistoryInterogationRequest, SendAlternativeCalculationRequest, SendAlternativeCalculationResponse, TariffPercentRequest, TariffPercentResponse } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport {\r\n ReferentialCode,\r\n CalculationTypeCode,\r\n ParametreCode,\r\n ReportTypeCode,\r\n WorflowEditableReport,\r\n OrderStatusCode,\r\n CaseStatusCodeEnum,\r\n CalculationSectionCodeEnum,\r\n WorkflowFormActionTypeCode,\r\n AttachmentTypeCode,\r\n OrganizationTypeCode,\r\n TariffTypeGroupCodeEnum,\r\n LanguageCode,\r\n nonStockCheckedOERoles\r\n} from '../../helpers/Constants';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n SelectableRows,\r\n MUIDataTableMeta\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport CaseDetailsCaseTabCalculationDetails2 from './CaseDetailsCaseTabCalculationDetails2';\r\nimport CaseDetailsAlternativeCalculationDetails from './CaseDetailsAlternativeCalculationDetails';\r\nimport CaseDetailsValuation from './CaseDetailsValuation';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport CaseDetailsCaseTabCompareCalculations from './CaseDetailsCaseTabCompareCalculations';\r\nimport { CalculationRequest, CalculationResponse } from '../../interfaces/GtService';\r\nimport FileSaver from 'file-saver';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport { IReportsService } from '../../services/Interfaces/IReportsService';\r\nimport { ReportParameter } from '../../interfaces/Reports';\r\nimport CertificateOfControl from '../vehicles/CertificateOfControl';\r\nimport Radar from '../radar/Radar';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport { CaseTypeCode } from '../../helpers/Constants';\r\nimport _, { forEach } from 'lodash';\r\nimport { IOrderService } from '../../services/Interfaces/IOrderService';\r\nimport { Order, PartToBeOrdered } from '../../interfaces/Order';\r\nimport { IWorkflowService } from '../../services/Interfaces/IWorkflowService';\r\nimport * as R from 'ramda';\r\nimport { MuiThemeProvider, createMuiTheme } from '@material-ui/core';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport CaseValuationHistory from './CaseValuationHistory';\r\nimport CaseDetailsCaseRequests from './CaseDetailsCaseRequests';\r\nimport { ValidatorForm } from 'react-material-ui-form-validator';\r\nimport DropdownTreeSelect from 'react-dropdown-tree-select';\r\nimport { ITariffService } from '../../services/Interfaces/ITariffService';\r\nimport ArrowBackTwoToneIcon from '@material-ui/icons/ArrowBackTwoTone';\r\nimport GetAppIcon from '@material-ui/icons/GetApp';\r\nimport { VehicleHelper } from '../../helpers/VehicleHelper';\r\n\r\ninterface ICaseDetailsCaseTabCalculationsFormState {\r\n caseCalculationHistory: CaseCalculationHistory[];\r\n caseCalculationHistoryCopy: CaseCalculationHistory[];\r\n caseCalculationActionTypeList: IReferential[];\r\n workflowReports: WorkflowFormReport[];\r\n WorkflowOptimization: WorkflowOptimization[];\r\n calculationSectionList: IReferential[];\r\n isLoading: boolean;\r\n isDialogOpen: boolean;\r\n calculationHistoryIds: number[];\r\n openMenuItem: any | null;\r\n disableButtonForMoreThenOneRowChecked: boolean;\r\n disableButtonForMoreThenTwoRowsChecked: boolean;\r\n selectedCalculationButton: string | null;\r\n rowsSelected: any[];\r\n modified: boolean;\r\n isDialogModifiedOpen: boolean;\r\n isDialogAlternativeCalculationOpen: boolean;\r\n isDialogQualityControlOpen: boolean;\r\n isDialogRadarOpen: boolean;\r\n isValuationOpen: boolean;\r\n maxDeliveryTime: number;\r\n tmlEditable: boolean;\r\n workflowCalculation: WorkflowCalculation | null;\r\n hasRights: boolean;\r\n executing: boolean;\r\n orderList: Order[];\r\n unorderedParts: PartToBeOrdered[];\r\n caseStatuses: IReferential[];\r\n partsForFirstCalculation: CaseCalculationPart[];\r\n wfTransitionStepAction: WorkflowFormAction | null;\r\n insurerList: IReferential[];\r\n manipulationTariff: ManipulationTariffPercentResponse;\r\n serviceId: number | null;\r\n discretionaryPriceDealer?: number;\r\n discretionaryPriceEmployee?: number;\r\n accoutingValue?: number;\r\n showHistoryModal: boolean;\r\n additionTariff: TariffPercentResponse;\r\n discountTariff: TariffPercentResponse;\r\n caseRequests: CaseRequest[];\r\n packageCalculationId: number | null;\r\n ownerTariffPartner: WorkflowPartner | null;\r\n isMultipleTariffDialogOpen: boolean;\r\n selectedCalculationTypeId: number | null;\r\n tariffBranches: TariffBranch[];\r\n selectedTariffBranch: TariffBranch | null;\r\n isOwnTariffLoading: boolean;\r\n lastServiceCalculation: CaseCalculationHistory | null;\r\n isClientCommentOpen: boolean;\r\n orginalCalculationTypeId: number | null;\r\n caseStatusHistory: CaseStatusHistory[];\r\n backButtonDisabled: boolean;\r\n attachType: IReferential;\r\n nonStockSuppliers: WorkflowSupplier[];\r\n}\r\nexport interface ExternalCaseDetailsCaseTabCalculationsFormProps {\r\n stepFormId: number;\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ninterface TariffBranch {\r\n id: number;\r\n ownerId: number;\r\n tariffName: string;\r\n partnerId: number;\r\n children: TariffBranch[];\r\n path: string | null;\r\n label: string;\r\n checked: boolean | null;\r\n}\r\n\r\ntype ICaseDetailsCaseTabCalculationsFormProps = ExternalCaseDetailsCaseTabCalculationsFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n vehicleState: VehicleState;\r\n appState: AppState;\r\n} & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string; calcId: string | undefined; formId: string | undefined }>;\r\n\r\nclass CaseDetailsCaseTabCalculationsForm extends React.PureComponent<\r\n ICaseDetailsCaseTabCalculationsFormProps,\r\n ICaseDetailsCaseTabCalculationsFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private reportsService!: IReportsService;\r\n private appReferentialService!: IReferentialService;\r\n private appUserService!: IAppUserService;\r\n private orderService!: IOrderService;\r\n private vehicleService!: IVehicleService;\r\n private workflowService!: IWorkflowService;\r\n private tariffService!: ITariffService;\r\n private ACTION_COMPARE = 'COMPARE';\r\n private ACTION_GT_VAL = 'GT_VAL';\r\n private RADAR = 'RADAR';\r\n private ACTION_INSURER_CALCULATION = 'INSURER_CALCULATION';\r\n private ACTION_BACK_BUTTON = 'BACK_BUTTON';\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n caseCalculationHistory: [],\r\n caseCalculationHistoryCopy: [],\r\n caseCalculationActionTypeList: [],\r\n workflowReports: [],\r\n WorkflowOptimization: [],\r\n calculationSectionList: [],\r\n isLoading: true,\r\n isDialogOpen: false,\r\n calculationHistoryIds: [],\r\n openMenuItem: null,\r\n disableButtonForMoreThenOneRowChecked: true,\r\n disableButtonForMoreThenTwoRowsChecked: true,\r\n rowsSelected: [],\r\n selectedCalculationButton: null,\r\n modified: false,\r\n isDialogModifiedOpen: false,\r\n isValuationOpen: false,\r\n isDialogAlternativeCalculationOpen: false,\r\n isDialogQualityControlOpen: false,\r\n isDialogRadarOpen: false,\r\n maxDeliveryTime: 0,\r\n tmlEditable: false,\r\n workflowCalculation: null,\r\n hasRights: false,\r\n executing: false,\r\n orderList: [],\r\n unorderedParts: [],\r\n caseStatuses: [],\r\n partsForFirstCalculation: [],\r\n wfTransitionStepAction: null,\r\n insurerList: [],\r\n discretionaryPriceDealer: 0,\r\n discretionaryPriceEmployee: 0,\r\n accoutingValue: 0,\r\n showHistoryModal: false,\r\n manipulationTariff: {\r\n id: 0,\r\n value: 0\r\n } as ManipulationTariffPercentResponse,\r\n serviceId: null,\r\n additionTariff: {\r\n id: 0,\r\n value: 0\r\n } as TariffPercentResponse,\r\n discountTariff: {\r\n id: 0,\r\n value: 0\r\n } as TariffPercentResponse,\r\n caseRequests: [],\r\n packageCalculationId: null,\r\n ownerTariffPartner: null,\r\n isMultipleTariffDialogOpen: false,\r\n selectedCalculationTypeId: null,\r\n tariffBranches: [],\r\n selectedTariffBranch: null,\r\n isOwnTariffLoading: false,\r\n lastServiceCalculation: null,\r\n isClientCommentOpen: false,\r\n orginalCalculationTypeId: null,\r\n caseStatusHistory: [],\r\n backButtonDisabled: false,\r\n attachType: {} as IReferential,\r\n nonStockSuppliers: []\r\n } as ICaseDetailsCaseTabCalculationsFormState;\r\n\r\n public async componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n if (\r\n this.props.match.url.toLowerCase().endsWith('callback') &&\r\n !isNullOrUndefined(this.props.match.params.calcId)\r\n ) {\r\n await this.caseService.UpdateCalculationCallback(\r\n Number.parseInt(this.props.match.params.calcId),\r\n this.props.caseSettingsState.caseSettings!.workflow.id,\r\n this.props.caseSettingsState.caseSettings!.workflow.organizationOwnerId\r\n );\r\n\r\n this.caseService.UpdateCalculationPdfCallback(\r\n Number.parseInt(this.props.match.params.calcId),\r\n this.props.caseSettingsState.caseSettings!.workflow.id,\r\n this.props.caseSettingsState.caseSettings!.workflow.organizationOwnerId\r\n );\r\n\r\n this.props.history.push({\r\n pathname: `/cases/${caseId}/${this.props.match.params.formId}` //this.props.location.pathname.replace('/callback','')\r\n });\r\n return;\r\n }\r\n\r\n await this.loadData();\r\n }\r\n\r\n loadData = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n let priceEmployee = 0;\r\n let priceDealer = 0;\r\n let accountingVal = 0;\r\n\r\n if (this.props.appState?.appUser?.userRole?.code === 'MAVO_ADMIN') {\r\n const vehicleAdvert = await this.vehicleService?.GetVehicleAdvert(\r\n this.props.caseSettingsState.case!.vehicleId,\r\n caseId\r\n );\r\n\r\n if (vehicleAdvert) {\r\n priceDealer = vehicleAdvert?.priceWithVat - 0.1 * vehicleAdvert?.priceWithVat;\r\n priceEmployee = vehicleAdvert?.priceWithVat - 0.05 * vehicleAdvert?.priceWithVat;\r\n }\r\n\r\n const vehicle = await this.vehicleService.GetVehicle(\r\n this.props.caseSettingsState.case!.vehicleId as any\r\n );\r\n if (vehicle?.accountingValue) {\r\n accountingVal = vehicle.accountingValue;\r\n }\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n const refCalculations = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CalculationType\r\n );\r\n const refCaseStatus = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CaseStatus\r\n );\r\n const refReport = Referentials.referential.find((item) => item.code === ReferentialCode.Report);\r\n const refOptimization = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OptimizationType\r\n );\r\n const refInsurer = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.Insurer\r\n );\r\n const refAttachmentType = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.AttachmentType\r\n );\r\n\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.AttachmentType\r\n );\r\n\r\n const caseCalculationActionTypeList = [] as IReferential[];\r\n // eslint-disable-next-line prefer-const\r\n let [caseCalculations, caseStatuses, calculationTypeList, insurerList, attachmentType, calculationSections, ownerTariffPartner, caseStatusHistory, attachmentTypes, nonStockSuppliers] =\r\n await Promise.all([\r\n this.caseService.GetCaseCalculationHistories(caseId),\r\n this.appReferentialService.Get(refCaseStatus!.baseUrl),\r\n // this.appReferentialService.Get(refReport!.baseUrl),\r\n // this.appReferentialService.Get(refOptimization!.baseUrl),\r\n this.appReferentialService.Get(refCalculations!.baseUrl),\r\n this.appReferentialService.Get(refInsurer!.baseUrl),\r\n this.caseService.GetAttachmentTypeByCode(AttachmentTypeCode.OTHER),\r\n this.caseService.GetCalculationSections(),\r\n this.props.caseSettingsState.caseSettings!.workflow.isPrcIntegration ? this.workflowService.GetOwnerTariffPartner(this.props.caseSettingsState.caseSettings!.workflow.id) : null,\r\n this.props.caseSettingsState?.caseSettings!.workflow?.isCarfixIntegration \r\n ? this.caseService.GetCaseStatusHistory(this.props.caseSettingsState.case!.id) \r\n : [],\r\n this.appReferentialService.Get(ref!.baseUrl),\r\n this.workflowService.GetNonStockSuppliers(this.props.caseSettingsState.caseSettings!.workflow.id)\r\n ]);\r\n\r\n const caseCalculationCopy = _.sortBy(_.cloneDeep(caseCalculations), 'date').reverse();\r\n const packageCalculation = caseCalculationCopy.find((item) => item.maintenancePackageId !== null);\r\n\r\n const [unorderedParts, orderList] = await Promise.all([\r\n this.orderService.GetPartsToBeOrdered(this.props.caseSettingsState.case!.id),\r\n this.orderService.GetOrdersWithParts(this.props.caseSettingsState.case!.id)\r\n ]);\r\n\r\n let manipulationTariff = {\r\n id: 0,\r\n value: 0\r\n } as ManipulationTariffPercentResponse;\r\n\r\n const form = this.getWorkflowForm(this.props.stepFormId);\r\n const wfStepActions = this.props.workflowForm.workflowFormActions;\r\n const wfTransitionStepAction =\r\n wfStepActions.find(\r\n (item) =>\r\n item.actionType?.code === WorkflowFormActionTypeCode.STATUS_TRANSITION &&\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId === item.fromStatusId\r\n ) || (null);\r\n\r\n const workflowCalculation = FormHelpers.GetCalculation(\r\n form!.workflowCalculations,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n const currentOrganizationId = this.props.appState.appUser!.organizationId;\r\n\r\n if (this.props.appState.appUser!.organization!.organizationType!.hideAlternative) {\r\n caseCalculations = _.cloneDeep(_.filter(caseCalculations, function (caseCalculation) {\r\n return caseCalculation.calculationType.code == CalculationTypeCode.ORG || (\r\n caseCalculation.calculationType.code == CalculationTypeCode.ALT &&\r\n caseCalculation.partsOrganizationId == currentOrganizationId\r\n );\r\n }));\r\n }\r\n\r\n if (this.props.appState.appUser!.organization!.organizationType!.hideInsurerCalculation) {\r\n console.log('before', caseCalculations);\r\n caseCalculations = _.cloneDeep(_.filter(caseCalculations, function (caseCalculation) {\r\n return (\r\n (caseCalculation.calculationType.code == CalculationTypeCode.ORG && !caseCalculation.insurerCalculation)\r\n || (\r\n caseCalculation.calculationType.code == CalculationTypeCode.ALT &&\r\n caseCalculation.partsOrganizationId == currentOrganizationId\r\n )\r\n );\r\n }));\r\n console.log('after', caseCalculations);\r\n }\r\n\r\n caseCalculations = _.sortBy(caseCalculations, 'date').reverse();\r\n\r\n let serviceId: number | null = null;\r\n let lastServiceCalculation: CaseCalculationHistory | null = null;\r\n // const workflowOptimization = form!.workflowFormOptimizations;\r\n if (caseCalculations.length !== 0) {\r\n const users = await this.appUserService.GetUsersInfo(\r\n Array.from(new Set(caseCalculations.map((item) => item.userId)))\r\n );\r\n caseCalculations.forEach((calc) => {\r\n calc.user = users.find((item) => item.id === calc.userId)!;\r\n });\r\n\r\n const serviceCalculation = _.find(caseCalculations, function (calculation) {\r\n return calculation.user!.organization!.organizationTypeCode === OrganizationTypeCode.REP && !calculation.insurerCalculation;\r\n });\r\n\r\n console.log('serviceCalculation', serviceCalculation);\r\n serviceId = serviceCalculation ? serviceCalculation!.organizationId : null;\r\n lastServiceCalculation = serviceCalculation ? serviceCalculation : null;\r\n\r\n if (this.props.caseSettingsState.caseSettings!.workflow.isPrcIntegration) {\r\n manipulationTariff = await this.caseService.GetManipulationPercent({\r\n caseId: this.props.caseSettingsState.case!.id,\r\n formId: this.props.stepFormId,\r\n vehicleId: this.props.caseSettingsState.case!.vehicleId,\r\n workflowId: this.props.caseSettingsState.caseSettings!.workflow.id,\r\n workflowOrganizationOwnerId: this.props.caseSettingsState.caseSettings!.workflow.organizationOwnerId,\r\n organizationId: this.props.appState.appUser!.organizationId,\r\n organizationName: this.props.appState.appUser!.organization!.name,\r\n takeOrganizationTariff: this.props.appState.appUser!.organization!.organizationType!.takeOrganizationTariff,\r\n insurerId: null,\r\n serviceId: serviceId,\r\n ownTariffId: null\r\n } as CalculationRequest);\r\n }\r\n }\r\n\r\n const [additionTariff, discountTariff, caseRequests] = await Promise.all([\r\n this.caseService.GetTariffPercent({\r\n workflowId: this.props.caseSettingsState.caseSettings!.workflow.id,\r\n insurerId: this.getInsurerIdInfo(insurerList),\r\n tariffCode: TariffTypeGroupCodeEnum.ADD_PARTS\r\n } as TariffPercentRequest),\r\n this.caseService.GetTariffPercent({\r\n workflowId: this.props.caseSettingsState.caseSettings!.workflow.id,\r\n insurerId: this.getInsurerIdInfo(insurerList),\r\n tariffCode: TariffTypeGroupCodeEnum.PSE_ALT\r\n } as TariffPercentRequest),\r\n !isNullOrUndefined(workflowCalculation) && workflowCalculation.viewClientCommentsHistory ? this.caseService.GetCaseRequests(caseId, this.props.workflowForm.id) : []\r\n ]);\r\n\r\n if (!isNullOrUndefined(workflowCalculation)) {\r\n if (workflowCalculation.originalCalculation) {\r\n caseCalculationActionTypeList.push(calculationTypeList[0]);\r\n }\r\n if (workflowCalculation.alternativeCalculation) {\r\n caseCalculationActionTypeList.push(calculationTypeList[1]);\r\n }\r\n if (workflowCalculation.gtValuation) {\r\n caseCalculationActionTypeList.push({\r\n id: 3,\r\n displayName: this.translatorService.Tranlate('CASE_CALCULATION_MARKET_VALUE', 'Market Value'),\r\n code: this.ACTION_GT_VAL\r\n } as IReferential);\r\n }\r\n if (workflowCalculation.compare) {\r\n caseCalculationActionTypeList.push({\r\n id: 4,\r\n displayName: this.translatorService.Tranlate('CASE_CALCULATION_FORM_COMPARE', 'Compara'),\r\n code: this.ACTION_COMPARE\r\n } as IReferential);\r\n }\r\n if (workflowCalculation.radar) {\r\n caseCalculationActionTypeList.push({\r\n id: 5,\r\n displayName: this.translatorService.Tranlate(\r\n 'WORKFLOW_CALCULATION_TAB_RADAR_LABEL',\r\n 'Radar'\r\n ),\r\n code: this.RADAR\r\n } as IReferential);\r\n }\r\n\r\n if (workflowCalculation.insurerCalculation) {\r\n caseCalculationActionTypeList.push({\r\n id: calculationTypeList[0].id,\r\n displayName: this.translatorService.Tranlate(\r\n 'CALCULATION_TAB_INSURER_CALCULATION_LABEL',\r\n 'Actualizare OE'\r\n ),\r\n code: this.ACTION_INSURER_CALCULATION\r\n } as IReferential);\r\n }\r\n\r\n if (workflowCalculation.hasBackButton) {\r\n caseCalculationActionTypeList.push({\r\n id: 6,\r\n displayName: this.translatorService.Tranlate('CASE_CALCULATION_BACK_BUTTON', 'Inapoi'),\r\n code: this.ACTION_BACK_BUTTON\r\n } as IReferential);\r\n }\r\n }\r\n\r\n const wr = FormHelpers.GetReports(\r\n form!.workflowFormReports,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n // const wo = workflowOptimization.filter(item =>\r\n // item.workflowPartner!.partnerId === this.props.appState.appUser!.hoId\r\n // && ((item.userRoleId === this.props.appState.appUser!.roleId) || isNullOrUndefined(item.userRoleId)));\r\n let calculationParts = ([] as CaseCalculationPart[]);\r\n if (caseCalculations.length > 0) {\r\n const firstCalculation = caseCalculations[0];\r\n calculationParts = firstCalculation.id\r\n ? await this.caseService.GetCaseCalculationParts(firstCalculation.id)\r\n : ([] as CaseCalculationPart[]);\r\n }\r\n\r\n const partSection = calculationSections.find((item) => item.code === CalculationSectionCodeEnum.PART)!;\r\n const atmUserRole = nonStockCheckedOERoles.includes(this.props.appState.appUser?.userRole?.code ?? '');\r\n const firstOriginalCalculationIndex = _.findIndex(caseCalculations, function (item) {\r\n return item.calculationType.code === CalculationTypeCode.ORG;\r\n });\r\n this.setState({\r\n caseCalculationHistory: caseCalculations,\r\n caseCalculationHistoryCopy: caseCalculationCopy,\r\n caseCalculationActionTypeList: caseCalculationActionTypeList.sort((a, b) => (a.code === this.ACTION_BACK_BUTTON ? -1 : b.code === this.ACTION_BACK_BUTTON ? 1 : 0)),\r\n workflowReports: wr,\r\n calculationSectionList: calculationSections.sort(function (a, b) {\r\n return a.id - b.id;\r\n }),\r\n maxDeliveryTime: !isNullOrUndefined(workflowCalculation)\r\n ? !isNullOrUndefined(workflowCalculation.defaultMaxDeliveryTime)\r\n ? workflowCalculation.defaultMaxDeliveryTime\r\n : 0\r\n : 0,\r\n tmlEditable: !isNullOrUndefined(workflowCalculation)\r\n ? !isNullOrUndefined(workflowCalculation.tmlEditable)\r\n ? workflowCalculation.tmlEditable\r\n : false\r\n : false,\r\n isLoading: false,\r\n workflowCalculation: workflowCalculation == undefined ? null : workflowCalculation,\r\n hasRights: hasRights,\r\n orderList: orderList,\r\n unorderedParts: unorderedParts,\r\n caseStatuses: caseStatuses,\r\n partsForFirstCalculation: calculationParts.filter(\r\n (item) => item.calculationSectionId === partSection!.id\r\n ),\r\n wfTransitionStepAction: wfTransitionStepAction,\r\n insurerList: insurerList,\r\n manipulationTariff: manipulationTariff,\r\n serviceId: serviceId,\r\n discretionaryPriceDealer: priceDealer,\r\n discretionaryPriceEmployee: priceEmployee,\r\n accoutingValue: accountingVal,\r\n additionTariff: additionTariff,\r\n discountTariff: discountTariff,\r\n caseRequests: caseRequests.filter(x => x.isExternal == true),\r\n packageCalculationId: packageCalculation ? packageCalculation!.id : null,\r\n ownerTariffPartner: ownerTariffPartner,\r\n lastServiceCalculation: lastServiceCalculation,\r\n caseStatusHistory: caseStatusHistory,\r\n attachType: attachmentType,\r\n nonStockSuppliers: nonStockSuppliers,\r\n rowsSelected: this.props.caseSettingsState.caseSettings!.workflow.hasNonStockValidation && atmUserRole ? [firstOriginalCalculationIndex] : []\r\n });\r\n };\r\n\r\n public hasRole = (roleCode: string): boolean => {\r\n return this.props.appState.appUser?.userRole?.code === roleCode;\r\n };\r\n\r\n getWorkflowForm = (id: number): WorkflowSectionStepForm | null => {\r\n const sections = this.props.caseSettingsState.caseSettings!.workflow.workflowSections!;\r\n for (const section of sections) {\r\n for (const step of section.workflowSectionSteps) {\r\n const form = step.workflowSectionStepForms.find((form) => form.id === id);\r\n if (!isNullOrUndefined(form)) {\r\n return form;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n\r\n onRowClick = (e: any, id: number) => {\r\n this.setState({ isDialogOpen: true, calculationHistoryIds: Array.from([id]) });\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'calculationType',\r\n label: this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_CALCULATION_TYPE_HEADER',\r\n 'Tip Calculatie'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.onRowClick(e, tableMeta.rowData[0])}\r\n >\r\n {value.displayName}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'date',\r\n label: this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_CALCULATION_DATE_HEADER',\r\n 'Data Calculatie'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'amountPiecesWithDiscount',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'amountLaborWithDiscount',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'amountPaintingMaterialsWithDiscount',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'amountPaintingLaborWithDiscount',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'amount',\r\n label: this.translatorService.Tranlate('CASE_CALCULATION_FORM_AMOUNT_HEADER', 'Valoare'),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n const TVA = this.props.caseSettingsState.case!.caseParameters.find(\r\n (item) => item.parameter!.code === ParametreCode.TVA\r\n )!.value;\r\n return (\r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_TOOLTIP_TITLE',\r\n 'Total defalcat'\r\n )}\r\n \r\n {this.state.calculationSectionList.map((item) => {\r\n return (\r\n
\r\n {item.displayName}\r\n \r\n {Utils.countryNumberFormat((item.id === 1\r\n ? tableMeta.rowData[3]\r\n : item.id === 2\r\n ? tableMeta.rowData[4]\r\n : item.id === 3\r\n ? tableMeta.rowData[5]\r\n : item.id === 4\r\n ? tableMeta.rowData[6]\r\n : 0\r\n ).toFixed(2), this.props.appState.appUser?.organization?.country ?? null) +\r\n ' ' +\r\n tableMeta.rowData[8]}\r\n \r\n
\r\n );\r\n })}\r\n
\r\n \r\n {this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_ADDITION_AMOUNT',\r\n 'Adaos GTM'\r\n )}\r\n \r\n {Utils.countryNumberFormat(tableMeta.rowData[11].toFixed(2), this.props.appState.appUser?.organization?.country ?? null) + ' ' + tableMeta.rowData[8]}\r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_AMOUNT_WITHOUT_VAT_TOOLTIP',\r\n 'Baza de impozitare'\r\n )}\r\n \r\n {Utils.countryNumberFormat(tableMeta.rowData[9].toFixed(2), this.props.appState.appUser?.organization?.country ?? null) + ' ' + tableMeta.rowData[8]}\r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_VAT_TOOLTIP',\r\n 'TVA'\r\n ) +\r\n ' (' +\r\n TVA +\r\n '%)'}\r\n \r\n {Utils.countryNumberFormat(tableMeta.rowData[10].toFixed(2), this.props.appState.appUser?.organization?.country ?? null) + ' ' + tableMeta.rowData[8]}\r\n
\r\n \r\n
\r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_TOTAL_TOOLTIP',\r\n 'TOTAL'\r\n )}\r\n \r\n {Utils.countryNumberFormat(value.toFixed(2), this.props.appState.appUser?.organization?.country ?? null) + ' ' + tableMeta.rowData[8]}\r\n
\r\n
\r\n }\r\n >\r\n
\r\n {Utils.countryNumberFormat(value.toFixed(2), this.props.appState.appUser?.organization?.country ?? null) + ' ' + tableMeta.rowData[8]}\r\n
\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'currencyCode',\r\n label: this.translatorService.Tranlate('CASE_CALCULATION_FORM_CURRENCY_HEADER', 'Moneda'),\r\n options: {\r\n display: 'excluded',\r\n customBodyRender: (value: IReferential) => {\r\n return value;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'amountWithoutTVA',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'amountTVA',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'amountAddition',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'user',\r\n label: this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_CREATED_BY_HEADER',\r\n 'Efectuat de'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: AppUser) => {\r\n return value.userName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n label: this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_HISTORY_INTEROGATION',\r\n 'Istoric interogare'\r\n ),\r\n options: {\r\n viewColumns: false,\r\n sort: false,\r\n display: !R.isNil(this.state.workflowCalculation) && this.state.workflowCalculation!.hasHistoryInterogation ? 'true' : 'false',\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const calculation = this.state.caseCalculationHistory.find((item) => item.id === id);\r\n if (calculation && calculation.calculationType.code === CalculationTypeCode.ORG) {\r\n return null;\r\n }\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n getPartsHistoryInterogationReport = (id: number) => async () => {\r\n try {\r\n const language = this.props.appState.language == LanguageCode.RO ? LanguageCode.RO : LanguageCode.EN;\r\n\r\n const request = {\r\n calculationId: id,\r\n language: language\r\n } as PartsHistoryInterogationRequest;\r\n\r\n const fileBlob = await this.caseService.GetPartsHistoryInterogationReport(request);\r\n FileSaver.saveAs(\r\n fileBlob,\r\n this.translatorService.Tranlate('HISTORY_INTEROGATION_REPORT', 'Istoric interogare') + '.xlsx'\r\n );\r\n \r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n return;\r\n }\r\n }\r\n\r\n closeDialog = async () => {\r\n if (this.state.modified) {\r\n this.setState({ isDialogModifiedOpen: true });\r\n } else {\r\n this.setState({ isDialogOpen: false, selectedCalculationButton: null });\r\n }\r\n await this.loadData();\r\n };\r\n\r\n closeAlternativeCalcDialog = async () => {\r\n // if (this.state.modified) {\r\n this.setState({ isDialogAlternativeCalculationOpen: false, rowsSelected: [] });\r\n // }\r\n await this.loadData();\r\n };\r\n\r\n closeQualityControlDialog = async () => {\r\n // if (this.state.modified) {\r\n this.setState({ isDialogQualityControlOpen: false, rowsSelected: [] });\r\n // }\r\n await this.loadData();\r\n };\r\n\r\n closeRadarDialog = async () => {\r\n // if (this.state.modified) {\r\n this.setState({ isDialogRadarOpen: false, rowsSelected: [] });\r\n // }\r\n await this.loadData();\r\n };\r\n\r\n closeMultipleTariffDialog = () => {\r\n this.setState({ isMultipleTariffDialogOpen: false, selectedCalculationTypeId: null });\r\n };\r\n\r\n loadOrganizationTariff = async () => {\r\n const tariffListBranches = [] as TariffBranch[];\r\n this.setState({ isOwnTariffLoading: true });\r\n try {\r\n const ownOrganizationTariffs = await this.tariffService.GetOwnTariffs(this.props.appState.appUser?.organizationId ?? 0);\r\n for (const x of ownOrganizationTariffs) {\r\n tariffListBranches.push({\r\n id: x!.id,\r\n ownerId: x!.ownerId,\r\n partnerId: x!.partnerId,\r\n tariffName: x!.name,\r\n children: [],\r\n path: null,\r\n label: x!.name,\r\n checked: false\r\n });\r\n }\r\n\r\n this.setState({ tariffBranches: tariffListBranches, isOwnTariffLoading: false });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n this.setState({ isOwnTariffLoading: false });\r\n }\r\n\r\n }\r\n\r\n handleCalculationsTypesButton = async (\r\n calculationTypeId: number,\r\n calculationTypeCode: string | null\r\n ) => {\r\n if (this.state.workflowCalculation!.hasMultipleTariff &&\r\n calculationTypeCode === CalculationTypeCode.ORG\r\n ) {\r\n this.setState({\r\n isMultipleTariffDialogOpen: true,\r\n selectedCalculationTypeId: calculationTypeId\r\n }, async () => {\r\n await this.loadOrganizationTariff();\r\n });\r\n return;\r\n }\r\n\r\n if (calculationTypeCode === CalculationTypeCode.ORG) {\r\n const lastClientComment = this.state.caseRequests.length > 0 ? this.state.caseRequests[0] : null;\r\n const currentStatusCode = this.props.caseSettingsState.case!.caseStatus.caseStatus?.code;\r\n if (currentStatusCode != CaseStatusCodeEnum.ACTUALIZEAZA_CALCULATIE.toString() &&\r\n this.state.workflowCalculation?.viewClientCommentsHistory && \r\n lastClientComment && !R.isEmpty(lastClientComment.text)) {\r\n this.setState({\r\n isClientCommentOpen: true,\r\n orginalCalculationTypeId: calculationTypeId\r\n });\r\n return;\r\n } else {\r\n await this.originalCalculationClick(calculationTypeId, null);\r\n }\r\n return;\r\n }\r\n\r\n if (calculationTypeCode === this.ACTION_INSURER_CALCULATION) {\r\n console.log(this.ACTION_INSURER_CALCULATION);\r\n console.log(calculationTypeId);\r\n await this.insurerCalculationClick(calculationTypeId);\r\n return;\r\n }\r\n\r\n if (calculationTypeCode === CalculationTypeCode.ALT) {\r\n if (\r\n this.state.rowsSelected.length === 0 &&\r\n !this.state.workflowCalculation?.alternativeCalculationWithoutOriginal\r\n ) {\r\n const orgCalculations = this.state.caseCalculationHistory.filter(x => x.calculationType.code === CalculationTypeCode.ORG);\r\n if (orgCalculations.length == 1) {\r\n const orgIndex = this.state.caseCalculationHistory.findIndex(x => x.calculationType.code === CalculationTypeCode.ORG);\r\n const hasError = this.displayCalculationZeroAmountWarning(orgIndex);\r\n if (hasError) {\r\n return;\r\n }\r\n await this.alternativeCalculationClick(calculationTypeId, orgIndex);\r\n return;\r\n }\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'CALCULATIONS_PLEASE_SELECT_THE_ORGINAL_CALCULATION',\r\n 'Vă rugăm să selectați o calculație originală !'\r\n ),\r\n {\r\n variant: 'warning'\r\n }\r\n );\r\n return;\r\n }\r\n\r\n await this.alternativeCalculationClick(calculationTypeId);\r\n return;\r\n }\r\n\r\n if (calculationTypeCode === this.ACTION_GT_VAL) {\r\n this.setState({ isValuationOpen: true });\r\n\r\n return;\r\n }\r\n\r\n if (calculationTypeCode === this.RADAR) {\r\n this.setState({ isDialogRadarOpen: true });\r\n\r\n return;\r\n }\r\n\r\n if (calculationTypeCode === this.ACTION_BACK_BUTTON) {\r\n if (this.state.caseStatusHistory.length <= 1) return; \r\n\r\n this.setState({ backButtonDisabled: true });\r\n\r\n const status = this.state.caseStatusHistory[1];\r\n const caseStatusRequest = {\r\n caseId: this.props.caseSettingsState.case!.id,\r\n statusId: status?.caseStatusId\r\n } as ChangeCaseStatusRequest;\r\n const currentStatus = await this.caseService.ChangeCaseStatus(caseStatusRequest);\r\n\r\n this.props.SetCaseStatus(currentStatus);\r\n \r\n this.setState({ backButtonDisabled: false });\r\n\r\n return;\r\n }\r\n\r\n this.setState({\r\n selectedCalculationButton: calculationTypeCode,\r\n isDialogOpen: true,\r\n calculationHistoryIds: this.state.rowsSelected.map(\r\n (item) => this.state.caseCalculationHistory[item].id\r\n )\r\n });\r\n };\r\n\r\n alternativeCalculationClick = async (calculationTypeId: number, indexNumber: number | null = null) => {\r\n const unorderedParts = this.state.unorderedParts;\r\n if (unorderedParts.length > 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'UNORDERED_PARTS_WARNING',\r\n 'Exista piese necomandate! Va rugam comandati piesele!'\r\n ),\r\n {\r\n variant: 'warning'\r\n }\r\n );\r\n return;\r\n }\r\n const orderList = this.state.orderList;\r\n const findOrder = _.find(orderList, function (order) {\r\n return order?.orderStatus?.code === OrderStatusCode.REP_DRAFT;\r\n });\r\n if (findOrder) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ORDERS_IN_DRAFT_STATUS',\r\n 'Exista comenzi cu statusul de Draft! Va rugam plasati comenzile!'\r\n ),\r\n {\r\n variant: 'warning'\r\n }\r\n );\r\n return;\r\n }\r\n\r\n let selectedCaseCalculationHistory = {} as CaseCalculationHistory;\r\n if (this.state.rowsSelected.length === 1) {\r\n selectedCaseCalculationHistory =\r\n this.state.caseCalculationHistory[this.state.rowsSelected[0]];\r\n const hasError = this.displayCalculationZeroAmountWarning(this.state.rowsSelected[0]);\r\n if (hasError) {\r\n return;\r\n }\r\n }\r\n if (!R.isNil(indexNumber)) {\r\n selectedCaseCalculationHistory = this.state.caseCalculationHistory[indexNumber];\r\n }\r\n \r\n //Check if is Carfix integration and if we have packageCalculationId not null */\r\n if (this.props.caseSettingsState.caseSettings!.workflow.isCarfixIntegration && this.state.packageCalculationId !== null) {\r\n //Check if the calculation is OE\r\n if (selectedCaseCalculationHistory.calculationType.code !== CalculationTypeCode.ORG) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('PLEASE_SELECT_THE_ORGINAL_CALCULATION', 'Vă rugăm să selectati o calculatie originală!'),\r\n {\r\n variant: 'warning',\r\n autoHideDuration: 6000\r\n }\r\n );\r\n return;\r\n }\r\n\r\n }\r\n this.setState({\r\n selectedCalculationButton: null,\r\n isDialogAlternativeCalculationOpen: true,\r\n calculationHistoryIds:\r\n selectedCaseCalculationHistory.id !== null ? [selectedCaseCalculationHistory.id] : []\r\n });\r\n };\r\n\r\n displayCalculationZeroAmountWarning = (selectedRowIndex: number) : boolean => {\r\n const selectedCaseCalculationHistory = this.state.caseCalculationHistory[selectedRowIndex];\r\n if (selectedCaseCalculationHistory.calculationType.code === CalculationTypeCode.ORG && selectedCaseCalculationHistory.amount === 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ZERO_AMOUNT_WARNING',\r\n 'Vă rugăm să efectuați o calculatie validă a cărei valoare să fie diferită de zero!'\r\n ),\r\n {\r\n variant: 'warning'\r\n }\r\n );\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n originalCalculationClick = async (calculationTypeId: number, ownTariffId: number | null) => {\r\n this.setState({ isLoading: true });\r\n const result = await this.caseService.CreateCalculation({\r\n caseId: this.props.caseSettingsState.case!.id,\r\n formId: this.props.stepFormId,\r\n calculationId: null,\r\n calculationTypeId: calculationTypeId,\r\n workflowCalculationId: this.state.workflowCalculation!.id,\r\n vehicleId: this.props.caseSettingsState.case!.vehicleId,\r\n workflowId: this.props.caseSettingsState.caseSettings!.workflow.id,\r\n workflowOrganizationOwnerId:\r\n this.props.caseSettingsState.caseSettings!.workflow.organizationOwnerId,\r\n organizationId: this.props.appState.appUser!.organizationId,\r\n organizationName: this.props.appState.appUser!.organization!.name,\r\n takeOrganizationTariff: this.props.appState.appUser!.organization!.organizationType!.takeOrganizationTariff,\r\n insurerId: this.getInsurerId(),\r\n ownTariffId: ownTariffId\r\n } as CalculationRequest);\r\n if (!isNullOrUndefined(result.gtEstimateResponseDto.error)) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG', 'Eroare') +\r\n ': ' +\r\n result.gtEstimateResponseDto.error.errorInfo.description,\r\n { variant: 'error' }\r\n );\r\n this.setState({ isLoading: false });\r\n return;\r\n }\r\n\r\n if (this.props.appState.appUser!.organization!.changeCaseStatusBasedCalculation) {\r\n const status = _.find(this.state.caseStatuses, function (caseStatus) {\r\n return caseStatus.code === CaseStatusCodeEnum.OE;\r\n });\r\n const caseStatusRequest = {\r\n caseId: this.props.caseSettingsState.case!.id,\r\n statusId: status!.id\r\n } as ChangeCaseStatusRequest;\r\n\r\n const currentStatus = await this.caseService.ChangeCaseStatus(caseStatusRequest);\r\n this.props.SetCaseStatus(currentStatus);\r\n\r\n }\r\n window.location = result.gtEstimateResponseDto.codeUrl.url;\r\n };\r\n\r\n getInsurerId = (): number | null => {\r\n if (isNullOrUndefined(this.state.workflowCalculation)) {\r\n return null;\r\n }\r\n\r\n if (!this.state.workflowCalculation.insurerCalculation) {\r\n return null;\r\n }\r\n\r\n if (R.isNil(this.props.caseSettingsState.case!.caseEvent)) {\r\n return null;\r\n }\r\n\r\n if (R.isNil(this.props.caseSettingsState.case!.caseEvent.insurerName)) {\r\n return null;\r\n }\r\n\r\n const insurerName = this.props.caseSettingsState.case!.caseEvent.insurerName;\r\n const insurer = _.find(this.state.insurerList, function (insurer) {\r\n return insurer.displayName.toLowerCase() === insurerName.toLowerCase();\r\n });\r\n console.log('insurer', insurer);\r\n if (R.isNil(insurer)) {\r\n return null;\r\n }\r\n return insurer.id;\r\n }\r\n\r\n getInsurerIdInfo = (insurerList: IReferential[]): number | null => {\r\n if (R.isNil(this.props.caseSettingsState.case!.caseEvent)) {\r\n return null;\r\n }\r\n\r\n if (R.isNil(this.props.caseSettingsState.case!.caseEvent.insurerName)) {\r\n return null;\r\n }\r\n\r\n const insurerName = this.props.caseSettingsState.case!.caseEvent.insurerName;\r\n const insurer = _.find(insurerList, function (insurer) {\r\n return insurer.displayName.toLowerCase() === insurerName.toLowerCase();\r\n });\r\n console.log('insurer', insurer);\r\n if (R.isNil(insurer)) {\r\n return null;\r\n }\r\n return insurer.id;\r\n }\r\n insurerCalculationClick = async (calculationTypeId: number) => {\r\n if (this.state.rowsSelected.length == 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('CALCULATION_PLEASE_SELECT_LINE', 'Va rugam sa selectati o linie!'),\r\n {\r\n variant: 'warning',\r\n autoHideDuration: 6000\r\n }\r\n );\r\n return;\r\n }\r\n\r\n const calculationId = this.state.caseCalculationHistory[this.state.rowsSelected[0]]?.id || null;\r\n this.setState({ isLoading: true });\r\n\r\n try {\r\n const result = await this.caseService.UpdateCalculationTariff({\r\n caseId: this.props.caseSettingsState.case!.id,\r\n formId: this.props.stepFormId,\r\n calculationId: null,\r\n parentId: calculationId,\r\n calculationTypeId: calculationTypeId,\r\n workflowCalculationId: this.state.workflowCalculation!.id,\r\n vehicleId: this.props.caseSettingsState.case!.vehicleId,\r\n workflowId: this.props.caseSettingsState.caseSettings!.workflow.id,\r\n workflowOrganizationOwnerId:\r\n this.props.caseSettingsState.caseSettings!.workflow.organizationOwnerId,\r\n organizationId: this.props.appState.appUser!.organizationId,\r\n organizationName: this.props.appState.appUser!.organization!.name,\r\n takeOrganizationTariff: this.props.appState.appUser!.organization!.organizationType!.takeOrganizationTariff,\r\n insurerId: this.getInsurerIdInfo(this.state.insurerList),\r\n serviceId: this.state.ownerTariffPartner ? this.state.ownerTariffPartner!.partnerId : null,\r\n ownTariffId: null\r\n } as CalculationRequest) as CalculationResponse;\r\n\r\n this.setState({\r\n rowsSelected: []\r\n });\r\n\r\n if (!isNullOrUndefined(result.gtEstimateResponseDto.error)) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG', 'Eroare') +\r\n ': ' +\r\n result.gtEstimateResponseDto.error.errorInfo.description,\r\n { variant: 'error' }\r\n );\r\n this.setState({ isLoading: false });\r\n return;\r\n }\r\n\r\n if (!isNullOrUndefined(result.caseCalculationHistory)) {\r\n const newCalculationId = result.caseCalculationHistory.id;\r\n console.log('newCalculationId', newCalculationId);\r\n this.caseService.UpdateCalculationPdfCallback(\r\n newCalculationId,\r\n this.props.caseSettingsState.caseSettings!.workflow.id,\r\n this.props.caseSettingsState.caseSettings!.workflow.organizationOwnerId\r\n );\r\n }\r\n\r\n await this.loadData();\r\n\r\n } catch (error) {\r\n this.setState({ isLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n\r\n reportClick = async (reportCode: string | null, name: string) => {\r\n this.setState({ openMenuItem: false });\r\n\r\n let fileBlob: Blob;\r\n let calculationId = null;\r\n if (reportCode === ReportTypeCode.DEVIZ_REP_AP) {\r\n const reportParameters = [\r\n {\r\n name: 'caseId',\r\n value: this.props.caseSettingsState.case!.id.toString()\r\n } as ReportParameter\r\n ];\r\n const calculation = this.state.caseCalculationHistoryCopy.find(x => x.calculationType.code === CalculationTypeCode.ALT);\r\n if (calculation) {\r\n calculationId = calculation.id;\r\n reportParameters.push({\r\n name: 'calculationId',\r\n value: calculation.id.toString()\r\n } as ReportParameter);\r\n }\r\n\r\n if (this.state.lastServiceCalculation) {\r\n reportParameters.push({\r\n name: 'serviceCalculationId',\r\n value: this.state.lastServiceCalculation.id.toString()\r\n } as ReportParameter);\r\n }\r\n\r\n fileBlob = await this.reportsService.GetReport(reportCode!, reportParameters);\r\n } else if (reportCode === ReportTypeCode.ESTIMATE_OE) {\r\n fileBlob = await this.caseService.GetCaseCalculationReport(\r\n Number.parseInt(this.props.match.params.id),\r\n this.state.caseCalculationHistory[this.state.rowsSelected[0]].id\r\n );\r\n\r\n FileSaver.saveAs(fileBlob, name + '.pdf');\r\n return;\r\n } else if (\r\n reportCode == ReportTypeCode.DEVIZ_AUTOWORLD ||\r\n reportCode == ReportTypeCode.DEVIZ_CLIENT\r\n ) {\r\n const reportParameters = [\r\n {\r\n name: 'caseId',\r\n value: this.props.caseSettingsState.case!.id.toString()\r\n } as ReportParameter\r\n ];\r\n\r\n if (this.state.rowsSelected.length) {\r\n calculationId =\r\n this.state.caseCalculationHistory[this.state.rowsSelected[0]]?.id || null;\r\n\r\n if (calculationId) {\r\n reportParameters.push({\r\n name: 'calculationId',\r\n value: this.state.caseCalculationHistory[this.state.rowsSelected[0]].id.toString()\r\n } as ReportParameter);\r\n }\r\n }\r\n fileBlob = await this.reportsService.GetReport(reportCode!, reportParameters);\r\n } else if (\r\n reportCode == ReportTypeCode.DEVIZ_REPARATIE\r\n ) {\r\n const reportParameters = [\r\n {\r\n name: 'caseId',\r\n value: this.props.caseSettingsState.case!.id.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'organizationId',\r\n value: this.props.appState.appUser!.organization?.id.toString()\r\n } as ReportParameter\r\n ];\r\n\r\n if (this.state.rowsSelected.length) {\r\n calculationId =\r\n this.state.caseCalculationHistory[this.state.rowsSelected[0]]?.id || null;\r\n\r\n if (calculationId) {\r\n reportParameters.push({\r\n name: 'calculationId',\r\n value: this.state.caseCalculationHistory[this.state.rowsSelected[0]].id.toString()\r\n } as ReportParameter);\r\n }\r\n }\r\n fileBlob = await this.reportsService.GetRepairReport(reportCode!, this.props.caseSettingsState.case!.id, reportParameters);\r\n } else if (\r\n reportCode == ReportTypeCode.DEVIZ_REP_OFERTA\r\n ) {\r\n const reportParameters = [\r\n {\r\n name: 'caseId',\r\n value: this.props.caseSettingsState.case!.id.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'lang',\r\n value: this.props.appState.appUser!.organization?.country?.code?.toLowerCase() ?? \"ro\"\r\n } as ReportParameter\r\n ];\r\n\r\n if (this.state.rowsSelected.length) {\r\n calculationId =\r\n this.state.caseCalculationHistory[this.state.rowsSelected[0]]?.id || null;\r\n\r\n if (calculationId) {\r\n reportParameters.push({\r\n name: 'calculationId',\r\n value: this.state.caseCalculationHistory[this.state.rowsSelected[0]].id.toString()\r\n } as ReportParameter);\r\n }\r\n }\r\n fileBlob = await this.reportsService.GetReport(reportCode!, reportParameters);\r\n } else {\r\n const reportParameters = [\r\n {\r\n name: 'caseId',\r\n value: this.props.caseSettingsState.case!.id.toString()\r\n } as ReportParameter\r\n ];\r\n\r\n if (this.props.caseSettingsState.case!.vehicleId !== null) {\r\n reportParameters.push({\r\n name: 'vehicleId',\r\n value: this.props.caseSettingsState.case!.vehicleId.toString()\r\n } as ReportParameter);\r\n }\r\n\r\n if (this.state.rowsSelected.length) {\r\n calculationId =\r\n this.state.caseCalculationHistory[this.state.rowsSelected[0]]?.id || null;\r\n\r\n if (calculationId) {\r\n reportParameters.push({\r\n name: 'calculationId',\r\n value: this.state.caseCalculationHistory[this.state.rowsSelected[0]].id.toString()\r\n } as ReportParameter);\r\n }\r\n }\r\n\r\n fileBlob = await this.reportsService.GetReport(reportCode!, reportParameters);\r\n }\r\n\r\n let fileName = name + (calculationId ? '_' + calculationId : '') + '.pdf';\r\n if (\r\n reportCode == WorflowEditableReport.PROCES_VERBAL_PREDARE_PRIMIRE ||\r\n reportCode == WorflowEditableReport.FISA_EVALUARE_MASINA\r\n ) {\r\n if (reportCode == WorflowEditableReport.PROCES_VERBAL_PREDARE_PRIMIRE) {\r\n fileName = name + (calculationId ? '_' + calculationId : '') + '.doc';\r\n FileSaver.saveAs(fileBlob, name + '.doc');\r\n } else {\r\n FileSaver.saveAs(fileBlob, name + '.pdf');\r\n }\r\n } else {\r\n FileSaver.saveAs(fileBlob, name + '.pdf');\r\n }\r\n\r\n if (this.props.caseSettingsState.caseSettings!.workflow.saveDocuments) {\r\n console.log('Save file', fileName, 'Id Calculatie', calculationId);\r\n await this.saveGeneratedFile(fileBlob, fileName);\r\n }\r\n };\r\n\r\n saveGeneratedFile = async (fileBlob: Blob, fileName: string) => {\r\n try {\r\n //Save the report into attachments\r\n const attachments: CaseAttachment[] = [];\r\n attachments.push({\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n attachmentTypeId: this.state.attachType.id,\r\n attachmentType: this.state.attachType,\r\n file: new File([fileBlob], fileName),\r\n isSelection: false,\r\n includeInOtherTab: true,\r\n checkFileName: true\r\n } as CaseAttachment);\r\n\r\n const newFiles = await this.caseService.AddCaseAttachment(attachments);\r\n\r\n console.log('newFiles', newFiles);\r\n } catch (error) {\r\n console.log('error', error);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n \r\n\r\n handleModifiedPropChanges = (modified: boolean) => {\r\n this.setState({ modified: modified });\r\n };\r\n\r\n closeModifiedDialog = async () => {\r\n this.setState({\r\n modified: false,\r\n isDialogModifiedOpen: false,\r\n isDialogOpen: false,\r\n selectedCalculationButton: null\r\n });\r\n };\r\n\r\n handleQualityControlButton = () => {\r\n this.setState({ isDialogQualityControlOpen: true });\r\n };\r\n\r\n handleConfirmChanges = async () => {\r\n this.setState({ executing: true });\r\n await this.submitForm(this.props.caseSettingsState.case!.id, this.props.workflowForm.id, null);\r\n this.setState({ executing: false });\r\n };\r\n\r\n getForms = (workflow: Workflow, code: string): WorkflowSectionStepForm | null => {\r\n let form = null;\r\n const sections = workflow\r\n .workflowSections!.filter((item) => item.isActive)\r\n .sort(this.sortFunction);\r\n // console.log('sections', sections);\r\n for (const section of sections) {\r\n const steps = section.workflowSectionSteps\r\n .filter((item) => item.isActive)\r\n .sort(this.sortFunction);\r\n // console.log('steps', steps);\r\n for (const step of steps) {\r\n const forms = step.workflowSectionStepForms\r\n .filter((item) => item.isActive)\r\n .sort(this.sortFunction);\r\n // console.log('forms', forms);\r\n const formIndex = forms.findIndex((item) => item.form.code === code);\r\n if (formIndex !== -1) {\r\n form = forms[formIndex];\r\n }\r\n }\r\n }\r\n return form;\r\n };\r\n\r\n sortFunction = (a: any, b: any) => {\r\n return a.order - b.order;\r\n };\r\n\r\n\r\n getWorkflowSectionStep = (workflowSectionStepId: number): WorkflowSectionStep | null => {\r\n const sections = this.props.caseSettingsState.caseSettings!.workflow.workflowSections!;\r\n for (const section of sections) {\r\n for (const step of section.workflowSectionSteps) {\r\n if (step.id == workflowSectionStepId) {\r\n return step;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n public getErrorDetails(errorDetails: Map): any {\r\n const text: string[] = [];\r\n for (const [property, error] of Object.entries(errorDetails)) {\r\n console.log(property);\r\n console.log(error);\r\n if (!R.isNil(error)) {\r\n text.push(`${property}:`);\r\n forEach(error, (value) => {\r\n text.push(`${value}`);\r\n });\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {' '}\r\n {text.map((t, index) => (\r\n
{t}
\r\n ))}{' '}\r\n
\r\n );\r\n }\r\n\r\n lastOriginalCalculation = (): CaseCalculationHistory => {\r\n const calculation = _.sortBy(this.state.caseCalculationHistory.filter(calculation => calculation.calculationType.code == CalculationTypeCode.ORG), 'date').reverse()[0];\r\n return calculation;\r\n }\r\n\r\n checkAlternativePartDescriptionForNonStocks = () : boolean => {\r\n let result = false;\r\n if (!R.isNil(this.state.workflowCalculation) && this.state.workflowCalculation.hasAlternativePartDescription) {\r\n result = _.some(this.state.partsForFirstCalculation, (item) => {\r\n // Check if the part is from a non-stock supplier and has null quantity\r\n const nonStockSupplier = this.state.nonStockSuppliers.find(x => x.supplierId === item.supplierId);\r\n if (!R.isNil(nonStockSupplier) && R.isNil(item.availableQuantity)) {\r\n if (R.isNil(item.alternativePartDescription) || R.isEmpty(item.alternativePartDescription)) {\r\n console.log('Found a non-stock item with null quantity and null/empty description', item);\r\n return true;\r\n }\r\n }\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n checkIfExistStockParts = (): boolean => {\r\n return _.some(this.state.partsForFirstCalculation, (item) => !R.isNil(item.availableQuantity));\r\n }; \r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n const hasCalculationsOrEstimations =\r\n this.state.caseCalculationHistory.length > 0 ||\r\n this.props.caseSettingsState.case!.caseValuation != null;\r\n\r\n if (hasCalculationsOrEstimations) {\r\n /*\r\n Display pop-up info if we don't have an AM calculation done\r\n */\r\n const toStatusId = this.state.wfTransitionStepAction?.toStatusId;\r\n const toWorkflowId = this.state.wfTransitionStepAction?.toWorkflowId;\r\n const status = _.find(this.state.caseStatuses, function (caseStatus) {\r\n return caseStatus.code === CaseStatusCodeEnum.COM_PI;\r\n });\r\n const orderNonStockStatus = _.find(this.state.caseStatuses, function (caseStatus) {\r\n return caseStatus.code === CaseStatusCodeEnum.COMANDA_PIESE_NON_STOC;\r\n }); \r\n\r\n if (this.props.caseSettingsState.caseSettings!.workflow.isCarfixIntegration) {\r\n if (this.state.caseCalculationHistory.length > 0) {\r\n const firstCalculation = _.sortBy(this.state.caseCalculationHistory, 'date').reverse()[0];\r\n if (firstCalculation.calculationType.code == CalculationTypeCode.ORG) {\r\n return this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'REPAIR_CASE_CALCULATION_FORM_NO_AM_CALCULATION_DONE',\r\n 'Vă rugăm să efectuaţi o calculaţie alternativă !'\r\n ),\r\n { variant: 'warning' }\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (toStatusId == status!.id || toStatusId == orderNonStockStatus!.id) {\r\n if (this.state.caseCalculationHistory.length > 0) {\r\n const firstCalculation = _.sortBy(this.state.caseCalculationHistory, 'date').reverse()[0];\r\n if (firstCalculation.calculationType.code == CalculationTypeCode.ORG) {\r\n return this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_NO_AM_CALCULATION_DONE',\r\n 'Pentru a trece in pasul de Comanda vă rugăm să efectuaţi o calculaţie alternativă !'\r\n ),\r\n { variant: 'warning' }\r\n );\r\n }\r\n\r\n if (firstCalculation.calculationType.code == CalculationTypeCode.ALT) {\r\n if (!firstCalculation.amount) {\r\n return this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_AM__WARNING_CALCULATION_DONE',\r\n 'Vă rugăm să interogati piesele la furnizori!'\r\n ),\r\n { variant: 'warning' }\r\n );\r\n }\r\n const hasNoSupplierCalculationParts = _.find(this.state.partsForFirstCalculation, function (object) {\r\n return !object.supplierId && !object.isOwnStock;\r\n });\r\n if (hasNoSupplierCalculationParts) {\r\n return this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_AM__WARNING_CALCULATION_DONE',\r\n 'Vă rugăm să interogati piesele la furnizori!'\r\n ),\r\n { variant: 'warning' }\r\n );\r\n }\r\n\r\n const hasNoAlternativeGuideNumberCalculationParts = _.find(this.state.partsForFirstCalculation, function (object) {\r\n return !object.alternativeGuideNumber && !object.isOwnStock;\r\n });\r\n if (hasNoAlternativeGuideNumberCalculationParts) {\r\n return this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_AM__WARNING_CALCULATION_DONE',\r\n 'Vă rugăm să interogati piesele la furnizori!'\r\n ),\r\n { variant: 'warning' }\r\n );\r\n }\r\n\r\n //Urmeaza sa treaca in 'Comanda piese non-stock'\r\n if (toStatusId == orderNonStockStatus!.id) {\r\n const result = this.checkAlternativePartDescriptionForNonStocks();\r\n if (result) {\r\n return this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_AM_NON_STOCK_WARNING',\r\n 'Pentru a putea comanda piesele non-stoc vă rugăm să le interogați!'\r\n ),\r\n { variant: 'warning' }\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n //Nu se muta in statusul comenzi piese\r\n /* Check if is PRC integration and if we have a case event */\r\n if (this.props.caseSettingsState.caseSettings!.workflow.isPrcIntegration && !R.isNil(this.props.caseSettingsState.case!.caseEvent)) {\r\n const firstCalculation = _.sortBy(this.state.caseCalculationHistory, 'date').reverse()[0];\r\n /* Check if we have an ORG calculation done */\r\n if (firstCalculation.calculationType.code == CalculationTypeCode.ORG) {\r\n const updateOE = _.find(this.state.caseStatuses, function (caseStatus) {\r\n return caseStatus.code === CaseStatusCodeEnum.OE;\r\n });\r\n\r\n if (this.props.caseSettingsState.case!.caseStatus.caseStatusId == updateOE!.id) {\r\n this.setState({ isLoading: true });\r\n try {\r\n const result = await this.caseService.UpdateCalculationTariff({\r\n caseId: this.props.caseSettingsState.case!.id,\r\n formId: this.props.stepFormId,\r\n calculationId: null,\r\n parentId: firstCalculation.id,\r\n calculationTypeId: firstCalculation.calculationType.id,\r\n workflowCalculationId: this.state.workflowCalculation!.id,\r\n vehicleId: this.props.caseSettingsState.case!.vehicleId,\r\n workflowId: this.props.caseSettingsState.caseSettings!.workflow.id,\r\n workflowOrganizationOwnerId:\r\n this.props.caseSettingsState.caseSettings!.workflow.organizationOwnerId,\r\n organizationId: this.state.ownerTariffPartner ? this.state.ownerTariffPartner!.partnerId : this.props.appState.appUser!.organizationId,\r\n organizationName: this.props.appState.appUser!.organization!.name,\r\n takeOrganizationTariff: this.props.appState.appUser!.organization!.organizationType!.takeOrganizationTariff,\r\n insurerId: this.getInsurerIdInfo(this.state.insurerList),\r\n serviceId: this.state.ownerTariffPartner ? this.state.ownerTariffPartner!.partnerId : null,\r\n ownTariffId: null\r\n } as CalculationRequest) as CalculationResponse;\r\n\r\n if (!isNullOrUndefined(result.gtEstimateResponseDto.error)) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG', 'Eroare') +\r\n ': ' +\r\n result.gtEstimateResponseDto.error.errorInfo.description,\r\n { variant: 'error' }\r\n );\r\n this.setState({ isLoading: false });\r\n return;\r\n }\r\n\r\n if (!isNullOrUndefined(result.caseCalculationHistory)) {\r\n const newCalculationId = result.caseCalculationHistory.id;\r\n console.log('newCalculationId', newCalculationId);\r\n this.caseService.UpdateCalculationPdfCallback(\r\n newCalculationId,\r\n this.props.caseSettingsState.caseSettings!.workflow.id,\r\n this.props.caseSettingsState.caseSettings!.workflow.organizationOwnerId\r\n );\r\n }\r\n } catch (error) {\r\n this.setState({ isLoading: false });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n //Carfix App Integration\r\n if (this.props.caseSettingsState.caseSettings!.workflow.isCarfixIntegration) {\r\n try {\r\n const firstCalculation = _.sortBy(this.state.caseCalculationHistory, 'date').reverse()[0];\r\n console.log('Carfix App Integration');\r\n console.log('firstCalculation', firstCalculation);\r\n const request = {\r\n caseId: this.props.caseSettingsState.case!.id,\r\n calculationId: firstCalculation.id,\r\n workflowId: this.props.caseSettingsState.caseSettings!.workflow.id\r\n } as CarfixAlternativeCalculationRequest;\r\n const result = await this.caseService.CarfixAlternativeCalculation(request) as CarfixAlternativeCalculationResponse;\r\n if (!result.success) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate(result.code, result.message), {\r\n variant: 'error'\r\n });\r\n return;\r\n }\r\n\r\n const alternativeCalculations = this.state.caseCalculationHistory.filter(calculation => calculation.calculationType.code == CalculationTypeCode.ALT);\r\n this.generateLKQReports(firstCalculation.id, alternativeCalculations.length);\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n return;\r\n }\r\n }\r\n\r\n if (toWorkflowId && toStatusId) {\r\n const userId = this.props.appState?.appUser?.id || appUser?.id;\r\n await this.caseService.ChangeCaseWorkflow(\r\n toWorkflowId,\r\n caseId,\r\n userId!,\r\n toStatusId\r\n );\r\n }\r\n\r\n if (this.props.caseSettingsState.caseSettings!.workflow.hasNonStockValidation) {\r\n const result = this.checkIfExistStockParts();\r\n console.log('Has stock parts', result);\r\n if (result) {\r\n const status = _.find(this.state.caseStatuses, function (caseStatus) {\r\n return caseStatus.code === CaseStatusCodeEnum.COM_PI;\r\n });\r\n const caseStatusRequest = {\r\n caseId: caseId,\r\n statusId: status!.id\r\n } as ChangeCaseStatusRequest;\r\n \r\n const newStatus = await this.caseService.ChangeCaseStatus(caseStatusRequest);\r\n this.props.SetCaseStatus(newStatus);\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n \r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n \r\n this.setState({ hasRights: hasRights });\r\n return;\r\n }\r\n }\r\n\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n this.props.SetCaseStatus(newStatus);\r\n if (this.state.caseCalculationHistory.length > 0) {\r\n this.props.SetCaseCalculationHistory(this.state.caseCalculationHistory[0]);\r\n }\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n\r\n this.setState({ hasRights: hasRights });\r\n } else {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_NO_CALCULATION_DONE',\r\n 'Nu a fost efectuata nici o calculatie'\r\n ),\r\n { variant: 'error' }\r\n );\r\n }\r\n };\r\n\r\n getMuiTheme = () => createMuiTheme({\r\n overrides: {\r\n MuiTableCell: {\r\n root: {\r\n '@media (max-width:599.98px)': {\r\n borderBottom: \"none\",\r\n padding: \"1px\",\r\n },\r\n },\r\n },\r\n MUIDataTableBodyCell: {\r\n stackedCommon: {\r\n '@media (max-width:599.98px)': {\r\n display: \"block\",\r\n width: \"100% !important\",\r\n whiteSpace: \"normal\",\r\n height: \"100%\",\r\n // fontSize: \"12px\",\r\n paddingLeft: \"5px\",\r\n paddingTop: \"5px\",\r\n backgroundColor: \"white !important\"\r\n\r\n },\r\n },\r\n cellHide: {\r\n fontWeight: \"bold\",\r\n paddingTop: \"15px\",\r\n }\r\n },\r\n MuiTableRow: {\r\n root: {\r\n borderBottom: \"1px solid rgba(224, 224, 224, 1)\"\r\n }\r\n }\r\n } as any\r\n });\r\n\r\n showManipulation = (caseCalculationHistory: CaseCalculationHistory | null) => {\r\n if (R.isNil(caseCalculationHistory)) {\r\n return false;\r\n }\r\n\r\n if (caseCalculationHistory.calculationType.code !== CalculationTypeCode.ALT) {\r\n return false;\r\n }\r\n\r\n if (caseCalculationHistory.manipulationPercent === 0) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n displayValueWithCurrency = (value: number | null, calculationHistory: CaseCalculationHistory) => {\r\n let result = '0';\r\n if (!R.isNil(value)) {\r\n result = value.toFixed(2);\r\n }\r\n\r\n return result + ' ' + calculationHistory.currencyCode;\r\n };\r\n\r\n checkIntegrationRequirements = () => {\r\n //buton trimite oferta sa nu fie activ daca statusul e diferit de Calculatie A.M\r\n return this.props.caseSettingsState?.caseSettings!.workflow?.isCarfixIntegration && (this.props.caseSettingsState.case!.caseStatus.caseStatus?.code !== CaseStatusCodeEnum.AM.toString());\r\n }\r\n\r\n findRecursive = (\r\n arr: TariffBranch[],\r\n id: number\r\n ): TariffBranch | null => {\r\n let result: TariffBranch | null = null;\r\n for (const entry in arr) {\r\n if (arr[entry].id == id) {\r\n result = arr[entry];\r\n break;\r\n }\r\n if (arr[entry].children?.length) {\r\n const partialResult = this.findRecursive(arr[entry].children, id);\r\n if (partialResult != null) {\r\n result = partialResult;\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n onDropDownChange = (currentNode: any, selectedNodes: any) => {\r\n // react-dropdown-tree-select doesn't have an intrinsic mechanism for keeping track of selected items, only provides what is selected\r\n // So we have to manually check/uncheck the leaves from this tree used by this component\r\n let newSelectionTariffBranch: TariffBranch | null = null;\r\n if (this.state.selectedTariffBranch) {\r\n const oldSelectionTariffBranch = this.findRecursive(\r\n this.state.tariffBranches,\r\n this.state.selectedTariffBranch.id\r\n );\r\n if (oldSelectionTariffBranch) {\r\n oldSelectionTariffBranch.checked = false;\r\n }\r\n }\r\n\r\n if (selectedNodes.length == 1) {\r\n const newPartialSelectionTariffBranch =\r\n this.findRecursive(\r\n this.state.tariffBranches,\r\n (selectedNodes[0] as TariffBranch)?.id\r\n ) || null;\r\n\r\n if (newPartialSelectionTariffBranch) {\r\n newPartialSelectionTariffBranch.checked = true;\r\n newSelectionTariffBranch = newPartialSelectionTariffBranch;\r\n }\r\n }\r\n\r\n this.setState({\r\n ...this.state,\r\n selectedTariffBranch: newSelectionTariffBranch\r\n });\r\n };\r\n\r\n onSubmitTariffForm = async () => {\r\n try {\r\n if (isNullOrUndefined(this.state.selectedTariffBranch)) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('TARIFF_MANDATORY', 'Tariful este obligatoriu!'),\r\n {\r\n variant: 'error'\r\n });\r\n return;\r\n }\r\n this.setState({ isOwnTariffLoading: true });\r\n\r\n if (this.state.selectedCalculationTypeId) {\r\n await this.originalCalculationClick(this.state.selectedCalculationTypeId, this.state.selectedTariffBranch.id);\r\n }\r\n this.setState({ isOwnTariffLoading: false });\r\n } catch (err) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n }\r\n };\r\n\r\n renderSelectTariffForm = () => {\r\n return (\r\n {\r\n this.onSubmitTariffForm();\r\n }}\r\n >\r\n \r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'OWN_TARIFF_LABEL',\r\n 'Tariff'\r\n )} *\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_SELECT_TARIFF_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n handleCloseClientCommentModal = () => {\r\n this.setState({\r\n isClientCommentOpen: false,\r\n orginalCalculationTypeId: null\r\n });\r\n }\r\n\r\n isButtonDisabled = (item: IReferential) => {\r\n const {\r\n disableButtonForMoreThenTwoRowsChecked,\r\n disableButtonForMoreThenOneRowChecked,\r\n backButtonDisabled\r\n } = this.state;\r\n \r\n // Logic for disabling button based on item code\r\n if (item.code === this.ACTION_COMPARE) {\r\n return disableButtonForMoreThenTwoRowsChecked;\r\n }\r\n \r\n if (\r\n item.code === CalculationTypeCode.ORG ||\r\n item.code === CalculationTypeCode.ALT ||\r\n item.code === this.ACTION_GT_VAL ||\r\n item.code === this.RADAR ||\r\n item.code === this.ACTION_INSURER_CALCULATION\r\n ) {\r\n return false;\r\n }\r\n \r\n if (item.code === this.ACTION_BACK_BUTTON) {\r\n return backButtonDisabled;\r\n }\r\n \r\n return disableButtonForMoreThenOneRowChecked;\r\n }; \r\n\r\n generateLKQReports = async (calculationId: number, rowNumber: number) => {\r\n try {\r\n //Get the Offer Data\r\n const reportParameters = [\r\n {\r\n name: 'calculationId',\r\n value: calculationId.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'caseId',\r\n value: this.props.caseSettingsState.case!.id.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'organizationId',\r\n value: this.props.appState.appUser!.organization?.id.toString()\r\n } as ReportParameter\r\n ];\r\n\r\n const reportServiceParameters = [\r\n {\r\n name: 'calculationId',\r\n value: calculationId.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'caseId',\r\n value: this.props.caseSettingsState.case!.id.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'lang',\r\n value: this.props.appState.appUser!.organization?.country?.code?.toLowerCase() ?? \"ro\"\r\n } as ReportParameter\r\n ];\r\n\r\n const [fileBlob, serviceFileBlob] = await Promise.all([\r\n await this.reportsService.GetRepairReport(ReportTypeCode.DEVIZ_REPARATIE.toString(), this.props.caseSettingsState.case!.id, reportParameters),\r\n await this.reportsService.GetRepairReport(ReportTypeCode.DEVIZ_REP_OFERTA.toString(), this.props.caseSettingsState.case!.id, reportServiceParameters),\r\n ]);\r\n\r\n //Save the OfferReport into attachments\r\n const attachments: CaseAttachment[] = [];\r\n attachments.push({\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n attachmentTypeId: this.state.attachType.id,\r\n attachmentType: this.state.attachType,\r\n file: new File([fileBlob], \r\n this.translatorService.Tranlate('CASE_TAB_CALCULATION_OFFER_LABEL', 'Oferta') + ' '+ rowNumber + '.pdf', { type: 'application/pdf' }),\r\n isSelection: false,\r\n includeInOtherTab: true\r\n } as CaseAttachment);\r\n\r\n attachments.push({\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n attachmentTypeId: this.state.attachType.id,\r\n attachmentType: this.state.attachType,\r\n file: new File([serviceFileBlob], \r\n this.translatorService.Tranlate('CASE_TAB_CALCULATION_SERVICE_REPAIR_LABEL', 'Deviz Service') + ' '+ rowNumber + '.pdf', { type: 'application/pdf' }),\r\n isSelection: false,\r\n includeInOtherTab: true\r\n } as CaseAttachment);\r\n\r\n const newFiles = await this.caseService.AddCaseAttachment(attachments);\r\n\r\n console.log('newFiles', newFiles);\r\n\r\n } catch (error) {\r\n console.log('error', error);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n \r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.reportsService = (this.context as AppContext).reportsService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.orderService = (this.context as AppContext).orderService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.tariffService = (this.context as AppContext).tariffService;\r\n const step = this.getWorkflowSectionStep(this.props.workflowForm.workflowSectionStepId);\r\n const options = {\r\n viewColumns: false,\r\n filter: false,\r\n search: false,\r\n pagination: false,\r\n selectableRows: 'multiple' as SelectableRows,\r\n selectableRowsHeader: false,\r\n disableToolbarSelect: true,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 0,\r\n rowsSelected: this.state.rowsSelected,\r\n isRowSelectable: (dataIndex: number) => {\r\n if (this.state.caseCalculationHistory.length > 0) {\r\n if (this.state.caseCalculationHistory[dataIndex].calculationType.code === CalculationTypeCode.ORG) {\r\n return this.state.caseCalculationHistory[dataIndex].amount > 0;\r\n }\r\n return true;\r\n }\r\n return true;\r\n },\r\n onRowsSelect: (rowsSelected: any, allRows: any[]) => {\r\n const selected = allRows\r\n .map((item) => item.index)\r\n .sort(function (a, b) {\r\n return b - a;\r\n });\r\n if (allRows.length > 2) {\r\n this.setState({\r\n disableButtonForMoreThenOneRowChecked: true,\r\n disableButtonForMoreThenTwoRowsChecked: true,\r\n rowsSelected: selected\r\n });\r\n } else {\r\n if (allRows.length === 2) {\r\n this.setState({\r\n disableButtonForMoreThenOneRowChecked: true,\r\n disableButtonForMoreThenTwoRowsChecked: false,\r\n rowsSelected: selected\r\n });\r\n }\r\n\r\n if (allRows.length === 1) {\r\n this.setState({\r\n disableButtonForMoreThenOneRowChecked: false,\r\n disableButtonForMoreThenTwoRowsChecked: true,\r\n rowsSelected: selected\r\n });\r\n }\r\n if (allRows.length === 0) {\r\n this.setState({\r\n disableButtonForMoreThenOneRowChecked: true,\r\n disableButtonForMoreThenTwoRowsChecked: true,\r\n rowsSelected: selected\r\n });\r\n }\r\n }\r\n }\r\n };\r\n\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n\r\n const caseParameters = this.props.caseSettingsState?.case?.caseParameters || [];\r\n let caseVatRate =\r\n caseParameters.find((x) => x.parameter?.code === ParametreCode.TVA)?.value || 0;\r\n caseVatRate = +caseVatRate;\r\n\r\n const caseValuation = this.props.caseSettingsState?.case?.caseValuation;\r\n\r\n const caseHasNoVAT = offerTypeCode === CaseTypeCode.AQUISITION && caseVatRate === 0;\r\n const vehicleHasNoVat =\r\n offerTypeCode === CaseTypeCode.SALE && this.props.vehicleState.vehicle?.purchaseVatRate === 0;\r\n\r\n const purchasePrice = (this.props.vehicleState.vehicle?.purchasePrice as number) || 0;\r\n\r\n let basePrice = 0;\r\n let tradeInPrice = 0;\r\n let offerPrice = 0;\r\n let retailPrice = 0;\r\n\r\n const basePriceLabel = this.translatorService.Tranlate(\r\n 'VALUATION_BASE_PRICE_LABEL',\r\n 'Pret de Baza (incl. TVA)'\r\n );\r\n const tradeInPriceLabel = 'Trade-in price (incl. VAT)';\r\n const offerPriceLabel = 'Offer price (incl. VAT)';\r\n const retailPriceLabel = 'Retail price (incl. VAT)';\r\n const accountingValueLabel = this.translatorService.Tranlate(\r\n 'CASE_EVALUATION_ACCOUNTING_VALUE',\r\n 'Valoare Contabila'\r\n );\r\n const dealerPriceLabel = this.translatorService.Tranlate(\r\n 'CASE_EVALUATION_DEALER_PRICE',\r\n 'Pret dealer'\r\n );\r\n const employPriceLabel = this.translatorService.Tranlate(\r\n 'CASE_EVALUATION_EMPLOYEE_PRICE',\r\n 'Pret angajat'\r\n );\r\n\r\n if (caseValuation) {\r\n basePrice = caseValuation.priceAsNew;\r\n tradeInPrice = caseValuation.tradeInPrice;\r\n offerPrice = caseValuation.offerPrice;\r\n retailPrice = caseValuation.retailPrice;\r\n\r\n // if (caseHasNoVAT) {\r\n // basePrice = Utils.getPriceWithoutVat(basePrice, caseValuation.vatRate);\r\n // tradeInPrice = Utils.getPriceWithoutVat(tradeInPrice, caseValuation.vatRate);\r\n // offerPrice = Utils.getPriceWithoutVat(offerPrice, caseValuation.vatRate);\r\n // retailPrice = Utils.getPriceWithoutVat(retailPrice, caseValuation.vatRate);\r\n // }\r\n\r\n // if (vehicleHasNoVat) {\r\n // tradeInPrice = Utils.getPriceWithoutVat(tradeInPrice, caseValuation.vatRate);\r\n // offerPrice = Utils.getPriceWithoutVat(offerPrice, caseValuation.vatRate);\r\n // retailPrice = Utils.getPriceWithoutVat(retailPrice, caseValuation.vatRate);\r\n\r\n // tradeInPrice = Utils.getPriceWithMarginVat(tradeInPrice, +purchasePrice, caseVatRate);\r\n // offerPrice = Utils.getPriceWithMarginVat(offerPrice, +purchasePrice, caseVatRate);\r\n // retailPrice = Utils.getPriceWithMarginVat(retailPrice, +purchasePrice, caseVatRate);\r\n // }\r\n // }\r\n\r\n // if (caseHasNoVAT) {\r\n // tradeInPriceLabel = Utils.removeVatFromPriceLabel(tradeInPriceLabel);\r\n // offerPriceLabel = Utils.removeVatFromPriceLabel(offerPriceLabel);\r\n // retailPriceLabel = Utils.removeVatFromPriceLabel(retailPriceLabel);\r\n // }\r\n }\r\n\r\n \r\n\r\n const firstCalculation = this.state.caseCalculationHistoryCopy.length > 0 ? this.state.caseCalculationHistoryCopy[0] : null;\r\n console.log('firstCalculation', firstCalculation);\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
\r\n
\r\n {this.state.caseCalculationActionTypeList\r\n .filter((x) => this.state.hasRights && !this.state.executing)\r\n .map((item) => (\r\n
\r\n {item.code === this.ACTION_BACK_BUTTON ? (\r\n } // Icon on the left\r\n onClick={(e) => this.handleCalculationsTypesButton(item.id, item.code)}\r\n >\r\n {item.displayName} {/* Text on the right */}\r\n \r\n \r\n ) : (\r\n this.handleCalculationsTypesButton(item.id, item.code)}\r\n >\r\n {item.displayName}\r\n \r\n )}\r\n
\r\n ))}\r\n {this.state.workflowCalculation !== null &&\r\n this.state.workflowCalculation!.qualityControlCertificate ? (\r\n
\r\n this.handleQualityControlButton()}\r\n >\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_QUALITY_CONTROL_BUTTON',\r\n 'Control calitate'\r\n )}\r\n \r\n
\r\n ) : null}\r\n\r\n {this.state.workflowReports.length !== 0 ? (\r\n
\r\n {\r\n this.setState({ openMenuItem: e.currentTarget });\r\n }}\r\n disabled={!this.state.rowsSelected.length && !this.state.workflowReports.find((item) => item.report!.code === ReportTypeCode.DEVIZ_REP_AP)}\r\n >\r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_DOCUMENTS_BUTTON',\r\n 'Documente'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n\r\n {\r\n this.setState({ openMenuItem: false });\r\n }}\r\n getContentAnchorEl={null}\r\n anchorOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'center'\r\n }}\r\n transformOrigin={{\r\n vertical: 'top',\r\n horizontal: 'center'\r\n }}\r\n >\r\n {this.state.workflowReports.map((item) => {\r\n if (\r\n (item.report!.code === ReportTypeCode.ESTIMATE_OE && this.state.disableButtonForMoreThenOneRowChecked) ||\r\n (item.report!.code === ReportTypeCode.ESTIMATE_OE && this.props.caseSettingsState?.caseSettings!.workflow?.isCarfixIntegration &&\r\n this.state.rowsSelected.length && this.state.caseCalculationHistory[this.state.rowsSelected[0]].calculationType.code == CalculationTypeCode.ALT.toString())\r\n ) {\r\n return null;\r\n }\r\n if (\r\n (item.report!.code === ReportTypeCode.DEVIZ_AUTOWORLD &&\r\n this.state.caseCalculationHistory.length == 0) ||\r\n (item.report!.code === ReportTypeCode.DEVIZ_AUTOWORLD &&\r\n this.state.disableButtonForMoreThenOneRowChecked)\r\n ) {\r\n return null;\r\n }\r\n if (\r\n (item.report!.code === ReportTypeCode.DEVIZ_CLIENT &&\r\n this.state.caseCalculationHistory.length == 0) ||\r\n (item.report!.code === ReportTypeCode.DEVIZ_CLIENT &&\r\n this.state.disableButtonForMoreThenOneRowChecked)\r\n ) {\r\n return null;\r\n }\r\n if (\r\n (item.report!.code === ReportTypeCode.DEVIZ_REPARATIE && this.state.disableButtonForMoreThenOneRowChecked) ||\r\n (item.report!.code === ReportTypeCode.DEVIZ_REPARATIE && this.props.caseSettingsState?.caseSettings!.workflow?.isCarfixIntegration &&\r\n this.state.rowsSelected.length && this.state.caseCalculationHistory[this.state.rowsSelected[0]].calculationType.code == CalculationTypeCode.ORG.toString())\r\n ) {\r\n return null;\r\n }\r\n return (\r\n \r\n this.reportClick(item.report!.code, item.report!.displayName)\r\n }\r\n >\r\n {item.report!.displayName}\r\n \r\n );\r\n })}\r\n \r\n
\r\n ) : null}\r\n
\r\n {this.props.caseSettingsState.case!.caseValuation === null ? (\r\n ''\r\n ) : (\r\n \r\n \r\n
\r\n
{this.translatorService.Tranlate('CASE_CALCULATION_EVALUATION_ROW', 'Evaluare')}
\r\n {\r\n this.setState({ showHistoryModal: true });\r\n }}\r\n >\r\n {this.translatorService.Tranlate('CASE_CALCULATION_EVALUATION_HISTORY', 'Istoric Evaluari')}\r\n \r\n
\r\n\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
{tradeInPrice ? tradeInPrice.toFixed(2) : 0} €
\r\n
{offerPrice ? offerPrice.toFixed(2) : 0} €
\r\n
{retailPrice ? retailPrice.toFixed(2) : 0} €
\r\n
\r\n \r\n \r\n \r\n \r\n
{basePrice.toFixed(2)} €
\r\n
\r\n
\r\n
\r\n\r\n
\r\n )}\r\n\r\n {this.props.appState?.appUser?.userRole?.code === 'MAVO_ADMIN' && this.props.caseSettingsState.case!.caseValuation !== null ? \r\n \r\n \r\n
{accountingValueLabel}
\r\n \r\n
{this.state.accoutingValue ? this.state.accoutingValue.toFixed(2) : 0} €
\r\n
\r\n
\r\n \r\n \r\n
{dealerPriceLabel}
\r\n \r\n
{this.state.discretionaryPriceDealer ? this.state.discretionaryPriceDealer.toFixed(2) : 0} €
\r\n
\r\n
\r\n \r\n \r\n
{employPriceLabel}
\r\n \r\n
{this.state.discretionaryPriceEmployee ? this.state.discretionaryPriceEmployee.toFixed(2) : 0} €
\r\n
\r\n
\r\n
: ''}\r\n\r\n \r\n {!this.showManipulation(firstCalculation) ? (\r\n ''\r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
{firstCalculation ? this.displayValueWithCurrency(firstCalculation.amountPieces, firstCalculation)\r\n + ' (' + this.translatorService.Tranlate('WITHOUT_VAT', 'Fara TVA') + ')' : ''}
\r\n
{firstCalculation ? this.displayValueWithCurrency(firstCalculation.smallPartsAquisitionValue, firstCalculation)\r\n + ' (' + this.translatorService.Tranlate('WITHOUT_VAT', 'Fara TVA') + ')' : ''}
\r\n
{firstCalculation ? firstCalculation.manipulationPercent : ''} %
\r\n
{firstCalculation ? this.displayValueWithCurrency(firstCalculation.manipulationValue, firstCalculation)\r\n + ' (' + this.translatorService.Tranlate('WITHOUT_VAT', 'Fara TVA') + ')' : ''}
\r\n
{this.state.lastServiceCalculation ? this.displayValueWithCurrency(this.state.lastServiceCalculation.amountLaborWithDiscount + this.state.lastServiceCalculation.amountPaintingMaterialsWithDiscount + this.state.lastServiceCalculation.amountPaintingLaborWithDiscount, this.state.lastServiceCalculation)\r\n + ' (' + this.translatorService.Tranlate('WITHOUT_VAT', 'Fara TVA') + ')' : ''}
\r\n
{this.state.lastServiceCalculation && firstCalculation ? this.displayValueWithCurrency(firstCalculation.smallPartsAquisitionValue + firstCalculation.manipulationValue + this.state.lastServiceCalculation.amountLaborWithDiscount + this.state.lastServiceCalculation.amountPaintingMaterialsWithDiscount + this.state.lastServiceCalculation.amountPaintingLaborWithDiscount, firstCalculation)\r\n + ' (' + this.translatorService.Tranlate('WITHOUT_VAT', 'Fara TVA') + ')' : ''}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n )}\r\n
\r\n {this.state.caseCalculationHistory.length == 0 ? (\r\n \r\n ) : (\r\n \r\n )}\r\n\r\n
\r\n\r\n \r\n {this.state.selectedCalculationButton === null ? (\r\n \r\n
\r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_CALCULATION_DETAILS_MODAL_TITLE',\r\n 'Detalii Calculatie'\r\n )}\r\n \r\n
\r\n \r\n \r\n \r\n \r\n ) : this.state.selectedCalculationButton === this.ACTION_COMPARE ? (\r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_ITEMS_MODAL_TITLE',\r\n 'Repere'\r\n )}\r\n \r\n \r\n \r\n \r\n {moment\r\n .utc(this.state.caseCalculationHistory[this.state.rowsSelected[0]].date)\r\n .local()\r\n .format(this.props.appState.dateFormat)}\r\n \r\n \r\n {this.state.caseCalculationHistory[this.state.rowsSelected[0]]!\r\n .amountWithoutTVA +\r\n ' ' +\r\n this.state.caseCalculationHistory[this.state.rowsSelected[0]]!\r\n .currencyCode}\r\n \r\n \r\n {\r\n this.state.caseCalculationHistory[this.state.rowsSelected[0]]!.user!\r\n .userName\r\n }\r\n \r\n \r\n \r\n \r\n {moment\r\n .utc(this.state.caseCalculationHistory[this.state.rowsSelected[1]]!.date)\r\n .local()\r\n .format(this.props.appState.dateFormat)}\r\n \r\n \r\n {this.state.caseCalculationHistory[this.state.rowsSelected[1]]!\r\n .amountWithoutTVA +\r\n ' ' +\r\n this.state.caseCalculationHistory[this.state.rowsSelected[1]]!\r\n .currencyCode}\r\n \r\n \r\n {\r\n this.state.caseCalculationHistory[this.state.rowsSelected[1]]!.user!\r\n .userName\r\n }\r\n \r\n \r\n \r\n \r\n ) : null}\r\n\r\n \r\n {this.state.selectedCalculationButton === null ? (\r\n \r\n ) : this.state.selectedCalculationButton === this.ACTION_COMPARE ? (\r\n \r\n ) : null}\r\n \r\n {this.state.selectedCalculationButton === null ? null : this.state\r\n .selectedCalculationButton === this.ACTION_COMPARE ? (\r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_CLOSE_MODAL',\r\n 'Inchide'\r\n )}\r\n \r\n \r\n ) : null}\r\n \r\n
\r\n \r\n {this.props.caseSettingsState?.caseSettings!.workflow?.isCarfixIntegration ? this.translatorService.Tranlate(\r\n 'CASE_CAR_CALCULATIONS_SEND_REPAIR_OFFER_BUTTON',\r\n 'Send repair Offer'\r\n ) : step?.workflowStep?.code == 'TR_ACC' ? this.translatorService.Tranlate(\r\n 'CASE_CALCULATIONS_SEND_TR_ACC_BUTTON',\r\n 'Trimite'\r\n ) : this.translatorService.Tranlate(\r\n 'CASE_CALCULATIONS_SEND_BUTTON',\r\n 'Salveaza'\r\n )}\r\n \r\n
\r\n
\r\n ) : null}\r\n\r\n \r\n
\r\n

\r\n {this.translatorService.Tranlate(\r\n 'WARNING_UNSAVED_CHANGES',\r\n 'Aveti modificari nesalvate. Sigur doriti sa iesiti?'\r\n )}\r\n

\r\n
\r\n \r\n \r\n {this.translatorService.Tranlate('WORKFLOW_DOCUMENTS_TYPE_TAB_YES', 'Da')}\r\n \r\n \r\n {\r\n this.setState({ isDialogModifiedOpen: false });\r\n }}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n className=\"mx-1\"\r\n >\r\n \r\n {this.translatorService.Tranlate('WORKFLOW_DOCUMENTS_TYPE_TAB_NO', 'Nu')}\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_ALTERNATIVE_CALCULATION_DETAILS_MODAL_TITLE',\r\n 'Detalii calculatie alternativa'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VALUATION_DIALOG_HEADER', 'Evaluare Masina')}\r\n \r\n {\r\n this.setState({ isValuationOpen: false });\r\n }}\r\n size={'small'}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_QUALITY_CONTROL_MODAL_TITLE',\r\n 'Control calitate'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Radar\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ showHistoryModal: false })}\r\n id={this.props.match.params.id}\r\n />\r\n {!this.state.workflowCalculation?.viewClientCommentsHistory ? null :\r\n (this.state.isLoading ? null : (\r\n \r\n ))}\r\n {this.state.isMultipleTariffDialogOpen ? (\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('SELECT_TARIFF_HEADER', 'Selecteaza tarif')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isOwnTariffLoading ? (\r\n this.renderSelectTariffForm()\r\n ) : ''}\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n \r\n \r\n \r\n \r\n {`${this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_FORM_CLIENT_COMMENT_MODAL',\r\n 'Vă rugăm să țineți cont de solicitarea clientului - '\r\n )} `}\r\n {this.state.caseRequests.length > 0 ? (\r\n \r\n {this.state.caseRequests[0].text}\r\n \r\n ) : ''} !\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabCalculationsFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n null,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabCalculationsForm as any));\r\n","import React from 'react';\r\nimport moment from 'moment';\r\n\r\nimport { MuiPickersUtilsProvider, DatePicker as MaterialDatePicker } from '@material-ui/pickers';\r\nimport { DateType } from '@date-io/type';\r\n\r\nimport MomentUtils from '@date-io/moment';\r\n\r\ntype Props = {\r\n value: string | number | Date | null | undefined;\r\n onChange: (date: DateType | null) => void;\r\n locale: string;\r\n disabled?: boolean;\r\n required?: boolean;\r\n label?: React.ReactNode;\r\n format?: string;\r\n helperText?: React.ReactNode;\r\n};\r\n\r\nconst DatePicker: React.FC = ({\r\n value,\r\n onChange,\r\n locale,\r\n disabled,\r\n required,\r\n label,\r\n format,\r\n helperText\r\n}: Props) => (\r\n \r\n \r\n \r\n);\r\n\r\nexport default DatePicker;\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CaseVehicleHistory, Model, ModelData, UndocumentedModel } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { WorkflowSectionStep, WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport Form from '@rjsf/material-ui';\r\nimport { ISubmitEvent, FormValidation, IChangeEvent } from '@rjsf/core';\r\nimport { FormButton } from '../../helpers/forms/FormButton';\r\nimport moment from 'moment';\r\nimport { GTErrorCode, ReferentialCode } from '../../helpers/Constants';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport DatePicker from '../_shared/DatePicker';\r\nimport _ from 'lodash';\r\nimport { Button, Dialog, DialogContent, DialogTitle, FormControl, Grid, IconButton, InputLabel, MenuItem, Select, Typography } from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport * as R from 'ramda';\r\n\r\ninterface ICaseDetailsCaseTabCarDetailsFormState {\r\n formData: CaseVehicleHistory;\r\n isLoading: boolean;\r\n carCategoryList: IReferential[];\r\n modelList: Model[];\r\n brandList: IReferential[];\r\n filteredModelList: IReferential[];\r\n hasRights: boolean;\r\n executing: boolean;\r\n undocumentedModelList: UndocumentedModel[];\r\n isDialogOpen: boolean;\r\n modelData: ModelData[];\r\n selectedModelData: ModelData | null;\r\n carClassList: IReferential[];\r\n initialNumberOfKilometers: number | undefined;\r\n step: WorkflowSectionStep | null;\r\n\r\n}\r\nexport interface ExternalCaseDetailsCaseTabCarDetailsFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseTabCarDetailsFormProps = {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & typeof CaseSettingsActionCreators &\r\n ExternalCaseDetailsCaseTabCarDetailsFormProps &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabCarDetailsForm extends React.PureComponent<\r\n ICaseDetailsCaseTabCarDetailsFormProps,\r\n ICaseDetailsCaseTabCarDetailsFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n formData: {} as CaseVehicleHistory,\r\n isLoading: true,\r\n carCategoryList: [],\r\n modelList: [],\r\n brandList: [],\r\n filteredModelList: [],\r\n hasRights: false,\r\n executing: false,\r\n undocumentedModelList: [],\r\n isDialogOpen: false,\r\n modelData: [],\r\n selectedModelData: null,\r\n carClassList: [],\r\n step: null\r\n } as unknown as ICaseDetailsCaseTabCarDetailsFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n }\r\n\r\n loadData = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n const refCarCateg = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CarCategory\r\n );\r\n const refCarBrand = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CarBrands\r\n );\r\n const refCarClass = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CarClass\r\n );\r\n\r\n const caseVehicle = this.props.caseSettingsState.case!.caseVehicle;\r\n let brandId = 0;\r\n if (!isNullOrUndefined(caseVehicle) && !isNullOrUndefined(caseVehicle.brandId)) {\r\n brandId = caseVehicle.brandId;\r\n }\r\n\r\n const [carCategoryList, brandList, modelList, undocumentedModelList, carClassList] = await Promise.all([\r\n this.appReferentialService.Get(refCarCateg!.baseUrl),\r\n this.appReferentialService.Get(refCarBrand!.baseUrl),\r\n this.caseService.GetCarModelsByBrand(brandId),\r\n this.caseService.GetCarUndocumentedModelsByBrand(brandId),\r\n this.appReferentialService.Get(refCarClass!.baseUrl)\r\n ]);\r\n\r\n let modelList1: Model[] = [];\r\n if (modelList.length === 0 && brandList.length !== 0) {\r\n modelList1 = await this.caseService.GetCarModelsByBrand(brandList[0].id);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n const step = this.getWorkflowSectionStep(this.props.workflowForm.workflowSectionStepId);\r\n\r\n if (isNullOrUndefined(this.props.caseSettingsState.case!.caseVehicle)) {\r\n this.setState({\r\n formData: {\r\n caseId: caseId,\r\n id: 0\r\n } as CaseVehicleHistory,\r\n isLoading: false,\r\n carCategoryList: carCategoryList,\r\n brandList: brandList,\r\n modelList: modelList1,\r\n undocumentedModelList: undocumentedModelList,\r\n hasRights: hasRights,\r\n carClassList: carClassList,\r\n step: step\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (!isNullOrUndefined(caseVehicle.firstPlateDate)) {\r\n caseVehicle.firstPlateDate = moment(caseVehicle.firstPlateDate).format(moment.HTML5_FMT.DATE);\r\n }\r\n if (!isNullOrUndefined(caseVehicle.registrationDate)) {\r\n caseVehicle.registrationDate = moment(caseVehicle.registrationDate).format(\r\n moment.HTML5_FMT.DATE\r\n );\r\n }\r\n if (!isNullOrUndefined(caseVehicle.motDate)) {\r\n caseVehicle.motDate = moment(caseVehicle.motDate).format(\r\n moment.HTML5_FMT.DATE\r\n );\r\n }\r\n\r\n for (const [key, value] of Object.entries(caseVehicle)) {\r\n if (isNullOrUndefined(value)) {\r\n caseVehicle[key] = undefined;\r\n }\r\n }\r\n\r\n this.setState({\r\n formData: caseVehicle,\r\n isLoading: false,\r\n carCategoryList: carCategoryList,\r\n brandList: brandList,\r\n modelList: modelList,\r\n undocumentedModelList: undocumentedModelList,\r\n hasRights: hasRights,\r\n carClassList: carClassList,\r\n initialNumberOfKilometers: caseVehicle.numberOfKilometers,\r\n step: step\r\n });\r\n };\r\n\r\n handleArraySchema = (schema: any) => {\r\n if (isNullOrUndefined(schema.properties)) {\r\n return schema;\r\n }\r\n\r\n for (const key of Object.keys(schema.properties)) {\r\n if (schema.properties[key].anyOf === undefined) {\r\n continue;\r\n }\r\n if (schema.properties[key].anyOf.length === 0) {\r\n continue;\r\n }\r\n\r\n if (\r\n schema.properties[key].anyOf !== undefined &&\r\n schema.properties[key].anyOf.length != 0 &&\r\n schema.properties[key].anyOf[0].title === 'CAR_BRAND_ENUM'\r\n ) {\r\n schema.properties[key].anyOf = this.state.brandList.map((item, index) => {\r\n return {\r\n type: 'number',\r\n title: item.displayName,\r\n enum: [item.id]\r\n };\r\n });\r\n }\r\n if (\r\n schema.properties[key].anyOf !== undefined &&\r\n schema.properties[key].anyOf.length != 0 &&\r\n schema.properties[key].anyOf[0].title === 'CAR_MODEL_ENUM'\r\n ) {\r\n const models = this.state.modelList.map((item, index) => {\r\n return {\r\n type: 'number',\r\n title: item.displayName,\r\n enum: [item.id]\r\n };\r\n });\r\n schema.properties[key].anyOf = models;\r\n }\r\n\r\n if (\r\n schema.properties[key].anyOf !== undefined &&\r\n schema.properties[key].anyOf.length != 0 &&\r\n schema.properties[key].anyOf[0].title === 'CAR_CATEGORY_ENUM'\r\n ) {\r\n schema.properties[key].anyOf = this.state.carCategoryList.map((item) => {\r\n return {\r\n type: 'number',\r\n title: item.displayName,\r\n enum: [item.id]\r\n };\r\n });\r\n }\r\n\r\n if (\r\n schema.properties[key].anyOf !== undefined &&\r\n schema.properties[key].anyOf.length != 0 &&\r\n schema.properties[key].anyOf[0].title === 'CAR_CLASS_ENUM'\r\n ) {\r\n schema.properties[key].anyOf = this.state.carClassList.map((item, index) => {\r\n return {\r\n type: 'number',\r\n title: item.displayName,\r\n enum: [item.id]\r\n };\r\n });\r\n }\r\n }\r\n\r\n return schema;\r\n };\r\n \r\n getWorkflowSectionStep = (workflowSectionStepId: number): WorkflowSectionStep | null => {\r\n const sections = this.props.caseSettingsState.caseSettings!.workflow.workflowSections!;\r\n for (const section of sections) {\r\n for (const step of section.workflowSectionSteps) {\r\n if (step.id == workflowSectionStepId) {\r\n return step;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n validate = (formData: any, errors: FormValidation, formCode: string) => {\r\n if (new Date(formData.firstPlateDate) >= new Date()) {\r\n errors.firstPlateDate.addError(\r\n this.translatorService.Tranlate(\r\n 'FRM_CAR_DATA_FIRST_DATE_PLATE_LESS_CURRENT_DATE_ERROR',\r\n 'Data primei inmatriculari trebuie sa fie mai mica decat data curenta!'\r\n )\r\n );\r\n }\r\n if (new Date(formData.registrationDate) >= new Date(formData.firstPlateDate)) {\r\n errors.registrationDate.addError(\r\n this.translatorService.Tranlate(\r\n 'FRM_CAR_DATA_REGISTRATION_DATE_LESS_FIRST_DATE_PLATE_ERROR',\r\n 'Data fabricatiei trebuie sa fie mai mica decat data primei inmatriculari!'\r\n )\r\n );\r\n }\r\n if (!R.isNil(formData.vin)) {\r\n if (formData.vin.length < 17) {\r\n errors.vin.addError(\r\n this.translatorService.Tranlate('FRM_MINIMUM_LENGTH_ERROR', \"nu poate fi mai mică de {0} caractere\").replace(\r\n '{0}',\r\n '17'\r\n )\r\n );\r\n }\r\n }\r\n\r\n if (!R.isNil(this.state.step)) {\r\n const step = this.state.step;\r\n if (step.isCurrent(this.props.caseSettingsState.case!.caseStatus.caseStatusId)) {\r\n if (!isNullOrUndefined(formData.numberOfKilometers) && !isNullOrUndefined(this.state.initialNumberOfKilometers)) {\r\n if (formData.numberOfKilometers <= this.state.initialNumberOfKilometers) {\r\n errors.numberOfKilometers.addError(\r\n this.translatorService.Tranlate('INITIAL_NUMBER_OF_KILOMETERS', ' Numarul de kilometri la interventia anterioara :') + ' ' + this.state.initialNumberOfKilometers + ' km'\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n return errors;\r\n };\r\n\r\n onSubmit = async (e: ISubmitEvent, code: string) => {\r\n try {\r\n this.setState({ executing: true });\r\n\r\n let data = e.formData as CaseVehicleHistory;\r\n const brand = _.find(this.state.brandList, function(object) {\r\n return object.id == data.brandId;\r\n });\r\n const model = _.find(this.state.modelList, function(object) {\r\n return object.id == data.modelId;\r\n });\r\n\r\n const undocumentedModel = _.find(this.state.undocumentedModelList, function(object) {\r\n return object.code == model?.code;\r\n });\r\n if (undocumentedModel) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('UNDOCUMENTED_MAKE_AND_MODELS', 'Autovehiculul este documentat parțial și este posibil să lipsească informațiile pentru unele piese. Dacă ai nevoie de ajutor te rugăm să ne trimiți un mesaj la suport@gtmotive.ro.'), {\r\n variant: 'warning',\r\n autoHideDuration: 5000\r\n });\r\n }\r\n\r\n const makeWithNoVinQuery = _.find(this.state.undocumentedModelList, function(object) {\r\n return object.brand == brand?.displayName && !object.hasVinQuery;\r\n });\r\n if (makeWithNoVinQuery) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('MAKE_WITH_NO_VIN_QUERY', 'Pentru auto selectat nu se poate face identificarea conform VIN - Vă rugăm să verificaţi datele auto la deschiderea calculaţiei!'), {\r\n variant: 'warning',\r\n autoHideDuration: 5000\r\n });\r\n\r\n }\r\n \r\n data.caseId = this.props.caseSettingsState.case!.id;\r\n if (isNullOrUndefined(data.id)) {\r\n data.id = 0;\r\n }\r\n\r\n if (data.id === 0) {\r\n data = await this.caseService.AddCaseVehicle(data);\r\n } else {\r\n await this.caseService.UpdateCaseVehicle(data);\r\n }\r\n\r\n await this.submitForm(data.caseId, this.props.workflowForm.id, null);\r\n\r\n this.props.SetCaseVehicle(data);\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (err) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n this.props.SetCaseStatus(newStatus);\r\n\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n CustomDatePicker = (props: any) => {\r\n const { value, label, onChange, required } = props;\r\n const { language, dateFormat } = this.props.appState;\r\n return (\r\n onChange(date?.format('YYYY-MM-DD'))}\r\n required={required}\r\n format={dateFormat.toUpperCase()}\r\n disabled={!this.state.hasRights}\r\n />\r\n );\r\n };\r\n\r\n\r\n closeDialog = async () => {\r\n this.setState({\r\n isDialogOpen: false\r\n });\r\n };\r\n\r\n handleAutocompleteModelDataChange = async (newValue: ModelData | null) => {\r\n this.setState({\r\n selectedModelData: newValue\r\n });\r\n };\r\n \r\n submitSelectedModelData = async () => {\r\n try {\r\n console.log(this.state.selectedModelData);\r\n\r\n const model = this.state.modelList.find(\r\n (item) => item.code === this.state.selectedModelData!.umc\r\n );\r\n if (isNullOrUndefined(model)) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n formData: {\r\n ...this.state.formData,\r\n modelId: model.id\r\n },\r\n isDialogOpen: false\r\n });\r\n\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n renderAddModelForm = () => {\r\n return (\r\n {\r\n this.submitSelectedModelData();\r\n }}\r\n >\r\n
\r\n \r\n this.handleAutocompleteModelDataChange(newValue)\r\n }\r\n getOptionLabel={(option: ModelData) => option.modelDescription || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n validateCaseCarDetails = (schema: any) => {\r\n if (!R.isNil(this.state.step)) {\r\n const step = this.state.step;\r\n if (step.isCurrent(this.props.caseSettingsState.case!.caseStatus.caseStatusId)) {\r\n if (!isNullOrUndefined(this.state.formData.numberOfKilometers) && !isNullOrUndefined(this.state.initialNumberOfKilometers)) {\r\n if (this.state.formData.numberOfKilometers <= this.state.initialNumberOfKilometers) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'NUMBER_OF_KILOMETERS_VALIDATION',\r\n 'Vă rugăm să verificați numărul de kilometri intoduși!'\r\n ),\r\n {\r\n variant: 'warning'\r\n }\r\n );\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n renderFormData = (form: WorkflowSectionStepForm) => {\r\n let jsonSchema = {};\r\n let jsonGUI = {};\r\n const widgets = {\r\n DateWidget: this.CustomDatePicker\r\n };\r\n\r\n try {\r\n jsonSchema = JSON.parse(form.json1);\r\n jsonGUI = JSON.parse(form.json2);\r\n } catch {\r\n console.log('json schema/gui error');\r\n }\r\n\r\n let schema = this.translatorService.TranslateSchema(jsonSchema);\r\n schema = this.handleArraySchema(jsonSchema);\r\n return (\r\n
\r\n \r\n this.validate(formData, errors, form.form.code)\r\n }\r\n liveValidate\r\n showErrorList={false}\r\n formData={this.state.formData}\r\n onBlur={this.onBlur}\r\n onChange={async (e) => await this.onFormChange(e)}\r\n onSubmit={async (e: ISubmitEvent) => await this.onSubmit(e, form.form.code)}\r\n transformErrors={this.translatorService.TranslateErrors}\r\n widgets={widgets}\r\n >\r\n
{\r\n this.validateCaseCarDetails(schema);\r\n }}>\r\n {FormButton.GetButtons(\r\n form.form.code,\r\n this.translatorService,\r\n this.state.hasRights,\r\n this.state.executing\r\n )}\r\n
\r\n \r\n {this.state.isDialogOpen ? (\r\n \r\n \r\n {this.translatorService.Tranlate('FRM_CAR_DATA_MODEL', 'Model Autovehicul')}\r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddModelForm()}\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n
\r\n );\r\n };\r\n\r\n onChangeVin = async (value:string) =>{\r\n if (R.test(/^(?=.*[0-9])(?=.*[abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ])[0-9abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ-]{17}$/, value)) {\r\n const [result, latestCaseVehicleHistory, vehicle] = await Promise.all([\r\n this.caseService.DecodeVin(value),\r\n this.caseService.GetLatestCaseVehicleHistory(value),\r\n this.caseService.GetVehicleFromVQRepo(value)\r\n ]);\r\n if (latestCaseVehicleHistory !== null) {\r\n this.setState({\r\n formData: {\r\n ...this.state.formData,\r\n numberOfKilometers: latestCaseVehicleHistory.numberOfKilometers\r\n },\r\n initialNumberOfKilometers: latestCaseVehicleHistory.numberOfKilometers\r\n });\r\n }\r\n if (result.error !== null) {\r\n if (result.error.errorInfo.code == GTErrorCode.THE_VIN_NUMBER_SENT_DOES_NOT_DECODE_ANY_MODEL) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('THE_VIN_NUMBER_SENT_DOES_NOT_DECODE_ANY_MODEL', 'Din păcate autovehiculul selectat nu poate fi identificat în aplicație !'), {\r\n variant: 'warning',\r\n autoHideDuration: 5000\r\n });\r\n }\r\n return;\r\n }\r\n\r\n if (result.responseInfo.vehicleInfoDec.modelList.modelData.length === 0) {\r\n return;\r\n }\r\n const makeCode = result.responseInfo.vehicleInfoDec.modelList.modelData[0].makeCode;\r\n const brand = this.state.brandList.find((item) => makeCode.startsWith(item.code!, 0));\r\n if (isNullOrUndefined(brand)) {\r\n return;\r\n }\r\n\r\n const [modelList, undocumentedModelList] = await Promise.all([\r\n this.caseService.GetCarModelsByBrand(brand.id),\r\n this.caseService.GetCarUndocumentedModelsByBrand(brand.id)\r\n ]);\r\n if (result.responseInfo.vehicleInfoDec.modelList.modelData.length > 1) {\r\n console.log('vehicle', vehicle);\r\n if (vehicle === null) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SELECT_MODEL_DIALOG', 'Va rugam selectati modelul auto!'), {\r\n variant: 'warning',\r\n autoHideDuration: 5000\r\n });\r\n this.setState({\r\n isDialogOpen: true,\r\n modelList: [...modelList],\r\n undocumentedModelList: undocumentedModelList,\r\n formData: {\r\n ...this.state.formData,\r\n brandId: brand.id\r\n },\r\n modelData: result.responseInfo.vehicleInfoDec.modelList.modelData\r\n });\r\n } else {\r\n const model = modelList.find(\r\n (item) => item.code === vehicle.umc\r\n );\r\n if (isNullOrUndefined(model)) {\r\n this.setState({\r\n modelList: [...modelList],\r\n undocumentedModelList: undocumentedModelList,\r\n formData: {\r\n ...this.state.formData,\r\n brandId: brand.id\r\n }\r\n });\r\n \r\n return;\r\n }\r\n \r\n this.setState({\r\n modelList: [...modelList],\r\n undocumentedModelList: undocumentedModelList,\r\n formData: {\r\n ...this.state.formData,\r\n brandId: brand.id,\r\n modelId: model.id\r\n }\r\n });\r\n }\r\n } else {\r\n const model = modelList.find(\r\n (item) => item.code === result.responseInfo.vehicleInfoDec.modelList.modelData[0].umc\r\n );\r\n if (isNullOrUndefined(model)) {\r\n this.setState({\r\n modelList: [...modelList],\r\n undocumentedModelList: undocumentedModelList,\r\n formData: {\r\n ...this.state.formData,\r\n brandId: brand.id\r\n }\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.setState({\r\n modelList: [...modelList],\r\n undocumentedModelList: undocumentedModelList,\r\n formData: {\r\n ...this.state.formData,\r\n brandId: brand.id,\r\n modelId: model.id\r\n }\r\n });\r\n }\r\n } else {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('INVALID_CAR_VIN_IDENTIFICATOR', \"Te rugăm să te asiguri că seria de șasiu introdusă are 17 caractere alfanumerice și nu conține spații sau literele 'O' sau 'I'!\"), {\r\n variant: 'warning',\r\n autoHideDuration: 6000\r\n });\r\n }\r\n }\r\n\r\n onBlur = async (id: string, value: any) => {\r\n if (id === 'root_plateNumber' && this.props.caseSettingsState.caseSettings!.workflow.isDgpciIntegration && value.length > 0){\r\n try {\r\n const vinRequest = await this.caseService.GetVinByPlateNumberRequest({PlateNumber:value, externalClient: false});\r\n\r\n if (vinRequest.success) {\r\n this.setState({\r\n formData: {\r\n ...this.state.formData,\r\n vin: vinRequest.vin\r\n },\r\n });\r\n this.onChangeVin(vinRequest.vin)\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } else {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_VIN', 'Eroare la obtinerea VIN'),\r\n {\r\n variant: 'error'\r\n }\r\n );\r\n }\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n if (id === 'root_vin') {\r\n this.onChangeVin(value);\r\n } \r\n };\r\n \r\n onFormChange = async (e: IChangeEvent) => {\r\n if (\r\n e.formData.brandId !== this.state.formData.brandId &&\r\n !isNullOrUndefined(e.formData.brandId)\r\n ) {\r\n const modelList = await this.caseService.GetCarModelsByBrand(e.formData.brandId);\r\n const undocumentedModelList = await this.caseService.GetCarUndocumentedModelsByBrand(e.formData.brandId);\r\n\r\n const formData = e.formData;\r\n if (modelList.length != 0) {\r\n formData.modelId = modelList[0].id;\r\n }\r\n\r\n this.setState({\r\n formData: e.formData,\r\n modelList: modelList,\r\n undocumentedModelList: undocumentedModelList\r\n });\r\n return;\r\n }\r\n\r\n if (e.formData.numberOfKilometers !== this.state.formData.numberOfKilometers) {\r\n const element = document.querySelector('input#root_numberOfKilometers');\r\n if (element !== null) {\r\n element.classList.add('number-of-kilometers-changed');\r\n }\r\n }\r\n\r\n this.setState({\r\n formData: e.formData\r\n });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ?
{this.renderFormData(this.props.workflowForm)}
: null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabCarDetailsFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabCarDetailsForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CaseEventHistory } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport Form from '@rjsf/material-ui';\r\nimport { ISubmitEvent, FormValidation } from '@rjsf/core';\r\nimport { MuiPickersUtilsProvider, DatePicker } from '@material-ui/pickers';\r\nimport { FormButton } from '../../helpers/forms/FormButton';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { EventDetailsFieldsCode, ReferentialCode } from '../../helpers/Constants';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { CNP } from 'romanian-personal-identity-code-validator';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { Organization } from '../../interfaces/Organization';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { isEmpty } from 'lodash';\r\n\r\ninterface ICaseDetailsCaseTabEventDetailsFormState {\r\n formData: CaseEventHistory;\r\n isLoading: boolean;\r\n personTypes: IReferential[];\r\n policyTypes: IReferential[];\r\n organizations: Organization[];\r\n hasRights: boolean;\r\n executing: boolean;\r\n}\r\nexport interface ExternalCaseDetailsCaseTabEventDetailsFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseTabEventDetailsFormProps = {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & typeof CaseSettingsActionCreators &\r\n ExternalCaseDetailsCaseTabEventDetailsFormProps &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabEventDetailsForm extends React.PureComponent<\r\n ICaseDetailsCaseTabEventDetailsFormProps,\r\n ICaseDetailsCaseTabEventDetailsFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n formData: {} as CaseEventHistory,\r\n isLoading: true,\r\n personTypes: [],\r\n policyTypes: [],\r\n organizations: [],\r\n hasRights: false,\r\n executing: false\r\n } as ICaseDetailsCaseTabEventDetailsFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n console.log('je2re');\r\n\r\n await this.loadData();\r\n }\r\n );\r\n }\r\n\r\n loadData = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n const refpersonType = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.PersonType\r\n );\r\n const refpolicyType = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.PolicyType\r\n );\r\n\r\n const [personTypeList, policyTypeLIst, organizationsList] = await Promise.all([\r\n this.appReferentialService.Get(refpersonType!.baseUrl),\r\n this.appReferentialService.Get(refpolicyType!.baseUrl),\r\n this.organizationService.GetOrganizationHierarchy(\r\n this.props.caseSettingsState.caseSettings?.workflow.organizationOwnerId || -1\r\n )\r\n ]);\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n if (isNullOrUndefined(this.props.caseSettingsState.case!.caseEvent)) {\r\n this.setState({\r\n formData: {\r\n id: 0,\r\n caseId: caseId\r\n } as CaseEventHistory,\r\n isLoading: false,\r\n personTypes: personTypeList,\r\n policyTypes: policyTypeLIst,\r\n organizations: organizationsList,\r\n hasRights: hasRights\r\n });\r\n\r\n return;\r\n }\r\n\r\n const caseEvent = this.props.caseSettingsState.case!.caseEvent;\r\n\r\n if (!isNullOrUndefined(caseEvent.eventDate)) {\r\n caseEvent.eventDate = moment(caseEvent.eventDate).format(moment.HTML5_FMT.DATE);\r\n }\r\n if (!isNullOrUndefined(caseEvent.noticeDate)) {\r\n caseEvent.noticeDate = moment(caseEvent.noticeDate).format(moment.HTML5_FMT.DATE);\r\n }\r\n if (!isNullOrUndefined(caseEvent.claimReviewDate)) {\r\n caseEvent.claimReviewDate = moment(caseEvent.claimReviewDate).format(moment.HTML5_FMT.DATE);\r\n }\r\n\r\n for (const [key, value] of Object.entries(caseEvent)) {\r\n if (isNullOrUndefined(value)) {\r\n caseEvent[key] = undefined;\r\n }\r\n }\r\n\r\n this.setState({\r\n formData: caseEvent,\r\n isLoading: false,\r\n personTypes: personTypeList,\r\n policyTypes: policyTypeLIst,\r\n organizations: organizationsList,\r\n hasRights: hasRights\r\n });\r\n };\r\n\r\n handleArraySchema = (schema: any) => {\r\n if (isNullOrUndefined(schema.properties)) {\r\n return schema;\r\n }\r\n\r\n for (const key of Object.keys(schema.properties)) {\r\n if (\r\n schema.properties[key].anyOf !== undefined &&\r\n schema.properties[key].anyOf[0].title === 'CAR_POLICY_TYPE_ENUM'\r\n ) {\r\n schema.properties[key].anyOf = this.state.policyTypes.map((item) => {\r\n return {\r\n type: 'number',\r\n title: item.displayName,\r\n enum: [item.id]\r\n };\r\n });\r\n }\r\n if (\r\n schema.properties[key].anyOf !== undefined &&\r\n schema.properties[key].anyOf[0].title === 'CAR_INSURED_PERSON_TYPE_ENUM'\r\n ) {\r\n schema.properties[key].anyOf = this.state.personTypes.map((item) => {\r\n return {\r\n type: 'number',\r\n title: item.displayName,\r\n enum: [item.id]\r\n };\r\n });\r\n }\r\n if (\r\n schema.properties[key].anyOf !== undefined &&\r\n schema.properties[key].anyOf[0].title === 'ORGANIZATIONS_ENUM'\r\n ) {\r\n schema.properties[key].anyOf = this.state.organizations.map((item) => {\r\n return {\r\n type: 'number',\r\n title: item.displayName,\r\n enum: [item.id]\r\n };\r\n });\r\n }\r\n }\r\n\r\n return schema;\r\n };\r\n\r\n validate = (formData: CaseEventHistory, errors: FormValidation, formCode: string) => {\r\n if (new Date(formData.noticeDate) > new Date()) {\r\n errors.noticeDate.addError(\r\n this.translatorService.Tranlate(\r\n 'FRM_EVENT_DATA_NOTICE_DATE_LESS_CURRENT_DATE_ERROR',\r\n 'Data avizarii trebuie sa fie mica sau egala cu data curenta!'\r\n )\r\n );\r\n }\r\n if (new Date(formData.noticeDate) > new Date(formData.claimReviewDate)) {\r\n errors.noticeDate.addError(\r\n this.translatorService.Tranlate(\r\n 'FRM_EVENT_DATA_NOTICE_DATE_LESS_CLAIM_REVIEW_DATE_ERROR',\r\n 'Data avizarii trebuie sa fie mica sau egala cu data constatarii!'\r\n )\r\n );\r\n }\r\n if (new Date(formData.eventDate) > new Date(formData.noticeDate)) {\r\n errors.eventDate.addError(\r\n this.translatorService.Tranlate(\r\n 'FRM_EVENT_DATA_EVENT_DATE_LESS_NOTICE_DATE_ERROR',\r\n 'Data evenimentului trebuie sa fie mai mica sau egala cu data avizarii!'\r\n )\r\n );\r\n }\r\n\r\n if (!isNullOrUndefined(formData.pin)) {\r\n const cnp = new CNP(formData.pin);\r\n\r\n if (!cnp.isValid()) {\r\n errors.pin.addError(\r\n this.translatorService.Tranlate('FRM_EVENT_DATA_PIN_ERROR', 'CNP invalid!')\r\n );\r\n }\r\n }\r\n\r\n return errors;\r\n };\r\n\r\n validateCaseEventDetails = (schema: any) => {\r\n if (schema.required.includes(EventDetailsFieldsCode.CASENUMBER)) {\r\n if (\r\n isNullOrUndefined(this.state.formData.caseNumber) ||\r\n isEmpty(this.state.formData.caseNumber)\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'WARNING_COPY_CASE',\r\n 'Va rog sa introduceti noul numar de dosar'\r\n ),\r\n {\r\n variant: 'warning'\r\n }\r\n );\r\n }\r\n }\r\n };\r\n\r\n onSubmit = async (e: ISubmitEvent, code: string) => {\r\n try {\r\n this.setState({ executing: true });\r\n\r\n let data = e.formData as CaseEventHistory;\r\n data.caseId = this.props.caseSettingsState.case!.id;\r\n data.insuredPersonType = null;\r\n if (isNullOrUndefined(data.id)) {\r\n data.id = 0;\r\n }\r\n\r\n if (data.id === 0) {\r\n data = await this.caseService.AddCaseEvent(data);\r\n } else {\r\n await this.caseService.UpdateCaseEvent(data);\r\n }\r\n if (this.props.workflowForm.form.hasActions) {\r\n await this.submitForm(data.caseId, this.props.workflowForm.id, null);\r\n }\r\n\r\n this.props.SetCaseEvent(data);\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (err) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n CustomDatePicker = (props: any) => {\r\n const { value, label, onChange, required } = props;\r\n const { language, dateFormat } = this.props.appState;\r\n return (\r\n \r\n onChange(date?.format('YYYY-MM-DD'))}\r\n required={required}\r\n />\r\n \r\n );\r\n };\r\n\r\n renderFormData = (form: WorkflowSectionStepForm) => {\r\n let jsonSchema = {};\r\n let jsonGUI = {};\r\n const widgets = {\r\n DateWidget: this.CustomDatePicker\r\n };\r\n try {\r\n jsonSchema = JSON.parse(form.json1);\r\n jsonGUI = JSON.parse(form.json2);\r\n } catch {\r\n console.log('json schema/gui error');\r\n }\r\n\r\n let schema = this.translatorService.TranslateSchema(jsonSchema);\r\n schema = this.handleArraySchema(jsonSchema);\r\n\r\n return (\r\n
\r\n \r\n this.validate(formData, errors, form.form.code)\r\n }\r\n liveValidate={true}\r\n showErrorList={false}\r\n formData={this.state.formData}\r\n onChange={(e) => this.setState({ formData: e.formData })}\r\n onSubmit={async (e: ISubmitEvent) => await this.onSubmit(e, form.form.code)}\r\n transformErrors={this.translatorService.TranslateErrors}\r\n widgets={widgets}\r\n >\r\n {\r\n this.validateCaseEventDetails(schema);\r\n }}\r\n >\r\n {FormButton.GetButtons(\r\n form.form.code,\r\n this.translatorService,\r\n this.state.hasRights,\r\n this.state.executing\r\n )}\r\n
\r\n \r\n
\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ?
{this.renderFormData(this.props.workflowForm)}
: null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabEventDetailsFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabEventDetailsForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n VehicleState\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Button, IconButton, Grid, Divider, FormHelperText } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport {\r\n WorkflowFormAction,\r\n WorkflowPartner,\r\n WorkflowSectionStep,\r\n WorkflowSectionStepForm\r\n} from '../../interfaces/Workflow';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { AcquisitionCaseRequest, CaseAttachment, CaseRequest, GenerateInvoiceRequest } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IWorkflowService } from '../../services/Interfaces/IWorkflowService';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport FileSaver from 'file-saver';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport {\r\n ReferentialCode,\r\n AttachmentTypeCode,\r\n VehicleStatusCodeEnum,\r\n WorkflowFormActionTypeCode,\r\n CaseTypeCode,\r\n aquisitionSteps,\r\n aquisitionWorkflowSectionSteps,\r\n smartBillInvoiceWorkflowSectionSteps\r\n} from '../../helpers/Constants';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport CaseDetailsCaseRequests from '../cases/CaseDetailsCaseRequests';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { Organization } from '../../interfaces/Organization';\r\nimport DropdownTreeSelect from 'react-dropdown-tree-select';\r\nimport 'react-dropdown-tree-select/dist/styles.css';\r\nimport clsx from 'clsx';\r\nimport { FormCode } from '../../helpers/forms/FormCode';\r\nimport { VehicleHelper } from '../../helpers/VehicleHelper';\r\n\r\ninterface OrganizationBranch {\r\n id: number;\r\n organizationId: number;\r\n organizationName: string;\r\n organizationAddress: string;\r\n children: OrganizationBranch[];\r\n parentId: number | null;\r\n path: string | null;\r\n label: string;\r\n checked: boolean | null;\r\n organization?: Organization;\r\n}\r\n\r\ninterface ExtendedWorkflowPartner extends WorkflowPartner {\r\n organizationBranch?: OrganizationBranch;\r\n}\r\n\r\ninterface ICaseDetailsCaseTabBackToServiceFormState {\r\n backToServiceFormData: CaseRequest;\r\n organizationBranches: OrganizationBranch[];\r\n organizations: ExtendedWorkflowPartner[];\r\n selectedOrganization: ExtendedWorkflowPartner | null;\r\n users: AppUser[];\r\n selectedUser: AppUser | null;\r\n attachments: CaseAttachment[];\r\n isLoading: boolean;\r\n isLoading2: boolean;\r\n attachType: IReferential;\r\n isOrganizationsDisabled: boolean;\r\n isUsersDisabled: boolean;\r\n hasRights: boolean;\r\n isUserHidden: boolean;\r\n executing: boolean;\r\n formSubmitted: boolean;\r\n userRoleId: number | null;\r\n wfTransitionStepAction: WorkflowFormAction;\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseTabBackToServiceFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseTabBackToServiceFormProps =\r\n ExternalCaseDetailsCaseTabBackToServiceFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n } & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabBackToServiceForm extends React.PureComponent<\r\n ICaseDetailsCaseTabBackToServiceFormProps,\r\n ICaseDetailsCaseTabBackToServiceFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private workflowService!: IWorkflowService;\r\n private appUserService!: IAppUserService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialServie!: IReferentialService;\r\n private vehicleService!: IVehicleService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n backToServiceFormData: {} as CaseRequest,\r\n organizationBranches: [],\r\n organizations: [],\r\n selectedOrganization: null,\r\n users: [],\r\n selectedUser: null,\r\n attachments: [],\r\n isLoading: false,\r\n isLoading2: false,\r\n attachType: {} as IReferential,\r\n isOrganizationsDisabled: false,\r\n isUsersDisabled: false,\r\n hasRights: false,\r\n isUserHidden: false,\r\n executing: false,\r\n userRoleId: null,\r\n formSubmitted: false,\r\n wfTransitionStepAction: {} as WorkflowFormAction\r\n } as ICaseDetailsCaseTabBackToServiceFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseBackToServiceForm();\r\n }\r\n );\r\n }\r\n\r\n assignObjectPaths = (obj: any, stack: any) => {\r\n Object.keys(obj).forEach((k) => {\r\n const node = obj[k];\r\n if (node && typeof node === 'object' && !Array.isArray(node)) {\r\n node.path = stack ? `${stack}.${k}` : k;\r\n this.assignObjectPaths(node, node.path);\r\n }\r\n });\r\n };\r\n\r\n findTopParent = (id: number, organizationBranches: OrganizationBranch[]): any => {\r\n let ob = organizationBranches.find((acc) => acc.id === id);\r\n if (!ob) {\r\n return;\r\n }\r\n if (ob.parentId !== null) {\r\n ob = this.findTopParent(ob.parentId, organizationBranches);\r\n }\r\n return ob;\r\n };\r\n\r\n loadCaseBackToServiceForm = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseStatusId = this.props.caseSettingsState.case?.caseStatus?.caseStatusId;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n const caseRequest = {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n text: '',\r\n subject: '',\r\n to: '',\r\n userIdTo: '',\r\n organizationId: null,\r\n attachments: [] as CaseAttachment[],\r\n caseSectionStepFormId: this.props.workflowForm.id\r\n } as CaseRequest;\r\n\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.AttachmentType\r\n );\r\n\r\n const wfStepActions = await this.workflowService.GetWorkflowSectionStepFormActions(\r\n this.props.workflowForm.id\r\n );\r\n const caseOrganizationTypeId = wfStepActions.find(\r\n (item) => item.actionType?.code === WorkflowFormActionTypeCode.CASE_ALLOCATION\r\n )?.workflowPartnerType?.organizationTypeId;\r\n\r\n const wfTransitionStepAction =\r\n wfStepActions.find(\r\n (item) =>\r\n item.actionType?.code === WorkflowFormActionTypeCode.STATUS_TRANSITION &&\r\n caseStatusId === item.fromStatusId\r\n ) || ({} as WorkflowFormAction);\r\n\r\n const workflowPartners = await this.workflowService.GetUserWorkflowPartners(\r\n this.props.caseSettingsState.case!.caseWorkflow.workflowId\r\n );\r\n\r\n const workflowPartnerIds = workflowPartners.map((x) => x.partnerId);\r\n\r\n const partnerOrganizations = await this.organizationService.GetUserOrganizationsByIds(\r\n workflowPartnerIds\r\n );\r\n\r\n const [attachmentTypes] = await Promise.all([this.appReferentialServie.Get(ref!.baseUrl)]);\r\n workflowPartners.forEach((wp) => {\r\n const partner = partnerOrganizations.find((item) => item?.id === wp.partnerId);\r\n wp.partner = isNullOrUndefined(partner) ? null : partner;\r\n });\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n let organizationBranches = [] as OrganizationBranch[];\r\n let partners = workflowPartners.map((x) => x.partner);\r\n if (caseOrganizationTypeId) {\r\n partners = partners.filter(\r\n (partner) => partner?.organizationTypeId === caseOrganizationTypeId\r\n );\r\n }\r\n for (const x of partners) {\r\n organizationBranches.push({\r\n id: x!.id,\r\n organizationId: x!.id,\r\n organizationName: x!.name,\r\n organizationAddress: x!.address,\r\n children: [],\r\n parentId: x!.parentId,\r\n path: null,\r\n label: x?.name + (x?.address ? ' ' + x?.address : ''),\r\n checked: false\r\n });\r\n }\r\n\r\n const parentIds = workflowPartners.map((x) => x.partnerId);\r\n\r\n const organizationHierarchy = await this.organizationService.GetOrganizationDescendents(\r\n parentIds\r\n );\r\n\r\n const descendants =\r\n organizationHierarchy.map((x) => {\r\n return {\r\n id: x.id,\r\n organizationId: x.id,\r\n organizationName: x.name,\r\n organizationAddress: x.address,\r\n children: [],\r\n parentId: x.parentId,\r\n path: null,\r\n label: x.name + (x.address ? ' ' + x.address : ''),\r\n checked: false\r\n } as OrganizationBranch;\r\n }) || [];\r\n\r\n descendants.forEach((x) => {\r\n organizationBranches.push(x);\r\n });\r\n\r\n const extendedWorkflowPartners: ExtendedWorkflowPartner[] = [];\r\n\r\n for (const ob of organizationBranches) {\r\n const parent = this.findTopParent(ob.id, organizationBranches);\r\n const parentPartner = workflowPartners.find((x) => x.partnerId === parent.id);\r\n\r\n extendedWorkflowPartners.push({\r\n workflowId: parentPartner!.workflowId,\r\n partnerId: ob.organizationId,\r\n partner: ob.organization || null,\r\n isActive: parentPartner!.isActive,\r\n id: parentPartner!.id,\r\n organizationBranch: ob\r\n });\r\n }\r\n\r\n const arrMap = organizationBranches.reduce((acc: any, el: any, i) => {\r\n acc[el.id] = i;\r\n return acc;\r\n }, {});\r\n\r\n const roots = [] as OrganizationBranch[];\r\n\r\n // Push each element to parent's children array\r\n organizationBranches.forEach((el) => {\r\n if (el.parentId === null || arrMap[el.parentId] == null) {\r\n roots.push(el);\r\n } else {\r\n organizationBranches[arrMap[el.parentId]].children.push(el);\r\n }\r\n });\r\n\r\n organizationBranches = roots;\r\n this.assignObjectPaths(organizationBranches, '');\r\n\r\n this.setState(\r\n {\r\n backToServiceFormData: caseRequest,\r\n organizationBranches,\r\n organizations: extendedWorkflowPartners,\r\n isLoading: false,\r\n attachType: attachmentTypes.find((item) => item.code === AttachmentTypeCode.OTHER)!,\r\n hasRights: hasRights,\r\n wfTransitionStepAction\r\n },\r\n await this.setCaseAllocation\r\n );\r\n };\r\n\r\n onDropDownChange = (currentNode: any, selectedNodes: any) => {\r\n // react-dropdown-tree-select doesn't have an intrinsic mechanism for keeping track of selected items, only provides what is selected\r\n // So we have to manually check/uncheck the leaves from this tree used by this component\r\n let newSelectionOrganizationBranch: OrganizationBranch | null = null;\r\n if (this.state.selectedOrganization) {\r\n const oldSelectionOrganizationBranch = this.findRecursive(\r\n this.state.organizationBranches,\r\n this.state.selectedOrganization.organizationBranch!.organizationId\r\n );\r\n if (oldSelectionOrganizationBranch) {\r\n oldSelectionOrganizationBranch.checked = false;\r\n }\r\n }\r\n\r\n if (selectedNodes.length == 1) {\r\n const newPartialSelectionOrganizationBranch =\r\n this.findRecursive(\r\n this.state.organizationBranches,\r\n (selectedNodes[0] as OrganizationBranch)?.organizationId\r\n ) || null;\r\n\r\n if (newPartialSelectionOrganizationBranch) {\r\n newPartialSelectionOrganizationBranch.checked = true;\r\n newSelectionOrganizationBranch = newPartialSelectionOrganizationBranch;\r\n }\r\n }\r\n\r\n let selectedWorkflowPartner: ExtendedWorkflowPartner | undefined = undefined;\r\n\r\n if (newSelectionOrganizationBranch) {\r\n const parent = this.findTopParent(\r\n newSelectionOrganizationBranch.id,\r\n this.state.organizations.map((o) => o.organizationBranch!)\r\n );\r\n\r\n const parentPartner = this.state.organizations.find((x) => x.partnerId === parent.id);\r\n\r\n selectedWorkflowPartner = {\r\n workflowId: parentPartner!.workflowId,\r\n partnerId: newSelectionOrganizationBranch.id,\r\n partner: newSelectionOrganizationBranch.organization || null,\r\n isActive: parentPartner!.isActive,\r\n id: parentPartner!.id,\r\n organizationBranch: newSelectionOrganizationBranch\r\n };\r\n }\r\n\r\n this.setState(\r\n {\r\n ...this.state,\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n //@ts-ignore\r\n selectedOrganization: selectedWorkflowPartner || null,\r\n selectedUser: null,\r\n users: [],\r\n isLoading2: true\r\n },\r\n async () => {\r\n await this.loadUsers(\r\n !selectedWorkflowPartner ? null : selectedWorkflowPartner.partnerId,\r\n this.state.userRoleId\r\n );\r\n }\r\n );\r\n };\r\n\r\n findRecursive = (\r\n arr: OrganizationBranch[],\r\n organizationId: number\r\n ): OrganizationBranch | null => {\r\n let result: OrganizationBranch | null = null;\r\n for (const entry in arr) {\r\n if (arr[entry].organizationId == organizationId) {\r\n result = arr[entry];\r\n break;\r\n }\r\n if (arr[entry].children?.length) {\r\n const partialResult = this.findRecursive(arr[entry].children, organizationId);\r\n if (partialResult != null) {\r\n result = partialResult;\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n setCaseAllocation = async () => {\r\n const allocationResult = await FormHelpers.ParseAllocations(\r\n this.props.workflowForm.workflowFormActions,\r\n this.state.organizations,\r\n this.appUserService,\r\n this.props.appState.appUser!\r\n );\r\n if (isNullOrUndefined(allocationResult)) {\r\n const partner = this.state.organizations.find(\r\n (item) => item.partnerId === this.props.caseSettingsState.case!.caseStatus.assignedTo!.hoId\r\n );\r\n\r\n if (partner) {\r\n const oldSelectionOrganizationBranch = this.findRecursive(\r\n this.state.organizationBranches,\r\n partner.organizationBranch!.id\r\n );\r\n\r\n if (oldSelectionOrganizationBranch) {\r\n oldSelectionOrganizationBranch.checked = true;\r\n }\r\n }\r\n\r\n this.setState(\r\n {\r\n selectedOrganization: isNullOrUndefined(partner) ? null : partner,\r\n selectedUser: this.props.caseSettingsState.case!.caseStatus.assignedTo,\r\n organizations: this.state.organizations,\r\n isUsersDisabled: false,\r\n isOrganizationsDisabled: false\r\n },\r\n async () =>\r\n await this.loadUsers(isNullOrUndefined(partner) ? null : partner.partnerId, null)\r\n );\r\n return;\r\n }\r\n if (allocationResult.isLastUser || allocationResult.caseStatusId != null) {\r\n this.setState({ isUserHidden: true });\r\n return;\r\n }\r\n\r\n if (allocationResult.partner) {\r\n const oldSelectionOrganizationBranch = this.findRecursive(\r\n this.state.organizationBranches,\r\n allocationResult.partner.organizationBranch!.id\r\n );\r\n\r\n if (oldSelectionOrganizationBranch) {\r\n oldSelectionOrganizationBranch.checked = true;\r\n }\r\n }\r\n\r\n this.setState(\r\n {\r\n selectedOrganization: allocationResult.partner,\r\n selectedUser: allocationResult.user,\r\n // organizations: allocationResult.partners,\r\n organizationBranches: allocationResult.partner?.organizationBranch\r\n ? [allocationResult.partner.organizationBranch]\r\n : this.state.organizationBranches,\r\n isUsersDisabled: !isNullOrUndefined(allocationResult.user),\r\n // isOrganizationsDisabled: !isNullOrUndefined(allocationResult.partner),\r\n isOrganizationsDisabled: !isNullOrUndefined(allocationResult.user),\r\n userRoleId: allocationResult.roleId\r\n },\r\n async () => {\r\n if (allocationResult.partner === null) {\r\n return;\r\n }\r\n await this.loadUsers(allocationResult.partner.partnerId, allocationResult.roleId);\r\n }\r\n );\r\n };\r\n\r\n loadUsers = async (organizationId: number | null, roleId: number | null) => {\r\n if (organizationId === null) {\r\n this.setState({\r\n isLoading2: false\r\n });\r\n } else {\r\n let orgIds = '';\r\n orgIds = `${organizationId}`;\r\n\r\n const users = await this.appUserService.GetUserAppUsers('', orgIds);\r\n\r\n this.setState({\r\n users: users.users.filter(\r\n (user) =>\r\n (user.organization!.hoId === organizationId ||\r\n user.organizationId === organizationId) &&\r\n ((roleId !== null && user.roleId === roleId) || roleId === null)\r\n ),\r\n isLoading2: false\r\n });\r\n }\r\n };\r\n\r\n handleUploadAttachment = async (e: React.ChangeEvent) => {\r\n try {\r\n const attachments = [...this.state.attachments];\r\n if (isNullOrUndefined(e.target.files)) {\r\n return;\r\n }\r\n for (let i = 0; i < e.target.files!.length; i++) {\r\n attachments.push({\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n attachmentTypeId: this.state.attachType.id,\r\n attachmentType: this.state.attachType,\r\n file: e.target.files![i],\r\n fileName: e.target.files![i].name,\r\n uploadDate: new Date(),\r\n carPhotos: false,\r\n originalFileName: e.target.files![i].name,\r\n caseRequestId: null,\r\n paymentId: null,\r\n serviceAppointmentId: null,\r\n caseClientId: null,\r\n isSelection: false\r\n });\r\n }\r\n\r\n this.setState({\r\n attachments: attachments\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleDeleteAttachment = async (id: number, fileName: string) => {\r\n try {\r\n const attachments = [...this.state.attachments];\r\n const index = attachments.findIndex((item) => item.id === id);\r\n attachments.splice(index, 1);\r\n\r\n this.setState({\r\n attachments: attachments\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n downloadFile = async (fileName: string, origFileName: string) => {\r\n const fileBlob = await this.caseService.GetCaseAttachment(fileName);\r\n FileSaver.saveAs(fileBlob, origFileName);\r\n };\r\n\r\n renderAttachmentBox = () => {\r\n return (\r\n \r\n \r\n {this.state.attachments.length !== 0\r\n ? this.state.attachments.map((attach, index) => {\r\n return (\r\n
\r\n
\r\n this.downloadFile(attach.fileName, attach.originalFileName)}\r\n >\r\n {attach.originalFileName}\r\n \r\n
\r\n
\r\n this.handleDeleteAttachment(attach.id, attach.fileName)}\r\n disabled={!this.state.hasRights}\r\n >\r\n \r\n \r\n
\r\n
\r\n );\r\n })\r\n : null}\r\n
\r\n \r\n {\r\n return this.handleUploadAttachment(e);\r\n }}\r\n type=\"file\"\r\n />\r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n sendEmail = async () => {\r\n try {\r\n this.setState({ executing: true });\r\n //Dosar Evaluare\r\n const step = this.getWorkflowSectionStep(this.props.workflowForm.workflowSectionStepId);\r\n if (this.props.caseSettingsState.caseSettings!.workflow.isEvaluationWorkflow &&\r\n this.props.caseSettingsState?.case?.caseType?.code === CaseTypeCode.AQUISITION &&\r\n aquisitionWorkflowSectionSteps.includes(step?.workflowStep?.code ?? \"\") &&\r\n aquisitionSteps.includes(this.props.workflowForm.displayName.toUpperCase())\r\n ) {\r\n console.log('Dosar Evaluare');\r\n const vin = VehicleHelper.GetVIN(\r\n this.props.caseSettingsState.case,\r\n this.props.vehicleState.vehicle\r\n );\r\n const request = {\r\n vin: vin\r\n } as AcquisitionCaseRequest;\r\n const vinAquisitionCases = (await this.caseService.GetAcquisitionCases(request)).filter(x => x.id !== this.props.caseSettingsState.case!.id);\r\n if (vinAquisitionCases.length > 0) {\r\n this.props.enqueueSnackbar(\r\n (this.translatorService.Tranlate(\r\n 'ALREADY_AQUISITION_CASE',\r\n 'Exista deja un dosar de achizitie deschis, va rugam sa verificati!'\r\n ) + '\\n' +\r\n (vinAquisitionCases.length == 1 ? this.translatorService.Tranlate('CASES_ID_LABEL', 'Id-ul dosarului este: ') : this.translatorService.Tranlate('CASES_IDS', 'Id-urile dosarelor sunt: ')) +\r\n vinAquisitionCases.map((item) => item.id).join(', ')),\r\n {\r\n variant: 'warning',\r\n style: { whiteSpace: 'pre-line' },\r\n autoHideDuration: 6000\r\n }\r\n );\r\n \r\n this.setState({ executing: false });\r\n return;\r\n }\r\n }\r\n\r\n let request = this.state.backToServiceFormData;\r\n const { toWorkflowId, toStatusId } = this.state.wfTransitionStepAction;\r\n const userId = this.props.appState?.appUser?.id || this.state.selectedUser?.id;\r\n\r\n if (isNullOrUndefined(request)) {\r\n return;\r\n }\r\n\r\n this.setState({ executing: true, formSubmitted: true });\r\n\r\n request!.id = 0;\r\n request!.attachments = this.state.attachments;\r\n if (!this.state.isUserHidden) {\r\n request.userIdTo = this.state.selectedUser!.id!;\r\n request.organizationId = this.state.selectedOrganization!.partnerId;\r\n }\r\n\r\n if (toWorkflowId && toStatusId) {\r\n await this.caseService.ChangeCaseWorkflow(\r\n toWorkflowId,\r\n request.caseId,\r\n userId!,\r\n toStatusId\r\n );\r\n } else {\r\n request = await this.caseService.AddCaseRequest(request);\r\n }\r\n\r\n await this.submitForm(request.caseId, request.caseSectionStepFormId, this.state.selectedUser);\r\n\r\n this.setState(\r\n {\r\n backToServiceFormData: {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n text: '',\r\n subject: '',\r\n to: '',\r\n userId: '',\r\n organizationId: null,\r\n attachments: [] as CaseAttachment[],\r\n caseSectionStepFormId: this.props.workflowForm.id\r\n } as CaseRequest,\r\n formSubmitted: false,\r\n attachments: [],\r\n selectedUser: null,\r\n selectedOrganization: null\r\n },\r\n this.setCaseAllocation\r\n );\r\n if (toWorkflowId && toStatusId) {\r\n this.props.SetCaseSettings(request.caseId);\r\n }\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n getWorkflowStep = (code: string): IReferential | null => {\r\n const sections = this.props.caseSettingsState.caseSettings!.workflow.workflowSections!;\r\n for (const section of sections) {\r\n for (const step of section.workflowSectionSteps) {\r\n if (!isNullOrUndefined(step.workflowStep) && step.workflowStep!.code == code) {\r\n return step.workflowStep;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n getWorkflowSectionStep = (workflowSectionStepId: number): WorkflowSectionStep | null => {\r\n const sections = this.props.caseSettingsState.caseSettings!.workflow.workflowSections!;\r\n for (const section of sections) {\r\n for (const step of section.workflowSectionSteps) {\r\n if (step.id == workflowSectionStepId) {\r\n return step;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appuser: AppUser | null) => {\r\n const prevCaseStatus = this.props.caseSettingsState.case!.caseStatus;\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appuser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n console.log('prevCaseStatus', prevCaseStatus);\r\n console.log('newStatus', newStatus);\r\n\r\n const vehicleId = this.props.caseSettingsState.case?.vehicleId;\r\n\r\n if (newStatus.caseStatus?.code === 'OF_REFUZ') {\r\n if (vehicleId) {\r\n await this.vehicleService.ChangeVehicleStatus({\r\n vehicleId,\r\n statusId: VehicleStatusCodeEnum.AcquisitionRefused,\r\n comment: ''\r\n });\r\n }\r\n }\r\n\r\n if (newStatus.caseStatus?.code === 'CLOSED') {\r\n if (vehicleId) {\r\n await this.vehicleService.ChangeVehicleStatus({\r\n vehicleId,\r\n statusId: VehicleStatusCodeEnum.Sold,\r\n comment: ''\r\n });\r\n }\r\n const workflowStep = this.getWorkflowStep(FormCode.CASE_VEHICLE_PB_ANUNT);\r\n if (workflowStep && vehicleId) {\r\n await this.vehicleService.DeleteAllAdvertWhenCaseStatusBecameClosed(caseId, vehicleId);\r\n }\r\n }\r\n\r\n if (prevCaseStatus.caseStatus?.code != newStatus.caseStatus?.code) {\r\n if (prevCaseStatus.caseStatus?.code === 'OF_REFUZ') {\r\n if (vehicleId) {\r\n await this.vehicleService.ChangeVehicleStatus({\r\n vehicleId,\r\n statusId: VehicleStatusCodeEnum.Aquisition,\r\n comment: ''\r\n });\r\n }\r\n }\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n if (appuser !== null) {\r\n this.props.AddPartner(appuser!.hoId === null ? appuser!.organizationId : appuser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n handleOrganizationChange = (newValue: WorkflowPartner | null) => {\r\n this.setState(\r\n {\r\n selectedOrganization: newValue,\r\n selectedUser: null,\r\n users: [],\r\n isLoading2: true\r\n },\r\n async () => {\r\n await this.loadUsers(newValue === null ? null : newValue.partnerId, this.state.userRoleId);\r\n }\r\n );\r\n };\r\n\r\n handleUserChange = (newValue: AppUser | null) => {\r\n this.setState({ selectedUser: newValue });\r\n };\r\n\r\n rendeBackToServiceForm = () => {\r\n return isNullOrUndefined(this.state.backToServiceFormData) ? null : (\r\n {\r\n this.sendEmail();\r\n }}\r\n >\r\n
\r\n ) => {\r\n this.setState({\r\n backToServiceFormData: {\r\n ...this.state.backToServiceFormData,\r\n text: e.target.value\r\n }\r\n });\r\n }}\r\n variant=\"outlined\"\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n {this.renderAttachmentBox()}\r\n {this.renderAssignementForm()}\r\n
\r\n\r\n this.setState({ formSubmitted: true })}\r\n disabled={!this.state.hasRights || this.state.executing}\r\n >\r\n {this.translatorService.Tranlate('CASE_COMMENT_SEND', 'Trimite')}\r\n \r\n \r\n );\r\n };\r\n\r\n renderAssignementForm = () => {\r\n if (this.state.isUserHidden) {\r\n return null;\r\n }\r\n\r\n const label = this.translatorService.Tranlate(\r\n 'CASE_BACK_TO_SERVICE_FORM_ORGANIZATION_LABEL',\r\n 'Organizatie'\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n {this.state.formSubmitted && !this.state.selectedOrganization && (\r\n \r\n {this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')}\r\n \r\n )}\r\n
\r\n \r\n
\r\n {!this.state.isLoading2 ? (\r\n this.handleUserChange(newValue)}\r\n getOptionLabel={(option: AppUser) => option.userName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n ) : null}\r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialServie = (this.context as AppContext).referentialService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
{this.rendeBackToServiceForm()}
\r\n ) : null}\r\n \r\n {this.state.executing ? null : (\r\n \r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabBackToServiceFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabBackToServiceForm as any));\r\n","export enum OfferType {\r\n PURCHASE = 1,\r\n SALE = 2\r\n}\r\n","export enum PersonType {\r\n PF = 1,\r\n PJ = 2\r\n}\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Button,\r\n IconButton,\r\n Grid,\r\n Divider,\r\n Checkbox,\r\n FormControlLabel,\r\n Switch\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CaseRequest, CaseAttachment, ClientOffer } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport FileSaver from 'file-saver';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport {\r\n ReferentialCode,\r\n AttachmentTypeCode,\r\n OfferTypeCode,\r\n Constants,\r\n WorkflowFormActionTypeCode\r\n} from '../../helpers/Constants';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport { WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport CaseDetailsCaseRequests from '../cases/CaseDetailsCaseRequests';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\r\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport { convertToRaw, EditorState, ContentState } from 'draft-js';\r\nimport { Editor } from 'react-draft-wysiwyg';\r\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\r\nimport draftToHtml from 'draftjs-to-html';\r\nimport htmlToDraft from 'html-to-draftjs';\r\nimport { OfferType } from '../../enums/OfferType';\r\nimport isNil from 'lodash/isNil';\r\nimport orderBy from 'lodash/orderBy';\r\nimport { PersonType } from '../../enums/PersonType';\r\nimport moment from 'moment';\r\n\r\nconst icon = ;\r\nconst checkedIcon = ;\r\n\r\ninterface ICaseDetailsCaseTabOtherServiceFormState {\r\n otherServiceFormData: CaseRequest;\r\n attachments: CaseAttachment[];\r\n caseAttachments: CaseAttachment[];\r\n isLoading: boolean;\r\n attachType: IReferential;\r\n hasRights: boolean;\r\n executing: boolean;\r\n to: string[];\r\n selectedCaseAttachments: CaseAttachment[];\r\n clientOffers: ClientOffer[];\r\n selectedClientOffers: ClientOffer | null;\r\n hasInvoice: boolean | undefined;\r\n hasOffer: boolean | undefined;\r\n editorState: EditorState;\r\n hasEmailTemplate: boolean;\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseTabOtherServiceFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseTabOtherServiceFormProps = {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & typeof CaseSettingsActionCreators &\r\n ExternalCaseDetailsCaseTabOtherServiceFormProps &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabOtherServiceForm extends React.PureComponent<\r\n ICaseDetailsCaseTabOtherServiceFormProps,\r\n ICaseDetailsCaseTabOtherServiceFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialServie!: IReferentialService;\r\n private vehicleService!: IVehicleService;\r\n static contextType = ApplicationContext;\r\n state = {\r\n otherServiceFormData: {},\r\n caseAttachments: [] as CaseAttachment[],\r\n isLoading: true,\r\n hasRights: false,\r\n executing: false,\r\n to: [] as string[],\r\n selectedCaseAttachments: [] as CaseAttachment[],\r\n clientOffers: [] as ClientOffer[],\r\n selectedClientOffers: null,\r\n hasInvoice: undefined,\r\n hasOffer: undefined,\r\n editorState: EditorState.createEmpty()\r\n } as ICaseDetailsCaseTabOtherServiceFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseOtherServiceForm();\r\n }\r\n );\r\n }\r\n\r\n stringToArray = (input: string): string[] => {\r\n if (input === null || input === undefined || input === '') {\r\n return [];\r\n }\r\n\r\n return input.split(';');\r\n };\r\n\r\n arrayToString = (input: string[]): string => {\r\n if (input === null || input === undefined) {\r\n return '';\r\n }\r\n\r\n return input.join(';');\r\n };\r\n\r\n isSellOrBuyOffer = (): string | null => {\r\n const workflowSteps = this.props.caseSettingsState.caseSettings?.workflow.workflowSections;\r\n if (!isNullOrUndefined(workflowSteps)) {\r\n const code17Steps = workflowSteps?.find((wfs) => {\r\n const codeF17 = wfs.workflowSectionSteps.find((x) =>\r\n x.workflowSectionStepForms.find((wfssf) => wfssf.form.code === 'F17')\r\n );\r\n return !isNullOrUndefined(codeF17);\r\n });\r\n if (!isNullOrUndefined(code17Steps)) {\r\n return OfferTypeCode.SELL;\r\n }\r\n return OfferTypeCode.BUY;\r\n }\r\n return null;\r\n };\r\n\r\n handleSwitchValue = (fieldName: string) => (e: any) => {\r\n this.setState({\r\n ...this.state,\r\n [fieldName]: e.currentTarget.checked\r\n });\r\n };\r\n\r\n renderEmailEditor = () => {\r\n return (\r\n \r\n this.setState({\r\n editorState,\r\n otherServiceFormData: {\r\n ...this.state.otherServiceFormData,\r\n text: draftToHtml(convertToRaw(editorState.getCurrentContent()))\r\n }\r\n })\r\n }\r\n toolbarHidden={true}\r\n placeholder={this.translatorService.Tranlate(\r\n 'CASE_OTHER_SERVICE_FORM_WRITE_MESSAGE_PLACEHOLDER',\r\n 'Write your message...'\r\n )}\r\n />\r\n );\r\n };\r\n\r\n loadCaseOtherServiceForm = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.AttachmentType\r\n );\r\n const [attachmentTypes] = await Promise.all([this.appReferentialServie.Get(ref!.baseUrl)]);\r\n\r\n const [caseAttachments] = await Promise.all([\r\n this.caseService.GetCaseAttachments(\r\n caseId,\r\n attachmentTypes.filter((at) => at.isActive).map((item) => item.code!)\r\n )\r\n ]);\r\n\r\n let clientOffers = [] as ClientOffer[];\r\n if (this.props.caseSettingsState.case!.vehicleId) {\r\n clientOffers = await this.caseService.GetClientOffers(\r\n caseId,\r\n this.props.caseSettingsState.case!.vehicleId!\r\n );\r\n\r\n await Promise.all(\r\n clientOffers.map(async (co) => {\r\n const result = await this.vehicleService.GetVehicle(co.vehicleId);\r\n co.vehicle = result;\r\n })\r\n );\r\n clientOffers = clientOffers.filter((x) => !isNullOrUndefined(x.vehicle));\r\n // grab only the latest offer\r\n clientOffers = [\r\n orderBy(clientOffers, (offer: any) => moment(offer.dateModification), ['desc'])?.[0]\r\n ];\r\n }\r\n //await clientOffers.forEach(async (x) => { x.vehicle = await this.vehicleService.GetVehicle(x.vehicleId) });\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n const template = this.props.workflowForm.workflowFormActions.find((a) => {\r\n return (\r\n a.actionType?.code === WorkflowFormActionTypeCode.SEND_MAIL && a.reuseEmailTemplate === true\r\n );\r\n });\r\n\r\n let templateSubject = undefined;\r\n let templateBody = undefined;\r\n let templateBodyText = undefined;\r\n\r\n if (template) {\r\n const response = await this.caseService.BuildFilledInEmailTemplate(\r\n caseId,\r\n this.props.workflowForm.id,\r\n this.props.appState.appUser\r\n );\r\n\r\n if (response && response.length) {\r\n templateSubject = response[0];\r\n templateBodyText = response[1];\r\n const blocksFromHTML = htmlToDraft(templateBodyText);\r\n templateBody = ContentState.createFromBlockArray(\r\n blocksFromHTML.contentBlocks,\r\n blocksFromHTML.entityMap\r\n );\r\n }\r\n }\r\n\r\n const caseRequest = {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n text: template ? templateBodyText : '',\r\n subject: template ? templateSubject : '',\r\n to: '',\r\n attachments: [] as CaseAttachment[],\r\n caseSectionStepFormId: this.props.workflowForm.id,\r\n cc: this.props.appState.appUser!.email\r\n } as CaseRequest;\r\n\r\n this.setState({\r\n hasEmailTemplate: templateBody ? true : false,\r\n editorState: templateBody\r\n ? EditorState.createWithContent(templateBody)\r\n : EditorState.createEmpty(),\r\n otherServiceFormData: caseRequest,\r\n attachments: caseRequest.attachments,\r\n isLoading: false,\r\n attachType: attachmentTypes.find((item) => item.code === AttachmentTypeCode.OTHER)!,\r\n hasRights: hasRights,\r\n caseAttachments: caseAttachments.filter((ca) => isNullOrUndefined(ca.caseRequestId)),\r\n clientOffers: clientOffers\r\n });\r\n };\r\n\r\n handleSelectedClientOffer = (\r\n e: React.ChangeEvent,\r\n newValue: ClientOffer | null\r\n ) => {\r\n let hasInvoice = undefined;\r\n if (this.isSellOrBuyOffer() == OfferTypeCode.SELL) {\r\n hasInvoice = false;\r\n }\r\n\r\n const offerType =\r\n newValue?.offerTypeId === OfferType.SALE\r\n ? this.translatorService.Tranlate('CASE_OTHER_SERVICE_FORM_SELLING_OFFER', 'Oferta Vanzare')\r\n : this.translatorService.Tranlate(\r\n 'CASE_OTHER_SERVICE_FORM_PURCHASE_OFFER',\r\n 'Oferta Vanzare'\r\n );\r\n\r\n this.setState({\r\n hasOffer: false,\r\n hasInvoice: hasInvoice,\r\n selectedClientOffers: newValue,\r\n otherServiceFormData: {\r\n ...this.state.otherServiceFormData,\r\n subject: newValue\r\n ? `${offerType} ${newValue.id} ${newValue.vehicle?.make?.displayName} ${newValue.vehicle?.model?.displayName} ${newValue.vehicle?.version}`\r\n : ''\r\n } as CaseRequest\r\n });\r\n };\r\n\r\n handleUploadAttachment = async (e: React.ChangeEvent) => {\r\n try {\r\n const attachments = [...this.state.attachments];\r\n\r\n if (isNullOrUndefined(e.target.files)) {\r\n return;\r\n }\r\n for (let i = 0; i < e.target.files!.length; i++) {\r\n attachments.push({\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n attachmentTypeId: this.state.attachType.id,\r\n attachmentType: this.state.attachType,\r\n file: e.target.files![i],\r\n fileName: e.target.files![i].name,\r\n uploadDate: new Date(),\r\n carPhotos: false,\r\n originalFileName: e.target.files![i].name,\r\n caseRequestId: null,\r\n paymentId: null,\r\n serviceAppointmentId: null,\r\n caseClientId: null,\r\n isSelection: false\r\n });\r\n }\r\n\r\n this.setState({\r\n attachments: attachments\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleDeleteAttachment = async (id: number, fileName: string) => {\r\n try {\r\n const attachments = [...this.state.attachments];\r\n const index = attachments.findIndex((item) => item.id === id);\r\n attachments.splice(index, 1);\r\n\r\n this.setState({\r\n attachments: attachments\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n downloadFile = async (fileName: string, origFileName: string) => {\r\n const fileBlob = await this.caseService.GetCaseAttachment(fileName);\r\n FileSaver.saveAs(fileBlob, origFileName);\r\n };\r\n renderGenerateDocsButtons = () => {\r\n if (this.state.selectedClientOffers) {\r\n if (this.isSellOrBuyOffer() == OfferTypeCode.SELL)\r\n return (\r\n \r\n \r\n \r\n }\r\n label={this.translatorService.Tranlate(\r\n 'CASE_DETAILS_OTHER_SERVICE_ATTACH_INVOICE',\r\n 'Ataseaza Factura la email'\r\n )}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n \r\n \r\n \r\n }\r\n label={this.translatorService.Tranlate(\r\n 'CASE_DETAILS_OTHER_SERVICE_ATTACH_OFFER',\r\n 'Ataseaza Oferta la email'\r\n )}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n \r\n \r\n );\r\n else\r\n return (\r\n \r\n \r\n \r\n }\r\n label={this.translatorService.Tranlate(\r\n 'CASE_DETAILS_OTHER_SERVICE_ATTACH_OFFER',\r\n 'Ataseaza Oferta la email'\r\n )}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n \r\n \r\n );\r\n }\r\n };\r\n renderAttachementBoxInAppDocs = () => {\r\n return (\r\n \r\n \r\n \r\n this.handleSelectedClientOffer(e, newValue)\r\n }\r\n getOptionLabel={(option: ClientOffer) => {\r\n return !isNil(option.id)\r\n ? `${option.id} ${Utils.FormatDateString(option.date)}\r\n ${\r\n option.caseClientHistory?.personTypeId === PersonType.PF\r\n ? `${option.caseClientHistory?.firstName} ${option.caseClientHistory?.lastName}`\r\n : `${option.caseClientHistory?.companyName}`\r\n } ${option.vehicle?.make?.displayName} ${option.vehicle?.model?.displayName} ${\r\n option.offerValue\r\n } ${option.currency}`\r\n : '';\r\n }}\r\n renderOption={(option, { selected }) => (\r\n \r\n \r\n {!isNil(option.id)\r\n ? `${option.id} ${Utils.FormatDateString(option.date)}\r\n ${\r\n option.caseClientHistory?.personTypeId === PersonType.PF\r\n ? `${option.caseClientHistory?.firstName} ${option.caseClientHistory?.lastName}`\r\n : `${option.caseClientHistory?.companyName}`\r\n } ${option.vehicle?.make?.displayName} ${option.vehicle?.model?.displayName} ${\r\n option.offerValue\r\n } ${option.currency}`\r\n : ''}\r\n \r\n )}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n {this.renderGenerateDocsButtons()}\r\n \r\n );\r\n };\r\n renderAttachmentBox = () => {\r\n return (\r\n \r\n \r\n \r\n this.setState({ selectedCaseAttachments: newValue })\r\n }\r\n getOptionLabel={(option: CaseAttachment) => option.originalFileName || ''}\r\n renderOption={(option, { selected }) => (\r\n \r\n \r\n {option.originalFileName}\r\n \r\n )}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n {this.state.attachments.length !== 0\r\n ? this.state.attachments.map((attach, index) => {\r\n return (\r\n
\r\n
\r\n this.downloadFile(attach.fileName, attach.originalFileName)}\r\n >\r\n {attach.fileName}\r\n \r\n
\r\n
\r\n this.handleDeleteAttachment(attach.id, attach.fileName)}\r\n >\r\n \r\n \r\n
\r\n
\r\n );\r\n })\r\n : null}\r\n
\r\n\r\n \r\n {\r\n return this.handleUploadAttachment(e);\r\n }}\r\n type=\"file\"\r\n />\r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n sendEmail = async () => {\r\n try {\r\n this.setState({ executing: true, isLoading: true });\r\n\r\n const otherServiceFormData = this.state.otherServiceFormData;\r\n\r\n otherServiceFormData!.id = 0;\r\n otherServiceFormData.attachments = this.state.attachments;\r\n\r\n for (const ca of this.state.selectedCaseAttachments) {\r\n const file = await this.caseService.GetCaseAttachment(ca.fileName);\r\n otherServiceFormData.attachments.push({\r\n id: ca.id,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n attachmentTypeId: this.state.attachType.id,\r\n attachmentType: this.state.attachType,\r\n file: new File([file], ca.originalFileName),\r\n fileName: ca.originalFileName,\r\n uploadDate: new Date(),\r\n carPhotos: false,\r\n originalFileName: ca.originalFileName,\r\n caseRequestId: null,\r\n paymentId: null,\r\n serviceAppointmentId: null,\r\n caseClientId: null,\r\n isSelection: false\r\n });\r\n }\r\n\r\n if (this.state.selectedClientOffers && (this.state.hasInvoice || this.state.hasOffer)) {\r\n otherServiceFormData.caseClientHistoryId =\r\n this.state.selectedClientOffers.caseClientHistoryId;\r\n otherServiceFormData.gatewayServiceUrl = Constants.apiRoot;\r\n otherServiceFormData.hasInvoice = isNullOrUndefined(this.state.hasInvoice)\r\n ? null\r\n : this.state.hasInvoice;\r\n otherServiceFormData.hasOffer = isNullOrUndefined(this.state.hasOffer)\r\n ? null\r\n : this.state.hasOffer;\r\n otherServiceFormData.calculationId =\r\n this.props.caseSettingsState.case?.caseCalculation?.id || null;\r\n otherServiceFormData.userOrganizationId = this.props.appState.appUser!.organization?.id;\r\n otherServiceFormData.offerId = this.state.selectedClientOffers.id;\r\n otherServiceFormData.vehicleId = this.state.selectedClientOffers.vehicleId;\r\n otherServiceFormData.organizationOwnerId = this.props.caseSettingsState.case?.organizationOwnerId || null;\r\n otherServiceFormData.hideOrganizationLogo = this.props.caseSettingsState.caseSettings?.workflow?.hideRenewAdvert ? true : false;\r\n }\r\n const request = await this.caseService.AddCaseRequest(otherServiceFormData);\r\n\r\n await this.submitForm(request.caseId, request.caseSectionStepFormId, null);\r\n\r\n this.setState({\r\n editorState: EditorState.createEmpty(),\r\n otherServiceFormData: {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n text: '',\r\n subject: '',\r\n to: '',\r\n attachments: [] as CaseAttachment[],\r\n caseSectionStepFormId: this.props.workflowForm.id,\r\n hasInvoice: false,\r\n hasOffer: false\r\n } as CaseRequest,\r\n attachments: [],\r\n selectedCaseAttachments: [],\r\n selectedClientOffers: null\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ executing: false, isLoading: false });\r\n }\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n rendeOtherServiceForm = () => {\r\n const options: string[] = [];\r\n\r\n return isNullOrUndefined(this.state.otherServiceFormData) ? null : (\r\n {\r\n this.sendEmail();\r\n }}\r\n >\r\n
\r\n {/* ) => {\r\n this.setState({\r\n otherServiceFormData: {\r\n ...this.state.otherServiceFormData,\r\n to: e.target.value\r\n }\r\n });\r\n }\r\n }\r\n //variant=\"outlined\"\r\n validators={['required', 'isEmail']}\r\n errorMessages={[this.translatorService.Tranlate(\"VALIDATORS_REQUIRED\", \"Campul este obligatoriu\"),\r\n this.translatorService.Tranlate(\"VALIDATORS_EMAIL\", \"E-mail invalid\")]}\r\n /> */}\r\n\r\n {\r\n this.setState({\r\n otherServiceFormData: {\r\n ...this.state.otherServiceFormData,\r\n to: this.arrayToString(newValue)\r\n }\r\n });\r\n }}\r\n getOptionLabel={(option) => option || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n {\r\n this.setState({\r\n otherServiceFormData: {\r\n ...this.state.otherServiceFormData,\r\n cc: this.arrayToString(newValue)\r\n }\r\n });\r\n }}\r\n getOptionLabel={(option) => option || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n ) => {\r\n this.setState({\r\n otherServiceFormData: {\r\n ...this.state.otherServiceFormData,\r\n subject: e.target.value\r\n }\r\n });\r\n }}\r\n //variant=\"outlined\"\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n {this.state.hasEmailTemplate ? (\r\n this.renderEmailEditor()\r\n ) : (\r\n ) => {\r\n this.setState({\r\n otherServiceFormData: {\r\n ...this.state.otherServiceFormData,\r\n text: e.target.value\r\n }\r\n });\r\n }}\r\n variant=\"outlined\"\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n )}\r\n {this.renderAttachmentBox()}\r\n {this.renderAttachementBoxInAppDocs()}\r\n
\r\n\r\n \r\n {this.translatorService.Tranlate('CASE_COMMENT_SEND', 'Trimite')}\r\n \r\n \r\n );\r\n };\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialServie = (this.context as AppContext).referentialService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
{this.rendeOtherServiceForm()}
\r\n ) : null}\r\n \r\n {this.state.executing ? null : (\r\n \r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabOtherServiceFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabOtherServiceForm as any));\r\n","export enum CurrencyEnum {\r\n EUR = 'EUR',\r\n CHF = 'CHF',\r\n USD = 'USD',\r\n RON = 'RON'\r\n}\r\n","import React, { Fragment, useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\r\nimport {\r\n Button,\r\n IconButton,\r\n Grid,\r\n FormControlLabel,\r\n Switch,\r\n Divider,\r\n TextField,\r\n Input,\r\n Typography\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { WorkflowPartner, WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { isNull, isNullOrUndefined } from 'util';\r\nimport { CasePaymentHistory, CaseAttachment } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport {\r\n ParametreCode,\r\n ReferentialCode,\r\n AttachmentTypeCode,\r\n OrganizationTypeCode,\r\n OfferTypeCode,\r\n VehicleStatusCodeEnum,\r\n CurrencyCode\r\n} from '../../helpers/Constants';\r\nimport { IWorkflowService } from '../../services/Interfaces/IWorkflowService';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport FileSaver from 'file-saver';\r\nimport { OrganizationBankAccount } from '../../interfaces/Organization';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete, { createFilterOptions } from '@material-ui/lab/Autocomplete';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport NumberFormat, { NumberFormatProps } from 'react-number-format';\r\nimport moment from 'moment';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport * as R from 'ramda';\r\nimport * as IbanTools from 'ibantools';\r\nimport { CurrencyEnum } from '../../enums/CurrencyEnum';\r\nimport isNil from 'lodash/isNil';\r\nimport { Cost, CostAttachment, VehicleCostRequest } from '../../interfaces/Vehicle';\r\n\r\ninterface ICaseDetailsCaseTabPaymentDetailsFormState {\r\n comment: string;\r\n organizations: WorkflowPartner[];\r\n selectedOrganization: WorkflowPartner | null;\r\n users: AppUser[];\r\n selectedUser: AppUser | null;\r\n attachments: CaseAttachment[];\r\n paymentTypeId: number | null;\r\n paymentType: IReferential | null;\r\n paymentRequestNoId: number | null;\r\n paymentRequestNo: IReferential | null;\r\n paymentAmount: number | null;\r\n paymentAmountWithoutVAT: number | null;\r\n paymentAmountVAT: number | null;\r\n currencyRate: number;\r\n secondPaymentAmount: number | null;\r\n secondPaymentAmountWithoutVAT: number | null;\r\n secondCurrency: string | null;\r\n hasFransiza: boolean;\r\n installments: number | null;\r\n bankAccount: string;\r\n bankName: string;\r\n IBANList: OrganizationBankAccount[];\r\n selectedIBAN: OrganizationBankAccount | null;\r\n isLoading: boolean;\r\n isLoading2: boolean;\r\n attachType: IReferential;\r\n paymentTypeList: IReferential[];\r\n paymentRequestNoList: IReferential[];\r\n isOrganizationsDisabled: boolean;\r\n isUsersDisabled: boolean;\r\n hasRights: boolean;\r\n isUserHidden: boolean;\r\n executing: boolean;\r\n userRoleId: number | null;\r\n currencyList: IReferential[];\r\n currencyType: IReferential | null;\r\n paymentHistory: CasePaymentHistory[];\r\n bankList: IReferential[];\r\n cursorBankAccount: {\r\n value: string;\r\n outerValue: string;\r\n selectionStart: number;\r\n selectionEnd: number;\r\n };\r\n checkIfCurrencyIsEurOrRon: boolean;\r\n showCostDetails: boolean;\r\n costTypes: IReferential[];\r\n costValues: Cost[];\r\n caseVehicleCosts: Cost[];\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseTabPaymentDetailsFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n withCurrency: boolean;\r\n}\r\n\r\ntype ICaseDetailsCaseTabPaymentDetailsFormProps =\r\n ExternalCaseDetailsCaseTabPaymentDetailsFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n } & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabPaymentDetailsForm extends React.PureComponent<\r\n ICaseDetailsCaseTabPaymentDetailsFormProps,\r\n ICaseDetailsCaseTabPaymentDetailsFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n private workflowService!: IWorkflowService;\r\n private appUserService!: IAppUserService;\r\n private organizationService!: IOrganizationService;\r\n private vehicleService!: IVehicleService;\r\n static contextType = ApplicationContext;\r\n state = {\r\n comment: '',\r\n organizations: [],\r\n selectedOrganization: null,\r\n users: [],\r\n selectedUser: null,\r\n attachments: [],\r\n paymentTypeId: null,\r\n paymentType: null,\r\n paymentRequestNoId: null,\r\n paymentRequestNo: null,\r\n paymentAmount: 0,\r\n paymentAmountWithoutVAT: 0,\r\n paymentAmountVAT: null,\r\n secondPaymentAmount: 0,\r\n secondPaymentAmountWithoutVAT: 0,\r\n secondCurrency: null,\r\n hasFransiza: false,\r\n installments: 0,\r\n IBANList: [],\r\n selectedIBAN: null,\r\n isLoading: false,\r\n isLoading2: false,\r\n attachType: {} as IReferential,\r\n paymentTypeList: [],\r\n paymentRequestNoList: [],\r\n isOrganizationsDisabled: false,\r\n isUsersDisabled: false,\r\n hasRights: false,\r\n isUserHidden: false,\r\n executing: false,\r\n userRoleId: null,\r\n currencyList: [] as IReferential[],\r\n currencyType: null,\r\n paymentHistory: [] as CasePaymentHistory[],\r\n bankAccount: '',\r\n bankName: '',\r\n bankList: [] as IReferential[],\r\n cursorBankAccount: {\r\n value: '',\r\n outerValue: '',\r\n selectionStart: 0,\r\n selectionEnd: 0\r\n },\r\n checkIfCurrencyIsEurOrRon: false,\r\n showCostDetails: false,\r\n costTypes: [] as IReferential[],\r\n costValues: [] as Cost[],\r\n caseVehicleCosts: [] as Cost[],\r\n currencyRate: 1\r\n } as ICaseDetailsCaseTabPaymentDetailsFormState;\r\n\r\n input = React.createRef();\r\n inputTextValidator = React.createRef();\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n ValidatorForm.addValidationRule('isIbanValid', (value) => {\r\n if (!value) {\r\n return true;\r\n }\r\n const ibanValidationResult = IbanTools.validateIBAN(value.replace(/\\s/g, ''));\r\n return ibanValidationResult.valid;\r\n });\r\n\r\n if (this.input.current) {\r\n this.input!.current!.value = this.state.cursorBankAccount.outerValue;\r\n }\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCasePaymentDetailsForm();\r\n }\r\n );\r\n }\r\n\r\n public componentDidUpdate(\r\n prevProps: ICaseDetailsCaseTabPaymentDetailsFormProps,\r\n prevState: ICaseDetailsCaseTabPaymentDetailsFormState\r\n ) {\r\n if (prevState?.currencyType?.code !== this.state.currencyType?.code) {\r\n const futureCostValues = [...this.state.costValues];\r\n futureCostValues.forEach((item) => {\r\n item.currency = this.state.currencyType?.displayName || '';\r\n item.secondCurrency = this.getSecondCurrency();\r\n item.secondValue = !item?.value\r\n ? null\r\n : this.setSecondValueBasedOnCaseCurrency(item?.value);\r\n });\r\n this.setState({ costValues: futureCostValues });\r\n }\r\n const { value, selectionStart, selectionEnd } = this.state.cursorBankAccount;\r\n if (prevState.cursorBankAccount.value !== value) {\r\n if (this.input && this.input.current) {\r\n this.input.current.value = value;\r\n\r\n this.input.current.selectionStart = selectionStart;\r\n this.input.current.selectionEnd = selectionEnd;\r\n this.input.current.focus();\r\n }\r\n }\r\n }\r\n updateOnblur() {\r\n const newBankName =\r\n this.state.bankList.find(\r\n (b) => b.code === this.state.cursorBankAccount.value.replace(/\\s/g, '').substr(4, 4)\r\n )?.name || '';\r\n this.setState({\r\n bankName: newBankName,\r\n cursorBankAccount: {\r\n ...this.state.cursorBankAccount,\r\n outerValue: this.formatBankAccount(this.state.cursorBankAccount.value.replace(/\\s/g, ''))\r\n }\r\n });\r\n }\r\n\r\n loadVehicleOffer = async () => {\r\n const isSaleOfferType = false;\r\n const offerTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OfferTye\r\n );\r\n\r\n const offerTypeList = await this.appReferentialService.Get(offerTypeRef!.baseUrl);\r\n\r\n const offerType = offerTypeList.find(\r\n (item) =>\r\n (item.code === OfferTypeCode.SELL && isSaleOfferType) ||\r\n (item.code === OfferTypeCode.BUY && !isSaleOfferType)\r\n )!;\r\n\r\n const [offers] = await Promise.all([\r\n R.isNil(this.props.caseSettingsState.case!.vehicleId)\r\n ? []\r\n : this.vehicleService.GetVehicleOffers(\r\n this.props.caseSettingsState.case!.vehicleId,\r\n this.props.caseSettingsState.case!.id,\r\n offerType.id\r\n )\r\n ]);\r\n return offers[0];\r\n //this.vehicleService.GetVehicleOffers(this.props.caseSettingsState.case?.vehicleId!, this.props.caseSettingsState.case!.id, OfferTypeCode.BUY);\r\n };\r\n\r\n getSecondCurrency = () => {\r\n const indexRon = this.state.currencyList.findIndex((item) => item?.code === CurrencyCode.RON);\r\n const indexEur = this.state.currencyList.findIndex((item) => item?.code === CurrencyCode.EUR);\r\n if (this.state.currencyType?.code === CurrencyCode.EUR) {\r\n return this.state.currencyList[indexRon].displayName;\r\n }\r\n\r\n return this.state.currencyType?.code === CurrencyCode.RON\r\n ? this.state.currencyList[indexEur]?.displayName\r\n : '';\r\n };\r\n\r\n loadCasePaymentDetailsForm = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n const caseParameters = this.props.caseSettingsState.case!.caseParameters;\r\n const vatParameter = caseParameters.filter(\r\n (parameter) => parameter.parameter!.code === ParametreCode.TVA\r\n );\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.AttachmentType\r\n );\r\n const refPaymentType = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.PaymentType\r\n );\r\n const refPaymentRequestNo = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.PaymentRequestNo\r\n );\r\n const refCurrencyType = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.Currency\r\n );\r\n const refBanks = Referentials.referential.find((item) => item.code === ReferentialCode.Bank);\r\n\r\n const serviceOrg = this.props.caseSettingsState.case!.casePartners.filter(\r\n (item) => item.organization!.organizationType!.code == OrganizationTypeCode.REP\r\n );\r\n\r\n const casee = this.props.caseSettingsState.case;\r\n const [\r\n workflowPartners,\r\n bankAccountList,\r\n attachmentTypes,\r\n currentCasePayment,\r\n paymentTypeList,\r\n paymentRequestNoList,\r\n currencyList,\r\n paymentHistoryList,\r\n banks\r\n ] = await Promise.all([\r\n this.workflowService.GetUserWorkflowPartners(\r\n this.props.caseSettingsState.case!.caseWorkflow.workflowId\r\n ),\r\n serviceOrg.length > 0\r\n ? this.organizationService.GetUserOrganizationBankAccounts(serviceOrg[0].organizationId)\r\n : [],\r\n this.appReferentialService.Get(ref!.baseUrl),\r\n this.caseService.GetCurrentCasePayment(casee!.id, this.props.workflowForm.id),\r\n this.appReferentialService.Get(refPaymentType!.baseUrl),\r\n this.appReferentialService.Get(refPaymentRequestNo!.baseUrl),\r\n this.appReferentialService.Get(refCurrencyType!.baseUrl),\r\n this.caseService.GetCasePayments(casee!.id, this.props.workflowForm.id),\r\n this.appReferentialService.Get(refBanks!.baseUrl)\r\n ]);\r\n const organizations = await this.organizationService.GetUserOrganizationsByIds(\r\n workflowPartners.map((item) => item.partnerId)\r\n );\r\n const vehicleOffer = await this.loadVehicleOffer();\r\n\r\n const [caseVehicleCosts] = await Promise.all([\r\n this.vehicleService.GetCostRequests(caseId, null) as any as Cost[]\r\n ]);\r\n\r\n const currrency = this.props.caseSettingsState.case!.caseParameters.find(\r\n (item) => item.parameter!.code === ParametreCode.CURRENCY\r\n )!.value;\r\n const selectedCurrency =\r\n currentCasePayment === null || currentCasePayment.currency === null\r\n ? currrency\r\n : currentCasePayment.currency;\r\n const checkIfCurrencyIsEurOrRon =\r\n selectedCurrency == CurrencyCode.EUR || selectedCurrency == CurrencyCode.RON;\r\n workflowPartners.forEach((wp) => {\r\n const partner = organizations.find((item) => item.id === wp.partnerId);\r\n wp.partner = isNullOrUndefined(partner) ? null : partner;\r\n });\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n let selectedIban = null;\r\n if (currentCasePayment !== null) {\r\n const iban = bankAccountList.find(\r\n (item) => item.bankAccount === currentCasePayment.bankAccount\r\n );\r\n selectedIban = isNullOrUndefined(iban) ? null : iban;\r\n }\r\n\r\n const users = await this.appUserService.GetUsersInfo(\r\n paymentHistoryList.map((item) => item.createdBy)\r\n );\r\n paymentHistoryList.forEach((item) => {\r\n const user = users.find((u) => u.id === item.createdBy);\r\n item.createdByUser = isNullOrUndefined(user) ? null : user;\r\n });\r\n\r\n const bankAccount =\r\n currentCasePayment !== null\r\n ? currentCasePayment.bankAccount\r\n : casee?.caseClient?.bankAccount || '';\r\n const bankName =\r\n banks.find((b) => b.code === (bankAccount ?? '').replace(/\\s/g, '').substr(4, 4))?.name || '';\r\n\r\n const futureCostTypes = await this.vehicleService.GetVehicleCostTypes();\r\n const futureCostValues = futureCostTypes.map((cost) => {\r\n return {\r\n caseId: this.props.match.params.id,\r\n vehicleId: this.props.caseSettingsState.case?.vehicleId || null,\r\n costTypeId: cost.id,\r\n costTypeCode: cost.code || '',\r\n files: [],\r\n value: null,\r\n currencyRate: this.state.currencyType\r\n ? Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n this.props.withCurrency ? this.state.currencyType!.code! : currrency\r\n )\r\n : null,\r\n currency: this.state.currencyType?.displayName || '',\r\n secondValue: null,\r\n secondCurrency: this.getSecondCurrency(),\r\n caseSectionStepFormId: this.props.workflowForm.id\r\n };\r\n });\r\n\r\n this.setState(\r\n {\r\n organizations: workflowPartners,\r\n IBANList: bankAccountList.filter((item) => item.currency!.displayName === currrency),\r\n attachType: attachmentTypes.find((item) => item.code === AttachmentTypeCode.OTHER)!,\r\n isLoading: false,\r\n hasRights: hasRights,\r\n isUserHidden: !hasRights,\r\n comment: currentCasePayment === null ? '' : currentCasePayment.comment,\r\n attachments: [],\r\n paymentTypeId:\r\n currentCasePayment === null || currentCasePayment.paymentTypeId === null\r\n ? null\r\n : currentCasePayment.paymentTypeId,\r\n paymentType:\r\n currentCasePayment === null || currentCasePayment.paymentType === null\r\n ? null\r\n : currentCasePayment.paymentType,\r\n paymentAmount:\r\n currentCasePayment === null || currentCasePayment.paymentAmount === null\r\n ? 0\r\n : currentCasePayment.paymentAmount,\r\n paymentRequestNoId:\r\n currentCasePayment === null || currentCasePayment.paymentRequestNoId === null\r\n ? null\r\n : currentCasePayment.paymentRequestNoId,\r\n paymentRequestNo:\r\n currentCasePayment === null || currentCasePayment.paymentRequestNo === null\r\n ? null\r\n : currentCasePayment.paymentRequestNo,\r\n hasFransiza: currentCasePayment === null ? false : currentCasePayment.hasFransiza,\r\n installments:\r\n currentCasePayment === null || currentCasePayment.installments === null\r\n ? 0\r\n : currentCasePayment.installments,\r\n cursorBankAccount: {\r\n ...this.state.cursorBankAccount,\r\n outerValue: bankAccount\r\n },\r\n paymentRequestNoList: paymentRequestNoList,\r\n paymentTypeList: paymentTypeList,\r\n paymentAmountVAT: parseFloat(vatParameter[0]!.value),\r\n currencyType: currencyList.find((item) => item.code === selectedCurrency)!,\r\n currencyList: currencyList,\r\n paymentAmountWithoutVAT:\r\n !R.isNil(currentCasePayment) && currentCasePayment.paymentAmountWithoutVAT\r\n ? currentCasePayment.paymentAmountWithoutVAT\r\n : vehicleOffer?.offerValue,\r\n currencyRate: vehicleOffer?.currencyRate,\r\n secondPaymentAmountWithoutVAT:\r\n !R.isNil(currentCasePayment) && currentCasePayment.secondPaymentAmountWithoutVAT\r\n ? currentCasePayment.secondPaymentAmountWithoutVAT\r\n : vehicleOffer?.secondOfferValue,\r\n secondCurrency:\r\n !R.isNil(currentCasePayment) && currentCasePayment.secondCurrency\r\n ? currentCasePayment.secondCurrency\r\n : checkIfCurrencyIsEurOrRon\r\n ? selectedCurrency == CurrencyCode.EUR\r\n ? CurrencyCode.RON\r\n : CurrencyCode.EUR\r\n : null,\r\n paymentHistory: paymentHistoryList,\r\n bankList: banks,\r\n bankName: bankName,\r\n checkIfCurrencyIsEurOrRon: checkIfCurrencyIsEurOrRon,\r\n costTypes: futureCostTypes,\r\n costValues: futureCostValues,\r\n caseVehicleCosts: caseVehicleCosts\r\n },\r\n this.setCaseAllocation\r\n );\r\n };\r\n\r\n setCaseAllocation = async () => {\r\n if (!this.state.hasRights) {\r\n return;\r\n }\r\n\r\n const allocationResult = await FormHelpers.ParseAllocations(\r\n this.props.workflowForm.workflowFormActions,\r\n this.state.organizations,\r\n this.appUserService\r\n );\r\n\r\n if (isNullOrUndefined(allocationResult)) {\r\n const partner = this.state.organizations.find(\r\n (item) => item.partnerId === this.props.caseSettingsState.case!.caseStatus.assignedTo!.hoId\r\n );\r\n\r\n this.setState(\r\n {\r\n selectedOrganization: isNullOrUndefined(partner) ? null : partner,\r\n selectedUser: this.props.caseSettingsState.case!.caseStatus.assignedTo,\r\n organizations: this.state.organizations,\r\n isUsersDisabled: false,\r\n isOrganizationsDisabled: false\r\n },\r\n async () =>\r\n await this.loadUsers(isNullOrUndefined(partner) ? null : partner.partnerId, null)\r\n );\r\n return;\r\n }\r\n if (allocationResult.isLastUser || allocationResult.caseStatusId != null) {\r\n this.setState({ isUserHidden: true });\r\n return;\r\n }\r\n this.setState(\r\n {\r\n selectedOrganization: allocationResult.partner,\r\n selectedUser: allocationResult.user,\r\n organizations: allocationResult.partners,\r\n isUsersDisabled: !isNullOrUndefined(allocationResult.user),\r\n isOrganizationsDisabled: !isNullOrUndefined(allocationResult.partner),\r\n userRoleId: allocationResult.roleId\r\n },\r\n async () => {\r\n if (allocationResult.partner === null) {\r\n return;\r\n }\r\n await this.loadUsers(allocationResult.partner.partnerId, allocationResult.roleId);\r\n }\r\n );\r\n };\r\n\r\n loadUsers = async (organizationId: number | null, roleId: number | null) => {\r\n if (organizationId === null) {\r\n this.setState({\r\n isLoading2: false\r\n });\r\n } else {\r\n const users = await this.appUserService.GetUserAppUsers();\r\n this.setState({\r\n users: users.users.filter(\r\n (user) =>\r\n (user.organization!.hoId === organizationId ||\r\n user.organizationId === organizationId) &&\r\n ((roleId !== null && user.roleId === roleId) || roleId === null)\r\n ),\r\n isLoading2: false\r\n });\r\n }\r\n };\r\n\r\n handleUploadAttachment = async (e: React.ChangeEvent) => {\r\n try {\r\n const attachments = [...this.state.attachments];\r\n attachments.push({\r\n id: this.state.attachments.length,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n attachmentTypeId: this.state.attachType.id,\r\n attachmentType: this.state.attachType,\r\n file: e.target.files![0],\r\n fileName: e.target.files![0].name,\r\n uploadDate: new Date(),\r\n carPhotos: false,\r\n originalFileName: e.target.files![0].name,\r\n caseRequestId: null,\r\n paymentId: null,\r\n serviceAppointmentId: null,\r\n caseClientId: null,\r\n isSelection: false\r\n });\r\n\r\n this.setState({\r\n attachments: attachments\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleUploadCostAttachment = async (e: React.ChangeEvent, index: number) => {\r\n try {\r\n const futureCostValues = [...this.state.costValues];\r\n futureCostValues[index].files.push({\r\n file: e.target.files![0],\r\n fileName: e.target.files![0].name,\r\n originalFileName: e.target.files![0].name\r\n } as any as CostAttachment);\r\n\r\n this.setState({ costValues: futureCostValues });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleDeleteCostAttachment = async (index: number, indexAttachment: number) => {\r\n try {\r\n const futureCostValues = [...this.state.costValues];\r\n futureCostValues[index].files.splice(indexAttachment, 1);\r\n\r\n this.setState({\r\n costValues: futureCostValues\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleDeleteAttachment = async (id: number, fileName: string) => {\r\n try {\r\n const attachments = [...this.state.attachments];\r\n const index = attachments.findIndex((item) => item.id === id);\r\n attachments.splice(index, 1);\r\n\r\n this.setState({\r\n attachments: attachments\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n downloadFile = async (fileName: string, origFileName: string) => {\r\n const fileBlob = await this.caseService.GetCaseAttachment(fileName);\r\n FileSaver.saveAs(fileBlob, origFileName);\r\n };\r\n\r\n renderAttachmentBox = () => {\r\n return (\r\n \r\n \r\n {this.state.attachments.length !== 0\r\n ? this.state.attachments.map((attach, index) => {\r\n return (\r\n
\r\n
\r\n this.downloadFile(attach.fileName, attach.originalFileName)}\r\n >\r\n {attach.originalFileName}\r\n \r\n
\r\n
\r\n this.handleDeleteAttachment(attach.id, attach.fileName)}\r\n >\r\n \r\n \r\n
\r\n
\r\n );\r\n })\r\n : null}\r\n
\r\n \r\n {\r\n return this.handleUploadAttachment(e);\r\n }}\r\n type=\"file\"\r\n disabled={!this.state.hasRights}\r\n />\r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n renderAttachmentBoxForCosts = (costIndex: number, attachments: CostAttachment[]) => {\r\n return (\r\n \r\n \r\n {attachments.length !== 0\r\n ? attachments.map((attach, index) => {\r\n return (\r\n
\r\n
\r\n \r\n this.downloadVehicleCostFile(attach.fileName, attach.originalFileName)\r\n }\r\n >\r\n {attach.originalFileName}\r\n \r\n
\r\n
\r\n this.handleDeleteCostAttachment(costIndex, index)}\r\n >\r\n \r\n \r\n
\r\n
\r\n );\r\n })\r\n : null}\r\n
\r\n
\r\n );\r\n };\r\n\r\n sendEmail = async (sendCost: boolean) => {\r\n if (sendCost) {\r\n this.state.costValues.forEach(async (cost) => {\r\n if (cost.value) {\r\n await this.vehicleService.AddCost(cost);\r\n }\r\n });\r\n }\r\n try {\r\n this.setState({ executing: true });\r\n const currrency = this.props.caseSettingsState.case!.caseParameters.find(\r\n (item) => item.parameter!.code === ParametreCode.CURRENCY\r\n )!.value;\r\n\r\n const paymentDetailsFormData: CasePaymentHistory = {\r\n id: 0,\r\n caseId: Number.parseInt(this.props.match.params.id),\r\n comment: this.state.comment,\r\n attachments: this.state.attachments,\r\n organizationId: this.state.isUserHidden\r\n ? this.props.caseSettingsState.case!.caseStatus.assignedTo!.organizationId\r\n : this.state.selectedOrganization!.partnerId,\r\n userToId: this.state.isUserHidden\r\n ? this.props.caseSettingsState.case!.caseStatus.assignedToId\r\n : this.state.selectedUser!.id!,\r\n paymentTypeId: this.state.paymentTypeId,\r\n paymentRequestNoId: this.state.paymentRequestNoId,\r\n paymentAmount: this.props.withCurrency == false ? this.state.paymentAmount : this.getSumWithVAT(), //this.state.paymentAmount,\r\n hasFransiza: this.state.hasFransiza,\r\n installments: this.state.installments,\r\n bankAccount: this.state.cursorBankAccount.outerValue, //isNullOrUndefined(this.state.selectedIBAN) ? \"\" : this.state.selectedIBAN!.bankAccount,\r\n caseSectionStepFormId: this.props.workflowForm.id,\r\n currency: this.props.withCurrency ? this.state.currencyType!.code! : currrency,\r\n currencyRate: this.state.checkIfCurrencyIsEurOrRon\r\n ? this.state.currencyRate\r\n : Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n this.props.withCurrency ? this.state.currencyType!.code! : currrency\r\n ),\r\n secondCurrency: this.state.checkIfCurrencyIsEurOrRon ? this.state.secondCurrency : null,\r\n secondPaymentAmount: this.state.checkIfCurrencyIsEurOrRon\r\n ? this.getSecondSumWithVAT()\r\n : null,\r\n secondPaymentAmountWithoutVAT: this.state.checkIfCurrencyIsEurOrRon\r\n ? this.state.secondPaymentAmountWithoutVAT\r\n : null,\r\n paymentAmountWithoutVAT: this.state.checkIfCurrencyIsEurOrRon\r\n ? this.state.paymentAmountWithoutVAT\r\n : null\r\n } as CasePaymentHistory;\r\n\r\n await this.caseService.AddCasePayment(paymentDetailsFormData);\r\n\r\n const vehicleId = this.props.caseSettingsState.case?.vehicleId;\r\n\r\n if (vehicleId) {\r\n await this.vehicleService.ChangeVehicleStatus({\r\n vehicleId,\r\n statusId: VehicleStatusCodeEnum.Available,\r\n comment: ''\r\n });\r\n }\r\n\r\n await this.loadCaseVehicleCosts();\r\n\r\n const selectedOrganization = this.state.selectedOrganization;\r\n const hoId =\r\n selectedOrganization === null\r\n ? null\r\n : selectedOrganization.partner!.hoId === null\r\n ? selectedOrganization.partnerId\r\n : selectedOrganization.partner!.hoId;\r\n\r\n await this.submitForm(\r\n paymentDetailsFormData.caseId,\r\n paymentDetailsFormData.caseSectionStepFormId,\r\n this.state.selectedUser\r\n );\r\n\r\n await this.setCaseAllocation();\r\n\r\n await this.loadPayments();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n loadPayments = async () => {\r\n const payments = await this.caseService.GetCasePayments(\r\n this.props.caseSettingsState.case!.id,\r\n this.props.workflowForm.id\r\n );\r\n\r\n const users = await this.appUserService.GetUsersInfo(payments.map((item) => item.createdBy));\r\n payments.forEach((item) => {\r\n const user = users.find((u) => u.id === item.createdBy);\r\n item.createdByUser = isNullOrUndefined(user) ? null : user;\r\n });\r\n\r\n this.setState({\r\n paymentHistory: payments\r\n });\r\n };\r\n\r\n loadCaseVehicleCosts = async () => {\r\n const [caseVehicleCosts] = await Promise.all([\r\n this.vehicleService.GetCostRequests(\r\n this.props.caseSettingsState.case!.id,\r\n null\r\n ) as any as Cost[]\r\n ]);\r\n\r\n this.setState({\r\n caseVehicleCosts: caseVehicleCosts\r\n });\r\n };\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n handleOrganizationChange = (newValue: WorkflowPartner | null) => {\r\n this.setState(\r\n {\r\n selectedOrganization: newValue,\r\n selectedUser: null,\r\n users: [],\r\n isLoading2: true\r\n },\r\n async () => {\r\n await this.loadUsers(newValue === null ? null : newValue.partnerId, this.state.userRoleId);\r\n }\r\n );\r\n };\r\n\r\n handleUserChange = (newValue: AppUser | null) => {\r\n this.setState({ selectedUser: newValue });\r\n };\r\n handleBanckAccountChange = (newValue: OrganizationBankAccount | null) => {\r\n this.setState({ selectedIBAN: newValue });\r\n };\r\n\r\n formatBankAccount = (bankAccountValue: string) => {\r\n return bankAccountValue.length > 5\r\n ? bankAccountValue\r\n //.replace(/[^\\dA-Z]/g, '')\r\n .replace(/(.{4})/g, '$1 ')\r\n .trim()\r\n : bankAccountValue;\r\n };\r\n\r\n handleBankAccountChange = (e: React.ChangeEvent) => {\r\n //const newBankName = this.state.bankList.find(b => b.code === e.target.value.replace(/\\s/g, '').substr(4, 4))?.name || '';\r\n //const newBankAccount = this.formatBankAccount(newValue);\r\n\r\n // save cursor position\r\n this.setState({\r\n ...this.state,\r\n cursorBankAccount: {\r\n ...this.state.cursorBankAccount,\r\n value: e.target.value,\r\n selectionStart: e.target.selectionStart!,\r\n selectionEnd: e.target.selectionEnd!\r\n }\r\n });\r\n\r\n //e.persist();\r\n //this.setState({ bankName: newBankName });\r\n // e.target.selectionStart = newCursor;\r\n // e.target.selectionEnd = newCursor;\r\n //console.log(\"after: newCursor \" + newCursor + \" sStart : \" + e.target.selectionStart + \" sEnd: \" + e.target.selectionEnd);\r\n //});\r\n\r\n //e.target.selectionStart = newCursor;\r\n //e.target.selectionEnd = newCursor;\r\n //() => {\r\n // e.target.selectionStart = oldSelection;\r\n // e.target.selectionEnd = oldSelection;\r\n // console.log(\"after: oldSelection \" + oldSelection + \" cursorOffset: \" + cursorOffset + \"sstart : \" + e.target.selectionStart + \" sEnd: \" + e.target.selectionEnd);\r\n //});\r\n };\r\n\r\n handlePaymentTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n paymentType: newValue,\r\n paymentTypeId: newValue === null ? null : newValue.id\r\n });\r\n };\r\n\r\n handleRequestNoChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n paymentRequestNo: newValue,\r\n paymentRequestNoId: newValue === null ? null : newValue.id\r\n });\r\n };\r\n\r\n handlePaymentAmountChange = (e: React.ChangeEvent) => {\r\n this.setState({\r\n paymentAmount: Number.isNaN(Number.parseFloat(e.target.value))\r\n ? null\r\n : Number.parseFloat(e.target.value)\r\n });\r\n };\r\n\r\n setSecondValueBasedOnCaseCurrency(value: number): number | null {\r\n // console.log(this.props.appState.currencyRates)\r\n let resultValue = null;\r\n if (\r\n this.state.currencyType?.code == CurrencyCode.EUR ||\r\n this.state.currencyType?.code == CurrencyCode.RON\r\n ) {\r\n resultValue = 0;\r\n const previousCurrencyCode = this.state.currencyType?.code;\r\n const futureCurrencyCode =\r\n this.state.currencyType?.code == CurrencyCode.EUR ? CurrencyCode.RON : CurrencyCode.EUR;\r\n if (!R.isNil(value) && previousCurrencyCode) {\r\n let previousCurrencyRate = Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n previousCurrencyCode\r\n );\r\n let futureCurrencyRate = Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n futureCurrencyCode\r\n );\r\n\r\n if (previousCurrencyCode == CurrencyEnum.EUR) {\r\n previousCurrencyRate = this.state.currencyRate;\r\n } else if (previousCurrencyCode == CurrencyCode.RON) {\r\n futureCurrencyRate = this.state.currencyRate;\r\n }\r\n\r\n resultValue = value * (previousCurrencyRate / futureCurrencyRate);\r\n\r\n return Number.parseFloat(resultValue.toFixed(2));\r\n }\r\n }\r\n\r\n return resultValue;\r\n }\r\n\r\n handlePaymentAmountWithoutVATChange = (e: React.ChangeEvent) => {\r\n this.setState({\r\n paymentAmountWithoutVAT: Number.isNaN(Number.parseFloat(e.target.value))\r\n ? null\r\n : Number.parseFloat(e.target.value),\r\n secondPaymentAmountWithoutVAT: this.setSecondValueBasedOnCaseCurrency(\r\n Number.parseFloat(e.target.value)\r\n )\r\n });\r\n };\r\n\r\n handlePaymentAmountVATChange = (e: React.ChangeEvent) => {\r\n this.setState({\r\n paymentAmountVAT: Number.isNaN(Number.parseFloat(e.target.value))\r\n ? null\r\n : Number.parseFloat(e.target.value)\r\n });\r\n };\r\n\r\n handleInstallmentChange = (e: React.ChangeEvent) => {\r\n this.setState({\r\n installments: Number.isNaN(Number.parseFloat(e.target.value))\r\n ? null\r\n : Number.parseFloat(e.target.value)\r\n });\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n\r\n getSumWithVAT = () => {\r\n const sumWithoutVat = this.state.paymentAmountWithoutVAT\r\n ? this.state.paymentAmountWithoutVAT\r\n : 0;\r\n const vat = this.state.paymentAmountVAT ? this.state.paymentAmountVAT : 0;\r\n const vatValue = Number.parseFloat((sumWithoutVat * (vat / 100)).toFixed(2));\r\n return sumWithoutVat + vatValue;\r\n };\r\n\r\n getSecondSumWithVAT = () => {\r\n const sumWithoutVat = this.state.secondPaymentAmountWithoutVAT\r\n ? this.state.secondPaymentAmountWithoutVAT\r\n : 0;\r\n const vat = this.state.paymentAmountVAT ? this.state.paymentAmountVAT : 0;\r\n const vatValue = sumWithoutVat * (vat / 100);\r\n return Number.parseFloat((sumWithoutVat + vatValue).toFixed(2));\r\n };\r\n\r\n handleCurrencyTypeChange = (newValue: IReferential | null) => {\r\n if (newValue?.code) {\r\n let paymentAmountWithoutVAT = this.state.paymentAmountWithoutVAT;\r\n const previousCurrencyCode = this.state.currencyType?.code;\r\n\r\n const checkIfCurrencyIsEurOrRon =\r\n newValue?.code == CurrencyCode.EUR || newValue?.code == CurrencyCode.RON;\r\n\r\n if (!isNil(paymentAmountWithoutVAT) && previousCurrencyCode) {\r\n let previousCurrencyRate = Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n previousCurrencyCode\r\n );\r\n\r\n let futureCurrencyRate = Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n newValue.code\r\n );\r\n\r\n if (newValue?.code == CurrencyCode.EUR || newValue?.code == CurrencyCode.RON) {\r\n if (newValue?.code == CurrencyEnum.EUR) {\r\n futureCurrencyRate = this.state.currencyRate;\r\n } else if (newValue?.code == CurrencyCode.RON) {\r\n previousCurrencyRate = this.state.currencyRate;\r\n }\r\n }\r\n\r\n paymentAmountWithoutVAT =\r\n paymentAmountWithoutVAT * (previousCurrencyRate / futureCurrencyRate);\r\n }\r\n\r\n this.setState({\r\n ...this.state,\r\n currencyType: newValue,\r\n paymentAmountWithoutVAT: paymentAmountWithoutVAT,\r\n checkIfCurrencyIsEurOrRon: checkIfCurrencyIsEurOrRon,\r\n secondCurrency:\r\n newValue?.code == CurrencyCode.EUR || newValue?.code == CurrencyCode.RON\r\n ? newValue?.code == CurrencyCode.EUR\r\n ? CurrencyCode.RON\r\n : CurrencyCode.EUR\r\n : null\r\n });\r\n }\r\n };\r\n\r\n showPaymentHistoryTimeline = () => {\r\n return this.state.paymentHistory.map((payment, index) => (\r\n
\r\n
\r\n
\r\n

\r\n {moment.utc(payment.dateCreation).local().format(this.props.appState.longDateFormat) +\r\n ' (' +\r\n payment.createdByUser!.email +\r\n ')'}\r\n

\r\n

\r\n {this.translatorService.Tranlate(\r\n 'CASE_PAYMENT_DETAILS_TIMELINE_TOTAL_SUM',\r\n 'Suma totala'\r\n )}\r\n :{payment.paymentAmount} {payment.currency}\r\n {payment.secondPaymentAmount\r\n ? '(' + payment.secondPaymentAmount + payment.secondCurrency + ')'\r\n : ''}\r\n

\r\n\r\n

\r\n {this.translatorService.Tranlate('CASE_PAYMENT_DETAILS_TIMELINE_CURRENCY', 'Moneda')}:\r\n {payment.currency}\r\n

\r\n\r\n {payment.bankAccount ? (\r\n

\r\n {this.translatorService.Tranlate(\r\n 'CASE_PAYMENT_DETAILS_TIMELINE_BANK_ACCOUNT',\r\n 'Cont bancar'\r\n )}\r\n :{payment.bankAccount}\r\n

\r\n ) : (\r\n ''\r\n )}\r\n\r\n
{this.renderPaymentAttachmentBox(payment)}
\r\n
\r\n
\r\n ));\r\n };\r\n\r\n renderPaymentAttachmentBox = (paymentRequest: CasePaymentHistory) => {\r\n return (\r\n \r\n \r\n {paymentRequest.attachments.length !== 0\r\n ? paymentRequest.attachments.map((attach, index) => {\r\n return (\r\n
\r\n
\r\n this.downloadFile(attach.fileName, attach.originalFileName)}\r\n >\r\n {attach.originalFileName}\r\n \r\n
\r\n
\r\n );\r\n })\r\n : null}\r\n
\r\n
\r\n );\r\n };\r\n\r\n handleChange = (e: React.ChangeEvent, index: number) => {\r\n const val = e.target.value;\r\n const futureCostValues = [...this.state.costValues];\r\n futureCostValues[index].value = Number.isNaN(Number.parseFloat(val))\r\n ? null\r\n : Number.parseFloat(val);\r\n futureCostValues[index].secondValue = Number.isNaN(Number.parseFloat(val))\r\n ? null\r\n : this.setSecondValueBasedOnCaseCurrency(Number.parseFloat(val));\r\n this.setState({ costValues: futureCostValues });\r\n };\r\n\r\n getLabel = (item: Cost) => {\r\n if (!item.value) {\r\n return '';\r\n }\r\n const valueWithoutVat = this.translatorService.Tranlate(\r\n 'CASE_PAYMENT_DETAILS_FORM_PAYMENT_AMOUNT_WITHOUT_VAT_LABEL',\r\n 'Suma fara TVA'\r\n );\r\n return `${valueWithoutVat} | ${item?.value?.toFixed(2)} ${item?.currency}${\r\n item?.secondCurrency && `( ${item?.secondValue} ${item?.secondCurrency})`\r\n }`;\r\n };\r\n\r\n uploadAttachment = (e: React.ChangeEvent, index: number) => {\r\n try {\r\n const futureCostValues = [...this.state.costValues];\r\n // futureCostValues[index].files = e.target.files![0];\r\n this.setState({ costValues: futureCostValues });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n deleteAttachment = (index: number) => {\r\n const futureCostValues = [...this.state.costValues];\r\n // futureCostValues[index].files = null;\r\n this.setState({ costValues: futureCostValues });\r\n };\r\n\r\n renderCostType = (cost: IReferential, index: number) => {\r\n const indexLang = cost.translations.findIndex(\r\n (lang) => lang.language === this.translatorService.GetLanguage()\r\n );\r\n return (\r\n \r\n \r\n {cost.translations[indexLang].name}\r\n \r\n \r\n \r\n ) => this.handleChange(e, index)}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom,\r\n style: { fontWeight: 500 }\r\n }}\r\n />\r\n \r\n {this.state.costValues[index].files.length ? (\r\n \r\n {this.state.costValues[index].files.length !== 0\r\n ? this.state.costValues[index].files.map((attach, indexAttachment) => {\r\n return (\r\n
\r\n
\r\n \r\n this.downloadVehicleCostFile(attach.fileName, attach.originalFileName)\r\n }\r\n >\r\n \r\n {attach.originalFileName}\r\n \r\n \r\n
\r\n
\r\n this.handleDeleteCostAttachment(index, indexAttachment)}\r\n >\r\n \r\n \r\n
\r\n
\r\n );\r\n })\r\n : null}\r\n
\r\n ) : (\r\n \r\n \r\n {\r\n return this.handleUploadCostAttachment(e, index);\r\n }}\r\n type=\"file\"\r\n disabled={!this.state.hasRights}\r\n />\r\n \r\n \r\n \r\n )}\r\n
\r\n {/* {this.renderAttachmentBoxForCosts(index, this.state.costValues[index].files)} */}\r\n
\r\n );\r\n };\r\n\r\n downloadVehicleCostFile = async (fileName: string, origFileName: string) => {\r\n const fileBlob = await this.vehicleService.GetVehicleCostAttachment(fileName);\r\n FileSaver.saveAs(fileBlob, origFileName);\r\n };\r\n\r\n renderCostDetails = () => {\r\n return (\r\n <>\r\n \r\n \r\n {this.translatorService.Tranlate('COSTS', 'Costuri')}\r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('ADD_COSTS', 'Adauga cost aditional')}{' '}\r\n \r\n {\r\n this.state.hasRights\r\n ? this.setState({ showCostDetails: !this.state.showCostDetails })\r\n : '';\r\n }}\r\n style={{ marginLeft: 10 }}\r\n color=\"primary\"\r\n />\r\n \r\n\r\n {this.state.showCostDetails &&\r\n this.state.hasRights &&\r\n this.state.costTypes.map((type, index) => this.renderCostType(type, index))}\r\n\r\n {this.state.caseVehicleCosts && this.state.caseVehicleCosts.length && !this.state.hasRights\r\n ? this.renderCostDetailsFromCase()\r\n : ''}\r\n \r\n );\r\n };\r\n\r\n renderCostTypeFromCase = (cost: Cost, index: number) => {\r\n const indexLang = cost?.costType?.translations.findIndex(\r\n (lang) => lang.language === this.translatorService.GetLanguage()\r\n );\r\n if (indexLang === undefined || indexLang < 0) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n \r\n {cost?.costType?.translations[indexLang].name}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {cost.attachments && cost.attachments.length !== 0\r\n ? cost.attachments.map((attach, index) => {\r\n return (\r\n
\r\n
\r\n \r\n this.downloadVehicleCostFile(attach.fileName, attach.originalFileName)\r\n }\r\n >\r\n {attach.originalFileName}\r\n \r\n
\r\n
\r\n );\r\n })\r\n : ''}\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n renderCostDetailsFromCase() {\r\n return (\r\n
\r\n {this.state?.caseVehicleCosts &&\r\n this.state?.caseVehicleCosts?.map((cost, index) =>\r\n this.renderCostTypeFromCase(cost, index)\r\n )}\r\n
\r\n );\r\n }\r\n renderPaymentDetailsWithCurrencyForm = () => {\r\n const caseHasVAT = this.state.paymentAmountVAT !== 0;\r\n\r\n const priceLabel = caseHasVAT\r\n ? this.translatorService.Tranlate(\r\n 'CASE_PAYMENT_DETAILS_FORM_PAYMENT_AMOUNT_WITH_VAT_LABEL',\r\n 'Suma cu TVA'\r\n )\r\n : this.translatorService.Tranlate('CASE_PAYMENT_DETAILS_TIMELINE_TOTAL_SUM', 'Suma cu TVA');\r\n\r\n return isNullOrUndefined(this.state.comment) ? null : (\r\n {\r\n this.sendEmail(true);\r\n }}\r\n >\r\n
\r\n ) => {\r\n this.setState({ comment: e.target.value });\r\n }}\r\n variant=\"outlined\"\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n\r\n {caseHasVAT && (\r\n <>\r\n \r\n\r\n \r\n \r\n )}\r\n \r\n\r\n \r\n this.handleCurrencyTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n this.updateOnblur()}\r\n validators={['isIbanValid']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'CASE_PAYMENT_DETAILS_FORM_IBAN_INVALID_WARNING',\r\n 'IBAN-ul este invalid'\r\n )\r\n ]}\r\n InputLabelProps={{\r\n className:\r\n this.state.cursorBankAccount.outerValue !== '' ? 'MuiInputLabel-shrink' : ''\r\n }}\r\n InputProps={{\r\n inputComponent: ({ inputRef: {}, ...rest }) => {\r\n return (\r\n this.handleBankAccountChange(e)}\r\n />\r\n );\r\n }\r\n }}\r\n />\r\n {this.renderAttachmentBox()}\r\n {this.renderCostDetails()}\r\n {this.renderAssignementForm()}\r\n
\r\n\r\n \r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n \r\n );\r\n };\r\n\r\n rendePaymentDetailsForm = () => {\r\n return isNullOrUndefined(this.state.comment) ? null : (\r\n {\r\n this.sendEmail(false);\r\n }}\r\n >\r\n
\r\n ) => {\r\n this.setState({ comment: e.target.value });\r\n }}\r\n variant=\"outlined\"\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n\r\n \r\n this.handlePaymentTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n {/* \r\n this.handleRequestNoChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n /> */}\r\n
\r\n this.setState({ hasFransiza: e.currentTarget.checked })}\r\n color=\"primary\"\r\n id=\"isActive\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n labelPlacement=\"start\"\r\n label={this.translatorService.Tranlate(\r\n 'CASE_PAYMENT_DETAILS_FORM_HAS_FRANSIZA_LABEL',\r\n 'Are fransiza'\r\n )}\r\n />\r\n
\r\n \r\n\r\n \r\n this.updateOnblur()}\r\n validators={['isIbanValid']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'CASE_PAYMENT_DETAILS_FORM_IBAN_INVALID_WARNING',\r\n 'IBAN-ul este invalid'\r\n )\r\n ]}\r\n InputLabelProps={{\r\n className:\r\n this.state.cursorBankAccount.outerValue !== '' ? 'MuiInputLabel-shrink' : ''\r\n }}\r\n InputProps={{\r\n inputComponent: ({ inputRef: {}, ...rest }) => {\r\n return (\r\n this.handleBankAccountChange(e)}\r\n />\r\n );\r\n }\r\n }}\r\n />\r\n\r\n {this.renderAttachmentBox()}\r\n {this.renderAssignementForm()}\r\n
\r\n\r\n \r\n {this.translatorService.Tranlate('PAYMENT_DETAILS_SAVE', 'Salveaza')}\r\n \r\n \r\n );\r\n };\r\n\r\n renderAssignementForm = () => {\r\n if (this.state.isUserHidden) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n this.handleOrganizationChange(newValue)\r\n }\r\n getOptionLabel={(option: WorkflowPartner) => option.partner!.displayName || ''}\r\n filterOptions={createFilterOptions({\r\n matchFrom: 'any',\r\n stringify: (option: WorkflowPartner) => option.partner!.displayName\r\n })}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n {!this.state.isLoading2 ? (\r\n this.handleUserChange(newValue)}\r\n getOptionLabel={(option: AppUser) => option.userName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n ) : null}\r\n
\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
\r\n {this.props.withCurrency === false\r\n ? this.rendePaymentDetailsForm()\r\n : this.renderPaymentDetailsWithCurrencyForm()}\r\n\r\n \r\n\r\n {this.state.paymentHistory.length > 0 ? (\r\n
\r\n {this.showPaymentHistoryTimeline()}\r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabPaymentDetailsFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabPaymentDetailsForm as any));\r\n","import * as React from 'react';\r\nimport { ApplicationState, AppState, CaseSettingsState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { IOrderService } from '../../services/Interfaces/IOrderService';\r\nimport {\r\n Box,\r\n Button,\r\n Card,\r\n FormControl,\r\n InputLabel,\r\n MenuItem,\r\n Radio,\r\n Select,\r\n TextField,\r\n Tooltip\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { CaseCalculationAlternativePart, CaseCalculationHistory, CaseCalculationPart, TariffPercentResponse } from '../../interfaces/Case';\r\nimport { PartToBeOrdered } from '../../interfaces/Order';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { AlternativeCode, CalculationSectionCodeEnum, ReferentialCode } from '../../helpers/Constants';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport MaterialTable, { Column, Icons, EditComponentProps } from 'material-table';\r\nimport { forwardRef } from 'react';\r\nimport Check from '@material-ui/icons/Check';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { Organization } from '../../interfaces/Organization';\r\nimport { IWorkflowService } from '../../services/Interfaces/IWorkflowService';\r\nimport * as R from 'ramda';\r\nimport _ from 'lodash';\r\nimport NumberFormat from 'react-number-format';\r\nimport { Utils } from '../../helpers/Utils';\r\n\r\nconst tableIcons = {\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\nexport interface ExternalUpdateOrderPartProps {\r\n partDetails: PartToBeOrdered;\r\n currency: string;\r\n workflowId: any;\r\n workflowSuppliersList: any[];\r\n additionTariff: TariffPercentResponse;\r\n discountTariff: TariffPercentResponse;\r\n onSave: () => void;\r\n}\r\n\r\ntype UpdateOrderPartProps = ExternalUpdateOrderPartProps & {\r\n appState: AppState;\r\n caseSettings: CaseSettingsState;\r\n} & ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface IUpdateOrderPartState {\r\n isLoading: boolean;\r\n orderpartsList: PartToBeOrdered[];\r\n qualityParts: IReferential[];\r\n selectedQualityPart: IReferential[];\r\n workflowSuppliers: Organization[];\r\n alternativeParts: CaseCalculationAlternativePart[];\r\n clearStateAlternativeParts: boolean;\r\n partLoader: boolean;\r\n calculationParts: CaseCalculationPart[];\r\n sections: IReferential[];\r\n}\r\n\r\nclass UpdateOrderPart extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private orderService!: IOrderService;\r\n private appReferentialService!: IReferentialService;\r\n private appUserService!: IAppUserService;\r\n private caseService!: ICaseService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: true,\r\n orderpartsList: [],\r\n qualityParts: [],\r\n selectedQualityPart: [],\r\n workflowSuppliers: [],\r\n alternativeParts: [],\r\n clearStateAlternativeParts: false,\r\n partLoader: false,\r\n calculationParts: [],\r\n sections: []\r\n } as IUpdateOrderPartState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: false\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n }\r\n\r\n loadData = async () => {\r\n const refQualityPart = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CarPartCategory\r\n );\r\n\r\n const [qualityParts, calculationParts, sections] = await Promise.all([\r\n this.appReferentialService.Get(refQualityPart!.baseUrl),\r\n this.props.partDetails!.caseCalculationHistoryId ? this.caseService.GetCaseCalculationParts(this.props.partDetails!.caseCalculationHistoryId) : ([] as CaseCalculationPart[]),\r\n this.caseService.GetCalculationSections()\r\n ]);\r\n\r\n const workflowSuppliersList = this.props.workflowSuppliersList;\r\n const suppliersInit =\r\n workflowSuppliersList.length > 0\r\n ? await this.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(workflowSuppliersList.map((item) => item.supplierId)))\r\n )\r\n : [];\r\n const suppliers = suppliersInit.filter((item) => item.isActive === true);\r\n console.log('calculationParts', calculationParts);\r\n console.log('groupedUniqueId', this.props.partDetails!.groupedUniqueId);\r\n const calculationPartsCopy = calculationParts.filter((item) => (item.groupedUniqueId !== null && item.groupedUniqueId !== this.props.partDetails!.groupedUniqueId) || (item.groupedUniqueId === null && item.id !== this.props.partDetails!.caseCalculationPartId));\r\n const selectedCalculationPart = calculationParts.find((item) => item.groupedUniqueId === this.props.partDetails!.groupedUniqueId && item.id === this.props.partDetails!.caseCalculationPartId);\r\n console.log('calculationPartsCopy', calculationPartsCopy);\r\n console.log('selectedCalculationPart', selectedCalculationPart);\r\n console.log('calculationPartsResult', calculationPartsCopy.concat([selectedCalculationPart!]));\r\n this.setState({\r\n orderpartsList: [this.props.partDetails!],\r\n qualityParts: qualityParts,\r\n workflowSuppliers: suppliers,\r\n isLoading: false,\r\n calculationParts: calculationPartsCopy.concat([selectedCalculationPart!]),\r\n sections: sections\r\n });\r\n };\r\n\r\n public renderTable = () => {\r\n return (\r\n this.onRowUpdate(newData, oldData)\r\n }}\r\n />\r\n );\r\n };\r\n\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza')\r\n }\r\n }\r\n };\r\n };\r\n\r\n onRowUpdate = (newData: PartToBeOrdered, oldData?: PartToBeOrdered): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n const quality = this.state.qualityParts.find((item) => item.id === newData.carPartCategoryId);\r\n const supplier = this.state.workflowSuppliers.find((item) => item.id === newData.supplierId);\r\n newData.carPartCategory = !R.isNil(quality) ? quality : null;\r\n newData.supplier = !R.isNil(supplier) ? supplier : null;\r\n\r\n if (!this.validateRef(newData)) {\r\n reject();\r\n return;\r\n }\r\n\r\n if (oldData) {\r\n try {\r\n const item = { ...newData };\r\n item.alternativePartQuality = null;\r\n item.carPartCategory = null;\r\n item.supplier = null;\r\n this.setState((prevState: IUpdateOrderPartState) => {\r\n const orderpartsList = [...this.state.orderpartsList];\r\n orderpartsList[orderpartsList.indexOf(oldData)] = newData;\r\n\r\n return { ...prevState, orderpartsList: orderpartsList };\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n validateRef = (orderPart: PartToBeOrdered): boolean => {\r\n if (\r\n orderPart.guideNumber === '' ||\r\n orderPart.guideNumber === undefined ||\r\n orderPart.guideNumber === null\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_CODE_EMPTY', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n\r\n if (orderPart.name === '' || orderPart.name === undefined || orderPart.name === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ORDER_PART_ERROR_NAME_EMPTY', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n\r\n const price =\r\n orderPart.alternativePartQualityId === null\r\n ? orderPart.originalPrice\r\n : orderPart.alternativePrice;\r\n if ((price !== null && price.toString() === '') || price === undefined || price === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ORDER_PART_ERROR_ORIG_PRICE_EMPTY', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n if (price < 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ORDER_PART_ERROR_ORIG_PRICE_INVALID', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n\r\n if (\r\n orderPart.pieceNr.toString() === '' ||\r\n orderPart.pieceNr === undefined ||\r\n orderPart.pieceNr === null\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ORDER_PART_ERROR_UNITS_EMPTY', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n const discount =\r\n orderPart.alternativePartQualityId === null\r\n ? orderPart.discount\r\n : orderPart.alternativePartDiscount;\r\n if ((discount !== null && discount < 0) || (discount !== null && discount > 100)) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ORDER_PART_ERROR_DISCOUNT_INVALID', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n handlePriceChange = (event: any, gridProps: any) => {\r\n const row = gridProps.rowData;\r\n if (row.alternativePartQualityId === null) {\r\n row.originalPrice = event.target.value;\r\n } else {\r\n row.alternativePrice = event.target.value;\r\n }\r\n\r\n gridProps.onRowDataChange({\r\n ...gridProps.rowData\r\n });\r\n };\r\n\r\n handlePieceNrChange = (event: any, gridProps: any) => {\r\n const row = gridProps.rowData;\r\n row.pieceNr = event.target.value === null ? 0 : parseFloat(event.target.value);\r\n\r\n gridProps.onRowDataChange({\r\n ...gridProps.rowData\r\n });\r\n };\r\n\r\n handleDiscountChange = (event: any, gridProps: any) => {\r\n const row = gridProps.rowData;\r\n if (row.alternativePartQualityId === null) {\r\n row.discount = event.target.value;\r\n } else {\r\n row.alternativePartDiscount = event.target.value;\r\n }\r\n\r\n gridProps.onRowDataChange({\r\n ...gridProps.rowData\r\n });\r\n };\r\n\r\n handleProducerChange = (event: any, gridProps: any) => {\r\n const row = gridProps.rowData;\r\n row.producer = event.target.value;\r\n\r\n gridProps.onRowDataChange({\r\n ...gridProps.rowData\r\n });\r\n };\r\n\r\n handleDeliveryTimeChange = (event: any, gridProps: any) => {\r\n const row = gridProps.rowData;\r\n row.deliveryTime = event.target.value;\r\n\r\n gridProps.onRowDataChange({\r\n ...gridProps.rowData\r\n });\r\n };\r\n\r\n handleStockChange = (event: any, gridProps: any) => {\r\n const row = gridProps.rowData;\r\n if (row.alternativePartQualityId === null) {\r\n row.availableQuantity = event.target.value;\r\n } else {\r\n row.alternativePartStockQuantity = event.target.value;\r\n }\r\n\r\n gridProps.onRowDataChange({\r\n ...gridProps.rowData\r\n });\r\n };\r\n\r\n handleLocationChange = (event: any, gridProps: any) => {\r\n const row = gridProps.rowData;\r\n if (row.alternativePartQualityId === null) {\r\n row.location = event.target.value;\r\n } else {\r\n row.alternativePartStockLocation = event.target.value;\r\n }\r\n\r\n gridProps.onRowDataChange({\r\n ...gridProps.rowData\r\n });\r\n };\r\n\r\n handleRemarksChange = (event: any, gridProps: any) => {\r\n const row = gridProps.rowData;\r\n if (row.alternativePartQualityId === null) {\r\n row.remarks = event.target.value;\r\n } else {\r\n row.alternativePartRemarks = event.target.value;\r\n }\r\n\r\n gridProps.onRowDataChange({\r\n ...gridProps.rowData\r\n });\r\n };\r\n\r\n handleQualityChange = (event: any, gridProps: any) => {\r\n const row = gridProps.rowData;\r\n const quality = this.state.qualityParts.find((item) => item.id === event.target.value);\r\n if (row.alternativePartQualityId === null) {\r\n row.carPartCategoryId = !R.isNil(quality) ? quality.id : null;\r\n row.carPartCategory = !R.isNil(quality) ? quality : null;\r\n } else {\r\n row.alternativePartQualityId = !R.isNil(quality) ? quality.id : null;\r\n row.alternativePartQuality = !R.isNil(quality) ? quality : null;\r\n }\r\n\r\n gridProps.onChange(event.target.value);\r\n\r\n gridProps.onRowDataChange({\r\n ...gridProps.rowData\r\n });\r\n };\r\n\r\n displayOrderPartOtherDetails = (supplier: any, id: any) => {\r\n const orderPart = this.state.orderpartsList.find((item) => item.id === id);\r\n return (\r\n \r\n
\r\n {this.translatorService.Tranlate('ORDER_PART_DETAILS_PRODUCER_LABEL', 'Producator') +\r\n ': ' +\r\n (R.isNil(orderPart!.producer) ? '' : orderPart!.producer)}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'ORDER_PART_DETAILS_DELIVERY_TIME_LABEL',\r\n 'Livrare'\r\n ) +\r\n ': ' +\r\n (R.isNil(orderPart!.deliveryTime) ? '' : orderPart!.deliveryTime)}\r\n
\r\n
\r\n {this.translatorService.Tranlate('ORDER_PART_DETAILS_STOCK_LABEL', 'Disponibil') +\r\n ': ' +\r\n (orderPart!.alternativePartQualityId === null\r\n ? orderPart!.availableStock\r\n : orderPart!.alternativePartStockQuantity === null\r\n ? ''\r\n : orderPart!.alternativePartStockQuantity)}\r\n
\r\n
\r\n {this.translatorService.Tranlate('ORDER_PART_DETAILS_LOCATION_LABEL', 'Locatie') +\r\n ': ' +\r\n (orderPart!.alternativePartQualityId === null\r\n ? orderPart!.location\r\n : orderPart!.alternativePartStockLocation)}\r\n
\r\n
\r\n }\r\n >\r\n
\r\n {(R.isNil(supplier) ? 'N/A' : supplier.name) + ' '}\r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n renderOrderPartDetailsEditable = (props: EditComponentProps) => {\r\n return (\r\n
\r\n \r\n \r\n {this.translatorService.Tranlate('ORDER_PART_DETAILS_SUPPLIER_LABEL', 'Furnizor')}\r\n \r\n props.onChange(e.target.value)}\r\n >\r\n {this.state.workflowSuppliers.map((item) => (\r\n \r\n {item.name}\r\n \r\n ))}\r\n \r\n \r\n this.handleProducerChange(e, props)}\r\n />\r\n this.handleDeliveryTimeChange(e, props)}\r\n />\r\n this.handleStockChange(e, props)}\r\n />\r\n this.handleLocationChange(e, props)}\r\n />\r\n
\r\n );\r\n };\r\n\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n isNumericString\r\n />\r\n );\r\n };\r\n \r\n getColumns = () => {\r\n return [\r\n {\r\n field: 'id',\r\n hidden: true,\r\n title: ''\r\n } as Column,\r\n {\r\n field: 'guideNumber',\r\n title: this.translatorService.Tranlate('ORDER_PART_DETAILS_CODE_LABEL', 'Cod'),\r\n render: (rowData: any) => {\r\n return (\r\n \r\n );\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n \r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'name',\r\n title: this.translatorService.Tranlate('ORDER_PART_DETAILS_NAME_LABEL', 'Denumire')\r\n } as Column,\r\n {\r\n field: 'carPartCategoryId',\r\n title: this.translatorService.Tranlate('ORDER_PART_DETAILS_QUALITY_LABEL', 'Calitate'),\r\n render: (rowData: any) => {\r\n if (rowData.alternativePartQualityId === null) {\r\n return rowData.carPartCategory.displayName;\r\n } else {\r\n return rowData.alternativePartQuality.displayName;\r\n }\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n this.handleQualityChange(e, props)}\r\n >\r\n {this.state.qualityParts.map((item) => (\r\n \r\n {item.displayName}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'originalPrice',\r\n title: this.translatorService.Tranlate(\r\n 'ORDER_PART_DETAILS_ORIGINAL_PRICE_LABEL',\r\n 'Pret unitar'\r\n ),\r\n render: (rowData: any) => {\r\n if (rowData.alternativePartQualityId === null) {\r\n return (\r\n Utils.countryNumberFormat((Math.round(rowData.originalPrice * 100) / 100).toFixed(2), this.props.appState.appUser?.organization?.country ?? null) + ' ' + this.props.currency\r\n );\r\n } else {\r\n return (\r\n Utils.countryNumberFormat((Math.round(rowData.alternativePrice * 100) / 100).toFixed(2), this.props.appState.appUser?.organization?.country ?? null) +\r\n ' ' +\r\n this.props.currency\r\n );\r\n }\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n this.handlePriceChange(e, props)}\r\n />\r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'pieceNr',\r\n title: this.translatorService.Tranlate('ORDER_PART_DETAILS_PIECE_NR_LABEL', 'Unitati'),\r\n render: (rowData: any) => {\r\n return rowData.pieceNr;\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n this.handlePieceNrChange(e, props)}\r\n />\r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'discount',\r\n title: this.translatorService.Tranlate('ORDER_PART_DETAILS_DISCOUNT_LABEL', 'Discount (%)'),\r\n render: (rowData: any) => {\r\n if (rowData.alternativePartQualityId === null) {\r\n return rowData.discount;\r\n } else {\r\n return rowData.alternativePartDiscount;\r\n }\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n this.handleDiscountChange(e, props)}\r\n />\r\n );\r\n }\r\n } as Column,\r\n {\r\n field: '',\r\n title: this.translatorService.Tranlate(\r\n 'ORDER_PART_DETAILS_TOTAL_PRICE_LABEL',\r\n 'Pret total'\r\n ),\r\n render: (rowData: any) => {\r\n if (rowData.alternativePartQualityId === null) {\r\n if (R.isNil(rowData.discount)) {\r\n return (\r\n Utils.countryNumberFormat((Math.round(rowData.pieceNr * rowData.originalPrice * 100) / 100).toFixed(2), this.props.appState.appUser?.organization?.country ?? null) +\r\n ' ' +\r\n this.props.currency\r\n );\r\n }\r\n return (\r\n Utils.countryNumberFormat((\r\n Math.round(\r\n (rowData.pieceNr * rowData.originalPrice -\r\n (rowData.pieceNr * rowData.originalPrice * rowData.discount) / 100) *\r\n 100\r\n ) / 100\r\n ).toFixed(2), this.props.appState.appUser?.organization?.country ?? null) +\r\n ' ' +\r\n this.props.currency\r\n );\r\n } else {\r\n if (R.isNil(rowData.alternativePartDiscount)) {\r\n return (\r\n Utils.countryNumberFormat((Math.round(rowData.pieceNr * rowData.alternativePrice * 100) / 100).toFixed(2), this.props.appState.appUser?.organization?.country ?? null) +\r\n ' ' +\r\n this.props.currency\r\n );\r\n }\r\n return (\r\n Utils.countryNumberFormat((\r\n Math.round(\r\n (rowData.pieceNr * rowData.alternativePrice -\r\n (rowData.pieceNr * rowData.alternativePrice * rowData.alternativePartDiscount) /\r\n 100) *\r\n 100\r\n ) / 100\r\n ).toFixed(2), this.props.appState.appUser?.organization?.country ?? null) +\r\n ' ' +\r\n this.props.currency\r\n );\r\n }\r\n }\r\n } as Column,\r\n {\r\n field: 'supplierId',\r\n title: this.translatorService.Tranlate('ORDER_PART_OTHER_DETAILS_LABEL', 'Detalii'),\r\n render: (rowData: any) => {\r\n return (\r\n
\r\n \r\n {this.translatorService.Tranlate('ORDER_PART_DETAILS_SUPPLIER_LABEL', 'Furnizor')}\r\n \r\n {this.displayOrderPartOtherDetails(rowData.supplier, rowData.id)}\r\n
\r\n );\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return this.renderOrderPartDetailsEditable(props);\r\n }\r\n } as Column,\r\n {\r\n field: 'remarks',\r\n title: this.translatorService.Tranlate('ORDER_PART_DETAILS_REMARKS_LABEL', 'Observatii'),\r\n render: (rowData: any) => {\r\n if (rowData.alternativePartQualityId === null) {\r\n return rowData.remarks;\r\n } else {\r\n return rowData.alternativePartRemarks;\r\n }\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n this.handleRemarksChange(e, props)}\r\n />\r\n );\r\n }\r\n } as Column\r\n ];\r\n };\r\n\r\n getCalculationParts = (alternativePart: CaseCalculationAlternativePart, calculationPartIndex: number, part: PartToBeOrdered): CaseCalculationPart[] => {\r\n const calculationParts = this.state.calculationParts;\r\n if (calculationPartIndex !== -1) {\r\n calculationParts[calculationPartIndex] = {\r\n ...calculationParts[calculationPartIndex],\r\n alternativePrice: alternativePart.alternativePrice,\r\n alternativePartDiscount: alternativePart.alternativePartDiscount,\r\n alternativeGuideNumber: alternativePart.alternativeGuideNumber,\r\n alternativePartCode: alternativePart.alternativePartCode,\r\n alternativePartQuality: alternativePart.alternativePartQuality,\r\n alternativePartQualityId: alternativePart.alternativePartQualityId,\r\n alternativePartName: alternativePart.name,\r\n alternativePartStockLocation: alternativePart.stockLocation,\r\n alternativePartStockQuantity: alternativePart.availableQuantity,\r\n supplier: alternativePart.supplier,\r\n supplierId: alternativePart.supplierId,\r\n producer: alternativePart.producer,\r\n deliveryTime: alternativePart.deliveryTime.toString(),\r\n validityTime: alternativePart.validityTime?.toString() || null,\r\n codeType: alternativePart.codeType?.toString() || null,\r\n type: alternativePart.type?.toString() || null,\r\n orderCode: alternativePart.orderCode?.toString() || null,\r\n locationId: alternativePart.locationId || null,\r\n alternativePartRemarks: alternativePart.remarks,\r\n minQty: alternativePart.minQty,\r\n packing: alternativePart.packing,\r\n bundleItem: alternativePart.bundleItem,\r\n bundleNo: alternativePart.bundleNo,\r\n bundleQuantity: alternativePart.bundleQuantity,\r\n excludeFromOrder: alternativePart.excludeFromOrder,\r\n isChild: alternativePart.isChild,\r\n productId: alternativePart.productId || null,\r\n codEan: alternativePart.codEan?.toString() || null,\r\n id: part.caseCalculationPartId,\r\n alternativePriceWithoutDiscount: alternativePart.alternativePriceWithoutDiscount,\r\n availableQuantity: alternativePart.availableQuantity\r\n }\r\n if (part.package && part.package.length) {\r\n for (let j = 0; j < part.package.length; j++) {\r\n calculationParts.push({\r\n guideNumber: part.package[j].guideNumber,\r\n name: part.package[j].name,\r\n pieceNr: part.package[j].pieceNr,\r\n alternativePrice: part.package[j].alternativePrice,\r\n alternativePartDiscount: part.package[j].alternativePartDiscount,\r\n alternativeGuideNumber: part.package[j].alternativeGuideNumber,\r\n alternativePartCode: part.package[j].alternativePartCode,\r\n alternativePartQuality: part.package[j].alternativePartQuality,\r\n alternativePartQualityId: part.package[j].alternativePartQualityId,\r\n alternativePartName: part.package[j].name,\r\n alternativePartStockLocation: part.package[j].stockLocation,\r\n alternativePartStockQuantity: part.package[j].availableQuantity,\r\n supplier: part.package[j].supplier,\r\n supplierId: part.package[j].supplierId,\r\n producer: part.package[j].producer,\r\n deliveryTime: part.package[j].deliveryTime.toString(),\r\n validityTime: part.package[j].validityTime?.toString() || null,\r\n codeType: part.package[j].codeType?.toString() || null,\r\n type: part.package[j].type?.toString() || null,\r\n orderCode: part.package[j].orderCode?.toString() || null,\r\n locationId: part.package[j].locationId || null,\r\n alternativePartRemarks: part.package[j].remarks,\r\n minQty: part.package[j].minQty,\r\n packing: part.package[j].packing,\r\n bundleItem: part.package[j].bundleItem,\r\n bundleNo: part.package[j].bundleNo,\r\n bundleQuantity: part.package[j].bundleQuantity,\r\n excludeFromOrder: part.package[j].excludeFromOrder,\r\n isChild: part.package[j].isChild,\r\n productId: part.package[j].productId || null,\r\n codEan: part.package[j].codEan?.toString() || null,\r\n id: 0,\r\n caseCalculationHistoryId: part.caseCalculationHistory.id,\r\n calculationSectionId: this.state.sections.find((item) => item.code === CalculationSectionCodeEnum.PART)!.id,\r\n groupedUniqueId: part.groupedUniqueId,\r\n alternativeNetPrice: part.package[j].alternativeNetPrice,\r\n alternativePriceWithoutDiscount: part.package[j].alternativePriceWithoutDiscount,\r\n availableQuantity: part.availableQuantity\r\n } as CaseCalculationPart);\r\n }\r\n }\r\n\r\n calculationParts.forEach((item) => {\r\n item.calculationSection = null;\r\n item.carPartCategory = null;\r\n item.alternativePartQuality = null;\r\n item.supplier = null;\r\n });\r\n }\r\n return calculationParts;\r\n }\r\n\r\n save = async () => {\r\n try {\r\n const part = this.state.orderpartsList[0];\r\n const alternativePart = this.state.alternativeParts.find(\r\n (item) => item.selectedAlternativePart !== 9999999999999\r\n );\r\n console.log('Part', part);\r\n console.log('AlternativePart', alternativePart);\r\n if (this.state.alternativeParts.length > 0 && !R.isNil(alternativePart)) {\r\n if (!R.isNil(alternativePart)) {\r\n if (\r\n alternativePart!.availableQuantity !== null &&\r\n alternativePart!.availableQuantity < part.pieceNr\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ORDER_MAX_QUANTITY_ALERT_MSG',\r\n 'Cantitatea disponibila este insuficienta!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n const currentPacking = alternativePart.packing?.split('|')[0];\r\n const secondItemOfPacking = alternativePart.packing?.split('|')[1];\r\n if (currentPacking && secondItemOfPacking) {\r\n const currentPackingNumber = parseFloat(currentPacking);\r\n if (\r\n part.pieceNr % currentPackingNumber != 0 ||\r\n part.pieceNr < alternativePart.minQty\r\n ) {\r\n this.props.enqueueSnackbar( this.translatorService.Tranlate(\r\n 'MIN_PACKING_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie '\r\n ) +\r\n alternativePart.minQty +\r\n this.translatorService.Tranlate('MIN_PACKING_MULTIPLE_ERROR_MSG', ' sau multiplul acesteia!') + ' \\n', {\r\n variant: 'error',\r\n style: { whiteSpace: 'pre-line' }\r\n });\r\n return;\r\n }\r\n } else {\r\n if (part.pieceNr < alternativePart.minQty) {\r\n this.props.enqueueSnackbar( this.translatorService.Tranlate(\r\n 'MIN_PACKING_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie '\r\n ) +\r\n alternativePart.minQty +\r\n this.translatorService.Tranlate('MIN_PACKING_MULTIPLE_ERROR_MSG', ' sau multiplul acesteia!') + ' \\n', {\r\n variant: 'error',\r\n style: { whiteSpace: 'pre-line' }\r\n });\r\n return;\r\n }\r\n }\r\n\r\n if (!Number.isInteger(part.pieceNr)) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'DECIMAL_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie un numar intreg fara zecimale'\r\n ),\r\n {\r\n variant: 'error'\r\n }\r\n );\r\n return;\r\n }\r\n\r\n if (!R.isNil(alternativePart.availableQuantity) && alternativePart.availableQuantity < part.pieceNr) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ORDER_MAX_QUANTITY_ALERT_MSG',\r\n 'Cantitatea disponibila este insuficienta!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n \r\n part.alternativePartQuality = null;\r\n part.carPartCategory = null;\r\n part.supplier = null;\r\n\r\n let calculationParts = this.state.calculationParts;\r\n const calculationPartIndex = calculationParts.findIndex((x) => x.id === part.caseCalculationPartId);\r\n if (calculationPartIndex !== -1) {\r\n calculationParts = this.getCalculationParts(alternativePart, calculationPartIndex, part);\r\n calculationParts[calculationPartIndex].interogationList = JSON.stringify(this.state.alternativeParts);\r\n await this.caseService.UpdateCalculationPartsAndCasePartToBeOrdered(\r\n calculationParts,\r\n \"\",\r\n \"\",\r\n part.caseCalculationHistory.id,\r\n part.caseCalculationHistory.partsLocationOrganizationId,\r\n this.props.appState.appUser!.organizationId,\r\n this.props.appState.appUser!.organizationId,\r\n this.props.appState.appUser!.organization!.name\r\n );\r\n part.caseCalculationHistory = null as unknown as CaseCalculationHistory;\r\n \r\n await this.orderService.UpdatePartToBeOrdered(part);\r\n\r\n this.props.onSave();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } else {\r\n console.log(\"Nu s-a gasit piesa alternativa!\");\r\n }\r\n \r\n }\r\n } catch (err) {\r\n console.log(err);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n renderOrderPartsSection = () => {\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n
\r\n );\r\n };\r\n\r\n interogateAlternativeParts = async (partDetails: PartToBeOrdered) => {\r\n try {\r\n this.setState({\r\n partLoader: true\r\n });\r\n const alternativeParts = await this.caseService.InterogateCaseCalculationsAlternativeParts(\r\n partDetails.id,\r\n partDetails.guideNumber,\r\n this.props.additionTariff.value,\r\n this.props.discountTariff.value,\r\n this.props.caseSettings.caseSettings!.workflow.id, \r\n partDetails.caseCalculationHistory.partsLocationOrganizationId \r\n );\r\n\r\n this.setState({\r\n alternativeParts: alternativeParts,\r\n partLoader: false\r\n });\r\n\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n\r\n handleAlternativePartSelect = (\r\n id: number,\r\n originalPartid: number,\r\n alternativePart: CaseCalculationAlternativePart\r\n ) => {\r\n const caseCalculationOriginalPartsCopy = [...this.state.orderpartsList];\r\n const originalPartIndex = caseCalculationOriginalPartsCopy.findIndex(\r\n (item) => item.id === originalPartid\r\n );\r\n caseCalculationOriginalPartsCopy[originalPartIndex] = {\r\n ...caseCalculationOriginalPartsCopy[originalPartIndex],\r\n alternativePrice: alternativePart.alternativePrice,\r\n alternativePartDiscount: alternativePart.alternativePartDiscount,\r\n alternativeGuideNumber: alternativePart.alternativeGuideNumber,\r\n alternativePartCode: alternativePart.alternativePartCode,\r\n alternativePartQuality: alternativePart.alternativePartQuality,\r\n alternativePartQualityId: alternativePart.alternativePartQualityId,\r\n alternativePartName: alternativePart.name,\r\n alternativePartStockLocation: alternativePart.stockLocation,\r\n alternativePartStockQuantity: alternativePart.availableQuantity,\r\n supplier: alternativePart.supplier,\r\n supplierId: alternativePart.supplierId,\r\n producer: alternativePart.producer,\r\n deliveryTime: alternativePart.deliveryTime.toString(),\r\n validityTime: alternativePart.validityTime?.toString() || null,\r\n codeType: alternativePart.codeType?.toString() || null,\r\n type: alternativePart.type?.toString() || null,\r\n orderCode: alternativePart.orderCode?.toString() || null,\r\n locationId: alternativePart.locationId || null,\r\n alternativePartRemarks: alternativePart.remarks,\r\n minQty: alternativePart.minQty,\r\n packing: alternativePart.packing,\r\n bundleItem: alternativePart.bundleItem,\r\n bundleNo: alternativePart.bundleNo,\r\n bundleQuantity: alternativePart.bundleQuantity,\r\n excludeFromOrder: alternativePart.excludeFromOrder,\r\n isChild: alternativePart.isChild,\r\n productId: alternativePart.productId || null,\r\n codEan: alternativePart.codEan?.toString() || null,\r\n alternativePriceWithoutDiscount: alternativePart.alternativePriceWithoutDiscount,\r\n availableQuantity: alternativePart.availableQuantity\r\n };\r\n console.log('Selected Part', caseCalculationOriginalPartsCopy[originalPartIndex]);\r\n\r\n const currentPacking = caseCalculationOriginalPartsCopy[originalPartIndex].packing?.split('|')[0];\r\n const secondItemOfPacking = caseCalculationOriginalPartsCopy[originalPartIndex].packing?.split('|')[1];\r\n \r\n const caseCalculationAlternativePartCopy = [...this.state.alternativeParts];\r\n const specificAlternativeParts = this.state.alternativeParts\r\n .filter(\r\n (alternativePart) =>\r\n alternativePart.originalPartId === caseCalculationOriginalPartsCopy[originalPartIndex].id\r\n )\r\n .sort(function (a: any, b: any) {\r\n return a.id - b.id;\r\n });\r\n const findAlternativePartGroup = _.filter(specificAlternativeParts, function (object) {\r\n return (\r\n object.bundleNo != null &&\r\n object.bundleNo == caseCalculationOriginalPartsCopy[originalPartIndex].bundleNo &&\r\n object.alternativePartCode !=\r\n caseCalculationOriginalPartsCopy[originalPartIndex].alternativePartCode\r\n );\r\n });\r\n \r\n const idList: any = [];\r\n for (let i = 0; i < findAlternativePartGroup.length; i++) {\r\n idList.push(findAlternativePartGroup[i].id);\r\n }\r\n\r\n \r\n caseCalculationAlternativePartCopy.forEach((item) => {\r\n item.selectedAlternativePart =\r\n item.originalPartId === originalPartid\r\n ? item.id === id\r\n ? id\r\n : 9999999999999\r\n : item.selectedAlternativePart;\r\n item.partFromGroup =\r\n item.originalPartId === originalPartid\r\n ? idList.includes(item.id)\r\n ? item.id\r\n : 9999999999999\r\n : item.partFromGroup;\r\n if (\r\n item.originalPartId === originalPartid &&\r\n item.selectedAlternativePart !== 9999999999999\r\n ) {\r\n const initialCaseCalculationOriginalParts = {\r\n ...caseCalculationOriginalPartsCopy[originalPartIndex]\r\n };\r\n caseCalculationOriginalPartsCopy[originalPartIndex].package = [];\r\n if (currentPacking && secondItemOfPacking) {\r\n const currentPackingNumber = parseFloat(currentPacking);\r\n if (\r\n caseCalculationOriginalPartsCopy[originalPartIndex].pieceNr % currentPackingNumber !=\r\n 0 ||\r\n caseCalculationOriginalPartsCopy[originalPartIndex].pieceNr <\r\n caseCalculationOriginalPartsCopy[originalPartIndex].minQty\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'MIN_PACKING_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie '\r\n ) +\r\n currentPackingNumber +\r\n this.translatorService.Tranlate('MIN_PACKING_MULTIPLE_ERROR_MSG', ' sau multiplul acesteia!'),\r\n { variant: 'error',\r\n autoHideDuration: 5000 }\r\n );\r\n }\r\n } else if (\r\n caseCalculationOriginalPartsCopy[originalPartIndex].pieceNr <\r\n caseCalculationOriginalPartsCopy[originalPartIndex].minQty\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'MIN_PACKING_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie '\r\n ) +\r\n caseCalculationOriginalPartsCopy[originalPartIndex].minQty +\r\n this.translatorService.Tranlate('MIN_PACKING_MULTIPLE_ERROR_MSG', ' sau multiplul acesteia!'),\r\n { variant: 'error',\r\n autoHideDuration: 5000 }\r\n );\r\n }\r\n if (findAlternativePartGroup.length) {\r\n let displayPopup = true;\r\n let alternativePartString = '';\r\n for (let i = 0; i < findAlternativePartGroup.length; i++) {\r\n if (\r\n findAlternativePartGroup[i].alternativePartCode == AlternativeCode.TAXAMEDIU &&\r\n findAlternativePartGroup.length == 1\r\n ) {\r\n displayPopup = false;\r\n }\r\n alternativePartString +=\r\n findAlternativePartGroup[i].name +\r\n '(' +\r\n findAlternativePartGroup[i].alternativePrice +\r\n ' RON)' +\r\n '\\n';\r\n caseCalculationOriginalPartsCopy[originalPartIndex].package.push({\r\n ...initialCaseCalculationOriginalParts,\r\n id: 0,\r\n originalPrice: 0,\r\n alternativePrice: findAlternativePartGroup[i].alternativePrice,\r\n alternativePartDiscount: findAlternativePartGroup[i].alternativePartDiscount,\r\n alternativeGuideNumber: findAlternativePartGroup[i].alternativeGuideNumber,\r\n alternativePartCode: findAlternativePartGroup[i].alternativePartCode,\r\n alternativePartQuality: findAlternativePartGroup[i].alternativePartQuality,\r\n alternativePartQualityId: findAlternativePartGroup[i].alternativePartQualityId,\r\n alternativePartName: findAlternativePartGroup[i].name,\r\n alternativePartStockLocation: findAlternativePartGroup[i].stockLocation,\r\n alternativePartStockQuantity: findAlternativePartGroup[i].availableQuantity,\r\n supplier: findAlternativePartGroup[i].supplier,\r\n supplierId: findAlternativePartGroup[i].supplierId,\r\n producer: findAlternativePartGroup[i].producer,\r\n deliveryTime: findAlternativePartGroup[i].deliveryTime.toString(),\r\n validityTime: findAlternativePartGroup[i].validityTime?.toString() || null,\r\n codeType: findAlternativePartGroup[i].codeType?.toString() || null,\r\n type: findAlternativePartGroup[i].type?.toString() || null,\r\n orderCode: findAlternativePartGroup[i].orderCode?.toString() || null,\r\n locationId: findAlternativePartGroup[i].locationId || null,\r\n alternativePartRemarks: findAlternativePartGroup[i].remarks,\r\n minQty: findAlternativePartGroup[i].minQty,\r\n packing: findAlternativePartGroup[i].packing,\r\n bundleItem: findAlternativePartGroup[i].bundleItem,\r\n bundleNo: findAlternativePartGroup[i].bundleNo,\r\n bundleQuantity: findAlternativePartGroup[i].bundleQuantity,\r\n excludeFromOrder: true,\r\n productId: findAlternativePartGroup[i].productId || null,\r\n codEan: findAlternativePartGroup[i].codEan || null,\r\n alternativePriceWithoutDiscount: findAlternativePartGroup[i].alternativePriceWithoutDiscount,\r\n availableQuantity: findAlternativePartGroup[i].availableQuantity\r\n });\r\n }\r\n if (displayPopup) {\r\n this.props.enqueueSnackbar(\r\n ' Componente adaugate la comanda: \\n' + alternativePartString,\r\n {\r\n variant: 'error',\r\n style: { whiteSpace: 'pre-line' },\r\n autoHideDuration: 5000 \r\n }\r\n );\r\n }\r\n }\r\n\r\n if (!Number.isInteger(caseCalculationOriginalPartsCopy[originalPartIndex].pieceNr)) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'DECIMAL_ERROR_MSG',\r\n 'Cantitatea comandata trebuie sa fie un numar intreg fara zecimale'\r\n ),\r\n {\r\n variant: 'error',\r\n autoHideDuration: 5000 \r\n }\r\n );\r\n }\r\n\r\n if (\r\n item.availableQuantity !== null &&\r\n item.availableQuantity < caseCalculationOriginalPartsCopy[originalPartIndex].pieceNr\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ORDER_MAX_QUANTITY_ALERT_MSG',\r\n 'Cantitatea disponibila este insuficienta!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n }\r\n }\r\n });\r\n\r\n console.log('caseCalculationAlternativePartCopy', caseCalculationAlternativePartCopy);\r\n console.log('caseCalculationOriginalPartsCopy', caseCalculationOriginalPartsCopy);\r\n this.setState({\r\n alternativeParts: caseCalculationAlternativePartCopy,\r\n orderpartsList: caseCalculationOriginalPartsCopy\r\n });\r\n };\r\n\r\n handleAlternativePartChecked = (selected: number, id: number, partFromGroup: number) => {\r\n return selected === id || partFromGroup == id;\r\n };\r\n\r\n clearSelectedAlternativeParts = async (originalPartId: number) => {\r\n let alternativePartsCopy = [...this.state.alternativeParts];\r\n alternativePartsCopy = alternativePartsCopy.map((item) => {\r\n item.selectedAlternativePart =\r\n item.originalPartId === originalPartId ? 9999999999999 : item.selectedAlternativePart;\r\n item.partFromGroup =\r\n item.originalPartId === originalPartId ? 9999999999999 : item.partFromGroup;\r\n return item;\r\n });\r\n\r\n this.setState({\r\n alternativeParts: alternativePartsCopy,\r\n clearStateAlternativeParts: true\r\n });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.orderService = (this.context as AppContext).orderService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n\r\n return (\r\n \r\n {this.renderOrderPartsSection()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n this.interogateAlternativeParts(this.props.partDetails!)}\r\n className=\"mb-3 float-right bg-success text-white\"\r\n size=\"small\"\r\n variant=\"contained\"\r\n color=\"default\"\r\n >\r\n {this.translatorService.Tranlate('INTEROGATE', 'Interogheaza')}\r\n \r\n
\r\n
\r\n \r\n
\r\n {this.state.partLoader ? null : (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.alternativeParts.length > 0 ? (\r\n this.state.alternativeParts.map((alternativePart, alternativePartindex) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n })\r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n 0 &&\r\n this.state.alternativeParts.some(\r\n (el) => el.selectedAlternativePart !== 9999999999999\r\n )\r\n ? this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_CLEAR_LABEL',\r\n 'Goleste'\r\n )\r\n : ''\r\n }\r\n >\r\n
\r\n 0 &&\r\n this.state.alternativeParts.some(\r\n (el) => el.selectedAlternativePart !== 9999999999999\r\n )\r\n ? false\r\n : true\r\n }\r\n onClick={(e) =>\r\n this.clearSelectedAlternativeParts(this.props.partDetails!.id)\r\n }\r\n className=\"ml-1 min min-w-auto\"\r\n size=\"small\"\r\n variant=\"contained\"\r\n color=\"secondary\"\r\n >\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_NAME_LABEL',\r\n 'Nume'\r\n )}\r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_CODE_LABEL',\r\n 'Cod'\r\n )}\r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_PRICE_LABEL',\r\n 'Pret'\r\n )}\r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_QUALITY_LABEL',\r\n 'Calitate'\r\n )}\r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_DELIVERY_LABEL',\r\n 'Livrare'\r\n )}\r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_OWNER_LABEL_ACRONYM',\r\n 'Producator'\r\n )}\r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_SUPLIER_LABEL',\r\n 'Furnizor'\r\n )}\r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_QUANTITY_LABEL',\r\n 'Cantitate'\r\n )}\r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_STOCK_LOCATION_LABEL',\r\n 'Locatie'\r\n )}\r\n
\r\n \r\n this.handleAlternativePartSelect(\r\n alternativePart.id,\r\n alternativePart.originalPartId,\r\n alternativePart\r\n )\r\n }\r\n disabled={\r\n alternativePart.isChild\r\n }\r\n value={alternativePart.id}\r\n id={alternativePart.id.toString()}\r\n name={this.props.partDetails.id.toString()}\r\n />\r\n \r\n {!R.isNil(alternativePart.remarks) &&\r\n alternativePart.remarks !== '' ? (\r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_REMARKS_LABEL',\r\n 'Observatii'\r\n )}\r\n \r\n
{alternativePart.remarks}
\r\n \r\n }\r\n >\r\n
{alternativePart.name}
\r\n \r\n ) : (\r\n alternativePart.name\r\n )}\r\n
{alternativePart.alternativeGuideNumber}\r\n {R.isNil(alternativePart!.alternativePartDiscount)\r\n ? Utils.countryNumberFormat(\r\n (Math.round(alternativePart.alternativePrice * 100) / 100).toFixed(2),\r\n this.props.appState.appUser?.organization?.country ?? null\r\n )\r\n : Utils.countryNumberFormat(\r\n (\r\n Math.round(\r\n alternativePart.alternativePrice * (1 - alternativePart!.alternativePartDiscount / 100) * 100\r\n ) / 100\r\n ).toFixed(2),\r\n this.props.appState.appUser?.organization?.country ?? null\r\n )\r\n }\r\n \r\n {R.isNil(alternativePart.alternativePartQuality)\r\n ? ''\r\n : alternativePart.alternativePartQuality.displayName}\r\n {alternativePart.deliveryTime}{alternativePart.producer}{alternativePart.supplier!.name}\r\n {isNaN(alternativePart.availableQuantity) === null\r\n ? null\r\n : alternativePart.availableQuantity}\r\n {alternativePart.stockLocation}
\r\n \r\n {this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista inregistrari de afisat'\r\n )}\r\n \r\n
) }\r\n
\r\n \r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n
\r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalUpdateOrderPartProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n caseSettings: state.caseSettings\r\n }),\r\n null,\r\n mergeProps\r\n)(withSnackbar(UpdateOrderPart as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Button,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n Tooltip,\r\n Modal,\r\n Box\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { isNullOrUndefined } from 'util';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n SelectableRows,\r\n MUIDataTableMeta\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport EditOutlinedIcon from '@material-ui/icons/EditOutlined';\r\nimport AutorenewOutlinedIcon from '@material-ui/icons/AutorenewOutlined';\r\nimport { IOrderService } from '../../services/Interfaces/IOrderService';\r\nimport { Order, PartToBeOrdered } from '../../interfaces/Order';\r\nimport OrderDetails from '../orders/OrderDetails';\r\n\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { CaseStatusCodeEnum, excludedCodes, nontStockRoles, OrderStatusCode, OwnStockCodeEnum, ParametreCode, ReferentialCode, SupplierCode, TariffTypeGroupCodeEnum } from '../../helpers/Constants';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { Organization } from '../../interfaces/Organization';\r\nimport UpdateOrderPart from '../orders/UpdateOrderPart';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport * as R from 'ramda';\r\nimport { DialogActions, DialogContentText } from '@material-ui/core';\r\nimport _, { min } from 'lodash';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { AutomateAppointmentRequest, CaseStatusHistory, ChangeCaseStatusBasedCodeRequest, ChangeCaseStatusRequest, CreatePartsToBeOrderedRequest, TariffPercentRequest, TariffPercentResponse } from '../../interfaces/Case';\r\nimport { Utils } from '../../helpers/Utils';\r\n\r\ninterface ICaseDetailsCaseTabOrderFormState {\r\n isLoading: boolean;\r\n orderList: Order[];\r\n unorderedParts: PartToBeOrdered[];\r\n orderIds: number[];\r\n isDialogOpen: boolean;\r\n isAddSupplierOrderStatusDialogOpen: boolean;\r\n workflowSuppliers: Organization[];\r\n selectedWorkflowSupplier: Organization | null;\r\n isUpdateOrderPartDialogOpen: boolean;\r\n unorderedPartIds: number[];\r\n currency: string;\r\n hasRights: boolean;\r\n organizationId: number | null;\r\n dialogVisible: boolean;\r\n isOpen: boolean;\r\n organizations: Organization[];\r\n insurerList: IReferential[];\r\n additionTariff: TariffPercentResponse;\r\n executing: boolean;\r\n discountTariff: TariffPercentResponse;\r\n automatePlaceOrder: boolean;\r\n caseStatusHistory: CaseStatusHistory[];\r\n hasRemainingNonStockParts: boolean;\r\n}\r\nexport interface ExternalCaseDetailsCaseTabOrderFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseTabOrderFormProps = ExternalCaseDetailsCaseTabOrderFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string; calcId: string | undefined; formId: string | undefined }>;\r\n\r\nclass CaseDetailsCaseTabOrderForm extends React.PureComponent<\r\n ICaseDetailsCaseTabOrderFormProps,\r\n ICaseDetailsCaseTabOrderFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private orderService!: IOrderService;\r\n private appUserService!: IAppUserService;\r\n private organizationService!: IOrganizationService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n isLoading: true,\r\n orderList: [],\r\n unorderedParts: [],\r\n orderIds: [],\r\n isDialogOpen: false,\r\n isAddSupplierOrderStatusDialogOpen: false,\r\n workflowSuppliers: [] as Organization[],\r\n selectedWorkflowSupplier: null,\r\n isUpdateOrderPartDialogOpen: false,\r\n unorderedPartIds: [],\r\n currency: '',\r\n hasRights: false,\r\n organizationId: this.props.appState.appUser!.organizationId,\r\n dialogVisible: false,\r\n isOpen: false,\r\n organizations: [],\r\n insurerList: [],\r\n additionTariff: {\r\n id: 0,\r\n value: 0\r\n } as TariffPercentResponse,\r\n executing: false,\r\n discountTariff: {\r\n id: 0,\r\n value: 0\r\n } as TariffPercentResponse,\r\n automatePlaceOrder: false,\r\n caseStatusHistory: [],\r\n hasRemainingNonStockParts: false\r\n } as ICaseDetailsCaseTabOrderFormState;\r\n\r\n public async componentDidMount() {\r\n await this.loadData();\r\n }\r\n\r\n loadData = async () => {\r\n const workflowSuppliersList =\r\n this.props.caseSettingsState.caseSettings!.workflow.workflowSuppliers;\r\n const currrency = this.props.caseSettingsState.case!.caseParameters.find(\r\n (item) => item.parameter!.code === ParametreCode.CURRENCY\r\n )!.value;\r\n\r\n const refInsurer = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.Insurer\r\n );\r\n\r\n const hasValidatorRole = nontStockRoles.includes(this.props.appState.appUser?.userRole?.code ?? '');\r\n const request = {\r\n workflowId: this.props.caseSettingsState.caseSettings!.workflow.id,\r\n automateGenerateOrder: this.props.caseSettingsState.caseSettings!.workflow.automateGenerateOrder,\r\n partStock: this.props.caseSettingsState.caseSettings!.workflow.hasNonStockValidation ? hasValidatorRole : false,\r\n nonStockOrder: !hasValidatorRole ? this.props.caseSettingsState.caseSettings!.workflow.hasNonStockValidation : false\r\n } as CreatePartsToBeOrderedRequest;\r\n\r\n const [unorderedParts, suppliersInit, insurerList, caseStatusHistory] = await Promise.all([\r\n (this.props.caseSettingsState.case!.caseStatus.caseStatus!.code == CaseStatusCodeEnum.COM_PI || this.props.caseSettingsState.case!.caseStatus.caseStatus!.code === CaseStatusCodeEnum.COMANDA_PIESE_NON_STOC) ? this.orderService.CreatePartsToBeOrdered(this.props.caseSettingsState.case!.id, request) :\r\n this.props.caseSettingsState.case!.caseStatus.caseStatus!.code == CaseStatusCodeEnum.COMANDA_ATM ? this.orderService.GetPartsToBeOrdered(this.props.caseSettingsState.case!.id) : [],\r\n workflowSuppliersList.length > 0\r\n ? await this.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(workflowSuppliersList.map((item) => item.supplierId)))\r\n )\r\n : [],\r\n this.appReferentialService.Get(refInsurer!.baseUrl),\r\n this.props.caseSettingsState?.caseSettings!.workflow?.isCarfixIntegration \r\n ? this.caseService.GetCaseStatusHistory(this.props.caseSettingsState.case!.id) \r\n : []\r\n ]);\r\n const orderList = await this.orderService.GetOrdersWithParts(this.props.caseSettingsState.case!.id);\r\n const caseInfo = request.partStock ? await this.caseService.GetCaseInfoById(this.props.caseSettingsState.case!.id) : null;\r\n console.log('insurerList', insurerList);\r\n console.log('caseInfo', caseInfo);\r\n\r\n const [users, clients, orgList, additionTariff, discountTariff] = await Promise.all([\r\n this.appUserService.GetUsersInfo(\r\n Array.from(new Set(orderList.map((item) => item.createdBy)))\r\n ),\r\n this.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(orderList.map((item) => item.clientId)))\r\n ),\r\n this.organizationService.GetOrganizationsByHO(\r\n this.props.caseSettingsState.case!.organizationOwnerId,\r\n null\r\n ),\r\n this.caseService.GetTariffPercent({\r\n workflowId: this.props.caseSettingsState.caseSettings!.workflow.id,\r\n insurerId: this.getInsurerId(insurerList),\r\n tariffCode: TariffTypeGroupCodeEnum.ADD_PARTS\r\n } as TariffPercentRequest),\r\n this.caseService.GetTariffPercent({\r\n workflowId: this.props.caseSettingsState.caseSettings!.workflow.id,\r\n insurerId: this.getInsurerId(insurerList),\r\n tariffCode: TariffTypeGroupCodeEnum.PSE_ALT\r\n } as TariffPercentRequest) \r\n ]);\r\n\r\n const unorderedPartsSupplierIds = unorderedParts.map(({ supplierId }) => supplierId);\r\n const suppliers = suppliersInit.filter(\r\n (item) => unorderedPartsSupplierIds.includes(item.id) && item.isActive === true\r\n );\r\n\r\n unorderedParts.forEach((p) => {\r\n const supplier = suppliersInit.find((item) => item.id === p.supplierId);\r\n p.supplier = supplier === undefined ? null : supplier;\r\n });\r\n\r\n orderList.forEach((p) => {\r\n const supplier = suppliersInit.find((item) => item.id === p.supplierId);\r\n const user = users.find((item) => item.id === p.createdBy);\r\n const client = clients.find((item) => item.id === p.clientId);\r\n\r\n p.createdByUser = user === undefined ? null : user;\r\n p.supplier = supplier === undefined ? null : supplier;\r\n p.client = client === undefined ? null : client;\r\n });\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n this.setState({\r\n orderList: orderList,\r\n unorderedParts: unorderedParts,\r\n workflowSuppliers: suppliers,\r\n currency: currrency,\r\n isLoading: false,\r\n hasRights: hasRights,\r\n organizations: orgList,\r\n additionTariff: additionTariff,\r\n discountTariff: discountTariff,\r\n caseStatusHistory: caseStatusHistory,\r\n hasRemainingNonStockParts: caseInfo != null ? caseInfo.hasRemainingNonStockParts : false\r\n });\r\n };\r\n\r\n onRowClick = async (e: any, id: number) => {\r\n this.setState({\r\n isDialogOpen: true,\r\n orderIds: Array.from([id]),\r\n automatePlaceOrder: this.props.caseSettingsState.caseSettings!.workflow.automatePlaceOrder\r\n });\r\n };\r\n\r\n onSupplierOrderNumberRowClick = async (e: any, supplierName: string) => {\r\n if (supplierName == SupplierCode.AUGSBURG) {\r\n window.open('https://www.aicat.ro/csp/berta/portal/index.csp', '_blank');\r\n }\r\n };\r\n\r\n updateRow = async (e: any, id: number) => {\r\n this.setState({\r\n isUpdateOrderPartDialogOpen: true,\r\n unorderedPartIds: Array.from([id])\r\n });\r\n };\r\n\r\n closeDialog = async () => {\r\n const unorderedPartsSupplierIds = this.state.unorderedParts.map(({ supplierId }) => supplierId);\r\n const suppliers = this.state.workflowSuppliers.filter(\r\n (item) => unorderedPartsSupplierIds.includes(item.id) && item.isActive === true\r\n );\r\n this.setState({\r\n isDialogOpen: false,\r\n workflowSuppliers: suppliers,\r\n isLoading: true\r\n });\r\n\r\n await this.loadData();\r\n };\r\n\r\n closeAddOrderSupplierDialog = async () => {\r\n this.setState({ isAddSupplierOrderStatusDialogOpen: false, selectedWorkflowSupplier: null });\r\n\r\n // await this.loadData();\r\n };\r\n\r\n closeUpdateOrderPartDialog = async () => {\r\n this.setState({ isUpdateOrderPartDialogOpen: false });\r\n\r\n await this.loadData();\r\n };\r\n\r\n getInsurerId = (insurerList: IReferential[]) : number | null => {\r\n if (R.isNil(this.props.caseSettingsState.case!.caseEvent)) {\r\n return null;\r\n }\r\n\r\n if (R.isNil(this.props.caseSettingsState.case!.caseEvent.insurerName)) {\r\n return null;\r\n }\r\n\r\n const insurerName = this.props.caseSettingsState.case!.caseEvent.insurerName;\r\n const insurer = _.find(insurerList, function (insurer) {\r\n return insurer.displayName.toLowerCase() === insurerName.toLowerCase();\r\n });\r\n console.log('insurer', insurer);\r\n if (R.isNil(insurer)) {\r\n return null;\r\n }\r\n return insurer.id;\r\n }\r\n\r\n deleteOrder = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.orderService.DeleteOrder(id);\r\n\r\n const partIndex = this.state.orderList.findIndex((item) => item.id === id);\r\n const newArray = [...this.state.orderList];\r\n newArray.splice(partIndex, 1);\r\n\r\n this.setState(\r\n {\r\n orderList: newArray,\r\n isLoading: true\r\n },\r\n this.loadData\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n DeletePartToBeOrdered = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const partId = tableMeta.rowData[0];\r\n console.log(partId);\r\n // await this.orderService.DeletePartToBeOrdered(partId);\r\n\r\n // const partIndex = this.state.unorderedParts.findIndex((item) => item.id === partId);\r\n // const newArray = [...this.state.unorderedParts];\r\n // newArray.splice(partIndex, 1);\r\n\r\n // this.setState(\r\n // {\r\n // unorderedParts: newArray,\r\n // isLoading: true\r\n // },\r\n // this.loadData\r\n // );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n label: 'ID',\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.onRowClick(e, tableMeta.rowData[0])}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'supplier.name',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_SUPPLIER_LABEL', 'Furnizor'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: IReferential, tableMeta: MUIDataTableMeta) => {\r\n const order = this.state.orderList.find((item) => item.id === tableMeta.rowData[0]);\r\n if (R.isNil(order)) {\r\n return '';\r\n }\r\n\r\n return !R.isNil(order.supplier) ? (order.supplier!.name.toUpperCase() == OwnStockCodeEnum.OWN_STOCK.toString() ? this.translatorService.Tranlate('CALCULATION_DETAILS_OWN_STOCK_HEADER', 'Stoc Propriu') : order.supplier!.name) : '';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'amount',\r\n label: this.translatorService.Tranlate('ORDERS_VALUE_LABEL', 'Valoare'),\r\n options: {\r\n filter: false,\r\n setCellProps: () => ({ style: { whiteSpace: 'nowrap' } }),\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n if (this.props.appState.appUser!.organization!.organizationType!.hideOrderPrices) {\r\n return '';\r\n }\r\n return Utils.countryNumberFormat(value.toFixed(2), this.props.appState.appUser?.organization?.country ?? null);\r\n }\r\n }\r\n },\r\n {\r\n name: 'currencyCode',\r\n label: this.translatorService.Tranlate('ORDERS_CURRENCY_LABEL', 'Moneda'),\r\n options: {\r\n filter: false\r\n }\r\n },\r\n {\r\n name: 'createdByUser.userName',\r\n label: this.translatorService.Tranlate('ORDERS_MADE_BY_LABEL', 'Efectuat De'),\r\n options: {\r\n filter: false,\r\n sort: true\r\n }\r\n },\r\n {\r\n name: 'orderStatus.displayName',\r\n label: this.translatorService.Tranlate('ORDERS_STATUS_LABEL', 'Stare'),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const order = this.state.orderList.find((item) => item.id === id);\r\n if (order == null || order.orderStatus == null) {\r\n return '';\r\n }\r\n if (order.orderStatus.code === OrderStatusCode.FZR_VERIFICARE_LA_FURNIZOR) {\r\n return {value};\r\n } else if (order.orderStatus.code === OrderStatusCode.REP_VERIFICATA_DE_FURNIZOR) {\r\n return {value};\r\n } else {\r\n return value;\r\n }\r\n }\r\n \r\n }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n const order = this.state.orderList.find((item) => item.id === id);\r\n if (order!.orderStatus!.code !== OrderStatusCode.REP_DRAFT) {\r\n return;\r\n }\r\n if (order!.clientId !== this.props.appState.appUser!.organizationId) {\r\n return '';\r\n }\r\n return (\r\n this.deleteOrder(e, tableMeta)}\r\n aria-label=\"delete\"\r\n hidden={!this.state.hasRights}\r\n color=\"inherit\"\r\n className=\"text-danger\"\r\n size=\"small\"\r\n >\r\n \r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'supplierOrderNumber',\r\n label: this.translatorService.Tranlate('ORDERS_ID_FURNIZOR_LABEL', 'ID Furnizor'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n {\r\n this.onSupplierOrderNumberRowClick(e, tableMeta.rowData[1]);\r\n }}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n displayUnorderedPartPrice = (value: number, partId: any) => {\r\n const unorderedPart = this.state.unorderedParts.find((item) => item.id === partId);\r\n const price =\r\n unorderedPart!.alternativePartQualityId === null ? value : unorderedPart!.alternativePrice;\r\n return (Math.round(price! * 100) / 100).toFixed(2) + ' ' + this.state.currency;\r\n };\r\n\r\n getUnorderedPartsColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'guideNumber',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_CODE_LABEL', 'Cod'),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n const part = this.state.unorderedParts.find((item) => item.id === tableMeta.rowData[0]);\r\n\r\n if (!isNullOrUndefined(part!.alternativePartQualityId)) {\r\n return part!.alternativeGuideNumber;\r\n }\r\n\r\n return part!.guideNumber;\r\n }\r\n }\r\n },\r\n {\r\n name: 'name',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_NAME_LABEL', 'Denumire'),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n const part = this.state.unorderedParts.find((item) => item.id === tableMeta.rowData[0]);\r\n\r\n if (!isNullOrUndefined(part!.alternativePartQualityId)) {\r\n return part!.alternativePartName;\r\n }\r\n\r\n return part!.name;\r\n }\r\n }\r\n },\r\n {\r\n name: 'producer',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_PRODUCER_LABEL', 'Producator'),\r\n options: {\r\n filter: false,\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'originalPrice',\r\n label: this.translatorService.Tranlate(\r\n 'ORDER_PART_DETAILS_ORIGINAL_PRICE_LABEL',\r\n 'Pret unitar'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return Utils.countryNumberFormat(this.displayUnorderedPartPrice(value, tableMeta.rowData[0]), this.props.appState.appUser?.organization?.country ?? null);\r\n }\r\n }\r\n },\r\n {\r\n name: 'pieceNr',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_PIECE_NR_LABEL', 'Unitati'),\r\n options: {\r\n filter: false,\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'supplier.name',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_SUPPLIER_LABEL', 'Furnizor'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: IReferential, tableMeta: MUIDataTableMeta) => {\r\n const unorderedPart = this.state.unorderedParts.find((item) => item.id === tableMeta.rowData[0]);\r\n if (R.isNil(unorderedPart)) {\r\n return '';\r\n }\r\n\r\n return !R.isNil(unorderedPart.supplier) ? (unorderedPart.supplier!.name.toUpperCase() == OwnStockCodeEnum.OWN_STOCK.toString() ? this.translatorService.Tranlate('CALCULATION_DETAILS_OWN_STOCK_HEADER', 'Stoc Propriu') : unorderedPart.supplier!.name) : '';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'deliveryTime',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_DELIVERY_TIME_LABEL', 'Livrare'),\r\n options: {\r\n filter: false,\r\n sort: false\r\n }\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n const part = this.state.unorderedParts.find((item) => item.id === tableMeta.rowData[0]);\r\n if (part!.excludeFromOrder) {\r\n return;\r\n }\r\n return (\r\n
\r\n this.updateRow(e, tableMeta.rowData[0])}\r\n hidden={!this.state.hasRights}\r\n aria-label=\"edit\"\r\n color=\"primary\"\r\n className=\"text-primary\"\r\n size=\"small\"\r\n >\r\n \r\n \r\n
\r\n );\r\n }\r\n }\r\n }\r\n // {\r\n // name: '',\r\n // options: {\r\n // viewColumns: false,\r\n // filter: false,\r\n // setCellHeaderProps: () => ({ align: 'center' }),\r\n // setCellProps: () => ({ align: 'center' }),\r\n // customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n // return (\r\n // this.DeletePartToBeOrdered(e, tableMeta)}\r\n // aria-label=\"delete\"\r\n // hidden={!this.state.hasRights}\r\n // color=\"inherit\"\r\n // className=\"text-danger\"\r\n // size=\"small\"\r\n // >\r\n // \r\n // \r\n // );\r\n // }\r\n // }\r\n // }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n addOrder = async () => {\r\n this.setState({\r\n isAddSupplierOrderStatusDialogOpen: true\r\n });\r\n };\r\n\r\n addOrderSubmit = async () => {\r\n try {\r\n this.setState({ executing: true });\r\n const newOrder = await this.orderService.CreateOrder(\r\n this.props.caseSettingsState.case!.id,\r\n this.state.selectedWorkflowSupplier!.id\r\n );\r\n newOrder.supplier = this.state.selectedWorkflowSupplier;\r\n newOrder.createdByUser = this.props.appState.appUser;\r\n newOrder.client = this.props.appState.appUser!.organization;\r\n const supplierId = !isNullOrUndefined(this.state.selectedWorkflowSupplier)\r\n ? this.state.selectedWorkflowSupplier.id\r\n : null;\r\n const unorderedPartsBySupplier = this.state.unorderedParts.find(\r\n (item) => item.supplierId !== supplierId\r\n );\r\n\r\n this.setState({\r\n orderList: [...this.state.orderList, newOrder],\r\n unorderedParts: !isNullOrUndefined(unorderedPartsBySupplier)\r\n ? [unorderedPartsBySupplier]\r\n : [],\r\n orderIds: Array.from([newOrder.id]),\r\n isDialogOpen: true,\r\n isAddSupplierOrderStatusDialogOpen: false,\r\n selectedWorkflowSupplier: null\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n this.setState({ executing: false });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n handleAutocompleteSupplierChange = async (newValue: any | null) => {\r\n this.setState({\r\n selectedWorkflowSupplier: newValue\r\n });\r\n };\r\n\r\n renderAddOrderForm = () => {\r\n return (\r\n {\r\n this.addOrderSubmit();\r\n }}\r\n >\r\n
\r\n \r\n this.handleAutocompleteSupplierChange(newValue)\r\n }\r\n getOptionLabel={(option: Organization) => option.name.toUpperCase() == OwnStockCodeEnum.OWN_STOCK.toString() ? this.translatorService.Tranlate('CALCULATION_DETAILS_OWN_STOCK_HEADER', 'Stoc Propriu') : option.name || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n orderChange = async (order: Order) => {\r\n this.setState({\r\n orderList: this.state.orderList.map((el: Order) =>\r\n el.id !== order.id\r\n ? el\r\n : {\r\n ...el,\r\n amount: order.amount,\r\n amountTVA: order.amountTVA,\r\n amountWithoutTVA: order.amountWithoutTVA,\r\n orderParts: [...order.orderParts!],\r\n orderStatus: order.orderStatus,\r\n orderStatusId: order.orderStatusId\r\n }\r\n )\r\n });\r\n };\r\n\r\n handleStockParts = () => {\r\n const ownerStockOrders = this.state.orderList.filter(x => x.supplier!.name.toUpperCase() == OwnStockCodeEnum.OWN_STOCK.toString());\r\n if (ownerStockOrders.length > 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'HAS_OWN_STOCK_ORDERS',\r\n 'Aveti comenzi pe stoc propriu. Va rugam sa le comandati!'\r\n ),\r\n { \r\n variant: 'warning',\r\n autoHideDuration: 5000,\r\n style: { whiteSpace: 'pre-line' }\r\n }\r\n );\r\n }\r\n }\r\n automatePlaceOrderChange = async () => {\r\n const automatePlaceOrder = this.props.caseSettingsState.caseSettings!.workflow.automatePlaceOrder && this.state.automatePlaceOrder;\r\n if (automatePlaceOrder) {\r\n console.log('automatePlaceOrder buton');\r\n console.log(this.state.caseStatusHistory);\r\n \r\n const orderPartStatuses = this.state.caseStatusHistory.filter(x => x.caseStatus!.code === CaseStatusCodeEnum.COM_PI);\r\n if (orderPartStatuses.length > 1) {\r\n // Find the last status that does not have one of the excluded codes\r\n const lastNonExcludedStatus = this.state.caseStatusHistory.find(status =>\r\n !excludedCodes.includes(status.caseStatus!.code ?? '')\r\n );\r\n console.log('Last non-excluded status:', lastNonExcludedStatus);\r\n \r\n const caseStatusRequest = {\r\n caseId: this.props.caseSettingsState.case!.id,\r\n statusId: lastNonExcludedStatus!.caseStatusId\r\n } as ChangeCaseStatusRequest;\r\n const currentStatus = await this.caseService.ChangeCaseStatus(caseStatusRequest);\r\n this.props.SetCaseStatus(currentStatus);\r\n this.handleStockParts();\r\n return;\r\n }\r\n \r\n if (this.props.caseSettingsState.case!.carInService) {\r\n const request = {\r\n caseId: this.props.caseSettingsState.case!.id,\r\n workflowId: this.props.caseSettingsState.caseSettings!.workflow.id,\r\n carInService: true\r\n } as AutomateAppointmentRequest;\r\n\r\n let newStatus = await this.caseService.CreateAutomateAppointment(request);\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n this.handleStockParts();\r\n return;\r\n }\r\n let newStatus = await this.caseService.SubmitForm(this.props.caseSettingsState.case!.id, this.props.workflowForm.id, null);\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n this.handleStockParts();\r\n }\r\n }\r\n\r\n checkConfirmChanges = async () => {\r\n if (this.props.caseSettingsState.caseSettings!.workflow.automatePlaceOrder) {\r\n const firstOrder = _.find(this.state.orderList, function (order) {\r\n return order.orderStatus!.code == OrderStatusCode.REP_DRAFT;\r\n });\r\n if (firstOrder != null) {\r\n this.setState({\r\n isDialogOpen: true,\r\n automatePlaceOrder: true,\r\n orderIds: Array.from([firstOrder.id])\r\n });\r\n return;\r\n }\r\n }\r\n\r\n const checkIfExistToBeVerifiedBySupplier = _.filter(this.state.orderList, function (order) {\r\n return order.orderStatus!.code == OrderStatusCode.FZR_VERIFICARE_LA_FURNIZOR;\r\n });\r\n\r\n if (checkIfExistToBeVerifiedBySupplier.length) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ORDERS_IN_VERIFICATION_TO_SUPPLIER_REQUIRED',\r\n 'Aveti comenzi ce trebuie verificate de furnizor'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n const checkIfExistOrderInDraftStatus = _.filter(this.state.orderList, function (order) {\r\n return (order.orderStatus!.code == OrderStatusCode.REP_DRAFT || order.orderStatus!.code == OrderStatusCode.REP_REINTEROGATED_PARTS || order.orderStatus!.code == OrderStatusCode.REP_VERIFICATA_DE_FURNIZOR);\r\n });\r\n if (checkIfExistOrderInDraftStatus.length) {\r\n this.setState({ isOpen: true, dialogVisible: true });\r\n } else {\r\n this.handleConfirmChanges();\r\n }\r\n };\r\n\r\n handleConfirmChanges = async () => {\r\n this.handleCloseModal();\r\n this.setState({ isLoading: true });\r\n await this.submitForm(this.props.caseSettingsState.case!.id, this.props.workflowForm.id, null);\r\n this.setState({ isLoading: false });\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n const hasNotUnorderedParts = this.state.unorderedParts.filter(x => !x.isOwnStock).length === 0;\r\n if (hasNotUnorderedParts) {\r\n if (this.props.caseSettingsState.caseSettings!.workflow.automatePlaceOrder) {\r\n console.log(this.state.caseStatusHistory);\r\n const orderPartStatuses = this.state.caseStatusHistory.filter(x => x.caseStatus!.code === CaseStatusCodeEnum.COM_PI);\r\n if (orderPartStatuses.length > 1) {\r\n // Find the last status that does not have one of the excluded codes\r\n const lastNonExcludedStatus = this.state.caseStatusHistory.find(status =>\r\n !excludedCodes.includes(status.caseStatus!.code ?? '')\r\n );\r\n console.log('Last non-excluded status:', lastNonExcludedStatus);\r\n \r\n const caseStatusRequest = {\r\n caseId: this.props.caseSettingsState.case!.id,\r\n statusId: lastNonExcludedStatus!.caseStatusId\r\n } as ChangeCaseStatusRequest;\r\n const currentStatus = await this.caseService.ChangeCaseStatus(caseStatusRequest);\r\n\r\n this.props.SetCaseStatus(currentStatus);\r\n this.handleStockParts();\r\n return;\r\n }\r\n\r\n if (this.props.caseSettingsState.case!.carInService) {\r\n const request = {\r\n caseId: this.props.caseSettingsState.case!.id,\r\n workflowId: this.props.caseSettingsState.caseSettings!.workflow.id,\r\n carInService: true\r\n } as AutomateAppointmentRequest;\r\n\r\n let newStatus = await this.caseService.CreateAutomateAppointment(request);\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n \r\n this.props.SetCaseStatus(newStatus);\r\n this.handleStockParts();\r\n\r\n return;\r\n }\r\n }\r\n\r\n if (this.props.caseSettingsState.caseSettings!.workflow.hasNonStockValidation) {\r\n //daca statusul este comenzi piese si nu are piese pe NonStock\r\n if (this.props.caseSettingsState.case!.caseStatus.caseStatus!.code == CaseStatusCodeEnum.COM_PI && !this.state.hasRemainingNonStockParts) {\r\n const caseStatusRequest = {\r\n caseId: this.props.caseSettingsState.case!.id,\r\n statusCode: CaseStatusCodeEnum.pse_com.toString()\r\n } as ChangeCaseStatusBasedCodeRequest;\r\n const currentStatus = await this.caseService.ChangeCaseStatusBasedCode(caseStatusRequest);\r\n this.props.SetCaseStatus(currentStatus);\r\n return;\r\n }\r\n }\r\n\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n\r\n this.handleStockParts();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n this.setState({ hasRights: hasRights });\r\n } else {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ORDERS_UNORDERED_PARTS_INVALID',\r\n 'Aveti piese necomandate'\r\n ),\r\n { variant: 'error' }\r\n );\r\n }\r\n };\r\n handleCloseConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n\r\n handleOpenConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: true,\r\n dialogVisible: true\r\n });\r\n };\r\n\r\n handleCloseModal = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.orderService = (this.context as AppContext).orderService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: false,\r\n sort: false,\r\n search: false,\r\n pagination: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n elevation: 0,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService)\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {`${this.translatorService.Tranlate(\r\n 'ORDER_CONFIRMATION_MESSAGE',\r\n 'Aveti piese necomandate, doriti sa treceti in pasul urmator?'\r\n )} `}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!this.state.isLoading ? (\r\n
\r\n
\r\n
\r\n {this.translatorService.Tranlate('ORDERS_LIST_TITLE', 'Lista comenzi')}\r\n
\r\n {\r\n this.state.unorderedParts.length > 0 ? (\r\n \r\n ) : null\r\n }\r\n
\r\n
\r\n \r\n
\r\n
\r\n ) : null}\r\n {\r\n this.state.unorderedParts.length > 0 ? (\r\n
\r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate(\r\n 'ORDERS_UNORDERED_PARTS_TITLE',\r\n 'Lista piese de comandat'\r\n )}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n ) : null\r\n }\r\n
\r\n \r\n {this.props.caseSettingsState?.caseSettings!.workflow?.isCarfixIntegration && this.props.caseSettingsState.caseSettings!.workflow.automatePlaceOrder ? \r\n this.translatorService.Tranlate('ORDER_PART_PLACE_ORDER_LABEL', 'Lanseaza Comanda') : this.translatorService.Tranlate('CASE_CAR_CALCULATIONS_CONFIRM_BUTTON', 'Confirma')}\r\n \r\n
\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('ORDERS_DIALOG_TITLE', 'Detalii comanda')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n item.id === this.state.orderIds[0])!\r\n }\r\n onOrderChange={this.orderChange}\r\n automatePlaceOrderChange={this.automatePlaceOrderChange}\r\n hasRights={this.state.hasRights}\r\n additionTariff={this.state.additionTariff}\r\n discountTariff={this.state.discountTariff}\r\n automatePlaceOrder={this.state.automatePlaceOrder}\r\n workflowAutomatePlaceOrder={this.props.caseSettingsState.caseSettings!.workflow.automatePlaceOrder}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n {this.translatorService.Tranlate('ORDER_ADD_LABEL', 'Adauga comanda')}\r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddOrderForm()}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'ORDER_CHANGE_PART_DETAILS_TITLE',\r\n 'Modifica date piesa'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n item.id === this.state.unorderedPartIds[0]\r\n )!\r\n }\r\n currency={this.state.currency}\r\n workflowId={this.props.caseSettingsState.caseSettings!.workflow.id}\r\n workflowSuppliersList={\r\n this.props.caseSettingsState.caseSettings!.workflow.workflowSuppliers\r\n }\r\n onSave={this.closeUpdateOrderPartDialog}\r\n additionTariff={this.state.additionTariff}\r\n discountTariff={this.state.discountTariff}\r\n />\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabOrderFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n null,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabOrderForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Button, IconButton, Grid } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { WorkflowPartner, WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { CaseAttachment, CaseServiceAppointmentHistory } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { ReferentialCode, AttachmentTypeCode } from '../../helpers/Constants';\r\nimport { IWorkflowService } from '../../services/Interfaces/IWorkflowService';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport FileSaver from 'file-saver';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete, { createFilterOptions } from '@material-ui/lab/Autocomplete';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport * as R from 'ramda';\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\ninterface ICaseDetailsCaseServiceAppointpentsFormState {\r\n comment: string;\r\n serviceInDate: Date;\r\n serviceOutDate: Date;\r\n organizations: WorkflowPartner[];\r\n selectedOrganization: WorkflowPartner | null;\r\n users: AppUser[];\r\n selectedUser: AppUser | null;\r\n attachments: CaseAttachment[];\r\n isLoading: boolean;\r\n isLoading2: boolean;\r\n attachType: IReferential;\r\n isOrganizationsDisabled: boolean;\r\n isUsersDisabled: boolean;\r\n hasRights: boolean;\r\n isUserHidden: boolean;\r\n executing: boolean;\r\n userRoleId: number | null;\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseServiceAppointpentsFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseServiceAppointpentsFormProps =\r\n ExternalCaseDetailsCaseServiceAppointpentsFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n } & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseServiceAppointpentsForm extends React.PureComponent<\r\n ICaseDetailsCaseServiceAppointpentsFormProps,\r\n ICaseDetailsCaseServiceAppointpentsFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n private workflowService!: IWorkflowService;\r\n private appUserService!: IAppUserService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n serviceInDate: new Date(),\r\n serviceOutDate: new Date(),\r\n comment: '',\r\n organizations: [],\r\n selectedOrganization: null,\r\n users: [],\r\n selectedUser: null,\r\n attachments: [],\r\n isLoading: false,\r\n isLoading2: false,\r\n attachType: {} as IReferential,\r\n isOrganizationsDisabled: false,\r\n isUsersDisabled: false,\r\n hasRights: false,\r\n isUserHidden: false,\r\n executing: false,\r\n userRoleId: null\r\n } as ICaseDetailsCaseServiceAppointpentsFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseServiceAppointmentForm();\r\n }\r\n );\r\n }\r\n\r\n loadCaseServiceAppointmentForm = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.AttachmentType\r\n );\r\n\r\n const casee = this.props.caseSettingsState.case;\r\n const [workflowPartners, attachmentTypes, currentCaseServiceAppointment] = await Promise.all([\r\n this.workflowService.GetUserWorkflowPartners(\r\n this.props.caseSettingsState.case!.caseWorkflow.workflowId\r\n ),\r\n this.appReferentialService.Get(ref!.baseUrl),\r\n this.caseService.GetCurrentCaseServiceAppointment(casee!.id, this.props.workflowForm.id)\r\n ]);\r\n const organizations = await this.organizationService.GetUserOrganizationsByIds(\r\n workflowPartners.map((item) => item.partnerId)\r\n );\r\n\r\n workflowPartners.forEach((wp) => {\r\n const partner = organizations.find((item) => item.id === wp.partnerId);\r\n wp.partner = R.isNil(partner) ? null : partner;\r\n });\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n let currentCaseServiceAppointment1 = { ...currentCaseServiceAppointment };\r\n if (currentCaseServiceAppointment1 === null) {\r\n currentCaseServiceAppointment1 = await this.caseService.GetCurrentCaseServiceAppointment(\r\n casee!.id,\r\n null\r\n );\r\n }\r\n if (currentCaseServiceAppointment1 !== null && currentCaseServiceAppointment1.attachments) {\r\n currentCaseServiceAppointment1.attachments.forEach(\r\n (item) =>\r\n (item.attachmentType = attachmentTypes.find(\r\n (item) => item.code === AttachmentTypeCode.OTHER\r\n )!)\r\n );\r\n }\r\n this.setState(\r\n {\r\n organizations: workflowPartners,\r\n attachType: attachmentTypes.find((item) => item.code === AttachmentTypeCode.OTHER)!,\r\n isLoading: false,\r\n hasRights: hasRights,\r\n isUserHidden: !hasRights,\r\n comment:\r\n currentCaseServiceAppointment === null ? '' : currentCaseServiceAppointment.comment,\r\n serviceInDate:\r\n currentCaseServiceAppointment === null\r\n ? new Date()\r\n : currentCaseServiceAppointment.serviceInDate,\r\n serviceOutDate:\r\n currentCaseServiceAppointment === null\r\n ? new Date()\r\n : currentCaseServiceAppointment.serviceOutDate,\r\n attachments:\r\n currentCaseServiceAppointment === null ? [] : currentCaseServiceAppointment.attachments\r\n },\r\n this.setCaseAllocation\r\n );\r\n };\r\n\r\n setCaseAllocation = async () => {\r\n if (!this.state.hasRights) {\r\n return;\r\n }\r\n\r\n const allocationResult = await FormHelpers.ParseAllocations(\r\n this.props.workflowForm.workflowFormActions,\r\n this.state.organizations,\r\n this.appUserService\r\n );\r\n\r\n if (R.isNil(allocationResult)) {\r\n const partner = this.state.organizations.find(\r\n (item) => item.partnerId === this.props.caseSettingsState.case!.caseStatus.assignedTo!.hoId\r\n );\r\n\r\n this.setState(\r\n {\r\n selectedOrganization: R.isNil(partner) ? null : partner,\r\n selectedUser: this.props.caseSettingsState.case!.caseStatus.assignedTo,\r\n organizations: this.state.organizations,\r\n isUsersDisabled: false,\r\n isOrganizationsDisabled: false\r\n },\r\n async () => await this.loadUsers(R.isNil(partner) ? null : partner.partnerId, null)\r\n );\r\n return;\r\n }\r\n if (allocationResult.isLastUser || allocationResult.caseStatusId != null) {\r\n this.setState({ isUserHidden: true });\r\n return;\r\n }\r\n this.setState(\r\n {\r\n selectedOrganization: allocationResult.partner,\r\n selectedUser: allocationResult.user,\r\n organizations: allocationResult.partners,\r\n isUsersDisabled: !R.isNil(allocationResult.user),\r\n isOrganizationsDisabled: !R.isNil(allocationResult.partner),\r\n userRoleId: allocationResult.roleId\r\n },\r\n async () => {\r\n if (allocationResult.partner === null) {\r\n return;\r\n }\r\n await this.loadUsers(allocationResult.partner.partnerId, allocationResult.roleId);\r\n }\r\n );\r\n };\r\n\r\n loadUsers = async (organizationId: number | null, roleId: number | null) => {\r\n if (organizationId === null) {\r\n this.setState({\r\n isLoading2: false\r\n });\r\n } else {\r\n const users = await this.appUserService.GetUserAppUsers();\r\n\r\n this.setState({\r\n users: users.users.filter(\r\n (user) =>\r\n (user.organization!.hoId === organizationId ||\r\n user.organizationId === organizationId) &&\r\n ((roleId !== null && user.roleId === roleId) || roleId === null)\r\n ),\r\n isLoading2: false\r\n });\r\n }\r\n };\r\n\r\n handleUploadAttachment = async (e: React.ChangeEvent) => {\r\n try {\r\n const attachments = [...this.state.attachments];\r\n attachments.push({\r\n id: this.state.attachments.length,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n attachmentTypeId: this.state.attachType.id,\r\n attachmentType: this.state.attachType,\r\n file: e.target.files![0],\r\n fileName: e.target.files![0].name,\r\n uploadDate: new Date(),\r\n carPhotos: false,\r\n originalFileName: e.target.files![0].name,\r\n caseRequestId: null,\r\n paymentId: null,\r\n serviceAppointmentId: null,\r\n caseClientId: null,\r\n isSelection: false\r\n });\r\n\r\n this.setState({\r\n attachments: attachments\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleDeleteAttachment = async (id: number, fileName: string) => {\r\n try {\r\n const attachments = [...this.state.attachments];\r\n const index = attachments.findIndex((item) => item.id === id);\r\n attachments.splice(index, 1);\r\n\r\n this.setState({\r\n attachments: attachments\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n downloadFile = async (fileName: string, origFileName: string) => {\r\n const fileBlob = await this.caseService.GetCaseAttachment(fileName);\r\n FileSaver.saveAs(fileBlob, origFileName);\r\n };\r\n\r\n renderAttachmentBox = () => {\r\n return (\r\n \r\n \r\n {this.state.attachments.length !== 0\r\n ? this.state.attachments.map((attach, index) => {\r\n return (\r\n
\r\n
\r\n this.downloadFile(attach.fileName, attach.originalFileName)}\r\n >\r\n {attach.originalFileName}\r\n \r\n
\r\n
\r\n this.handleDeleteAttachment(attach.id, attach.fileName)}\r\n >\r\n \r\n \r\n
\r\n
\r\n );\r\n })\r\n : null}\r\n
\r\n \r\n {\r\n return this.handleUploadAttachment(e);\r\n }}\r\n type=\"file\"\r\n disabled={!this.state.hasRights}\r\n />\r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n createAppointment = async () => {\r\n try {\r\n this.setState({ executing: true });\r\n\r\n let serviceInDate;\r\n let serviceOutDate;\r\n if (moment.isDate(this.state.serviceInDate)) {\r\n serviceInDate = moment.utc(this.state.serviceInDate.toDateString()).local().toDate();\r\n } else {\r\n serviceInDate = moment.utc(this.state.serviceInDate).local().toDate();\r\n }\r\n if (moment.isDate(this.state.serviceOutDate)) {\r\n serviceOutDate = moment.utc(this.state.serviceOutDate.toDateString()).local().toDate();\r\n } else {\r\n serviceOutDate = moment.utc(this.state.serviceOutDate).local().toDate();\r\n }\r\n\r\n const appointmentFormData: CaseServiceAppointmentHistory = {\r\n id: 0,\r\n caseId: Number.parseInt(this.props.match.params.id),\r\n comment: this.state.comment,\r\n attachments: this.state.attachments,\r\n serviceInDate: serviceInDate,\r\n serviceOutDate: serviceOutDate,\r\n caseSectionStepFormId: this.props.workflowForm.id\r\n } as CaseServiceAppointmentHistory;\r\n\r\n await this.caseService.AddCaseServiceAppointment(appointmentFormData);\r\n\r\n // const selectedOrganization = this.state.selectedOrganization\r\n // const hoId =\r\n // selectedOrganization === null\r\n // ? null\r\n // : selectedOrganization.partner!.hoId === null\r\n // ? selectedOrganization.partnerId\r\n // : selectedOrganization.partner!.hoId\r\n\r\n await this.submitForm(\r\n appointmentFormData.caseId,\r\n appointmentFormData.caseSectionStepFormId,\r\n this.state.selectedUser\r\n );\r\n\r\n this.setState(\r\n {\r\n selectedOrganization: null,\r\n selectedUser: null,\r\n comment: '',\r\n attachments: [],\r\n serviceInDate: new Date(),\r\n serviceOutDate: new Date()\r\n },\r\n this.setCaseAllocation\r\n );\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n console.log(ex);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n handleOrganizationChange = (newValue: WorkflowPartner | null) => {\r\n this.setState(\r\n {\r\n selectedOrganization: newValue,\r\n selectedUser: null,\r\n users: [],\r\n isLoading2: true\r\n },\r\n async () => {\r\n await this.loadUsers(newValue === null ? null : newValue.partnerId, this.state.userRoleId);\r\n }\r\n );\r\n };\r\n\r\n handleUserChange = (newValue: AppUser | null) => {\r\n this.setState({ selectedUser: newValue });\r\n };\r\n handleDateInChange = async (date: MaterialUiPickersDate | null, value?: string | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState({\r\n serviceInDate: date!.toDate(),\r\n // dashboardFilters: dashboardFilters,\r\n isLoading: false\r\n });\r\n };\r\n\r\n handleDateOutChange = async (date: MaterialUiPickersDate | null, value?: string | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState({\r\n serviceOutDate: date!.toDate(),\r\n // dashboardFilters: dashboardFilters,\r\n isLoading: false\r\n });\r\n };\r\n\r\n rendePaymentDetailsForm = () => {\r\n return R.isNil(this.state.comment) ? null : (\r\n {\r\n this.createAppointment();\r\n }}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n ) => {\r\n this.setState({ comment: e.target.value });\r\n }}\r\n variant=\"outlined\"\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n\r\n {this.renderAttachmentBox()}\r\n {this.renderAssignementForm()}\r\n
\r\n\r\n \r\n {this.translatorService.Tranlate('CASE_COMMENT_SEND', 'Trimite')}\r\n \r\n \r\n );\r\n };\r\n\r\n renderAssignementForm = () => {\r\n if (this.state.isUserHidden) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n this.handleOrganizationChange(newValue)\r\n }\r\n getOptionLabel={(option: WorkflowPartner) => option.partner!.displayName || ''}\r\n filterOptions={createFilterOptions({\r\n matchFrom: 'any',\r\n stringify: (option: WorkflowPartner) => option.partner!.displayName\r\n })}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n \r\n
\r\n {!this.state.isLoading2 ? (\r\n this.handleUserChange(newValue)}\r\n getOptionLabel={(option: AppUser) => option.userName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n ) : null}\r\n
\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
{this.rendePaymentDetailsForm()}
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseServiceAppointpentsFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseServiceAppointpentsForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Button, IconButton, Grid, FormControlLabel, Switch } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { CaseAttachment } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport {\r\n ReferentialCode,\r\n AttachmentTypeCode,\r\n InsuredTypeCode,\r\n RefConstants\r\n} from '../../helpers/Constants';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport NumberFormat from 'react-number-format';\r\nimport { CaseClient } from '../../interfaces/Case';\r\nimport { CNP } from 'romanian-personal-identity-code-validator';\r\nimport * as R from 'ramda';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { SectionCode } from '../../helpers/forms/FormCode';\r\nimport * as IbanTools from 'ibantools';\r\n\r\ninterface ICaseDetailsCaseTabClientDataFormState {\r\n isLoading: boolean;\r\n hasRights: boolean;\r\n executing: boolean;\r\n isUserHidden: boolean;\r\n clientData: CaseClient;\r\n personTypes: Array;\r\n attachType: IReferential;\r\n bankName: string;\r\n bankList: IReferential[];\r\n\r\n region: IReferential | null;\r\n city: IReferential | null;\r\n district: IReferential | null;\r\n regionsTypes: IReferential[];\r\n citiesTypes: IReferential[];\r\n districtsTypes: IReferential[];\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseTabClientDataFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseTabClientDataFormProps = ExternalCaseDetailsCaseTabClientDataFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabClientDataForm extends React.PureComponent<\r\n ICaseDetailsCaseTabClientDataFormProps,\r\n ICaseDetailsCaseTabClientDataFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n isLoading: false,\r\n hasRights: false,\r\n executing: false,\r\n isUserHidden: false,\r\n attachType: {} as IReferential,\r\n personTypes: [] as IReferential[],\r\n regionsTypes: [] as IReferential[],\r\n citiesTypes: [] as IReferential[],\r\n districtsTypes: [] as IReferential[],\r\n region: {} as IReferential,\r\n district: {} as IReferential,\r\n city: {} as IReferential,\r\n bankName: '',\r\n bankList: [] as IReferential[],\r\n\r\n clientData: {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n caseSectionStepFormId: this.props.workflowForm.id,\r\n clientId: 0,\r\n pin: '',\r\n companyNumber: '',\r\n companyName: '',\r\n attachments: [] as CaseAttachment[],\r\n gdprAgreement: true,\r\n address: '',\r\n city: '',\r\n region: '',\r\n district: '',\r\n bankAccount: '',\r\n email: '',\r\n phone: ''\r\n } as CaseClient\r\n } as ICaseDetailsCaseTabClientDataFormState;\r\n\r\n inputTextValidator = React.createRef();\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseClientDataForm();\r\n }\r\n );\r\n\r\n ValidatorForm.addValidationRule('isValidCNP', (value) => {\r\n if (!value) {\r\n return true;\r\n }\r\n\r\n const cnp = new CNP(value);\r\n\r\n if (!cnp.isValid()) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n ValidatorForm.addValidationRule('isIbanValid', (value) => {\r\n if (!value) {\r\n return true;\r\n }\r\n\r\n const ibanValidationResult = IbanTools.validateIBAN(value.replace(/\\s/g, ''));\r\n return ibanValidationResult.valid;\r\n });\r\n }\r\n\r\n loadCaseClientDataForm = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n const casee = this.props.caseSettingsState.case;\r\n\r\n let caseClient = this.state.clientData;\r\n if (!R.isNil(casee!.caseClient)) {\r\n caseClient = casee!.caseClient;\r\n }\r\n\r\n const personTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.PersonType\r\n );\r\n const refAttachemntType = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.AttachmentType\r\n );\r\n const refBanks = Referentials.referential.find((item) => item.code === ReferentialCode.Bank);\r\n\r\n const [personTypeList, attachmentTypes] = await Promise.all([\r\n this.appReferentialService.Get(personTypeRef!.baseUrl),\r\n this.appReferentialService.Get(refAttachemntType!.baseUrl)\r\n ]);\r\n\r\n caseClient.attachments.forEach(\r\n (item) =>\r\n (item.attachmentType = attachmentTypes.find(\r\n (item) => item.code === AttachmentTypeCode.OTHER\r\n )!)\r\n );\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n const { regionRef, cityRef, districtRef } = RefConstants;\r\n const [regions, cities, districts, banks] = await Promise.all([\r\n this.appReferentialService.Get(regionRef!.baseUrl),\r\n this.appReferentialService.Get(cityRef!.baseUrl),\r\n this.appReferentialService.Get(districtRef!.baseUrl),\r\n this.appReferentialService.Get(refBanks!.baseUrl)\r\n ]);\r\n\r\n console.log('personTypeList', personTypeList);\r\n this.setState({\r\n ...this.state,\r\n isLoading: false,\r\n hasRights: hasRights,\r\n isUserHidden: !hasRights,\r\n personTypes: personTypeList,\r\n clientData: caseClient,\r\n attachType: attachmentTypes.find((item) => item.code === AttachmentTypeCode.OTHER)!,\r\n regionsTypes: regions,\r\n citiesTypes: cities,\r\n districtsTypes: districts,\r\n region:\r\n regions.find((item) => item.displayName === caseClient.region)! || ({} as IReferential),\r\n district:\r\n districts.find((item) => item.displayName === caseClient.district)! || ({} as IReferential),\r\n city: cities.find((item) => item.displayName === caseClient.city)! || ({} as IReferential),\r\n bankList: banks\r\n });\r\n };\r\n\r\n formatBankAccount = (bankAccountValue: string) => {\r\n return bankAccountValue.length > 5\r\n ? bankAccountValue\r\n //.replace(/[^\\dA-Z]/g, '')\r\n .replace(/(.{4})/g, '$1 ')\r\n .trim()\r\n : bankAccountValue;\r\n };\r\n\r\n updateBankOnblur() {\r\n const newBankName =\r\n this.state.bankList.find(\r\n (b) => b.code === this.state.clientData.bankAccount.replace(/\\s/g, '').substr(4, 4)\r\n )?.name || '';\r\n this.setState({\r\n bankName: newBankName\r\n });\r\n }\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n\r\n submitClientData = async (e: any) => {\r\n try {\r\n this.setState({ executing: true });\r\n\r\n let newCaseClient = {\r\n ...this.state.clientData,\r\n caseSectionStepFormId: this.props.workflowForm.id\r\n };\r\n\r\n if (this.state.clientData.id === 0) {\r\n newCaseClient = await this.caseService.AddCaseClient(this.state.clientData);\r\n } else {\r\n await this.caseService.UpdateCaseClient(newCaseClient);\r\n }\r\n\r\n await this.submitForm(\r\n this.props.caseSettingsState.case!.id,\r\n this.props.workflowForm.id,\r\n null\r\n );\r\n\r\n this.props.SetCaseClientData(newCaseClient);\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n handleCNPChange = (e: any) => {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n pin: e.target.value\r\n }\r\n });\r\n };\r\n\r\n handlePersonTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n personType: newValue,\r\n personTypeId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n };\r\n\r\n handleTextChange = (e: any) => {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n email: e.target.value\r\n }\r\n });\r\n };\r\n\r\n handleAddressChange = (e: any) => {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n address: e.target.value\r\n }\r\n });\r\n };\r\n\r\n handleBankAccountChange = (e: any) => {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n bankAccount: e.target.value\r\n }\r\n });\r\n };\r\n\r\n handleIsActiveAgreement = (e: any) => {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n gdprAgreement: e.currentTarget.checked\r\n }\r\n });\r\n };\r\n\r\n handleUploadAttachment = async (e: React.ChangeEvent) => {\r\n try {\r\n let attachments = [...this.state.clientData.attachments];\r\n if (R.isNil(e.target.files)) {\r\n return;\r\n }\r\n\r\n attachments = [];\r\n\r\n attachments.push({\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n attachmentTypeId: this.state.attachType.id,\r\n attachmentType: this.state.attachType,\r\n file: e.target.files![0],\r\n fileName: e.target.files![0].name,\r\n uploadDate: new Date(),\r\n carPhotos: false,\r\n originalFileName: e.target.files![0].name,\r\n caseRequestId: null,\r\n paymentId: null,\r\n serviceAppointmentId: null,\r\n caseClientId: null,\r\n isSelection: false\r\n });\r\n\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n attachments: attachments\r\n }\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n isCnpCuiEnabled = () => {\r\n const workflowSectionStepId = this.props.workflowForm.workflowSectionStepId;\r\n const resultPart1 = this.props.caseSettingsState.caseSettings!.workflow.workflowSections?.find(\r\n (x) => x.workflowSectionSteps.some((y) => y.id == workflowSectionStepId)\r\n );\r\n let shouldEnableCnpCUi = false;\r\n if (!isNullOrUndefined(resultPart1)) {\r\n shouldEnableCnpCUi = resultPart1?.section?.code === SectionCode.Oferte;\r\n }\r\n\r\n const result =\r\n shouldEnableCnpCUi || isNullOrUndefined(this.props.caseSettingsState.case?.caseClient);\r\n return result;\r\n };\r\n\r\n checkIsItsSaleWorkflow = () => {\r\n const workflowSectionStepId = this.props.workflowForm.workflowSectionStepId;\r\n const resultPart1 = this.props.caseSettingsState.caseSettings!.workflow.workflowSections?.find(\r\n (x) => x.workflowSectionSteps.some((y) => y.id == workflowSectionStepId)\r\n );\r\n\r\n let showResetClientData = false;\r\n if (!isNullOrUndefined(resultPart1)) {\r\n showResetClientData = resultPart1?.section?.code === SectionCode.Oferte;\r\n }\r\n return showResetClientData;\r\n };\r\n\r\n handleDeleteAttachment = async (id: number, fileName: string) => {\r\n try {\r\n const attachments = [...this.state.clientData.attachments];\r\n const index = attachments.findIndex((item) => item.id === id);\r\n attachments.splice(index, 1);\r\n\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n attachments: attachments\r\n }\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleAdvertRegionTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n ...this.state,\r\n region: newValue,\r\n city: null,\r\n district: null,\r\n clientData: {\r\n ...this.state.clientData,\r\n region: newValue?.displayName,\r\n city: null,\r\n district: null\r\n }\r\n });\r\n };\r\n\r\n handleAdvertDistrictTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n ...this.state,\r\n district: newValue,\r\n clientData: {\r\n ...this.state.clientData,\r\n district: newValue?.displayName\r\n }\r\n });\r\n };\r\n\r\n handleCnpCuiOnBlur = async (newValue: any) => {\r\n if (\r\n isNullOrUndefined(this.state.clientData.personType) ||\r\n (this.state.clientData.pin.length == 0 && this.state.clientData.companyNumber.length == 0)\r\n ) {\r\n return;\r\n }\r\n this.setState({ isLoading: true });\r\n\r\n const pin_cui =\r\n this.state.clientData.personType!.code === InsuredTypeCode.PJ\r\n ? this.state.clientData.companyNumber\r\n : this.state.clientData.pin;\r\n\r\n const clients = await this.caseService.SearchClient(\r\n this.state.clientData.personType!.id,\r\n pin_cui,\r\n ''\r\n );\r\n\r\n if (clients.length > 0) {\r\n const client = clients[0];\r\n const region =\r\n this.state.regionsTypes.find((item) => item.displayName === client.region)! ||\r\n ({} as IReferential);\r\n const city =\r\n this.state.citiesTypes.find(\r\n (item) => item.displayName === client.city && item.dependencyId == region.id\r\n )! || ({} as IReferential);\r\n const district =\r\n this.state.districtsTypes.find(\r\n (item) => item.displayName === client.district && item.dependencyId === city.id\r\n )! || ({} as IReferential);\r\n const bankName = client.bankAccount\r\n ? this.state.bankList.find(\r\n (b) => b.code === client.bankAccount.replace(/\\s/g, '')?.substr(4, 4)\r\n )?.name || ''\r\n : '';\r\n this.setState({\r\n ...this.state,\r\n clientData: {\r\n ...this.state.clientData,\r\n clientId: client.id,\r\n companyName: client.companyName,\r\n companyNumber: client.companyNumber,\r\n contactPerson: client.contactPerson,\r\n phone: client.phone,\r\n firstName: client.firstName,\r\n lastName: client.lastName,\r\n email: client.email,\r\n address: client.address,\r\n city: client.city,\r\n region: client.region,\r\n district: client.district,\r\n bankAccount: client.bankAccount\r\n },\r\n bankName: bankName,\r\n region: region,\r\n city: city,\r\n district: district\r\n });\r\n this.handleAdvertRegionTypeChange(region);\r\n this.handleAdvertCityTypeChange(city);\r\n this.handleAdvertDistrictTypeChange(district);\r\n }\r\n\r\n this.setState({ isLoading: false });\r\n };\r\n\r\n handleAdvertCityTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n ...this.state,\r\n city: newValue,\r\n district: null,\r\n clientData: {\r\n ...this.state.clientData,\r\n city: newValue?.displayName,\r\n district: null\r\n }\r\n });\r\n };\r\n\r\n renderAttachmentBox = () => {\r\n return (\r\n \r\n \r\n {this.state.clientData.attachments.length !== 0\r\n ? this.state.clientData.attachments.map((attach, index) => {\r\n return (\r\n
\r\n
\r\n this.downloadFile(attach.fileName, attach.originalFileName)}\r\n >\r\n {attach.originalFileName}\r\n \r\n
\r\n
\r\n this.handleDeleteAttachment(attach.id, attach.fileName)}\r\n disabled={!this.state.hasRights}\r\n >\r\n \r\n \r\n
\r\n
\r\n );\r\n })\r\n : null}\r\n
\r\n \r\n {\r\n return this.handleUploadAttachment(e);\r\n }}\r\n type=\"file\"\r\n />\r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n resetClientData = () => {\r\n this.setState({\r\n region: {} as IReferential,\r\n district: {} as IReferential,\r\n city: {} as IReferential,\r\n bankName: '',\r\n clientData: {\r\n id: this.state.clientData.id,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n caseSectionStepFormId: this.props.workflowForm.id,\r\n clientId: 0,\r\n pin: '',\r\n companyNumber: '',\r\n companyName: '',\r\n attachments: [] as CaseAttachment[],\r\n gdprAgreement: true,\r\n address: '',\r\n city: '',\r\n region: '',\r\n district: '',\r\n bankAccount: ''\r\n } as CaseClient\r\n });\r\n };\r\n\r\n rendeClientDataForm = () => {\r\n return (\r\n {\r\n this.submitClientData(e);\r\n }}\r\n >\r\n {this.checkIsItsSaleWorkflow() ? (\r\n
\r\n {\r\n this.resetClientData();\r\n }}\r\n >\r\n {this.translatorService.Tranlate('RESET_CLIENT_DATA', 'Reseteaza date client')}\r\n \r\n
\r\n ) : (\r\n ''\r\n )}\r\n\r\n
\r\n \r\n this.handlePersonTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n {!R.isNil(this.state.clientData.personType!) &&\r\n this.state.clientData.personType!.code === InsuredTypeCode.PJ ? (\r\n
\r\n {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n companyNumber: e.target.value\r\n }\r\n });\r\n }}\r\n onBlur={async (e: any) => {\r\n await this.handleCnpCuiOnBlur(e);\r\n }}\r\n label={this.translatorService.Tranlate('CLIENT_DATA_FORM_CUI', 'CUI')}\r\n />\r\n\r\n {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n companyName: e.target.value\r\n }\r\n });\r\n }}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'CLIENT_DATA_FORM_COMPANY_NAME',\r\n 'Nume companie'\r\n )}\r\n />\r\n\r\n {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n contactPerson: e.target.value\r\n }\r\n });\r\n }}\r\n placeholder={this.translatorService.Tranlate(\r\n 'CLIENT_DATA_FORM_CONTACT_PERSON',\r\n 'Persoana de contact'\r\n )}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'CLIENT_DATA_FORM_CONTACT_PERSON',\r\n 'Persoana de contact'\r\n )}\r\n />\r\n
\r\n ) : (\r\n
\r\n {\r\n this.handleCNPChange(e);\r\n }}\r\n onBlur={async (e: any) => {\r\n await this.handleCnpCuiOnBlur(e);\r\n }}\r\n validators={['isValidCNP']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('CLIENT_DATA_FORM_VALIDATOR_CNP', 'CNP invalid')\r\n ]}\r\n label={this.translatorService.Tranlate('CLIENT_DATA_FORM_CNP', 'CNP')}\r\n />\r\n\r\n {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n lastName: e.target.value\r\n }\r\n });\r\n }}\r\n fullWidth\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('CLIENT_DATA_FORM_NAME', 'Nume')}\r\n />\r\n\r\n {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n firstName: e.target.value\r\n }\r\n });\r\n }}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('CLIENT_DATA_FORM_SURNAME', 'Prenume')}\r\n />\r\n
\r\n )}\r\n\r\n this.handleTextChange(e)}\r\n validators={['isEmail']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_EMAIL', 'E-mail invalid')\r\n ]}\r\n label={this.translatorService.Tranlate('CLIENT_DATA_FORM_EMAIL', 'E-mail')}\r\n />\r\n\r\n {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n phone: e.target.value\r\n }\r\n });\r\n }}\r\n name=\"phone\"\r\n className=\"m-2\"\r\n label={this.translatorService.Tranlate('CLIENT_DATA_FORM_PHONE', 'Telefon')}\r\n value={this.state.clientData.phone || ''}\r\n />\r\n\r\n this.updateBankOnblur()}\r\n onChange={(e) => this.handleBankAccountChange(e)}\r\n validators={['isIbanValid']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'CASE_PAYMENT_DETAILS_FORM_IBAN_INVALID_WARNING',\r\n 'IBAN-ul este invalid'\r\n )\r\n ]}\r\n />\r\n\r\n \r\n \r\n
\r\n \r\n this.handleAdvertRegionTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n \r\n
\r\n city.dependencyId === this.state.region?.id\r\n )}\r\n value={this.state.city || null}\r\n onChange={(e: any, newValue: IReferential | null) =>\r\n this.handleAdvertCityTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n district.dependencyId === this.state.city?.id\r\n )}\r\n value={this.state.district || null}\r\n onChange={(e: any, newValue: IReferential | null) =>\r\n this.handleAdvertDistrictTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n district.dependencyId === this.state.city?.id\r\n ).length > 0\r\n ? ['required']\r\n : []\r\n }\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n ]}\r\n />\r\n )}\r\n />\r\n
\r\n
\r\n \r\n
\r\n {\r\n this.setState({\r\n ...this.state,\r\n clientData: {\r\n ...this.state.clientData,\r\n address: e.target.value\r\n }\r\n });\r\n }}\r\n label={this.translatorService.Tranlate('CLIENT_DATA_FORM_ADDRESS', 'Adresa')}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('CLIENT_DATA_FORM_GDPR', 'Acord GDPR')}\r\n \r\n \r\n\r\n \r\n this.handleIsActiveAgreement(e)}\r\n color=\"primary\"\r\n />\r\n }\r\n label={this.translatorService.Tranlate('CLIENT_DATA_FORM_SIGNED', 'Semnat')}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n \r\n\r\n \r\n {this.renderAttachmentBox()}\r\n \r\n \r\n
\r\n\r\n \r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
{this.rendeClientDataForm()}
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabClientDataFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabClientDataForm as any));\r\n","import { Icons } from 'material-table';\r\nimport React, { forwardRef } from 'react';\r\n\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\n\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\n\r\nexport const MaterialTableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\nexport const getLocalization = (translatorService: ITranslatorService) => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: translatorService.Tranlate('SEARCH', 'Cauta'),\r\n nRowsSelected: `{0} ${translatorService.Tranlate('ROWS_SELECTED', 'randuri selectate')}`\r\n },\r\n body: {\r\n editTooltip: translatorService.Tranlate('EDIT', 'Editeaza'),\r\n deleteTooltip: translatorService.Tranlate('DELETE', 'Sterge'),\r\n addTooltip: translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: translatorService.Tranlate('SAVE', 'Salveaza'),\r\n deleteText: translatorService.Tranlate(\r\n 'DELETE_TEXT',\r\n 'Sigur doriti sa stergeti aceasta inregistrare?'\r\n )\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows: '{from}-{to} ' + translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n};\r\n\r\nexport const getAdvertLocalization = (translatorService: ITranslatorService) => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: translatorService.Tranlate('SEARCH', 'Cauta'),\r\n nRowsSelected: `{0} ${translatorService.Tranlate('ADVERT_ROWS_SELECTED', 'dotari selectate')}`\r\n },\r\n body: {\r\n editTooltip: translatorService.Tranlate('EDIT', 'Editeaza'),\r\n deleteTooltip: translatorService.Tranlate('DELETE', 'Sterge'),\r\n addTooltip: translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: translatorService.Tranlate('SAVE', 'Salveaza'),\r\n deleteText: translatorService.Tranlate(\r\n 'DELETE_TEXT',\r\n 'Sigur doriti sa stergeti aceasta inregistrare?'\r\n )\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows: '{from}-{to} ' + translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n};\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport FileSaver from 'file-saver';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\r\nimport { Button, IconButton, Grid, TextField, Typography } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../../context/Contexts';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { CurrencyCode, ReferentialCode } from '../../../helpers/Constants';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { TextValidator } from 'react-material-ui-form-validator';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { Utils } from '../../../helpers/Utils';\r\nimport * as R from 'ramda';\r\nimport { Cost, CostAttachment } from '../../../interfaces/Vehicle';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { IVehicleService } from '../../../services/Interfaces/IVehicleService';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { ICaseService } from '../../../services/Interfaces/ICaseService';\r\nimport NumberFormat from 'react-number-format';\r\n\r\ninterface ICaseDetailsCostDetailsFormState {\r\n showCostDetails: boolean;\r\n costTypes: IReferential[];\r\n currencyList: IReferential[];\r\n isLoading: boolean;\r\n}\r\n\r\nexport interface ExternalCaseDetailsCostDetailsFormProps {\r\n costValues: Cost[];\r\n updateCostValues: (values: Cost[]) => any;\r\n currencyTypeCode: string;\r\n caseSectionStepFormId?: number;\r\n readonly?: boolean;\r\n showTitle: boolean;\r\n vehicleId: number;\r\n}\r\n\r\ntype ICaseDetailsCostDetailsFormProps = ExternalCaseDetailsCostDetailsFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCostDetailsForm extends React.PureComponent<\r\n ICaseDetailsCostDetailsFormProps,\r\n ICaseDetailsCostDetailsFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n private caseService!: ICaseService;\r\n static contextType = ApplicationContext;\r\n state = {\r\n showCostDetails: false,\r\n costTypes: [] as IReferential[],\r\n currencyList: [] as IReferential[],\r\n isLoading: false\r\n } as ICaseDetailsCostDetailsFormState;\r\n\r\n input = React.createRef();\r\n inputTextValidator = React.createRef();\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCasePaymentDetailsForm();\r\n }\r\n );\r\n }\r\n\r\n loadCasePaymentDetailsForm = async () => {\r\n const refCurrencyType = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.Currency\r\n );\r\n const futureCurrencyList = await this.appReferentialService.Get(refCurrencyType!.baseUrl);\r\n const futureCostTypes = await this.vehicleService.GetVehicleCostTypes();\r\n\r\n this.setState({\r\n costTypes: futureCostTypes,\r\n showCostDetails: this.props.readonly || false,\r\n currencyList: futureCurrencyList\r\n });\r\n\r\n if (!this.props?.readonly) {\r\n const indexCurrency = futureCurrencyList.findIndex((item) => item?.code === CurrencyCode.EUR);\r\n const currencyType = futureCurrencyList[indexCurrency];\r\n const futureCostValues = futureCostTypes.map((cost) => {\r\n return {\r\n caseId: this.props.match?.params?.id || '',\r\n vehicleId: this.props.vehicleId,\r\n costTypeId: cost.id,\r\n costTypeCode: cost.code || '',\r\n files: [],\r\n value: null,\r\n currencyRate: this.props.currencyTypeCode\r\n ? Utils.GetCurrencyRate(this.props.appState.currencyRates, this.props.currencyTypeCode)\r\n : null,\r\n currency: currencyType?.displayName || '',\r\n secondValue: null,\r\n secondCurrency: this.getSecondCurrency(),\r\n caseSectionStepFormId: this.props.caseSectionStepFormId || null\r\n };\r\n });\r\n this.props.updateCostValues(futureCostValues);\r\n }\r\n };\r\n\r\n getSecondCurrency = () => {\r\n const indexRon = this.state?.currencyList?.findIndex((item) => item?.code === CurrencyCode.RON);\r\n const indexEur = this.state?.currencyList?.findIndex((item) => item?.code === CurrencyCode.EUR);\r\n if (this.props.currencyTypeCode === CurrencyCode.EUR) {\r\n return this.state.currencyList[indexRon]?.displayName;\r\n }\r\n\r\n return this.props.currencyTypeCode === CurrencyCode.RON\r\n ? this.state?.currencyList[indexEur]?.displayName\r\n : '';\r\n };\r\n\r\n setSecondValueBasedOnCaseCurrency(value: number): number | null {\r\n let resultValue = null;\r\n if (\r\n this.props.currencyTypeCode == CurrencyCode.EUR ||\r\n this.props.currencyTypeCode == CurrencyCode.RON\r\n ) {\r\n resultValue = 0;\r\n const previousCurrencyCode = this.props.currencyTypeCode;\r\n const futureCurrencyCode =\r\n this.props.currencyTypeCode == CurrencyCode.EUR ? CurrencyCode.RON : CurrencyCode.EUR;\r\n if (!R.isNil(value) && previousCurrencyCode) {\r\n const previousCurrencyRate = Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n previousCurrencyCode\r\n );\r\n\r\n const futureCurrencyRate = Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n futureCurrencyCode\r\n );\r\n resultValue = value * (previousCurrencyRate / futureCurrencyRate);\r\n return Number.parseFloat(resultValue.toFixed(2));\r\n }\r\n }\r\n\r\n return resultValue;\r\n }\r\n\r\n handleChange = (e: React.ChangeEvent, index: number) => {\r\n if (!this.props.updateCostValues) {\r\n return;\r\n }\r\n const val = e.target.value;\r\n const futureCostValues = [...this.props.costValues];\r\n futureCostValues[index].value = Number.isNaN(Number.parseFloat(val))\r\n ? null\r\n : Number.parseFloat(val);\r\n futureCostValues[index].secondValue = Number.isNaN(Number.parseFloat(val))\r\n ? null\r\n : this.setSecondValueBasedOnCaseCurrency(Number.parseFloat(val));\r\n this.props.updateCostValues(futureCostValues);\r\n };\r\n\r\n getLabel = (item: Cost) => {\r\n if (!item.value) {\r\n return '';\r\n }\r\n const valueWithoutVat = this.translatorService.Tranlate(\r\n 'CASE_PAYMENT_DETAILS_FORM_PAYMENT_AMOUNT_WITHOUT_VAT_LABEL',\r\n 'Suma fara TVA'\r\n );\r\n return `${valueWithoutVat} | ${item?.value?.toFixed(2)} ${item?.currency}${\r\n item?.secondCurrency && `( ${item?.secondValue} ${item?.secondCurrency})`\r\n }`;\r\n };\r\n\r\n handleUploadCostAttachment = async (e: React.ChangeEvent, index: number) => {\r\n try {\r\n const futureCostValues = [...this.props.costValues];\r\n futureCostValues[index].files.push({\r\n file: e.target.files![0],\r\n fileName: e.target.files![0].name,\r\n originalFileName: e.target.files![0].name\r\n } as any as CostAttachment);\r\n\r\n this.props.updateCostValues(futureCostValues);\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n downloadVehicleCostFile = async (fileName: string, origFileName: string) => {\r\n const fileBlob = await this.vehicleService.GetVehicleCostAttachment(fileName);\r\n FileSaver.saveAs(fileBlob, origFileName);\r\n };\r\n\r\n getValue = (item: Cost) => {\r\n if (!item.value) {\r\n return '';\r\n }\r\n return item.value;\r\n };\r\n\r\n handleDeleteCostAttachment = async (index: number, indexAttachment: number) => {\r\n try {\r\n const futureCostValues = [...this.props.costValues];\r\n futureCostValues[index].files.splice(indexAttachment, 1);\r\n\r\n this.props.updateCostValues(futureCostValues);\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n\r\n renderCostType = (cost: IReferential, index: number) => {\r\n const indexLang = cost.translations.findIndex(\r\n (lang) => lang.language === this.translatorService.GetLanguage()\r\n );\r\n return (\r\n \r\n \r\n {cost.translations[indexLang].name}\r\n \r\n \r\n \r\n ) => this.handleChange(e, index)}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom,\r\n style: { fontWeight: 500 }\r\n }}\r\n />\r\n \r\n {this.props.costValues[index].files.length ? (\r\n \r\n {this.props.costValues[index].files.length !== 0\r\n ? this.props.costValues[index].files.map((attach, indexAttachment) => {\r\n return (\r\n
\r\n
\r\n \r\n this.downloadVehicleCostFile(attach.fileName, attach.originalFileName)\r\n }\r\n >\r\n \r\n {attach.originalFileName}\r\n \r\n \r\n
\r\n
\r\n this.handleDeleteCostAttachment(index, indexAttachment)}\r\n >\r\n \r\n \r\n
\r\n
\r\n );\r\n })\r\n : null}\r\n
\r\n ) : (\r\n \r\n \r\n {\r\n return this.handleUploadCostAttachment(e, index);\r\n }}\r\n type=\"file\"\r\n // disabled={!this.state.hasRights}\r\n />\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n );\r\n };\r\n\r\n downloadFile = async (fileName: string, origFileName: string) => {\r\n const fileBlob = await this.caseService.GetCaseAttachment(fileName);\r\n FileSaver.saveAs(fileBlob, origFileName);\r\n };\r\n\r\n renderCostTypeFromCase = (cost: Cost, index: number) => {\r\n const indexLang = cost?.costType?.translations.findIndex(\r\n (lang) => lang.language === this.translatorService.GetLanguage()\r\n );\r\n if (indexLang === undefined || indexLang < 0) {\r\n return <>;\r\n }\r\n\r\n return (\r\n \r\n \r\n {cost?.costType?.translations[indexLang].name}\r\n \r\n \r\n \r\n ) => this.handleChange(e, index)}\r\n />\r\n \r\n \r\n {cost.attachments && cost.attachments.length !== 0\r\n ? cost.attachments.map((attach, index) => {\r\n return (\r\n
\r\n
\r\n \r\n this.downloadVehicleCostFile(attach.fileName, attach.originalFileName)\r\n }\r\n >\r\n \r\n {attach.originalFileName}\r\n \r\n \r\n
\r\n
\r\n );\r\n })\r\n : ''}\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n renderCostDetailsFromCase() {\r\n return (\r\n
\r\n {this.props?.costValues &&\r\n this.props?.costValues?.map((cost, index) => this.renderCostTypeFromCase(cost, index))}\r\n
\r\n );\r\n }\r\n\r\n renderCostDetails = () => {\r\n return (\r\n <>\r\n \r\n {this.props.showTitle ? (\r\n {this.translatorService.Tranlate('COSTS', 'Costuri')}\r\n ) : null}\r\n \r\n\r\n \r\n \r\n {this.translatorService.Tranlate('ADD_COSTS', 'Adauga cost aditional')}{' '}\r\n \r\n {\r\n this.setState({ showCostDetails: !this.state.showCostDetails });\r\n }}\r\n style={{ marginLeft: 10 }}\r\n color=\"primary\"\r\n />\r\n \r\n {this.state.showCostDetails &&\r\n this.props?.costValues?.length > 0 &&\r\n this.state.costTypes?.map((type, index) => this.renderCostType(type, index))}\r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n\r\n return <>{this.props.readonly ? this.renderCostDetailsFromCase() : this.renderCostDetails()};\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCostDetailsFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCostDetailsForm as any));\r\n","export default __webpack_public_path__ + \"static/media/hand-pen-01.b5aa1de4.svg\";","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsActionCreators,\r\n VehicleActionCreators\r\n} from '../../../store';\r\nimport { withSnackbar } from 'notistack';\r\nimport {\r\n Button,\r\n IconButton,\r\n Grid,\r\n Dialog,\r\n DialogTitle,\r\n Typography,\r\n DialogContent,\r\n Paper,\r\n Tooltip,\r\n InputAdornment,\r\n TextField,\r\n Modal,\r\n DialogActions,\r\n DialogContentText,\r\n FormControlLabel,\r\n Switch\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../../context/Contexts';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport {\r\n ValuationVehicle,\r\n ValuationExtraOption,\r\n ValuationModel,\r\n ValuationBody,\r\n PlateNumber,\r\n AcquisitionCaseRequest\r\n} from '../../../interfaces/Case';\r\nimport { ICaseService } from '../../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport {\r\n AttachmentTypeCode,\r\n CarDetailsSettings,\r\n CaseTypeCode,\r\n CurrencyCode,\r\n FuelTypeEnum,\r\n RefConstants,\r\n VehicleStatusCodeEnum\r\n} from '../../../helpers/Constants';\r\nimport { AppUser } from '../../../interfaces/AppUser';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferential, IReferentialModel } from '../../../interfaces/IReferential';\r\nimport { FormHelpers } from '../../../helpers/forms/FormHelpers';\r\nimport NumberFormat from 'react-number-format';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport CaseDetailsValuation from '../CaseDetailsValuation';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport MaterialTable, { Column } from 'material-table';\r\nimport { Cost, Vehicle, VehicleOption } from '../../../interfaces/Vehicle';\r\nimport { IVehicleService } from '../../../services/Interfaces/IVehicleService';\r\nimport { Utils } from '../../../helpers/Utils';\r\nimport * as R from 'ramda';\r\nimport { ICaseDetailsCaseTabCarDetailsExtendedContainerState } from './ICaseDetailsCaseTabCarDetailsExtendedContainerState';\r\nimport { ExternalCaseDetailsCaseTabCarDetailsExtendedContainerProps } from './ExternalCaseDetailsCaseTabCarDetailsExtendedContainerProps';\r\nimport { ICaseDetailsCaseTabCarDetailsExtendedContainerProps } from './ICaseDetailsCaseTabCarDetailsExtendedContainerProps';\r\nimport { getLocalization, MaterialTableIcons } from '../../_shared/TableSettings';\r\nimport CaseDetailsCostDetailsForm from './CaseDetailsCostDetailsForm';\r\nimport _ from 'lodash';\r\nimport Loader from '../../Loader';\r\n\r\nimport manualVinIdentification from '../../../assets/images/vin/hand-pen-01.svg';\r\nimport MUIDataTable, { MUIDataTableColumnOptions, SelectableRows } from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\n\r\ntype ParsedConditions = {\r\n mandatory: number[];\r\n atLeastOne: number[];\r\n};\r\n\r\ntype OptionIds = 'includedExtraOptionIds' | 'excludedExtraOptionIds' | 'requiredExtraOptionIds';\r\n\r\ntype StatusProperties = 'isIncluded' | 'isRequired' | 'isExcluded';\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\nexport const standardOptionsSchemaIds = [\r\n 301, 2501, 3501, 3601, 23501, 23601, 23701, 23801, 23901, 24001, 31001, 32601, 34801, 38001,\r\n 38701, 38801, 42101, 42901, 44501, 48401, 49001, 50001, 55601, 57901, 58201, 58301, 58401, 58501,\r\n 58601, 59201, 59301, 59801, 63601, 63901\r\n];\r\n\r\nclass CaseDetailsCaseTabCarDetailsExtendedContainer extends React.PureComponent<\r\n ICaseDetailsCaseTabCarDetailsExtendedContainerProps,\r\n ICaseDetailsCaseTabCarDetailsExtendedContainerState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n static displayName = 'CaseDetailsCaseTabCarDetailsExtendedForm';\r\n\r\n state = {\r\n isLoading: false,\r\n hasRights: false,\r\n executing: false,\r\n isUserHidden: false,\r\n isValuationOpen: false,\r\n selectedVehicle: null,\r\n valuationVehicles: [] as ValuationVehicle[],\r\n valuationBodies: [] as ValuationBody[],\r\n valuationModels: [] as ValuationModel[],\r\n showWizard: false,\r\n attachType: {} as IReferential,\r\n personTypes: [] as IReferential[],\r\n brandTypes: [] as IReferential[],\r\n modelTypes: [] as IReferentialModel[],\r\n bodyTypes: [] as IReferential[],\r\n versionTypes: [] as IReferential[],\r\n fuelTypes: [] as IReferential[],\r\n vehicleTypes: [] as IReferential[],\r\n refurbishedList: [] as IReferential[],\r\n mvoDvBattypList: [] as IReferential[],\r\n polutionNormTypes: [] as IReferential[],\r\n transmissionTypes: [] as IReferential[],\r\n tractionTypes: [] as IReferential[],\r\n paintTypes: [] as IReferential[],\r\n tiresTypes: [] as IReferential[],\r\n rimsTypes: [] as IReferential[],\r\n colorTypes: [] as IReferential[],\r\n carInteriorStateTypes: [] as IReferential[],\r\n carExteriorStateTypes: [] as IReferential[],\r\n carMechanicalStateTypes: [] as IReferential[],\r\n carStandardOptions: [] as VehicleOption[],\r\n carOptionalOptions: [] as VehicleOption[],\r\n workflowCalculation: null,\r\n datePickerFirstRegistrationError: '',\r\n optionCodes: [] as string[],\r\n costValues: [] as Cost[],\r\n ignoreExistingMappingSwitch: false,\r\n ignoreTimeStampSwitch: false,\r\n carDetailsExtendedData: {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case ? this.props.caseSettingsState.case!.id : 0,\r\n workflowId: this.props.caseSettingsState.caseSettings\r\n ? this.props.caseSettingsState.caseSettings!.workflow.id\r\n : 0,\r\n plateNumber: '',\r\n vin: '',\r\n makeId: null,\r\n model: null,\r\n modelId: null,\r\n version: '',\r\n makeDate: '',\r\n firstRegistrationDate: '',\r\n kilometersNr: null,\r\n power: null,\r\n horsePower: null,\r\n engineSize: null,\r\n co2: null,\r\n inConditionComments: null,\r\n outConditionComments: null,\r\n technicalConditionComments: null,\r\n fuelTypeId: null,\r\n vehicleTypeId: null,\r\n pollutionNormId: null,\r\n transmissionTypeId: null,\r\n tractionTypeId: null,\r\n color: null,\r\n colorId: null,\r\n equipmentVersion: '',\r\n wheelsTypeId: null,\r\n tiresTypeId: null,\r\n paintTypeId: null,\r\n bodyTypeId: null,\r\n inConditionId: null,\r\n outConditionId: null,\r\n technicalConditionId: null,\r\n make: null,\r\n fuelType: null,\r\n vehicleType: null,\r\n pollutionNorm: null,\r\n transmissionType: null,\r\n tractionType: null,\r\n wheelsType: null,\r\n tiresType: null,\r\n paintType: null,\r\n bodyType: null,\r\n inCondition: null,\r\n outCondition: null,\r\n technicalCondition: null,\r\n vehicleOptions: [] as VehicleOption[],\r\n location: '',\r\n nrOfDoors: null,\r\n radioCode: '',\r\n engineManufactureCode: '',\r\n purchasePrice: '',\r\n refurbished: null,\r\n refurbishedId: null,\r\n fabricationYear: null\r\n } as Vehicle,\r\n carDetailsFetchedData: {} as Partial,\r\n isOpen: false,\r\n dialogVisible: false,\r\n isloadingIncludeExcludeOptions: false,\r\n includedExtraOptionIds: [],\r\n excludedExtraOptionIds: [],\r\n requiredExtraOptionIds: [],\r\n showOptionalRequiredOptions: false,\r\n optionalRequiredOptionsIds: []\r\n } as ICaseDetailsCaseTabCarDetailsExtendedContainerState;\r\n\r\n public componentDidMount() {\r\n if (!R.isNil(this.props.workflowForm)) {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseCarDetailsExtendedForm();\r\n await this.loadData();\r\n }\r\n );\r\n\r\n ValidatorForm.addValidationRule('isValidNumberOfKm', (value) => {\r\n if (value >= CarDetailsSettings.numberOfKm) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n\r\n loadCaseCarDetailsExtendedForm = async () => {\r\n const id = Number.parseInt(this.props.match.params.id);\r\n if (Number.isNaN(id)) {\r\n return;\r\n }\r\n\r\n const { personTypeRef, attachementTypeRef } = RefConstants;\r\n\r\n const [personTypeList, attachmentTypes] = await Promise.all([\r\n this.appReferentialService.Get(personTypeRef!.baseUrl),\r\n this.appReferentialService.Get(attachementTypeRef!.baseUrl)\r\n ]);\r\n\r\n const vehicleInfo = this.props.vehicleState.vehicle\r\n ? await this.vehicleService.GetVehicle(this.props.vehicleState.vehicle!.id as any)\r\n : null;\r\n this.props.vehicleState.vehicle = vehicleInfo;\r\n\r\n let hasRights = true;\r\n let caseCarDetailsExtended = this.state.carDetailsExtendedData;\r\n\r\n if (!R.isNil(this.props.workflowForm)) {\r\n hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm!.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n const vehicle = this.props.vehicleState.vehicle;\r\n\r\n if (!R.isNil(vehicle)) {\r\n caseCarDetailsExtended = {\r\n ...vehicle,\r\n kilometersNr: vehicle.kilometersNr || null,\r\n power: vehicle.power || null,\r\n horsePower: vehicle.horsePower || null,\r\n engineSize: vehicle.engineSize || null,\r\n co2: vehicle.co2 || null,\r\n nrOfDoors: vehicle.nrOfDoors || null\r\n } as Vehicle;\r\n }\r\n } else {\r\n const vehicle = await this.vehicleService.GetVehicle(id as any);\r\n caseCarDetailsExtended = {\r\n ...vehicle,\r\n kilometersNr: vehicle.kilometersNr || null,\r\n power: vehicle.power || null,\r\n horsePower: vehicle.horsePower || null,\r\n engineSize: vehicle.engineSize || null,\r\n co2: vehicle.co2 || null,\r\n nrOfDoors: vehicle.nrOfDoors || null\r\n } as Vehicle;\r\n\r\n // if there is no workflowForm hasRights is computed from current status\r\n hasRights = FormHelpers.VehicleDetailsHasRights(\r\n caseCarDetailsExtended.currentStatus?.status?.code\r\n );\r\n }\r\n\r\n let extraOptions = caseCarDetailsExtended.vehicleOptions.filter((o) => !o.isStandard) as any;\r\n extraOptions = _.filter(extraOptions, function (object) {\r\n return object.isSelected;\r\n }).concat(\r\n _.filter(extraOptions, function (object) {\r\n return !object.isSelected;\r\n })\r\n );\r\n extraOptions.forEach((item: any) => {\r\n if (item.isSelected) {\r\n item.tableData = { checked: true };\r\n item.checked = true;\r\n }\r\n });\r\n\r\n let standardOptions = caseCarDetailsExtended.vehicleOptions.filter((o) => o.isStandard) as any;\r\n standardOptions = _.filter(standardOptions, function (object) {\r\n return object.isSelected;\r\n }).concat(\r\n _.filter(standardOptions, function (object) {\r\n return !object.isSelected;\r\n })\r\n );\r\n standardOptions.forEach((item: any) => {\r\n if (item.isSelected) {\r\n item.tableData = { checked: true };\r\n item.checked = true;\r\n }\r\n });\r\n\r\n this.setState({\r\n isLoading: false,\r\n hasRights: hasRights,\r\n isUserHidden: !hasRights,\r\n personTypes: personTypeList,\r\n carDetailsExtendedData: {\r\n ...caseCarDetailsExtended,\r\n workflowId: this.props.caseSettingsState.caseSettings\r\n ? this.props.caseSettingsState.caseSettings!.workflow.id\r\n : 0\r\n },\r\n carDetailsFetchedData: {\r\n ...caseCarDetailsExtended,\r\n workflowId: this.props.caseSettingsState.caseSettings\r\n ? this.props.caseSettingsState.caseSettings!.workflow.id\r\n : 0\r\n },\r\n attachType: attachmentTypes.find((item) => item.code === AttachmentTypeCode.OTHER)!,\r\n carStandardOptions: standardOptions,\r\n carOptionalOptions: extraOptions\r\n });\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (R.isNil(newStatus)) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n if (!R.isNil(appUser)) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm!.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={0}\r\n />\r\n );\r\n };\r\n\r\n updateOptionStatus(\r\n option: VehicleOption,\r\n stateProperty: OptionIds,\r\n statusProperty: StatusProperties\r\n ) {\r\n if (\r\n this.state[stateProperty] &&\r\n this.state[stateProperty]!.length !== 0 &&\r\n option.optionId &&\r\n this.state[stateProperty]!.includes(option.optionId)\r\n ) {\r\n option[statusProperty] = true;\r\n }\r\n }\r\n\r\n checkIfVinExistOnAcquisitionCase = async () => {\r\n //Dosar Achizitie\r\n if (!this.props.caseSettingsState.caseSettings?.workflow.isEvaluationWorkflow &&\r\n this.props.caseSettingsState?.case?.caseType?.code === CaseTypeCode.AQUISITION) {\r\n console.log('Dosar Achizitie'); \r\n const request = {\r\n vin: this.state.carDetailsExtendedData.vin\r\n } as AcquisitionCaseRequest;\r\n const vinAquisitionCases = (await this.caseService.GetAcquisitionCases(request)).filter(x => x.id !== this.props.caseSettingsState.case!.id);\r\n if (vinAquisitionCases.length > 0) {\r\n this.props.enqueueSnackbar(\r\n (this.translatorService.Tranlate(\r\n 'ALREADY_AQUISITION_CASE',\r\n 'Exista deja un dosar de achizitie deschis, va rugam sa verificati!'\r\n ) + '\\n' +\r\n (vinAquisitionCases.length == 1 ? this.translatorService.Tranlate('CASES_ID_LABEL', 'Id-ul dosarului este: ') : this.translatorService.Tranlate('CASES_IDS', 'Id-urile dosarelor sunt: ')) +\r\n vinAquisitionCases.map((item) => item.id).join(', ')),\r\n {\r\n variant: 'warning',\r\n style: { whiteSpace: 'pre-line' },\r\n autoHideDuration: 6000\r\n }\r\n );\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n submitVehicleData = async (e: any) => {\r\n this.setState({ executing: true });\r\n\r\n const vinExists = await this.checkIfVinExistOnAcquisitionCase();\r\n if (vinExists) {\r\n this.setState({ executing: false });\r\n return;\r\n }\r\n\r\n this.state.costValues.forEach(async (cost) => {\r\n if (cost.value) {\r\n await this.vehicleService.AddCost(cost);\r\n }\r\n });\r\n\r\n let newVehicle = { ...this.state.carDetailsExtendedData } as Vehicle;\r\n newVehicle.vehicleOptions = [];\r\n\r\n this.state.carStandardOptions.forEach((standardOption) => {\r\n standardOption.isSelected = standardOption.checked;\r\n });\r\n this.state.carOptionalOptions.forEach((optionalOption) => {\r\n optionalOption.isSelected = optionalOption.checked;\r\n // add included, excluded and required options\r\n this.updateOptionStatus(optionalOption, 'requiredExtraOptionIds', 'isRequired');\r\n this.updateOptionStatus(optionalOption, 'includedExtraOptionIds', 'isIncluded');\r\n this.updateOptionStatus(optionalOption, 'excludedExtraOptionIds', 'isExcluded');\r\n });\r\n\r\n newVehicle.vehicleOptions.push(...this.state.carStandardOptions);\r\n newVehicle.vehicleOptions.push(...this.state.carOptionalOptions);\r\n\r\n try {\r\n\r\n let status = VehicleStatusCodeEnum.Available;\r\n\r\n if (this.props.caseSettingsState?.case?.caseType?.code === CaseTypeCode.AQUISITION) {\r\n status = VehicleStatusCodeEnum.Aquisition;\r\n }\r\n\r\n if (\r\n this.props.caseSettingsState?.case?.caseType?.code === CaseTypeCode.SALE ||\r\n this.props.caseSettingsState?.case?.caseType?.code === CaseTypeCode.OMV\r\n ) {\r\n status = VehicleStatusCodeEnum.ForSale;\r\n }\r\n\r\n if (this.state.carDetailsExtendedData.id === 0) {\r\n newVehicle = await this.caseService.AddVehicle(\r\n {\r\n vehicle: newVehicle,\r\n initialStatus: status\r\n },\r\n this.props.caseSettingsState.case!.id\r\n );\r\n } else {\r\n await this.vehicleService.UpdateVehicle(newVehicle);\r\n if (status === VehicleStatusCodeEnum.ForSale) {\r\n await this.vehicleService.ChangeVehicleStatus({\r\n vehicleId: newVehicle.id,\r\n statusId: status,\r\n comment: ''\r\n });\r\n }\r\n }\r\n\r\n if (!R.isNil(this.props.workflowForm)) {\r\n await this.submitForm(\r\n this.props.caseSettingsState.case!.id,\r\n this.props.workflowForm!.id,\r\n null\r\n );\r\n }\r\n\r\n if (newVehicle.valuationVehicleId && newVehicle.vin) {\r\n await this.caseService.ValuationSaveMapping(newVehicle.vin, newVehicle.valuationVehicleId);\r\n }\r\n await this.loadVehicleCosts();\r\n this.props.SetCaseVehicleData(newVehicle.id);\r\n this.props.setVehicleObject(newVehicle);\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({\r\n executing: false,\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n id: newVehicle.id\r\n }\r\n });\r\n }\r\n };\r\n\r\n handleBrandTypeChange = async (e: any, newValue: IReferential | null) => {\r\n // if (R.isNil(this.state.selectedVehicle) && !R.isNil(newValue)) {\r\n // const valuationModels = await this.caseService.GetValuationModels(\r\n // newValue!.name!,\r\n // new Date(this.state.carDetailsExtendedData.firstRegistrationDate)\r\n // );\r\n // const modelTypes = R.innerJoin(\r\n // (stateModel, valuationModel) => stateModel.code === valuationModel.model,\r\n // this.state.modelTypes,\r\n // valuationModels\r\n // ) as IReferential[] as any as ValuationModel[];\r\n\r\n // this.setState({\r\n // ...this.state,\r\n // valuationModels: modelTypes\r\n // });\r\n // }\r\n\r\n this.setState({\r\n ...this.state,\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n make: newValue,\r\n makeId: Utils.GetIdOrNull(newValue),\r\n model: null,\r\n modelId: null,\r\n bodyType: null,\r\n bodyTypeId: null\r\n }\r\n });\r\n };\r\n\r\n loadVehicleCosts = async () => {\r\n const [vehicleCosts] = await Promise.all([\r\n this.vehicleService.GetVehicleCosts(this.state.carDetailsExtendedData.id) as any as Cost[]\r\n ]);\r\n const newCostValues = this.state.costValues.map((cost: Cost) => {\r\n return { ...cost, files: [], value: null, secondValue: null };\r\n });\r\n this.setState({\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n vehicleCosts: vehicleCosts\r\n },\r\n costValues: newCostValues\r\n });\r\n };\r\n\r\n handleModelTypeChange = async (e: any, newValue: IReferential | null) => {\r\n // if (\r\n // R.isNil(this.state.selectedVehicle) &&\r\n // !R.isNil(newValue) &&\r\n // !R.isNil(this.state.carDetailsExtendedData.make)\r\n // ) {\r\n // const valuationBodies = await this.caseService.GetValuationBodies(\r\n // this.state.carDetailsExtendedData.make!.name!,\r\n // newValue!.name!,\r\n // new Date(this.state.carDetailsExtendedData.firstRegistrationDate)\r\n // );\r\n // const bodyTypes = R.innerJoin(\r\n // (stateBody, valuationBody) => stateBody.name === valuationBody.body,\r\n // this.state.bodyTypes,\r\n // valuationBodies\r\n // ) as IReferential[] as any as ValuationBody[];\r\n\r\n // this.setState({\r\n // ...this.state,\r\n // valuationBodies: bodyTypes\r\n // });\r\n // }\r\n\r\n this.setState({\r\n ...this.state,\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n model: newValue,\r\n modelId: Utils.GetIdOrNull(newValue),\r\n bodyType: null,\r\n bodyTypeId: null\r\n }\r\n });\r\n };\r\n\r\n updateCostValue = (values: Cost[]) => {\r\n this.setState({ costValues: values });\r\n };\r\n\r\n onChange =\r\n (fieldName: string, fieldNameId?: string) => (e: any, newValue?: IReferential | null) => {\r\n if (fieldName === 'plateNumber') {\r\n const newValue = e.target.value.toUpperCase().replace(/[^a-zA-Z0-9]/g, ''); // Remove special characters from plate number input\r\n const updatedState = {\r\n ...this.state.carDetailsExtendedData,\r\n [fieldName]: newValue\r\n };\r\n\r\n if (fieldNameId) {\r\n updatedState[fieldNameId] = Utils.GetIdOrNull(newValue);\r\n }\r\n\r\n this.setState({\r\n carDetailsExtendedData: updatedState\r\n });\r\n } else {\r\n !R.isNil(fieldNameId)\r\n ? this.setState({\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n [fieldName]: newValue || e.target.value,\r\n [fieldNameId]: Utils.GetIdOrNull(newValue)\r\n }\r\n })\r\n : this.setState({\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n [fieldName]: newValue || e.target.value\r\n }\r\n });\r\n }\r\n };\r\n\r\n validateFirstRegistrationDate = (selectedDate?: string): string => {\r\n let error = '';\r\n\r\n if (!selectedDate) {\r\n error = this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu');\r\n } else {\r\n const currentDate = moment().format('YYYY-MM-DD');\r\n if (currentDate && selectedDate > currentDate) {\r\n error = this.translatorService.Tranlate(\r\n 'CAR_DETAILS_YEAR_OF_FIRST_REGISTRATION_ERROR',\r\n 'Data primei inmatriculari trebuie sa fie mai mica decat data curenta'\r\n );\r\n }\r\n }\r\n\r\n this.setState({\r\n datePickerFirstRegistrationError: error,\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n firstRegistrationDate: selectedDate || ''\r\n }\r\n });\r\n\r\n return error;\r\n };\r\n\r\n handleFirstRegistrationDateChange = (\r\n date: MaterialUiPickersDate | null,\r\n value?: string | null\r\n ) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n const selectedDate = date ? date.format('YYYY-MM-DD') : undefined;\r\n this.validateFirstRegistrationDate(selectedDate);\r\n };\r\n\r\n handleYearOfFabricationDateChange = (\r\n date: MaterialUiPickersDate | null,\r\n value?: string | null\r\n ) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n makeDate: date.format('YYYY-MM-DD')\r\n }\r\n });\r\n };\r\n\r\n setSelectedOptions = (extraoptions: ValuationExtraOption[], optionCodes: string[]) => {\r\n const indexArray: number[] = [];\r\n optionCodes.forEach((item) => {\r\n const index = extraoptions.findIndex((o) => o.optionCode === item);\r\n if (index !== undefined && index !== -1) {\r\n indexArray.push(index);\r\n\r\n (extraoptions[index] as any).tableData = { checked: true };\r\n extraoptions[index].checked = true;\r\n }\r\n });\r\n\r\n return indexArray;\r\n };\r\n\r\n private getModelsOptions(): IReferential[] | undefined {\r\n if (!R.isEmpty(this.state.valuationModels))\r\n return this.state.valuationModels as any as IReferential[];\r\n\r\n const filteredModelTypes = this.state.modelTypes.filter(\r\n (model) => model.makeId === this.state.carDetailsExtendedData.makeId\r\n );\r\n if (!R.isEmpty(filteredModelTypes)) return filteredModelTypes;\r\n\r\n return this.state.modelTypes;\r\n }\r\n\r\n private getBodiesOptions(): IReferential[] | undefined {\r\n if (!R.isEmpty(this.state.valuationBodies))\r\n return this.state.valuationBodies as any as IReferential[];\r\n\r\n return this.state.bodyTypes;\r\n }\r\n\r\n getValuationInfoConfirmation = async () => {\r\n const error = this.validateFirstRegistrationDate(\r\n this.state.carDetailsExtendedData.firstRegistrationDate\r\n );\r\n\r\n if (error) {\r\n return;\r\n }\r\n\r\n if (R.isEmpty(this.state.carDetailsExtendedData.vin)) return;\r\n\r\n if (\r\n !R.test(\r\n /^(?=.*[0-9])(?=.*[abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ])[0-9abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ-]{17}$/,\r\n this.state.carDetailsExtendedData.vin\r\n )\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'INVALID_CAR_VIN_IDENTIFICATOR',\r\n \"Te rugăm să te asiguri că seria de șasiu introdusă are 17 caractere alfanumerice și nu conține spații sau literele 'O' sau 'I'!\"\r\n ),\r\n {\r\n variant: 'warning'\r\n }\r\n );\r\n return;\r\n }\r\n\r\n this.setState({ selectedVehicle: null, isOpen: true, dialogVisible: true }); //reset the vehicle brought from valuation\r\n };\r\n\r\n getValuationInfo = async () => {\r\n this.setState({ selectedVehicle: null, isOpen: false, dialogVisible: false });\r\n try {\r\n const body = {\r\n registration_date: new Date(this.state.carDetailsExtendedData.firstRegistrationDate!),\r\n ignore_date: false,\r\n override_existing_match: false\r\n };\r\n\r\n const result = await this.caseService.GetValuationVehiclesInfo(\r\n this.state.carDetailsExtendedData.vin,\r\n null,\r\n body\r\n );\r\n\r\n if (result.vehicles.length === 1) {\r\n result.vehicles[0].vinQuery = true;\r\n this.selectedVehicleHandler(result.vehicles[0], result.extraOptionCodes);\r\n } else {\r\n if (result.vehicles.length == 0) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'VIN_IDENTIFICATION_NOT_FOUND',\r\n 'Identificarea VIN nu este posibilă , vă rugăm să continuaţi cu selectia manuală a autovehiculului!'\r\n ),\r\n {\r\n variant: 'warning',\r\n autoHideDuration: 5000\r\n }\r\n );\r\n }\r\n\r\n for (let i = 0; i < result.vehicles.length; i++) {\r\n result.vehicles[i].vinQuery = true;\r\n }\r\n\r\n this.setState({\r\n ...this.state,\r\n valuationVehicles: result.vehicles,\r\n optionCodes: result.extraOptionCodes,\r\n isValuationOpen: true\r\n });\r\n }\r\n } catch (err) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'VEHICLE_NOT_IDENTIFIED',\r\n 'Masina nu se poate identifica dupa VIN si data primei inmatriculari. Va rugam incercati identificarea manuala'\r\n ),\r\n { variant: 'error' }\r\n );\r\n }\r\n };\r\n\r\n handleCloseConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n\r\n handleOpenConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: true,\r\n dialogVisible: true\r\n });\r\n };\r\n\r\n handleCloseModal = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n\r\n getManualValuationInfo = async () => {\r\n const error = this.validateFirstRegistrationDate(\r\n this.state.carDetailsExtendedData.firstRegistrationDate\r\n );\r\n\r\n if (error) {\r\n return;\r\n }\r\n\r\n if (R.isEmpty(this.state.carDetailsExtendedData.vin)) return;\r\n\r\n if (\r\n !R.test(\r\n /^(?=.*[0-9])(?=.*[abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ])[0-9abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ-]{17}$/,\r\n this.state.carDetailsExtendedData.vin\r\n )\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'INVALID_CAR_VIN_IDENTIFICATOR',\r\n \"Te rugăm să te asiguri că seria de șasiu introdusă are 17 caractere alfanumerice și nu conține spații sau literele 'O' sau 'I'!\"\r\n ),\r\n {\r\n variant: 'warning'\r\n }\r\n );\r\n return;\r\n }\r\n this.setState({ selectedVehicle: null }); //reset the vehicle brought from valuation\r\n\r\n try {\r\n this.setState({\r\n ...this.state,\r\n valuationVehicles: [],\r\n optionCodes: [],\r\n isValuationOpen: true\r\n });\r\n } catch (err) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'VEHICLE_NOT_IDENTIFIED',\r\n 'Masina nu se poate identifica dupa VIN si data primei inmatriculari. Va rugam incercati identificarea manuala'\r\n ),\r\n { variant: 'error' }\r\n );\r\n }\r\n };\r\n\r\n private resetVehicleState() {\r\n this.setState({\r\n ...this.state,\r\n isValuationOpen: false,\r\n selectedVehicle: null,\r\n carStandardOptions: [],\r\n carOptionalOptions: [],\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n fuelType: null,\r\n fuelTypeId: null,\r\n vehicleType: null,\r\n vehicleTypeId: null,\r\n mvoDvBattypId: null,\r\n mvoDvBattyp: null,\r\n model: null,\r\n modelId: null,\r\n transmissionType: null,\r\n transmissionTypeId: null,\r\n bodyType: null,\r\n bodyTypeId: null,\r\n make: null,\r\n makeId: null,\r\n version: '',\r\n equipmentVersion: '',\r\n kilometersNr: null,\r\n power: null,\r\n horsePower: null,\r\n engineSize: null,\r\n co2: null,\r\n inConditionComments: null,\r\n outConditionComments: null,\r\n technicalConditionComments: null,\r\n makeDate: '',\r\n engineManufactureCode: '',\r\n nrOfDoors: null,\r\n tractionType: null,\r\n tractionTypeId: null,\r\n color: null,\r\n colorId: null,\r\n paintType: null,\r\n paintTypeId: null,\r\n pollutionNorm: null,\r\n pollutionNormId: null,\r\n fabricationYear: null\r\n }\r\n });\r\n }\r\n\r\n selectedVehicleHandler = async (selectedVehicle: any, optionsCodes: string[]) => {\r\n if (R.isNil(selectedVehicle)) return;\r\n\r\n const model = this.state.modelTypes.find((m) => m.code === selectedVehicle.model);\r\n const bodyType = this.state.bodyTypes.find((b) => b.code === selectedVehicle.body);\r\n const options = await this.caseService.GetValuationVehicleOptions(selectedVehicle.vehicleId);\r\n\r\n const fuelType = this.state.fuelTypes.find(\r\n (fuelType) => fuelType.name === selectedVehicle.fuelType\r\n );\r\n\r\n const vehicleType = this.state.vehicleTypes.find(\r\n (vehicleType) => vehicleType.name === selectedVehicle.vehicleType\r\n );\r\n\r\n const mvoDvBattyp = this.state.mvoDvBattypList.find(\r\n (mvoDvBattyp) => mvoDvBattyp.name === selectedVehicle.mvoDvBattyp\r\n );\r\n\r\n const refurbished = this.state.refurbishedList.find(\r\n (refurbishedItem) => refurbishedItem.name === selectedVehicle.refurbished\r\n );\r\n\r\n const transmissionType = this.state.transmissionTypes.find(\r\n (transmissionType) => transmissionType.code === selectedVehicle.transmission[0]\r\n );\r\n\r\n const make = this.state.brandTypes.find((make) => make.name! === selectedVehicle.manufacturer);\r\n\r\n const traction = this.state.tractionTypes.find(\r\n (tractionType) => tractionType.code === selectedVehicle.drivenWheels[0]\r\n );\r\n\r\n const pollutionNorm = this.state.polutionNormTypes.find(\r\n (x) => x.code === selectedVehicle.pollution\r\n );\r\n\r\n this.setSelectedOptions(options.extraOptions, optionsCodes);\r\n\r\n const valLanguageId = Utils.GetValuationLanguageId(this.props.appState.language);\r\n\r\n const carDetailsExtendedData = {\r\n ...this.state.carDetailsExtendedData,\r\n tractionType: traction || null,\r\n tractionTypeId: Utils.GetIdOrNull(traction),\r\n fuelType: fuelType || null,\r\n fuelTypeId: Utils.GetIdOrNull(fuelType),\r\n vehicleType: vehicleType || null,\r\n vehicleTypeId: Utils.GetIdOrNull(vehicleType),\r\n refurbishedId: Utils.GetIdOrNull(refurbished),\r\n refurbished: refurbished || null,\r\n mvoDvBattypId: Utils.GetIdOrNull(mvoDvBattyp),\r\n mvoDvBattyp: mvoDvBattyp || null,\r\n model: model || null,\r\n modelId: Utils.GetIdOrNull(model),\r\n transmissionType: transmissionType || null,\r\n transmissionTypeId: Utils.GetIdOrNull(transmissionType),\r\n make: make || null,\r\n makeId: Utils.GetIdOrNull(make),\r\n version: selectedVehicle.version || null,\r\n equipmentVersion: selectedVehicle.trimLevel !== undefined ? selectedVehicle.trimLevel : null,\r\n horsePower: selectedVehicle.powerHP || null,\r\n power: selectedVehicle.kw || null,\r\n engineSize: selectedVehicle.cc ?? 0,\r\n co2: selectedVehicle.co2 || 0,\r\n makeDate: selectedVehicle.fabricationDate,\r\n engineManufactureCode: selectedVehicle.engineManufactureCode ?? '',\r\n nrOfDoors: selectedVehicle.noOfDoors,\r\n bodyType: bodyType || null,\r\n bodyTypeId: Utils.GetIdOrNull(bodyType),\r\n pollutionNorm: pollutionNorm || null,\r\n pollutionNormId: Utils.GetIdOrNull(pollutionNorm),\r\n valuationVehicleId: selectedVehicle.vehicleId || null,\r\n vinQuery: selectedVehicle.vinQuery || false,\r\n propulsionSystem: selectedVehicle.propulsionSystem || null,\r\n fabricationYear: selectedVehicle.modelYear || null\r\n };\r\n // Since we need to make the fields that come from Vehicle Info API readonly after they are set\r\n // use a second state in order to allow the user edit the missing fields\r\n this.setState({\r\n carDetailsExtendedData,\r\n carDetailsFetchedData: {\r\n ...carDetailsExtendedData\r\n },\r\n isValuationOpen: false,\r\n selectedVehicle: selectedVehicle,\r\n carStandardOptions: options.standardOptions\r\n .filter(\r\n (item) =>\r\n item.languageId === valLanguageId && !standardOptionsSchemaIds.includes(item.schemaId)\r\n )\r\n .map((op) => {\r\n return {\r\n id: 0,\r\n code: '',\r\n name: op.content,\r\n isStandard: true,\r\n vehicleId: this.state.carDetailsExtendedData.id,\r\n checked: true\r\n } as VehicleOption;\r\n }),\r\n carOptionalOptions: options.extraOptions.map((op) => {\r\n return {\r\n id: 0,\r\n code: op.optionCode,\r\n name: op.description,\r\n isStandard: false,\r\n vehicleId: this.state.carDetailsExtendedData.id,\r\n checked: op.checked,\r\n price: op.price,\r\n optionId: op.optionId\r\n } as VehicleOption;\r\n })\r\n });\r\n };\r\n\r\n getCarStandardOptionsColumns = () => {\r\n return [\r\n {\r\n field: 'name',\r\n title: this.translatorService.Tranlate('CAR_DETAILS_CAR_STANDARD_OPTION', 'Nume'),\r\n searchable: true\r\n } as Column\r\n ];\r\n };\r\n\r\n getCarOptionalOptionsColumns = () => {\r\n return [\r\n {\r\n field: 'name',\r\n title: this.translatorService.Tranlate('CAR_DETAILS_CAR_OPTIONAL_OPTION', 'Nume'),\r\n searchable: true,\r\n render: (rowData) => {\r\n const isIncluded = this.isIncluded(rowData.optionId);\r\n const isExcluded = this.isExcluded(rowData.optionId);\r\n const isRequired = this.isRequired(rowData.optionId);\r\n const style = {\r\n color: '#fff',\r\n borderRadius: '0.15rem',\r\n padding: '2px 5px',\r\n fontSize: '12px',\r\n fontWeight: 'bold',\r\n width: 'fit-content'\r\n };\r\n const excludedStyle = {\r\n backgroundColor: '#6c757d'\r\n };\r\n const includedStyle = {\r\n backgroundColor: '#28a745'\r\n };\r\n const mandatoryStyle = {\r\n backgroundColor: '#007bff'\r\n };\r\n\r\n return (\r\n \r\n {`${rowData.name}${rowData.price !== undefined ? ` - ${rowData.price} €` : ''}`}\r\n {isExcluded && Indisponibila}\r\n {isIncluded && (\r\n Inclusa in alt pachet\r\n )}\r\n {isRequired && (\r\n Obligatorie din alt pachet\r\n )}\r\n
\r\n );\r\n }\r\n } as Column,\r\n {\r\n field: 'code',\r\n title: this.translatorService.Tranlate('CAR_DETAILS_CAR_OPTIONAL_CODE', 'Cod'),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'price',\r\n title: this.translatorService.Tranlate('CAR_DETAILS_CAR_OPTIONAL_PRICE', 'Pret'),\r\n searchable: false,\r\n hidden: true\r\n } as Column\r\n ];\r\n };\r\n\r\n loadData = async () => {\r\n const {\r\n vehicleMakeRef,\r\n bodyTypeRef,\r\n wheelsTypeRef,\r\n tractionTypeRef,\r\n transmissionTypeRef,\r\n fuelTypeRef,\r\n tiresTypeRef,\r\n paintTypeRef,\r\n vehicleConditionRef,\r\n pollutionNormRef,\r\n modelRef,\r\n colorRef,\r\n vehicleTypeRef,\r\n mvoDvBattypRef,\r\n refurbishedRef\r\n } = RefConstants;\r\n\r\n const [\r\n vehicleMakeList,\r\n bodyTypeList,\r\n wheelsTypeList,\r\n tractionTypeList,\r\n transmissionTypeList,\r\n fuelTypeList,\r\n tiresTypeList,\r\n paintTypeList,\r\n vehicleConditionList,\r\n pollutionNormList,\r\n modelTypesList,\r\n colorTypeList,\r\n vehicleTypeList,\r\n mvoDvBattypList,\r\n refurbishedList\r\n ] = await Promise.all([\r\n this.appReferentialService.Get(vehicleMakeRef?.baseUrl),\r\n this.appReferentialService.Get(bodyTypeRef!.baseUrl),\r\n this.appReferentialService.Get(wheelsTypeRef!.baseUrl),\r\n this.appReferentialService.Get(tractionTypeRef!.baseUrl),\r\n this.appReferentialService.Get(transmissionTypeRef!.baseUrl),\r\n this.appReferentialService.Get(fuelTypeRef!.baseUrl),\r\n this.appReferentialService.Get(tiresTypeRef!.baseUrl),\r\n this.appReferentialService.Get(paintTypeRef!.baseUrl),\r\n this.appReferentialService.Get(vehicleConditionRef!.baseUrl),\r\n this.appReferentialService.Get(pollutionNormRef!.baseUrl),\r\n this.appReferentialService.Get(modelRef!.baseUrl),\r\n this.appReferentialService.Get(colorRef!.baseUrl),\r\n this.appReferentialService.Get(vehicleTypeRef!.baseUrl),\r\n this.appReferentialService.Get(mvoDvBattypRef!.baseUrl),\r\n this.appReferentialService.Get(refurbishedRef!.baseUrl)\r\n ]);\r\n\r\n this.setState({\r\n isLoading: false,\r\n brandTypes: vehicleMakeList,\r\n bodyTypes: bodyTypeList,\r\n rimsTypes: wheelsTypeList,\r\n tractionTypes: tractionTypeList,\r\n transmissionTypes: transmissionTypeList,\r\n fuelTypes: fuelTypeList,\r\n tiresTypes: tiresTypeList,\r\n paintTypes: paintTypeList,\r\n carInteriorStateTypes: vehicleConditionList,\r\n carExteriorStateTypes: vehicleConditionList,\r\n carMechanicalStateTypes: vehicleConditionList,\r\n polutionNormTypes: pollutionNormList as IReferentialModel[],\r\n modelTypes: modelTypesList as IReferentialModel[],\r\n colorTypes: colorTypeList,\r\n vehicleTypes: vehicleTypeList,\r\n refurbishedList: refurbishedList,\r\n mvoDvBattypList: mvoDvBattypList\r\n });\r\n };\r\n\r\n onChangeFirstRegistrationDate = (date: Date | null) => {\r\n if (date === null) {\r\n return;\r\n }\r\n const selectedDate = date ? moment(date).format('YYYY-MM-DD') : '';\r\n\r\n this.setState({\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n firstRegistrationDate: selectedDate\r\n }\r\n });\r\n };\r\n\r\n standardOnRowAdd = (newData: VehicleOption): Promise => {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n // newData.organizationId = this.props.organizationId;\r\n\r\n // await this.organizationService.AddOrganizationBankAccount(newData);\r\n // await this.loadData();\r\n this.setState({\r\n carStandardOptions: [\r\n ...this.state.carStandardOptions,\r\n {\r\n id: 0,\r\n vehicleId: this.state.carDetailsExtendedData.id,\r\n code: newData.code || '',\r\n name: newData.name,\r\n isStandard: true,\r\n checked: true,\r\n isSelected: true\r\n }\r\n ]\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n };\r\n\r\n standardOnRowUpdate = (newData: any, oldData?: any): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n // newData.currency= null;\r\n // await this.organizationService.UpdateOrganizationBankAccount(newData);\r\n // await this.loadData();\r\n\r\n //this.setState({\r\n // carStandardOptions: [\r\n // ...this.state.carStandardOptions,\r\n // {\r\n // id: 0,\r\n // vehicleId: this.state.carDetailsExtendedData.id,\r\n // code: newData.code,\r\n // name: newData.name,\r\n // isStandard: false,\r\n // checked: true\r\n // }\r\n // ]\r\n //});\r\n\r\n setTimeout(() => {\r\n const dataUpdate = [...this.state.carStandardOptions];\r\n const index = oldData.tableData.id;\r\n dataUpdate[index] = newData;\r\n this.setState({ carStandardOptions: [...dataUpdate] });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n }, 200);\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n standardOnRowDelete = (oldData: any): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n // await this.organizationService.RemoveOrganizationBankAccount(oldData.id);\r\n // await this.loadData();\r\n setTimeout(() => {\r\n const dataDelete = [...this.state.carStandardOptions];\r\n const index = oldData.tableData.id;\r\n dataDelete.splice(index, 1);\r\n this.setState({ carStandardOptions: [...dataDelete] });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n }, 200);\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n optionalOnRowAdd = (newData: VehicleOption): Promise => {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n // newData.organizationId = this.props.organizationId;\r\n\r\n // await this.organizationService.AddOrganizationBankAccount(newData);\r\n // await this.loadData();\r\n\r\n this.setState({\r\n carOptionalOptions: [\r\n ...this.state.carOptionalOptions,\r\n {\r\n id: 0,\r\n vehicleId: this.state.carDetailsExtendedData.id,\r\n code: newData.code,\r\n name: newData.name,\r\n isStandard: false,\r\n checked: true,\r\n isSelected: true\r\n }\r\n ]\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n };\r\n\r\n optionalOnRowUpdate = (newData: any, oldData?: any): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n // newData.currency= null;\r\n // await this.organizationService.UpdateOrganizationBankAccount(newData);\r\n // await this.loadData();\r\n\r\n this.setState({\r\n carOptionalOptions: [\r\n ...this.state.carOptionalOptions,\r\n {\r\n id: 0,\r\n vehicleId: this.state.carDetailsExtendedData.id,\r\n code: newData.code,\r\n name: newData.name,\r\n isStandard: false,\r\n checked: true,\r\n isSelected: true\r\n }\r\n ]\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n optionalOnRowDelete = (oldData: any): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n // await this.organizationService.RemoveOrganizationBankAccount(oldData.id);\r\n // await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n public renderCarStandardOptionsTable = () => {\r\n const data = this.state.carStandardOptions.map((o: VehicleOption) => {\r\n return { ...o, tableData: { checked: o.checked } };\r\n });\r\n return (\r\n ({\r\n disabled: !this.state.hasRights\r\n }),\r\n toolbar: this.state.hasRights\r\n // paging: false\r\n }}\r\n localization={getLocalization(this.translatorService)}\r\n editable={{\r\n onRowAdd: this.state.hasRights\r\n ? (newData: any) => this.standardOnRowAdd(newData)\r\n : undefined,\r\n onRowUpdate: (newData: any, oldData?: any) => this.standardOnRowUpdate(newData, oldData),\r\n /*onRowDelete: (oldData: any) => this.standardOnRowDelete(oldData),*/\r\n isEditHidden: (rowData: any) => !this.state.hasRights\r\n }}\r\n components={{\r\n Container: (props) => \r\n }}\r\n onSelectionChange={(rows) => {\r\n const standardOptions = [...this.state.carStandardOptions];\r\n standardOptions.forEach((item) => {\r\n item.checked = false;\r\n });\r\n rows.forEach((item) => {\r\n standardOptions[item.tableData.id].checked = true;\r\n });\r\n\r\n this.setState({\r\n carStandardOptions: standardOptions\r\n });\r\n }}\r\n />\r\n );\r\n };\r\n\r\n public renderCarOptionalOptionsTable = () => {\r\n const data = this.state.carOptionalOptions.map((o: VehicleOption) => {\r\n return { ...o, tableData: { checked: o.checked } };\r\n });\r\n return (\r\n ({\r\n //checked: rowData.checked === true,\r\n disabled:\r\n !this.state.hasRights ||\r\n this.isIncluded(rowData.optionId) ||\r\n this.isExcluded(rowData.optionId) ||\r\n this.isRequired(rowData.optionId)\r\n }),\r\n toolbar: this.state.hasRights,\r\n rowStyle: (rowData) => ({\r\n color:\r\n this.isIncluded(rowData.optionId) ||\r\n this.isExcluded(rowData.optionId) ||\r\n this.isRequired(rowData.optionId)\r\n ? 'rgba(0, 0, 0, 0.54)'\r\n : ''\r\n })\r\n //paging: false,\r\n }}\r\n localization={getLocalization(this.translatorService)}\r\n editable={\r\n {\r\n // onRowAdd: (newData: any) => this.optionalOnRowAdd(newData),\r\n // onRowUpdate: (newData: any, oldData?: any) => this.optionalOnRowUpdate(newData, oldData),\r\n // onRowDelete: (oldData: any) => this.optionalOnRowDelete(oldData)\r\n }\r\n }\r\n components={{\r\n Container: (props) => \r\n }}\r\n onSelectionChange={async (rows) => {\r\n let extraOptions = [...this.state.carOptionalOptions];\r\n // Save the current state of selections for comparison\r\n const previousSelections = extraOptions.filter((opt) => opt.checked);\r\n\r\n extraOptions.forEach((item) => {\r\n item.checked = false;\r\n });\r\n rows.forEach((item) => {\r\n extraOptions[item.tableData.id].checked = true;\r\n });\r\n\r\n // Determine which items were newly selected or deselected\r\n const newSelections = extraOptions.filter((opt) => opt.checked);\r\n const newlySelected = newSelections.filter((opt) => !previousSelections.includes(opt));\r\n const newlyDeselected = previousSelections.filter((opt) => !newSelections.includes(opt));\r\n const lastSelectedItem =\r\n newlySelected.length > 0\r\n ? newlySelected[newlySelected.length - 1]\r\n : newlyDeselected[newlyDeselected.length - 1];\r\n\r\n const lastSelectedOptionId = lastSelectedItem.optionId ? lastSelectedItem.optionId : 0;\r\n const vehicleId = this.state.carDetailsExtendedData.valuationVehicleId\r\n ? this.state.carDetailsExtendedData.valuationVehicleId\r\n : 0;\r\n let finalIncludedOptionIds = this.state.includedExtraOptionIds\r\n ? Array.from(new Set([...this.state.includedExtraOptionIds]))\r\n : [];\r\n let finalExcludedOptionIds = this.state.excludedExtraOptionIds\r\n ? Array.from(new Set([...this.state.excludedExtraOptionIds]))\r\n : [];\r\n let finalRequiredOptionIds = this.state.requiredExtraOptionIds\r\n ? Array.from(new Set([...this.state.requiredExtraOptionIds]))\r\n : [];\r\n\r\n if (lastSelectedOptionId !== 0) {\r\n const { includedOptionIds, excludedOptionIds, requiredOptionIds } =\r\n await this.fetchIncludeAndExcludeOptions(lastSelectedOptionId, vehicleId);\r\n // if an option is selected\r\n if (newlySelected.length > 0) {\r\n if (includedOptionIds) {\r\n finalIncludedOptionIds = Array.from(\r\n new Set([...finalIncludedOptionIds, ...includedOptionIds])\r\n );\r\n\r\n extraOptions = this.updateCheckedExtraOptionsStatus(\r\n extraOptions,\r\n includedOptionIds\r\n );\r\n }\r\n\r\n if (requiredOptionIds) {\r\n if (requiredOptionIds.mandatory.length > 0) {\r\n finalRequiredOptionIds = Array.from(\r\n new Set([...finalRequiredOptionIds, ...requiredOptionIds.mandatory])\r\n );\r\n\r\n extraOptions = this.updateCheckedExtraOptionsStatus(\r\n extraOptions,\r\n requiredOptionIds.mandatory,\r\n true\r\n );\r\n }\r\n\r\n if (requiredOptionIds.atLeastOne.length > 0) {\r\n this.setState({\r\n showOptionalRequiredOptions: true,\r\n optionalRequiredOptionsIds: requiredOptionIds.atLeastOne\r\n });\r\n }\r\n }\r\n\r\n if (excludedOptionIds) {\r\n finalExcludedOptionIds = Array.from(\r\n new Set([...finalExcludedOptionIds, ...excludedOptionIds])\r\n );\r\n\r\n extraOptions = this.updateCheckedExtraOptionsStatus(\r\n extraOptions,\r\n excludedOptionIds\r\n );\r\n }\r\n\r\n extraOptions = [...extraOptions];\r\n }\r\n\r\n // if an option is deselected\r\n if (newlyDeselected.length > 0) {\r\n if (includedOptionIds) {\r\n finalIncludedOptionIds = this.removeIndexes(\r\n finalIncludedOptionIds,\r\n includedOptionIds\r\n );\r\n\r\n extraOptions = this.updateCheckedExtraOptionsStatus(\r\n extraOptions,\r\n includedOptionIds\r\n );\r\n }\r\n\r\n if (requiredOptionIds) {\r\n if (requiredOptionIds.mandatory.length > 0) {\r\n finalRequiredOptionIds = this.removeIndexes(\r\n finalRequiredOptionIds,\r\n requiredOptionIds.mandatory\r\n );\r\n finalExcludedOptionIds = this.removeIndexes(\r\n finalExcludedOptionIds,\r\n requiredOptionIds.mandatory\r\n );\r\n\r\n extraOptions = this.updateCheckedExtraOptionsStatus(\r\n extraOptions,\r\n requiredOptionIds.mandatory\r\n );\r\n }\r\n\r\n if (requiredOptionIds.atLeastOne.length > 0) {\r\n finalRequiredOptionIds = this.removeIndexes(\r\n finalRequiredOptionIds,\r\n requiredOptionIds.atLeastOne\r\n );\r\n finalExcludedOptionIds = this.removeIndexes(\r\n finalExcludedOptionIds,\r\n requiredOptionIds.atLeastOne\r\n );\r\n\r\n extraOptions = this.updateCheckedExtraOptionsStatus(\r\n extraOptions,\r\n requiredOptionIds.atLeastOne\r\n );\r\n }\r\n }\r\n\r\n if (excludedOptionIds) {\r\n finalExcludedOptionIds = this.removeIndexes(\r\n finalExcludedOptionIds,\r\n excludedOptionIds\r\n );\r\n\r\n extraOptions = this.updateCheckedExtraOptionsStatus(\r\n extraOptions,\r\n excludedOptionIds\r\n );\r\n }\r\n }\r\n }\r\n\r\n finalExcludedOptionIds = this.removeIndexes(\r\n finalExcludedOptionIds,\r\n finalRequiredOptionIds\r\n );\r\n finalIncludedOptionIds = this.removeIndexes(\r\n finalIncludedOptionIds,\r\n finalRequiredOptionIds\r\n );\r\n\r\n this.setState({\r\n carOptionalOptions: extraOptions,\r\n includedExtraOptionIds: finalIncludedOptionIds,\r\n excludedExtraOptionIds: finalExcludedOptionIds,\r\n requiredExtraOptionIds: finalRequiredOptionIds\r\n });\r\n }}\r\n />\r\n );\r\n };\r\n\r\n fetchIncludeOptions = async (optionId: number, vehicleId: number): Promise => {\r\n let includeOptionsRequest = null;\r\n\r\n try {\r\n includeOptionsRequest = await this.caseService.GetIncludeOptions(optionId, vehicleId);\r\n } catch (error) {}\r\n\r\n if (includeOptionsRequest) {\r\n const extractedIndexes = this.extractIndexes(includeOptionsRequest.rule);\r\n return extractedIndexes;\r\n }\r\n\r\n return includeOptionsRequest;\r\n };\r\n\r\n fetchExcludeOptions = async (optionId: number, vehicleId: number): Promise => {\r\n let excludeOptionsRequest = null;\r\n\r\n try {\r\n excludeOptionsRequest = await this.caseService.GetExcludeOptions(optionId, vehicleId);\r\n } catch (error) {}\r\n\r\n if (excludeOptionsRequest) {\r\n const extractedIndexes = this.extractIndexes(excludeOptionsRequest.rule);\r\n return extractedIndexes;\r\n }\r\n\r\n return excludeOptionsRequest;\r\n };\r\n\r\n fetchRequiredOptions = async (\r\n optionId: number,\r\n vehicleId: number\r\n ): Promise => {\r\n let requiredOptionsRequest = null;\r\n\r\n try {\r\n requiredOptionsRequest = await this.caseService.GetRequiredOptions(optionId, vehicleId);\r\n } catch (error) {}\r\n\r\n if (requiredOptionsRequest) {\r\n const parsedConditions = this.parseRequiredConditions(requiredOptionsRequest.rule);\r\n return parsedConditions;\r\n }\r\n\r\n return requiredOptionsRequest;\r\n };\r\n\r\n fetchIncludeAndExcludeOptions = async (optionId: number, vehicleId: number) => {\r\n let includedOptionIds = null;\r\n let excludedOptionIds = null;\r\n let requiredOptionIds = null;\r\n\r\n try {\r\n this.setState({ isloadingIncludeExcludeOptions: true });\r\n\r\n includedOptionIds = await this.fetchIncludeOptions(optionId, vehicleId);\r\n excludedOptionIds = await this.fetchExcludeOptions(optionId, vehicleId);\r\n requiredOptionIds = await this.fetchRequiredOptions(optionId, vehicleId);\r\n } catch (error) {\r\n this.setState({ isloadingIncludeExcludeOptions: false });\r\n }\r\n\r\n this.setState({ isloadingIncludeExcludeOptions: false });\r\n return {\r\n includedOptionIds,\r\n excludedOptionIds,\r\n requiredOptionIds\r\n };\r\n };\r\n\r\n removeIndexes(excludedOptionsIndexes: number[], excludedIndexes: number[]): number[] {\r\n return excludedOptionsIndexes.filter((item) => !excludedIndexes.includes(item));\r\n }\r\n\r\n extractIndexes = (input: string): number[] => {\r\n // Use regular expression to match all numbers within braces\r\n const matches = input.match(/\\{(\\d+)\\}/g);\r\n\r\n // If no matches found, return an empty array\r\n if (!matches) {\r\n return [];\r\n }\r\n\r\n // Extract the numbers and convert them to integers\r\n const indexes = matches.map((match) => parseInt(match.replace(/[{}]/g, ''), 10));\r\n\r\n return indexes;\r\n };\r\n\r\n isIncluded = (optionId: number) => {\r\n if (!this.state.includedExtraOptionIds) return;\r\n\r\n return this.state.includedExtraOptionIds.includes(optionId);\r\n };\r\n\r\n isExcluded = (optionId: number) => {\r\n if (!this.state.excludedExtraOptionIds) return;\r\n\r\n return this.state.excludedExtraOptionIds.includes(optionId);\r\n };\r\n\r\n isRequired = (optionId: number) => {\r\n if (!this.state.requiredExtraOptionIds) return;\r\n\r\n return this.state.requiredExtraOptionIds.includes(optionId);\r\n };\r\n\r\n parseRequiredConditions(input: string): ParsedConditions {\r\n const mandatory: number[] = [];\r\n const atLeastOne: number[] = [];\r\n\r\n // Regex for extracting all conditions (e.g., {1234})\r\n const allConditionsRegex = /{(\\d+)}/g;\r\n let match;\r\n\r\n // Collect all numbers within curly braces\r\n const allConditions: number[] = [];\r\n while ((match = allConditionsRegex.exec(input)) !== null) {\r\n allConditions.push(parseInt(match[1], 10));\r\n }\r\n\r\n // Check if the input contains 'AND' or 'OR'\r\n if (input.includes('AND')) {\r\n // Regex for extracting mandatory conditions before 'AND'\r\n const mandatoryPart = input.split(' AND ')[0];\r\n const mandatoryRegex = /{(\\d+)}/g;\r\n let mandatoryMatch;\r\n while ((mandatoryMatch = mandatoryRegex.exec(mandatoryPart)) !== null) {\r\n mandatory.push(parseInt(mandatoryMatch[1], 10));\r\n }\r\n\r\n // Regex for extracting optional conditions within parentheses\r\n const optionalPartMatch = input.match(/\\(([^)]+)\\)/);\r\n if (optionalPartMatch) {\r\n const optionalRegex = /{(\\d+)}/g;\r\n let optionalMatch;\r\n while ((optionalMatch = optionalRegex.exec(optionalPartMatch[1])) !== null) {\r\n atLeastOne.push(parseInt(optionalMatch[1], 10));\r\n }\r\n }\r\n } else if (input.includes('OR')) {\r\n // If there are no 'AND' conditions, treat all as optional\r\n for (const num of allConditions) {\r\n atLeastOne.push(num);\r\n }\r\n } else {\r\n // If no logical operator is present, all conditions are mandatory\r\n mandatory.push(...allConditions);\r\n }\r\n\r\n return {\r\n mandatory,\r\n atLeastOne\r\n };\r\n }\r\n\r\n updateCheckedExtraOptionsStatus = (\r\n extraOptions: VehicleOption[],\r\n includedOptionIds: number[],\r\n addIndexes?: boolean // if true, add indexes instead of removing them\r\n ) => {\r\n if (!includedOptionIds) return extraOptions;\r\n\r\n addIndexes = addIndexes ? addIndexes : false;\r\n\r\n extraOptions.forEach((item) => {\r\n if (!item.optionId) return;\r\n\r\n if (includedOptionIds.includes(item.optionId) && !addIndexes) {\r\n item.checked = false;\r\n } else if (includedOptionIds.includes(item.optionId) && addIndexes) {\r\n item.checked = true;\r\n }\r\n });\r\n\r\n return extraOptions;\r\n };\r\n\r\n convertKwToHp = (kw: number) => (R.isEmpty(kw) ? '' : Math.round(kw * 1.36));\r\n convertHpToKw = (hp: number) => (R.isEmpty(hp) ? '' : Math.round(hp / 1.36));\r\n\r\n handlePowerChange = (e: any) => {\r\n this.setState({\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n power: e.target.value,\r\n horsePower: this.convertKwToHp(e.target.value)\r\n }\r\n });\r\n };\r\n\r\n handleChassisNumberChange = (e: any) => {\r\n this.setState(\r\n {\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n vin: e.target.value\r\n }\r\n },\r\n () =>\r\n R.test(\r\n /^(?=.*[0-9])(?=.*[abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ])[0-9abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ-]{17}$/,\r\n this.state.carDetailsExtendedData.vin\r\n ) && this.resetVehicleState()\r\n );\r\n };\r\n\r\n handleVinNumberBlur = async () => {\r\n console.log('vin blur', this.state.carDetailsExtendedData.vin);\r\n if (\r\n R.test(\r\n /^(?=.*[0-9])(?=.*[abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ])[0-9abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ-]{17}$/,\r\n this.state.carDetailsExtendedData.vin\r\n )\r\n ) {\r\n await this.checkIfVinExistOnAcquisitionCase();\r\n }\r\n\r\n }\r\n\r\n handleHPChange = (e: any) => {\r\n this.setState({\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n horsePower: e.target.value,\r\n power: this.convertHpToKw(e.target.value)\r\n }\r\n });\r\n };\r\n\r\n isDisabled = (fieldValue: any): boolean => {\r\n if (this.state.carDetailsExtendedData.currentStatus?.status?.code !== 'Available') {\r\n return !this.state.hasRights;\r\n }\r\n\r\n return !this.state.hasRights || fieldValue ? true : false;\r\n };\r\n\r\n checkIfIsElectric = (): boolean => {\r\n if (\r\n this.state.carDetailsExtendedData.fuelType &&\r\n this.state.carDetailsExtendedData.fuelType.code === FuelTypeEnum.E\r\n ) {\r\n //PHEV - \"propulsionSystem\": \"PHEV(Vehic electr plug-in hybrid)\"\r\n if (this.state.carDetailsExtendedData.propulsionSystem && this.state.carDetailsExtendedData.propulsionSystem.includes('PHEV')) {\r\n return false;\r\n }\r\n //HEV = \"propulsionSystem\": \"hybrid\",\r\n if (this.state.carDetailsExtendedData.propulsionSystem == 'hybrid') {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n handlePlateNumberBlur = async (plateNumber: PlateNumber) => {\r\n if (\r\n this.props.caseSettingsState.caseSettings!.workflow.isDgpciIntegration &&\r\n plateNumber.PlateNumber.length > 0\r\n ) {\r\n try {\r\n const vinRequest = await this.caseService.GetVinByPlateNumberRequest(plateNumber);\r\n\r\n if (vinRequest.success) {\r\n this.setState({\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n vin: vinRequest.vin\r\n }\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } else {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_VIN', 'Eroare la obtinerea VIN'),\r\n {\r\n variant: 'error'\r\n }\r\n );\r\n }\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n renderValidators = (rules: string[]) => {\r\n if (this.props.type !== 'history') {\r\n return rules;\r\n }\r\n return [];\r\n };\r\n\r\n rendeClientDataForm = () => {\r\n const showAquisitionPrice =\r\n this.state.carDetailsExtendedData.currentStatus?.statusId == VehicleStatusCodeEnum.Aquisition\r\n ? false\r\n : true;\r\n const saleCase =\r\n this.props.caseSettingsState?.case?.caseType?.code === CaseTypeCode.SALE ? true : false;\r\n\r\n return (\r\n {\r\n this.submitVehicleData(e);\r\n }}\r\n >\r\n
\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VALUATION_DIALOG_HEADER', 'Selectare vehicul')}\r\n \r\n {\r\n this.setState({ isValuationOpen: false });\r\n }}\r\n size={'small'}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.onChange('plateNumber')(e);\r\n }}\r\n error={!Utils.validatePlateNumber(this.state.carDetailsExtendedData.plateNumber)}\r\n helperText={\r\n Utils.validatePlateNumber(this.state.carDetailsExtendedData.plateNumber)\r\n ? ''\r\n : this.translatorService.Tranlate(\r\n 'CAR_DETAILS_PLATE_NUMBER_ERROR',\r\n 'Numarul de inmatriculare nu este valid'\r\n )\r\n }\r\n onBlur={async (e: any) => {\r\n const plateNumberObject: PlateNumber = {\r\n PlateNumber: e.target.value,\r\n externalClient: false\r\n };\r\n await this.handlePlateNumberBlur(plateNumberObject);\r\n }}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'CAR_DETAILS_PLATE_NUMBER',\r\n 'Numar inmatriculare'\r\n )}\r\n />\r\n \r\n {showAquisitionPrice && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n =\r\n this.state.carDetailsExtendedData.firstRegistrationDate\r\n ? true\r\n : false\r\n }\r\n helperText={\r\n this.state.carDetailsExtendedData.makeDate &&\r\n this.state.carDetailsExtendedData.firstRegistrationDate &&\r\n this.state.carDetailsExtendedData.makeDate >=\r\n this.state.carDetailsExtendedData.firstRegistrationDate\r\n ? this.translatorService.Tranlate(\r\n 'CAR_DETAILS_DATE_OF_FABRICATION_ERROR',\r\n 'Data fabricatiei trebuie sa fie mai mica decat cea a primei inmatriculari'\r\n )\r\n : ''\r\n }\r\n // minDate={activeButton === 1 ? new Date() : this.state.minDate}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.onChange('kilometersNr')(e)}\r\n validators={['required', 'isValidNumberOfKm']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu'),\r\n this.translatorService.Tranlate(\r\n 'CAR_DETAILS_NUMBER_OF_KILOMETERS_ERROR',\r\n 'Numarul de kilometri nu trebuie sa fie mai mare de 1000000'\r\n )\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'CAR_DETAILS_NUMBER_OF_KILOMETERS',\r\n 'Numar kilometri'\r\n )}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }}\r\n />\r\n
\r\n
\r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n
\r\n\r\n \r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n this.onChange('version')(e)}\r\n validators={this.renderValidators(['required'])}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('CAR_DETAILS_VERSION', 'Versiune')}\r\n />\r\n \r\n \r\n this.onChange('equipmentVersion')(e)}\r\n validators={this.renderValidators(['required'])}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('CAR_DETAILS_EQUIPMENT_VERSION', 'Echipare')}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n this.onChange('engineSize')(e)}\r\n validators={this.renderValidators(['required'])}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'CAR_DETAILS_CILINDER_CAP',\r\n 'Capacitate cilindrica (cm3)'\r\n )}\r\n />\r\n \r\n \r\n this.onChange('co2')(e)}\r\n label={this.translatorService.Tranlate('CAR_DETAILS_CO2_VALUE', 'Valoare Co2')}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n\r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n\r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n\r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n\r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n {saleCase && (\r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n )}\r\n\r\n {!saleCase && this.state.carDetailsExtendedData.fuelType && this.checkIfIsElectric() && (\r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n )}\r\n \r\n {saleCase && this.state.carDetailsExtendedData.fuelType && this.checkIfIsElectric() && (\r\n \r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n )}\r\n \r\n \r\n this.onChange('location')(e)}\r\n validators={this.renderValidators(['required'])}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('VEHICLES_LOCATION_LABEL', 'Locatie')}\r\n />\r\n \r\n\r\n \r\n this.onChange('nrOfDoors')(e)}\r\n validators={this.renderValidators(['required'])}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('CAR_DETAILS_NROFDOORS', 'Numar usi')}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n \r\n\r\n \r\n this.onChange('radioCode')(e)}\r\n validators={this.renderValidators(['required'])}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('CAR_DETAILS_RADIO_CODE', 'Cod radio')}\r\n />\r\n \r\n\r\n \r\n this.onChange('engineManufactureCode')(e)}\r\n validators={this.renderValidators(['required'])}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'CAR_DETAILS_ENGINE_MANUFACTURE_CODE',\r\n 'Cod fabricare motor'\r\n )}\r\n />\r\n \r\n {this.props.appState?.appUser?.userRole?.code === 'MAVO_ADMIN' && (\r\n \r\n this.onChange('accountingValue')(e)}\r\n validators={this.renderValidators(['required'])}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'CAR_DETAILS_ACCOUNTING_VALUE',\r\n 'Valoarea contabila'\r\n )}\r\n />\r\n \r\n )}\r\n \r\n {this.props.appState?.appUser?.userRole?.code === 'MAVO_ADMIN' && (\r\n
\r\n
\r\n {this.translatorService.Tranlate('CAR_DETAILS_USER_STATE', 'Date utilizator')}\r\n
\r\n \r\n \r\n this.onChange('rcrEmployeeLastName')(e)}\r\n validators={this.renderValidators(['required'])}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'CAR_DETAILS_EMPLOYEE_LAST_NAME',\r\n 'Nume'\r\n )}\r\n />\r\n \r\n \r\n this.onChange('rcrEmployeeFirstName')(e)}\r\n validators={this.renderValidators(['required'])}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'CAR_DETAILS_EMPLOYEE_FIRST_NAME',\r\n 'Prenume'\r\n )}\r\n />\r\n \r\n \r\n this.onChange('rcrEmployeeEmail')(e)}\r\n validators={this.renderValidators(['required'])}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n ]}\r\n label={this.translatorService.Tranlate('CAR_DETAILS_EMPLOYEE_EMAIL', 'Email')}\r\n />\r\n \r\n \r\n this.onChange('rcrEmployeePhone')(e)}\r\n validators={this.renderValidators(['required'])}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n ]}\r\n label={this.translatorService.Tranlate('CAR_DETAILS_EMPLOYEE_PHONE', 'Phone')}\r\n />\r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n {this.translatorService.Tranlate('CAR_DETAILS_CAR_STATE', 'Stare masina')}\r\n
\r\n \r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n this.onChange('inConditionComments')(e)}\r\n label={this.translatorService.Tranlate('CAR_DETAILS_COMMENTS', 'Observatii')}\r\n multiline\r\n rows={5}\r\n />\r\n \r\n \r\n this.onChange('outConditionComments')(e)}\r\n label={this.translatorService.Tranlate('CAR_DETAILS_COMMENTS', 'Observatii')}\r\n multiline\r\n rows={5}\r\n />\r\n \r\n \r\n this.onChange('technicalConditionComments')(e)}\r\n label={this.translatorService.Tranlate('CAR_DETAILS_COMMENTS', 'Observatii')}\r\n multiline\r\n rows={5}\r\n />\r\n \r\n \r\n
\r\n {this.props.showCostTypes ? (\r\n
\r\n
\r\n {this.translatorService.Tranlate('COSTS', 'Costuri')}\r\n
\r\n
\r\n ) : null}\r\n {this.props.showCostTypes ? (\r\n
\r\n {this.state.carDetailsExtendedData?.vehicleCosts ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n
\r\n \r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CAR_DETAILS_CAR_STANDARD_OPTIONS',\r\n 'Dotari standard'\r\n )}\r\n
\r\n\r\n {!this.state.isLoading ? this.renderCarStandardOptionsTable() : null}\r\n
\r\n\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'CAR_DETAILS_CAR_OPTIONAL_OPTIONS',\r\n 'Dotari optionale'\r\n )}\r\n {this.state.showOptionalRequiredOptions && this.renderMandatoryOptionsDialog()}\r\n
\r\n \r\n {!this.state.isLoading ? this.renderCarOptionalOptionsTable() : null}\r\n
\r\n \r\n {this.state.isloadingIncludeExcludeOptions ? : null}\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n {`${this.translatorService.Tranlate(\r\n 'VIN_IDENTIFICATION_CONFIRMATION_MESSAGE',\r\n 'Identificarea conform VIN presupune un cost suplimentar - Doriţi să continuaţi ?'\r\n )} `}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.validateFirstRegistrationDate(\r\n this.state.carDetailsExtendedData.firstRegistrationDate\r\n )\r\n }\r\n disabled={!this.state.hasRights || this.state.executing}\r\n >\r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n \r\n );\r\n };\r\n\r\n renderMandatoryOptionsDialog = () => {\r\n const data = this.state.carOptionalOptions.filter((option) => {\r\n return this.state.optionalRequiredOptionsIds!.includes(option.optionId!);\r\n });\r\n\r\n return (\r\n \r\n \r\n {'Pentru selectia anterioara este necesara adaugarea unei optiuni din lista'}\r\n \r\n \r\n {\r\n const rowData = tableMeta.rowData;\r\n\r\n return `[${rowData[0]}] ${value} - ${rowData[2]} €`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'price',\r\n label: 'Pret',\r\n options: {\r\n display: 'excluded',\r\n filter: false,\r\n sort: false\r\n }\r\n }\r\n ]}\r\n options={{\r\n viewColumns: false,\r\n filter: false,\r\n search: false,\r\n pagination: false,\r\n selectableRows: 'single' as SelectableRows,\r\n selectableRowsHeader: false,\r\n disableToolbarSelect: true,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1,\r\n\r\n onRowsSelect: (rowSelected: any, allRows: any) => {\r\n const { dataIndex } = rowSelected[0];\r\n const selectedOption = data?.filter((option) => {\r\n return this.state.optionalRequiredOptionsIds!.includes(option.optionId!);\r\n })[dataIndex];\r\n const finalRequiredIds = Array.from(\r\n new Set([...this.state.requiredExtraOptionIds!, selectedOption.optionId!])\r\n );\r\n const optionsToBeExcludedIds = data\r\n ?.filter((option) => option.optionId !== selectedOption.optionId!)\r\n ?.map((option) => option.optionId!);\r\n let finalExtraOptions = [...this.state.carOptionalOptions];\r\n let finalExcludedOptionIds = Array.from(\r\n new Set([...this.state.excludedExtraOptionIds!, ...optionsToBeExcludedIds])\r\n );\r\n let finalIncludedOptionIds = [...this.state.includedExtraOptionIds!];\r\n\r\n finalExtraOptions = this.updateCheckedExtraOptionsStatus(\r\n finalExtraOptions,\r\n finalRequiredIds,\r\n true\r\n );\r\n\r\n finalExtraOptions = this.updateCheckedExtraOptionsStatus(\r\n finalExtraOptions,\r\n optionsToBeExcludedIds\r\n );\r\n\r\n finalIncludedOptionIds = this.removeIndexes(finalIncludedOptionIds, [\r\n ...finalRequiredIds,\r\n selectedOption.optionId!\r\n ]);\r\n\r\n finalExcludedOptionIds = this.removeIndexes(finalExcludedOptionIds, [\r\n ...finalRequiredIds,\r\n selectedOption.optionId!\r\n ]);\r\n\r\n this.setState({\r\n ...this.state,\r\n showOptionalRequiredOptions: false,\r\n carOptionalOptions: finalExtraOptions,\r\n includedExtraOptionIds: finalIncludedOptionIds,\r\n requiredExtraOptionIds: finalRequiredIds,\r\n excludedExtraOptionIds: finalExcludedOptionIds\r\n });\r\n }\r\n }}\r\n />\r\n \r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
{this.rendeClientDataForm()}
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (\r\n state: ApplicationState,\r\n ownProps: ExternalCaseDetailsCaseTabCarDetailsExtendedContainerProps\r\n ) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle,\r\n ...ownProps\r\n }),\r\n { ...CaseSettingsActionCreators, ...VehicleActionCreators }\r\n)(withSnackbar(CaseDetailsCaseTabCarDetailsExtendedContainer as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Button, Grid, Paper } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { CaseParameterHistory, CaseTariffValueHistory } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { ParametreCode, ReferentialCode } from '../../helpers/Constants';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport NumberFormat from 'react-number-format';\r\nimport MaterialTable, { Column, Icons } from 'material-table';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { forwardRef } from 'react';\r\nimport { VehicleOption } from '../../interfaces/Vehicle';\r\nimport * as R from 'ramda';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ninterface ICaseDetailsCaseTabCarRepairCostFormState {\r\n isLoading: boolean;\r\n hasRights: boolean;\r\n executing: boolean;\r\n isUserHidden: boolean;\r\n caseParameters: Array;\r\n caseTariffValues: CaseTariffValueHistory[];\r\n tariffTypeGroupList: IReferential[];\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseTabCarRepairCostFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseTabCarDetailsExtendedFormProps =\r\n ExternalCaseDetailsCaseTabCarRepairCostFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n } & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabCarRepairCostForm extends React.PureComponent<\r\n ICaseDetailsCaseTabCarDetailsExtendedFormProps,\r\n ICaseDetailsCaseTabCarRepairCostFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n defaultBrand = {\r\n name: 'All', //this.translatorService.Tranlate(\"SELECT_ALL_OPTION\", \"Toate\"),\r\n displayName: 'All', //this.translatorService.Tranlate(\"SELECT_ALL_OPTION\", \"Toate\"),\r\n id: -1,\r\n isActive: true\r\n } as IReferential;\r\n\r\n state = {\r\n isLoading: false,\r\n hasRights: false,\r\n executing: false,\r\n isUserHidden: false,\r\n caseParameters: [] as CaseParameterHistory[],\r\n caseTariffValues: [],\r\n tariffTypeGroupList: []\r\n } as ICaseDetailsCaseTabCarRepairCostFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n const caseParametersList = this.props.caseSettingsState.case!.caseParameters;\r\n this.setState(\r\n {\r\n isLoading: true,\r\n caseParameters: caseParametersList\r\n },\r\n async () => {\r\n await this.loadCaseClientDataForm();\r\n }\r\n );\r\n }\r\n\r\n loadCaseClientDataForm = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n const tariffGroupTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.TariffTypeGroup\r\n );\r\n const tariffGroupTypeList = await this.appReferentialService.Get(tariffGroupTypeRef!.baseUrl);\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n this.setState({\r\n isLoading: false,\r\n hasRights: hasRights,\r\n isUserHidden: !hasRights,\r\n caseTariffValues: this.props.caseSettingsState.case!.caseTariff.caseTariffValuesHistory,\r\n tariffTypeGroupList: tariffGroupTypeList.filter((item) => item.isActive === true)\r\n });\r\n };\r\n\r\n renderTariffGroupTypes = () => {\r\n const tariffGroupTypes = [] as any[];\r\n for (const tariffGroupType of this.state.tariffTypeGroupList) {\r\n tariffGroupTypes.push(\r\n
\r\n \r\n {tariffGroupType.displayName}\r\n \r\n \r\n {this.renderCaseTariffValues(tariffGroupType.id)}\r\n \r\n
\r\n );\r\n }\r\n return tariffGroupTypes;\r\n };\r\n\r\n renderCaseTariffValues = (tariffGroupTypeId: number) => {\r\n const caseTariffValuess = [] as any[];\r\n const caseTariffValues = this.state.caseTariffValues.filter(\r\n (item) => item.tariffType!.tariffTypeGroupId === tariffGroupTypeId\r\n );\r\n this.getDistinctTariffTypes(caseTariffValues).forEach((tt) => {\r\n const tariffValues = caseTariffValues.filter((item) => item.tariffTypeId === tt!.id);\r\n\r\n caseTariffValuess.push(\r\n \r\n
{tt!.displayName}
\r\n {this.renderTariffValues(tariffValues)}\r\n
\r\n );\r\n });\r\n return caseTariffValuess;\r\n };\r\n\r\n getDistinctTariffTypes = (tariffValues: CaseTariffValueHistory[]) => {\r\n return tariffValues\r\n .map((item) => item.tariffType)\r\n .filter((tt, index, arr) => arr.findIndex((i) => i!.id === tt!.id) == index);\r\n };\r\n\r\n onHandleTariffInputChange = (e: React.ChangeEvent, id: number) => {\r\n const index = this.state.caseTariffValues.findIndex((value) => value.id === id);\r\n const newCaseTariffValues = [...this.state.caseTariffValues];\r\n\r\n newCaseTariffValues[index].value = parseInt(e.currentTarget.value);\r\n\r\n this.setState({\r\n caseTariffValues: newCaseTariffValues\r\n });\r\n };\r\n\r\n renderTariffValues = (list: CaseTariffValueHistory[]) => {\r\n list = list.sort((a: CaseTariffValueHistory, b: CaseTariffValueHistory) => {\r\n return this.compareName(a.brand!, b.brand!);\r\n });\r\n return list.map((item, index) => {\r\n return (\r\n
\r\n ) =>\r\n this.onHandleTariffInputChange(e, item.id)\r\n }\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={\r\n (item.brand === null ? this.defaultBrand.displayName : item.brand.displayName) +\r\n ' ' +\r\n this.renderVehicleAge(item)\r\n }\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n
\r\n );\r\n });\r\n };\r\n\r\n compareName = (a: IReferential, b: IReferential) => {\r\n const nameA = a === null ? '' : a.displayName!.toUpperCase();\r\n const nameB = b === null ? '' : b.displayName!.toUpperCase();\r\n if (nameA < nameB) {\r\n return -1;\r\n }\r\n if (nameA > nameB) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n };\r\n\r\n renderVehicleAge = (tv: CaseTariffValueHistory) => {\r\n if (tv.startVehicleYear === null && tv.endVehicleYear === null) {\r\n return '';\r\n }\r\n const start = tv.startVehicleYear === null ? '0' : tv.startVehicleYear;\r\n const end = tv.endVehicleYear === null ? '' : tv.endVehicleYear;\r\n\r\n return '(' + start + '<' + end + ')';\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n\r\n submitData = async (e: any) => {\r\n // let newVehicle = { ...this.state.carDetailsExtendedData } as Vehicle;\r\n try {\r\n let caseParameterMandatoryField = false;\r\n this.state.caseParameters.forEach((caseParameter) => {\r\n if (caseParameter.parameter?.code === ParametreCode.TVA) {\r\n caseParameter.value = caseParameter.value.trim();\r\n if (R.isEmpty(caseParameter.value)) {\r\n caseParameterMandatoryField = true;\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('MANDATORY_VAT', 'TVA-ul este obligatoriu!'), {\r\n variant: 'warning'\r\n });\r\n } \r\n }\r\n if (caseParameter.parameter?.code === ParametreCode.CURRENCY) {\r\n caseParameter.value = caseParameter.value.trim();\r\n if (R.isEmpty(caseParameter.value)) {\r\n caseParameterMandatoryField = true;\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('MANDATORY_CURRENCY', 'Moneda este obligatorie!'), {\r\n variant: 'warning'\r\n });\r\n } \r\n }\r\n });\r\n\r\n if (caseParameterMandatoryField) {\r\n return;\r\n }\r\n\r\n this.setState({ executing: true });\r\n\r\n await this.caseService.SaveParameterHistory(\r\n this.props.caseSettingsState.case!.id,\r\n this.state.caseParameters\r\n );\r\n\r\n await this.caseService.SaveCaseTariffHistory(\r\n this.props.caseSettingsState.case!.id,\r\n this.state.caseTariffValues\r\n );\r\n\r\n await this.submitForm(\r\n this.props.caseSettingsState.case!.id,\r\n this.props.workflowForm.id,\r\n null\r\n );\r\n\r\n this.state.caseParameters.forEach((element) => {\r\n this.props.UpdateCaseParameters(element);\r\n });\r\n\r\n this.state.caseTariffValues.forEach((element) => {\r\n this.props.UpdateCaseTariffvalue(element);\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({\r\n executing: false\r\n });\r\n }\r\n };\r\n\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n deleteTooltip: this.translatorService.Tranlate('DELETE', 'Sterge'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza'),\r\n deleteText: this.translatorService.Tranlate(\r\n 'DELETE_TEXT',\r\n 'Sigur doriti sa stergeti aceasta inregistrare?'\r\n )\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n\r\n getCarRepairCostParametersColumns = () => {\r\n return [\r\n {\r\n field: 'parameter.displayName',\r\n title: this.translatorService.Tranlate('CAR_REPAIR_COST_PARAMETER', 'Parametru'),\r\n searchable: true,\r\n editable: 'never'\r\n } as Column,\r\n {\r\n field: 'value',\r\n title: this.translatorService.Tranlate('CAR_REPAIR_COST_VALUE', 'Valoare'),\r\n searchable: true\r\n } as Column\r\n ];\r\n };\r\n\r\n parametersOnRowAdd = (newData: VehicleOption): Promise => {\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n // newData.organizationId = this.props.organizationId;\r\n\r\n // await this.organizationService.AddOrganizationBankAccount(newData);\r\n // await this.loadData();\r\n // this.setState({carStandardOptions: [\r\n // ...this.state.carStandardOptions,\r\n // {\r\n // id: 0,\r\n // vehicleId: this.state.carDetailsExtendedData.id,\r\n // code: newData.code,\r\n // name: newData.name\r\n // }\r\n // ]\r\n // })\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n };\r\n\r\n parametersOnRowUpdate = (newData: any, oldData?: any): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n if (newData.parameter?.code === ParametreCode.TVA) {\r\n newData.value = newData.value.trim();\r\n if (R.isEmpty(newData.value)) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('MANDATORY_VAT', 'TVA-ul este obligatoriu!'), {\r\n variant: 'warning'\r\n });\r\n reject();\r\n } \r\n }\r\n if (newData.parameter?.code === ParametreCode.CURRENCY) {\r\n newData.value = newData.value.trim();\r\n if (R.isEmpty(newData.value)) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('MANDATORY_CURRENCY', 'Moneda este obligatorie!'), {\r\n variant: 'warning'\r\n });\r\n reject();\r\n } \r\n }\r\n \r\n const items = [...this.state.caseParameters];\r\n\r\n const newItemIndex = items.findIndex((i) => i.id === oldData.id);\r\n\r\n items[newItemIndex].value = newData.value;\r\n\r\n this.setState({ caseParameters: items });\r\n\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n parametersOnRowDelete = (oldData: any): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n // await this.organizationService.RemoveOrganizationBankAccount(oldData.id);\r\n // await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n public renderCarRepairCostParametersTable = () => {\r\n return (\r\n rowData.parameterCode !== 'LANG',\r\n onRowUpdate: (newData: any, oldData?: any) => this.parametersOnRowUpdate(newData, oldData)\r\n }}\r\n components={{\r\n Container: (props) => \r\n }}\r\n />\r\n );\r\n };\r\n\r\n renderForm = () => {\r\n return (\r\n {\r\n this.submitData(e);\r\n }}\r\n >\r\n
\r\n
\r\n
\r\n {this.translatorService.Tranlate('CAR_REPAIR_COST_PARAMETERS', 'Parametri')}\r\n
\r\n\r\n {!this.state.isLoading ? this.renderCarRepairCostParametersTable() : null}\r\n
\r\n\r\n
\r\n {!this.state.isLoading ? this.renderTariffGroupTypes() : null}\r\n
\r\n
\r\n\r\n \r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ?
{this.renderForm()}
: null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabCarRepairCostFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabCarRepairCostForm as any));\r\n","import { ReportParameter } from '../../../interfaces/Reports';\r\n\r\nexport enum ControlType {\r\n STRING = 'string',\r\n NUMBER = 'number',\r\n DATE = 'date',\r\n BOOLEAN = 'boolean',\r\n PERSONAL_DATA = 'personal_data',\r\n ORIGINAL_COPY = 'original_copy'\r\n}\r\n\r\nexport interface ReportParameterExtended extends ReportParameter {\r\n label: string;\r\n type: ControlType;\r\n onlyForDisplay?: boolean;\r\n onlyForDisplayEditable?: boolean;\r\n notMandatory?: boolean;\r\n}\r\n\r\nexport interface ReportParametersGroup {\r\n name: string;\r\n label: string;\r\n parameters: ReportParameterExtended[];\r\n}\r\nexport interface State {\r\n header: ReportParametersGroup;\r\n seller: ReportParametersGroup;\r\n buyer: ReportParametersGroup;\r\n vehicle: ReportParametersGroup;\r\n price: ReportParametersGroup;\r\n others: ReportParametersGroup;\r\n footer: ReportParametersGroup;\r\n}\r\n\r\nexport const initialStateValue: State = {\r\n header: {\r\n name: 'header',\r\n label: 'Antet',\r\n parameters: [\r\n {\r\n label: 'Organ fiscal',\r\n name: 'A_Name',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'CIF/Cod SIRUTA',\r\n name: 'A_CIF_SIRUTA',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Adresa',\r\n name: 'A_Address',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Tel/fax/e-mail',\r\n name: 'A_Tel_Fax_Email',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'REMTII Nr.',\r\n name: 'A_REMTII_Number',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'REMTII Data',\r\n name: 'A_REMTII_Date',\r\n value: '',\r\n type: ControlType.DATE,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'REMTII Rol nr.',\r\n name: 'A_REMTII_Role_Number',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Original/copie',\r\n name: 'A_REMTII_Is_Original',\r\n value: '',\r\n type: ControlType.ORIGINAL_COPY,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Organ fiscal',\r\n name: 'B_Name',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Functia',\r\n name: 'B_Position',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Nume',\r\n name: 'B_FirstName',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Prenume',\r\n name: 'B_LastName',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n }\r\n ]\r\n },\r\n seller: {\r\n name: 'seller',\r\n label: 'Vanzator',\r\n parameters: [\r\n {\r\n label: 'Tip vanzator',\r\n name: 'Seller_Type',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Nume/Nume companie',\r\n name: 'Seller_Name_Company',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Domiciliu/Sediu',\r\n name: 'Seller_Address',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Date personale',\r\n name: 'Seller_ID',\r\n value: '',\r\n type: ControlType.PERSONAL_DATA\r\n },\r\n {\r\n label: 'CNP/CIF',\r\n name: 'Seller_PIN_CIF',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Tel/Fax',\r\n name: 'Seller_Tel_Fax',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Email',\r\n name: 'Seller_Email',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Domiciliu fiscal',\r\n name: 'Seller_Fiscal_Domicile',\r\n value: '',\r\n type: ControlType.STRING\r\n },\r\n {\r\n label: 'Nume reprezentant',\r\n name: 'Seller_Rep_Name',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Date personale reprezentat',\r\n name: 'Seller_Rep_ID',\r\n value: '',\r\n type: ControlType.PERSONAL_DATA,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'CIF reprezentant',\r\n name: 'Seller_Rep_CIF',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Tel/Fax reprezentant',\r\n name: 'Seller_Rep_Tel_Fax',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Email reprezentant',\r\n name: 'Seller_Rep_Email',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n }\r\n ]\r\n },\r\n buyer: {\r\n name: 'buyer',\r\n label: 'Cumparator',\r\n parameters: [\r\n {\r\n label: 'Tip cumparator',\r\n name: 'Buyer_Type',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Nume/Nume companie',\r\n name: 'Buyer_Name_Company',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Domiciliu/Sediu',\r\n name: 'Buyer_Address',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Date personale',\r\n name: 'Buyer_ID',\r\n value: '',\r\n type: ControlType.PERSONAL_DATA\r\n },\r\n {\r\n label: 'CNP/CIF',\r\n name: 'Buyer_PIN_CIF',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Tel/Fax',\r\n name: 'Buyer_Tel_Fax',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Email',\r\n name: 'Buyer_Email',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Domiciliu fiscal',\r\n name: 'Buyer_Fiscal_Domicile',\r\n value: '',\r\n type: ControlType.STRING\r\n },\r\n {\r\n label: 'Nume reprezentant',\r\n name: 'Buyer_Rep_Name',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Date personale reprezentat',\r\n name: 'Buyer_Rep_ID',\r\n value: '',\r\n type: ControlType.PERSONAL_DATA,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'CIF reprezentant',\r\n name: 'Buyer_Rep_CIF',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Tel/Fax reprezentant',\r\n name: 'Buyer_Rep_Tel_Fax',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Email reprezentant',\r\n name: 'Buyer_Rep_Email',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n }\r\n ]\r\n },\r\n vehicle: {\r\n name: 'vehicle',\r\n label: 'Vehicul',\r\n parameters: [\r\n {\r\n label: 'Marca',\r\n name: 'Vehicle_Brand',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Model',\r\n name: 'Vehicle_Model',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'VIN',\r\n name: 'Vehicle_VIN',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Serie Motor',\r\n name: 'Engine_Serial_Number',\r\n value: '',\r\n type: ControlType.STRING\r\n },\r\n {\r\n label: 'Capacitate cilindrica',\r\n name: 'Engine_Size',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Greutate maxima',\r\n name: 'Maximum_Weight',\r\n value: '',\r\n type: ControlType.NUMBER\r\n },\r\n {\r\n label: 'Numar inmatriculare',\r\n name: 'Plate_Number',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Data expirare revizie',\r\n name: 'Next_PTI_Date',\r\n value: '',\r\n type: ControlType.DATE\r\n },\r\n {\r\n label: 'Numar CIV',\r\n name: 'ID_CIV_Number',\r\n value: '',\r\n type: ControlType.STRING\r\n },\r\n {\r\n label: 'An fabricatie',\r\n name: 'Make_Year',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Norma poluare',\r\n name: 'Pollution_Norm',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Data dobandirii',\r\n name: 'Purchase_Date',\r\n value: '',\r\n type: ControlType.DATE\r\n },\r\n {\r\n label: 'Numar act dobandire',\r\n name: 'Purchase_Doc_Number',\r\n value: '',\r\n type: ControlType.STRING\r\n },\r\n {\r\n label: 'Data act dobandire',\r\n name: 'Purchase_Doc_Date',\r\n value: '',\r\n type: ControlType.DATE\r\n }\r\n ]\r\n },\r\n price: {\r\n name: 'price',\r\n label: 'Pret',\r\n parameters: [\r\n {\r\n label: 'Pret in RON',\r\n name: 'Price_Ron',\r\n value: '',\r\n type: ControlType.STRING,\r\n onlyForDisplay: true\r\n },\r\n {\r\n label: 'Pret in litere',\r\n name: 'Price_Ron_Words',\r\n value: '',\r\n type: ControlType.STRING\r\n }\r\n ]\r\n },\r\n others: {\r\n name: 'others',\r\n label: 'Altele',\r\n parameters: [\r\n {\r\n label: 'Anexe',\r\n name: 'Has_Appendix',\r\n value: '',\r\n type: ControlType.BOOLEAN\r\n },\r\n {\r\n label: 'Data contract',\r\n name: 'Signing_Date',\r\n value: '',\r\n type: ControlType.DATE\r\n },\r\n {\r\n label: 'Loc contract',\r\n name: 'Signing_Location',\r\n value: '',\r\n type: ControlType.STRING\r\n }\r\n ]\r\n },\r\n footer: {\r\n name: 'footer',\r\n label: 'Subsol',\r\n parameters: [\r\n {\r\n label: 'Organ fiscal',\r\n name: 'C_Name',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'CIF/Cod SIRUTA',\r\n name: 'C_CIF_SIRUTA',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Adresa',\r\n name: 'C_Address',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Tel/fax/e-mail',\r\n name: 'C_Tel_Fax_Email',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'REMTII Nr.',\r\n name: 'C_REMTII_Number',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'REMTII Data',\r\n name: 'C_REMTII_Date',\r\n value: '',\r\n type: ControlType.DATE,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Functia',\r\n name: 'D_Position',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Nume',\r\n name: 'D_FirstName',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n },\r\n {\r\n label: 'Prenume',\r\n name: 'D_LastName',\r\n value: '',\r\n type: ControlType.STRING,\r\n notMandatory: true\r\n }\r\n ]\r\n }\r\n};\r\n","export enum AttachmentTypeIdEnum {\r\n CONTRACT = 31\r\n}\r\n","import React, { useContext, useEffect, useMemo, useState } from 'react';\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogTitle,\r\n FormControl,\r\n FormHelperText,\r\n Grid,\r\n IconButton,\r\n InputLabel,\r\n MenuItem,\r\n Paper,\r\n Select,\r\n Typography\r\n} from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { AttachmentTypeCode, ReportTypeCode } from '../../../helpers/Constants';\r\nimport FileSaver from 'file-saver';\r\nimport isNil from 'lodash/isNil';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { useSelector } from 'react-redux';\r\nimport {\r\n ControlType,\r\n initialStateValue,\r\n ReportParameterExtended,\r\n State\r\n} from './initialStateValue';\r\nimport { ReportParameter } from '../../../interfaces/Reports';\r\nimport { CaseAttachment, CaseClient } from '../../../interfaces/Case';\r\nimport { AttachmentTypeIdEnum } from '../../../enums/AttachmentTypeIdEnum';\r\nimport { VehicleOffer } from '../../../interfaces/Vehicle';\r\nimport Loader from '../../Loader';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\ninterface Props {\r\n isOpen: boolean;\r\n offer?: VehicleOffer;\r\n price?: number;\r\n isSaleOfferType: boolean;\r\n handleClose(): void;\r\n}\r\n\r\nconst personalDataType = ['B.I.', 'C.I', 'C.I.P', 'Pasaport'];\r\n\r\nconst booleanType = ['Da', 'Nu'];\r\n\r\nconst originalCopyType = ['Original', 'Copie'];\r\n\r\nconst ContractModal: React.FC = ({ isOpen, handleClose, offer, isSaleOfferType, price }) => {\r\n const context = useContext(ApplicationContext);\r\n\r\n const reduxState = useSelector((state: any) => state);\r\n\r\n const [state, setState] = useState();\r\n const [requiredFields, setRequiredFields] = useState([]);\r\n\r\n const {\r\n app: { dateFormat, language }\r\n } = reduxState;\r\n\r\n useEffect(() => {\r\n const getVehicle = async () => {\r\n const vehicleId = reduxState.caseSettings.case.vehicleId;\r\n if (!isNil(vehicleId)) {\r\n const vehicle = await context.vehicleService.GetVehicle(vehicleId);\r\n // TODO read from backend based on caseClientHistoryId\r\n const caseClient = reduxState.caseSettings.case.caseClient as CaseClient;\r\n const organizationId = reduxState.app.appUser.organizationId;\r\n const organization = await context.organizationService.GetOrganization(organizationId);\r\n\r\n const personIsCompany = caseClient.personType?.name === 'PJ';\r\n\r\n const data = cloneDeep(initialStateValue) as State;\r\n\r\n const otherParameters = [...data.others.parameters];\r\n const priceParamaters = [...data.price.parameters];\r\n const vehicleParameters = [...data.vehicle.parameters];\r\n let buyerParameters = personIsCompany\r\n ? [...data.buyer.parameters.filter((p) => p.name !== 'Buyer_ID')]\r\n : [...data.buyer.parameters];\r\n let sellerParameters = personIsCompany\r\n ? [...data.seller.parameters.filter((p) => p.name !== 'Seller_ID')]\r\n : [...data.seller.parameters];\r\n\r\n if (vehicle) {\r\n setParameterValue(vehicleParameters, 'Vehicle_Brand', vehicle.make?.name || '');\r\n setParameterValue(vehicleParameters, 'Vehicle_Model', vehicle.model?.name || '');\r\n setParameterValue(vehicleParameters, 'Vehicle_VIN', vehicle.vin || '');\r\n setParameterValue(vehicleParameters, 'Engine_Size', vehicle.engineSize?.toString() || '');\r\n setParameterValue(vehicleParameters, 'Plate_Number', vehicle.plateNumber || '');\r\n setParameterValue(\r\n vehicleParameters,\r\n 'Make_Year',\r\n vehicle.makeDate ? moment(vehicle.makeDate).format(dateFormat.toUpperCase()) : ''\r\n );\r\n setParameterValue(\r\n vehicleParameters,\r\n 'Pollution_Norm',\r\n vehicle.pollutionNorm?.displayName || ''\r\n );\r\n }\r\n\r\n if (isSaleOfferType) {\r\n if (caseClient) {\r\n setParameterValue(buyerParameters, 'Buyer_Type', caseClient.personType?.name || '');\r\n setParameterValue(\r\n buyerParameters,\r\n 'Buyer_Name_Company',\r\n caseClient.companyName || `${caseClient.firstName} ${caseClient.lastName}`\r\n );\r\n setParameterValue(\r\n buyerParameters,\r\n 'Buyer_Address',\r\n `${caseClient.address || ''}${caseClient.city ? ', ' + caseClient.city : ''}` || ''\r\n );\r\n setParameterValue(\r\n buyerParameters,\r\n 'Buyer_PIN_CIF',\r\n personIsCompany ? caseClient.companyNumber || '' : caseClient.pin || ''\r\n );\r\n setParameterValue(buyerParameters, 'Buyer_Tel_Fax', caseClient.phone || '');\r\n setParameterValue(buyerParameters, 'Buyer_Email', caseClient.email || '');\r\n if (personIsCompany) {\r\n buyerParameters = buyerParameters.filter((p) => p.name !== 'Buyer_ID');\r\n }\r\n }\r\n\r\n if (organization) {\r\n setParameterValue(sellerParameters, 'Seller_Type', 'PJ' || '');\r\n setParameterValue(sellerParameters, 'Seller_Name_Company', organization.fullName || '');\r\n setParameterValue(\r\n sellerParameters,\r\n 'Seller_Address',\r\n `${organization.address || ''}${organization.city ? ', ' + organization.city : ''}` ||\r\n ''\r\n );\r\n setParameterValue(sellerParameters, 'Seller_PIN_CIF', organization.companyNumber || '');\r\n setParameterValue(sellerParameters, 'Seller_Tel_Fax', organization.phone || '');\r\n setParameterValue(sellerParameters, 'Seller_Email', organization.email || '');\r\n sellerParameters = sellerParameters.filter((p) => p.name !== 'Seller_ID');\r\n }\r\n } else {\r\n if (caseClient) {\r\n setParameterValue(sellerParameters, 'Seller_Type', caseClient.personType?.name || '');\r\n setParameterValue(\r\n sellerParameters,\r\n 'Seller_Name_Company',\r\n caseClient.companyName || `${caseClient.firstName} ${caseClient.lastName}`\r\n );\r\n setParameterValue(\r\n sellerParameters,\r\n 'Seller_Address',\r\n `${caseClient.address || ''}${caseClient.city ? ', ' + caseClient.city : ''}` || ''\r\n );\r\n setParameterValue(\r\n sellerParameters,\r\n 'Seller_PIN_CIF',\r\n personIsCompany ? caseClient.companyNumber || '' : caseClient.pin || ''\r\n );\r\n setParameterValue(sellerParameters, 'Seller_Tel_Fax', caseClient.phone || '');\r\n setParameterValue(sellerParameters, 'Seller_Email', caseClient.email || '');\r\n if (personIsCompany) {\r\n sellerParameters = sellerParameters.filter((p) => p.name !== 'Seller_ID');\r\n }\r\n }\r\n\r\n if (organization) {\r\n setParameterValue(buyerParameters, 'Buyer_Type', 'PJ' || '');\r\n setParameterValue(buyerParameters, 'Buyer_Name_Company', organization.fullName || '');\r\n setParameterValue(\r\n buyerParameters,\r\n 'Buyer_Address',\r\n `${organization.address || ''}${organization.city ? ', ' + organization.city : ''}` ||\r\n ''\r\n );\r\n setParameterValue(buyerParameters, 'Buyer_PIN_CIF', organization.companyNumber || '');\r\n setParameterValue(buyerParameters, 'Buyer_Tel_Fax', organization.phone || '');\r\n setParameterValue(buyerParameters, 'Buyer_Email', organization.email || '');\r\n buyerParameters = buyerParameters.filter((p) => p.name !== 'Buyer_ID');\r\n }\r\n }\r\n\r\n setParameterValue(\r\n otherParameters,\r\n 'Signing_Date',\r\n moment().format(dateFormat.toUpperCase())\r\n );\r\n\r\n setParameterValue(priceParamaters, 'Price_Ron', price?.toFixed(2) || '');\r\n // setParameterValue(priceParamaters, 'Price_Ron_Words', price?.toFixed(2) || '');\r\n\r\n setState({\r\n ...data,\r\n buyer: {\r\n ...data.buyer,\r\n parameters: buyerParameters\r\n },\r\n seller: {\r\n ...data.seller,\r\n parameters: sellerParameters\r\n }\r\n });\r\n }\r\n };\r\n\r\n getVehicle();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const handleChange = (groupName: string, name: string, value: string) => {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n //@ts-ignore\r\n const parameters = [...state[groupName].parameters];\r\n const param = parameters.find((p) => {\r\n return p.name === name;\r\n });\r\n param.value = value.toString();\r\n if (state) {\r\n setState({\r\n ...state,\r\n [groupName]: {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n //@ts-ignore\r\n ...state[groupName],\r\n parameters\r\n }\r\n });\r\n }\r\n };\r\n\r\n const setParameterValue = (parameters: ReportParameter[], name: string, value: string) => {\r\n const param = parameters.find((p) => p.name === name);\r\n if (param) {\r\n param.value = value;\r\n }\r\n };\r\n\r\n const handleSubmit = async () => {\r\n if (!state) {\r\n return;\r\n }\r\n\r\n const reportParametersExtended: ReportParameterExtended[] = [\r\n ...state.header.parameters,\r\n ...state.seller.parameters,\r\n ...state.buyer.parameters,\r\n ...state.price.parameters,\r\n ...state.vehicle.parameters,\r\n ...state.others.parameters,\r\n ...state.footer.parameters\r\n ];\r\n\r\n const requiredParameters = reportParametersExtended\r\n .filter((p) => !p.notMandatory && !p.onlyForDisplay && !p.value)\r\n .map((p) => p.name);\r\n\r\n if (requiredParameters.length) {\r\n setRequiredFields(requiredParameters);\r\n return;\r\n }\r\n\r\n const reportParameters: ReportParameter[] = reportParametersExtended\r\n .filter((p) => p.value && !p.onlyForDisplay && p.type !== ControlType.PERSONAL_DATA)\r\n .map(({ name, value }) => {\r\n return { name, value: value.trim() };\r\n });\r\n\r\n const personalDataParams = reportParametersExtended.filter(\r\n (p) => p.type === ControlType.PERSONAL_DATA\r\n );\r\n\r\n for (const p of personalDataParams) {\r\n const values = p.value.split(',');\r\n\r\n reportParameters.push({\r\n name: `${p.name}_Type`,\r\n value: values[0]\r\n });\r\n reportParameters.push({\r\n name: `${p.name}_Series`,\r\n value: values[1]\r\n });\r\n reportParameters.push({\r\n name: `${p.name}_Number`,\r\n value: values[2]\r\n });\r\n }\r\n\r\n reportParameters.push({\r\n name: 'IsSaleContract',\r\n value: isSaleOfferType ? 'true' : 'false'\r\n });\r\n\r\n reportParameters.push({\r\n name: 'OrganizationID',\r\n value: reduxState.app.appUser.organizationId.toString()\r\n });\r\n\r\n if (!isNil(offer?.caseClientHistoryId)) {\r\n reportParameters.push({\r\n name: 'CaseClientHistoryID',\r\n value: offer?.caseClientHistoryId.toString() || ''\r\n });\r\n }\r\n\r\n if (!isNil(offer?.id)) {\r\n reportParameters.push({\r\n name: 'VehicleOfferID',\r\n value: offer?.id.toString() || ''\r\n });\r\n }\r\n\r\n // TODO save offer contract date here\r\n\r\n const fileBlob = await context.reportsService.GetReport(\r\n ReportTypeCode.RENAULT_CONTRACT,\r\n reportParameters\r\n );\r\n\r\n const fileName = `Contract-${offer?.id}.pdf`;\r\n\r\n const file = new File([fileBlob], fileName);\r\n\r\n const caseAttachment = {\r\n id: 0,\r\n caseId: reduxState.caseSettings.case.id,\r\n attachmentTypeId: AttachmentTypeIdEnum.CONTRACT,\r\n attachmentType: {\r\n code: AttachmentTypeCode.CONTRACT\r\n },\r\n file,\r\n fileName,\r\n isSelection: true\r\n } as CaseAttachment;\r\n\r\n context.caseService.AddCaseAttachment([caseAttachment]);\r\n\r\n FileSaver.saveAs(fileBlob, fileName);\r\n };\r\n\r\n const getControl = (groupName: string, param: ReportParameterExtended) => {\r\n switch (param.type) {\r\n case ControlType.ORIGINAL_COPY:\r\n return (\r\n
\r\n \r\n {param.label}\r\n handleChange(groupName, param.name, e.target.value)}\r\n name={param.name}\r\n >\r\n {originalCopyType.map((type, index) => (\r\n \r\n {type}\r\n \r\n ))}\r\n \r\n \r\n {requiredFields.includes(param.name)\r\n ? context.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n : undefined}\r\n \r\n \r\n
\r\n );\r\n case ControlType.BOOLEAN:\r\n return (\r\n
\r\n \r\n {param.label}\r\n handleChange(groupName, param.name, e.target.value)}\r\n name={param.name}\r\n >\r\n {booleanType.map((type, index) => (\r\n \r\n {type}\r\n \r\n ))}\r\n \r\n \r\n {requiredFields.includes(param.name)\r\n ? context.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n : undefined}\r\n \r\n \r\n
\r\n );\r\n case ControlType.PERSONAL_DATA:\r\n const valuesArray = param.value.split(',') || [];\r\n\r\n const id = valuesArray.length ? valuesArray[0] : '';\r\n const series = valuesArray.length > 0 ? valuesArray[1] : '';\r\n const number = valuesArray.length > 1 ? valuesArray[2] : '';\r\n\r\n return (\r\n
\r\n
\r\n \r\n Tip document\r\n {\r\n valuesArray[0] = e.target.value;\r\n handleChange(groupName, param.name, valuesArray.join(','));\r\n }}\r\n name={param.name}\r\n >\r\n {personalDataType.map((type, index) => (\r\n \r\n {type}\r\n \r\n ))}\r\n \r\n \r\n {requiredFields.includes(param.name)\r\n ? context.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n : undefined}\r\n \r\n \r\n
\r\n
\r\n {\r\n valuesArray[1] = e.target.value;\r\n handleChange(groupName, param.name, valuesArray.join(','));\r\n }}\r\n error={requiredFields.includes(param.name)}\r\n helperText={\r\n requiredFields.includes(param.name)\r\n ? context.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n : undefined\r\n }\r\n name={param.name}\r\n value={series}\r\n label=\"Serie\"\r\n />\r\n
\r\n
\r\n {\r\n valuesArray[2] = e.target.value;\r\n handleChange(groupName, param.name, valuesArray.join(','));\r\n }}\r\n error={requiredFields.includes(param.name)}\r\n helperText={\r\n requiredFields.includes(param.name)\r\n ? context.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n : undefined\r\n }\r\n type=\"number\"\r\n name={param.name}\r\n value={number}\r\n label=\"Numar\"\r\n />\r\n
\r\n
\r\n );\r\n case ControlType.DATE:\r\n return (\r\n \r\n \r\n handleChange(\r\n groupName,\r\n param.name,\r\n date ? date.format(dateFormat.toUpperCase()) : ''\r\n )\r\n }\r\n autoOk={true}\r\n />\r\n \r\n );\r\n default:\r\n return (\r\n handleChange(groupName, param.name, e.target.value)}\r\n name={param.name}\r\n value={param.value}\r\n label={param.label}\r\n error={requiredFields.includes(param.name)}\r\n helperText={\r\n requiredFields.includes(param.name)\r\n ? context.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n : undefined\r\n }\r\n />\r\n );\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n Generare Contract Vanzare-Cumparare\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {!state ? (\r\n \r\n ) : (\r\n
\r\n \r\n {Object.entries(state).map(([key, group]) => {\r\n return (\r\n \r\n
{group.label}
\r\n \r\n {group.parameters.map((param: ReportParameterExtended) => {\r\n return (\r\n \r\n {getControl(group.name, param)}\r\n \r\n );\r\n })}\r\n \r\n
\r\n );\r\n })}\r\n
\r\n \r\n
\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ContractModal;\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n VehicleState\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Button, Grid, FormControlLabel, Switch, Divider } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport {\r\n ParametreCode,\r\n ReferentialCode,\r\n OfferTypeCode,\r\n CurrencyCode,\r\n ReportTypeCode,\r\n Constants,\r\n AttachmentTypeCode,\r\n RenaultGoldList,\r\n PurchaseOriginCode,\r\n renaultMakeCodes\r\n} from '../../helpers/Constants';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport NumberFormat from 'react-number-format';\r\nimport moment from 'moment';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { VehicleOffer } from '../../interfaces/Vehicle';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport { ReportParameter } from '../../interfaces/Reports';\r\nimport { IReportsService } from '../../services/Interfaces/IReportsService';\r\nimport FileSaver from 'file-saver';\r\nimport * as R from 'ramda';\r\nimport { isNullOrUndefined } from 'util';\r\nimport ContractModal from './ContractModal/ContractModal';\r\nimport { CaseTypeCode } from '../../helpers/Constants';\r\nimport { CurrencyEnum } from '../../enums/CurrencyEnum';\r\nimport _ from 'lodash';\r\nimport { CaseAttachment } from '../../interfaces/Case';\r\n\r\ninterface ICaseDetailsCaseTabSaleOfferFormState {\r\n isLoading: boolean;\r\n hasRights: boolean;\r\n executing: boolean;\r\n isUserHidden: boolean;\r\n vehicleOfferData: VehicleOffer;\r\n guaranteeTypes: IReferential[];\r\n offerTypes: IReferential[];\r\n offers: VehicleOffer[];\r\n offerType: IReferential | null;\r\n contractOffer?: VehicleOffer;\r\n contractPrice?: number;\r\n contractModalOpened: boolean;\r\n displaySecondCurrency: boolean;\r\n purchaseOrigins: IReferential[];\r\n saleChannels: IReferential[];\r\n makes: IReferential[];\r\n attachType: IReferential;\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseTabSaleOfferFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n isSaleOfferType: boolean;\r\n}\r\n\r\ntype ICaseDetailsCaseTabSaleOfferFormProps = ExternalCaseDetailsCaseTabSaleOfferFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n} & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabSaleOfferForm extends React.PureComponent<\r\n ICaseDetailsCaseTabSaleOfferFormProps,\r\n ICaseDetailsCaseTabSaleOfferFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n private appUserService!: IAppUserService;\r\n private reportService!: IReportsService;\r\n private checkIfCurrencyIsEurOrRon: boolean =\r\n this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value == CurrencyCode.EUR ||\r\n this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value == CurrencyCode.RON;\r\n static contextType = ApplicationContext;\r\n state = {\r\n isLoading: true,\r\n hasRights: false,\r\n executing: false,\r\n isUserHidden: false,\r\n guaranteeTypes: [] as IReferential[],\r\n offerTypes: [],\r\n offers: [],\r\n offerType: null,\r\n contractModalOpened: false,\r\n currencyRates: [],\r\n displaySecondCurrency: this.checkIfCurrencyIsEurOrRon,\r\n vehicleOfferData: {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n vehicleId: this.props.caseSettingsState.case!.vehicleId,\r\n comments: '',\r\n damageValue: 0,\r\n newVin: '',\r\n offerValue: 0,\r\n offerValueWithVAT: 0,\r\n priceValue: 0,\r\n tradeInValue: 0,\r\n vatValue: 0,\r\n withNewVehicle: this.props.isSaleOfferType,\r\n currency: this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value,\r\n currencyRate: Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value == CurrencyCode.RON\r\n ? CurrencyCode.EUR\r\n : this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value\r\n ),\r\n secondCurrency: this.checkIfCurrencyIsEurOrRon\r\n ? this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value == CurrencyCode.EUR\r\n ? CurrencyCode.RON\r\n : CurrencyCode.EUR\r\n : null,\r\n secondOfferValue: this.checkIfCurrencyIsEurOrRon ? 0 : null,\r\n secondOfferVatAmount: this.checkIfCurrencyIsEurOrRon ? 0 : null,\r\n secondOfferValueWithVAT: this.checkIfCurrencyIsEurOrRon ? 0 : null\r\n } as VehicleOffer,\r\n purchaseOrigins: [] as IReferential[],\r\n saleChannels: [] as IReferential[],\r\n makes: [] as IReferential[],\r\n attachType: {} as IReferential\r\n } as ICaseDetailsCaseTabSaleOfferFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n // let caseParametersList = this.props.caseSettingsState.case!.caseParameters;\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseSaleOfferForm();\r\n if (!this.props.appState.currencyRates.length) {\r\n await this.getCurrencyRates();\r\n }\r\n }\r\n );\r\n }\r\n\r\n closeContractModal = () => {\r\n this.setState({\r\n contractModalOpened: false\r\n });\r\n };\r\n\r\n getCurrencyRates = async () => {\r\n const rates = await this.vehicleService.GetCurrencyRates();\r\n this.props.appState.currencyRates = rates;\r\n console.log('currencyRates', this.props.appState.currencyRates);\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n currencyRate: Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value == CurrencyCode.RON\r\n ? CurrencyCode.EUR\r\n : this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value\r\n )\r\n }\r\n });\r\n };\r\n\r\n openContractModal = async (contractOffer: VehicleOffer, contractPrice: number) => {\r\n const caseContractAttachments = await this.caseService.GetCaseAttachments(\r\n this.props.caseSettingsState.case!.id,\r\n [AttachmentTypeCode.CONTRACT]\r\n );\r\n\r\n const fileName = `Contract-${contractOffer.id}.pdf`;\r\n const attachment = caseContractAttachments.find((a) => a.originalFileName === fileName);\r\n\r\n if (!caseContractAttachments || !caseContractAttachments.length || !attachment) {\r\n this.setState({\r\n contractModalOpened: true,\r\n contractPrice,\r\n contractOffer\r\n });\r\n } else {\r\n if (attachment) {\r\n const attachmentBlob = await this.caseService.GetCaseAttachment(attachment.fileName);\r\n\r\n FileSaver.saveAs(attachmentBlob, attachment.originalFileName);\r\n if (this.props.caseSettingsState.caseSettings!.workflow.saveDocuments) {\r\n const documentName = `Contract_${contractOffer.id}.pdf`;\r\n console.log('Save file', fileName, 'Id Contract', contractOffer.id);\r\n await this.saveGeneratedFile(attachmentBlob, documentName);\r\n }\r\n } else {\r\n throw Error(`Attachment ${fileName}`);\r\n }\r\n }\r\n };\r\n\r\n getCurrentCurrency = (): string => {\r\n return this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value;\r\n };\r\n\r\n getVATValue = (price: number, vat: number): number => {\r\n return Number.parseFloat((price * (vat / 100)).toFixed(2));\r\n };\r\n\r\n getPriceWithVAT = (price: number, vat: number) => {\r\n const vatValue = this.getVATValue(price, vat);\r\n return Number.parseFloat((price + vatValue).toFixed(2));\r\n };\r\n\r\n getReverseVatValue = (price: number, vat: number): number => {\r\n return Number.parseFloat(((price / (1 + vat / 100) - price) * -1).toFixed(2));\r\n };\r\n\r\n getPriceWithoutVAT = (price: number, vat: number) => {\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n\r\n const vehicleHasNoVAT =\r\n offerTypeCode === CaseTypeCode.SALE && this.props.vehicleState.vehicle?.purchaseVatRate === 0;\r\n\r\n const purchasePrice = (this.props.vehicleState?.vehicle?.purchasePrice as number) || 0;\r\n\r\n const vatValue = !vehicleHasNoVAT\r\n ? this.getReverseVatValue(price, vat)\r\n : Utils.getMarginVat(price, +purchasePrice, vat);\r\n\r\n return Number.parseFloat((price - vatValue).toFixed(2));\r\n };\r\n\r\n getOfferPriceWithoutVAT = (offerPrice: number): number => {\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n\r\n const vehicleHasNoVAT =\r\n offerTypeCode === CaseTypeCode.SALE && this.props.vehicleState.vehicle?.purchaseVatRate === 0;\r\n\r\n const purchasePrice = (this.props.vehicleState?.vehicle?.purchasePrice as number) || 0;\r\n\r\n const caseParameters = this.props.caseSettingsState.case!.caseParameters;\r\n const vatParameter = caseParameters.filter(\r\n (parameter) => parameter.parameter!.code === ParametreCode.TVA\r\n );\r\n const vat = parseFloat(vatParameter[0]!.value);\r\n\r\n const vatValue = !vehicleHasNoVAT\r\n ? this.getReverseVatValue(offerPrice, vat)\r\n : Utils.getMarginVat(offerPrice, +purchasePrice, vat);\r\n\r\n return Number.parseFloat((offerPrice - vatValue).toFixed(2));\r\n };\r\n\r\n getVATFromOfferPrice = () => {\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n\r\n const vehicleHasNoVAT =\r\n offerTypeCode === CaseTypeCode.SALE && this.props.vehicleState.vehicle?.purchaseVatRate === 0;\r\n\r\n const purchasePrice = (this.props.vehicleState?.vehicle?.purchasePrice as number) || 0;\r\n\r\n const offerPrice = this.state.vehicleOfferData.offerValueWithVAT;\r\n const caseParameters = this.props.caseSettingsState.case!.caseParameters;\r\n const vatParameter = caseParameters.filter(\r\n (parameter) => parameter.parameter!.code === ParametreCode.TVA\r\n );\r\n\r\n const vat = parseFloat(vatParameter[0]!.value);\r\n\r\n if (!vehicleHasNoVAT) {\r\n const offerPriceWithoutVAT = offerPrice / (1 + vat / 100);\r\n\r\n return Number.parseFloat((offerPriceWithoutVAT * (vat / 100)).toFixed(2));\r\n }\r\n\r\n return Utils.getMarginVat(offerPrice, purchasePrice, vat);\r\n };\r\n\r\n getValuationPrice = (caseHasVAT: boolean) => {\r\n const caseValuation = this.props.caseSettingsState.case?.caseValuation;\r\n let valuationValue = caseValuation\r\n ? this.props.isSaleOfferType\r\n ? this.props.caseSettingsState.case!.caseValuation?.offerPrice || 0\r\n : this.props.caseSettingsState.case!.caseValuation?.tradeInPrice || 0\r\n : 0;\r\n\r\n const caseValuationVatValue = caseValuation?.vatRate || 0;\r\n\r\n if (!caseHasVAT) {\r\n valuationValue = Utils.getPriceWithoutVat(valuationValue, caseValuationVatValue);\r\n }\r\n\r\n return Utils.ConvertCurrency(\r\n this.props.appState.currencyRates,\r\n CurrencyCode.EUR,\r\n this.state.vehicleOfferData.currency,\r\n valuationValue\r\n );\r\n };\r\n\r\n setStatePriceAndVAT = () => {\r\n const caseParameters = this.props.caseSettingsState.case!.caseParameters;\r\n const vatParameter = caseParameters.filter(\r\n (parameter) => parameter.parameter!.code === ParametreCode.TVA\r\n );\r\n\r\n const vatValue = +vatParameter[0]?.value || 0;\r\n const caseHasNoVAT = vatValue === 0;\r\n\r\n const tradeInValue = this.getValuationPrice(!caseHasNoVAT);\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n offerType: this.state.offerType,\r\n offerTypeId: this.state.offerType!.id,\r\n tradeInValue,\r\n damageValue: this.getDamageValue(),\r\n offerValue: 0,\r\n offerValueWithVAT: this.getPriceWithVAT(0, vatValue),\r\n priceValue: Number.parseFloat(\r\n (this.getPriceWithoutVAT(tradeInValue, vatValue) - this.getDamageValue()).toFixed(2)\r\n ),\r\n vatValue: parseFloat(vatParameter[0]!.value)\r\n }\r\n });\r\n };\r\n\r\n getDamageValue = () => {\r\n if (R.isNil(this.props.caseSettingsState.case!.caseCalculation)) {\r\n return 0;\r\n }\r\n\r\n const damage = this.props.caseSettingsState.case!.caseCalculation.amountWithoutTVA;\r\n\r\n return Utils.ConvertCurrency(\r\n this.props.appState.currencyRates,\r\n this.props.caseSettingsState.case!.caseCalculation.currencyCode,\r\n this.getCurrentCurrency(),\r\n damage\r\n );\r\n };\r\n\r\n setSecondValueBasedOnCaseCurrency(value: number, currencyRate: number): number | null {\r\n let resultValue = null;\r\n if (\r\n this.state.vehicleOfferData.currency == CurrencyCode.EUR ||\r\n this.state.vehicleOfferData.currency == CurrencyCode.RON\r\n ) {\r\n resultValue = 0;\r\n const previousCurrencyCode = this.state.vehicleOfferData.currency;\r\n const futureCurrencyCode =\r\n this.state.vehicleOfferData.currency == CurrencyCode.EUR\r\n ? CurrencyCode.RON\r\n : CurrencyCode.EUR;\r\n if (!R.isNil(value) && previousCurrencyCode) {\r\n let previousCurrencyRate = Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n previousCurrencyCode\r\n );\r\n\r\n let futureCurrencyRate = Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n futureCurrencyCode\r\n );\r\n\r\n if (this.state.vehicleOfferData.currency == CurrencyEnum.EUR) {\r\n previousCurrencyRate = currencyRate;\r\n } else if (this.state.vehicleOfferData.currency == CurrencyCode.RON) {\r\n futureCurrencyRate = currencyRate;\r\n }\r\n\r\n resultValue = value * (previousCurrencyRate / futureCurrencyRate);\r\n return Number.parseFloat(resultValue.toFixed(2));\r\n }\r\n }\r\n\r\n return resultValue;\r\n }\r\n\r\n setSecondVatFromOfferPrice(offerValueWithVAT: number): number {\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n const vehicleHasNoVAT =\r\n offerTypeCode === CaseTypeCode.SALE && this.props.vehicleState.vehicle?.purchaseVatRate === 0;\r\n const purchasePrice = (this.props.vehicleState?.vehicle?.purchasePrice as number) || 0;\r\n const caseParameters = this.props.caseSettingsState.case!.caseParameters;\r\n const vatParameter = caseParameters.filter(\r\n (parameter) => parameter.parameter!.code === ParametreCode.TVA\r\n );\r\n const vat = parseFloat(vatParameter[0]!.value);\r\n if (!vehicleHasNoVAT) {\r\n const offerPriceWithoutVAT = offerValueWithVAT / (1 + vat / 100);\r\n return Number.parseFloat((offerPriceWithoutVAT * (vat / 100)).toFixed(2));\r\n }\r\n return Utils.getMarginVat(offerValueWithVAT, purchasePrice, vat);\r\n }\r\n\r\n loadCaseSaleOfferForm = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n const guaranteeTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.GuaranteeType\r\n );\r\n const offerTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OfferTye\r\n );\r\n\r\n const purchaseOriginRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.PurchaseOrigin\r\n );\r\n\r\n const saleChannelRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.SaleChannel\r\n );\r\n\r\n const vehicleMakeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.VehicleMake\r\n );\r\n\r\n const offerTypeList = await this.appReferentialService.Get(offerTypeRef!.baseUrl);\r\n\r\n const offerType = offerTypeList.find(\r\n (item) =>\r\n (item.code === OfferTypeCode.SELL && this.props.isSaleOfferType) ||\r\n (item.code === OfferTypeCode.BUY && !this.props.isSaleOfferType)\r\n )!;\r\n \r\n const [guaranteeTypeList, offers, puchaseOriginList, saleChannelList, makeList, vehicleAdvert, attachmentType] = await Promise.all([\r\n this.appReferentialService.Get(guaranteeTypeRef!.baseUrl),\r\n R.isNil(this.props.caseSettingsState.case!.vehicleId)\r\n ? []\r\n : this.vehicleService.GetVehicleOffers(\r\n this.props.caseSettingsState.case!.vehicleId,\r\n this.props.caseSettingsState.case!.id,\r\n offerType.id\r\n ),\r\n this.appReferentialService.Get(purchaseOriginRef!.baseUrl),\r\n this.appReferentialService.Get(saleChannelRef!.baseUrl),\r\n this.appReferentialService.Get(vehicleMakeRef!.baseUrl),\r\n this.vehicleService.GetVehicleAdvert(\r\n this.props.caseSettingsState.case!.vehicleId,\r\n caseId\r\n ),\r\n this.caseService.GetAttachmentTypeByCode(AttachmentTypeCode.OTHER)\r\n ]);\r\n\r\n const users = await this.appUserService.GetUsersInfo(offers.map((item) => item.createdBy));\r\n offers.forEach((item) => {\r\n const user = users.find((u) => u.id === item.createdBy);\r\n item.createdByUser = R.isNil(user) ? null : user;\r\n });\r\n\r\n let makeListFiltered = _.cloneDeep(makeList.filter((item) => item.isActive));\r\n if (this.props.appState.appUser!.organization!.dealerId && !this.props.caseSettingsState.caseSettings?.workflow?.hideRenewAdvert) {\r\n makeListFiltered = makeListFiltered.filter(\r\n (item) => item.code && renaultMakeCodes.includes(item!.code)\r\n );\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: false,\r\n hasRights: hasRights,\r\n isUserHidden: !hasRights,\r\n guaranteeTypes: guaranteeTypeList.filter((item) => item.isActive),\r\n offerTypes: offerTypeList,\r\n offers: offers,\r\n offerType: offerType,\r\n purchaseOrigins: puchaseOriginList.filter((item) => item.isActive),\r\n saleChannels: saleChannelList.filter((item) => item.isActive),\r\n makes: makeListFiltered,\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n guaranteeType: vehicleAdvert ? vehicleAdvert!.guaranteeType : null,\r\n guaranteeTypeId: vehicleAdvert ? vehicleAdvert!.guaranteeTypeId : null\r\n },\r\n attachType: attachmentType\r\n },\r\n this.setStatePriceAndVAT\r\n );\r\n };\r\n\r\n loadOffers = async () => {\r\n const offers = await this.vehicleService.GetVehicleOffers(\r\n this.props.caseSettingsState.case!.vehicleId!,\r\n this.props.caseSettingsState.case!.id,\r\n this.state.offerType!.id\r\n );\r\n\r\n const users = await this.appUserService.GetUsersInfo(offers.map((item) => item.createdBy));\r\n offers.forEach((item) => {\r\n const user = users.find((u) => u.id === item.createdBy);\r\n item.createdByUser = R.isNil(user) ? null : user;\r\n });\r\n\r\n this.setState({\r\n offers: offers\r\n });\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n\r\n NumberFormatCustomCurrencyRate = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={4}\r\n />\r\n );\r\n };\r\n\r\n submitData = async (e: any) => {\r\n try {\r\n this.setState({ executing: true });\r\n const data: VehicleOffer = {\r\n ...this.state.vehicleOfferData,\r\n offerVatAmount:\r\n this.state.vehicleOfferData.offerValueWithVAT - this.state.vehicleOfferData.offerValue,\r\n secondCurrency: this.state.displaySecondCurrency\r\n ? this.state.vehicleOfferData.secondCurrency\r\n : null,\r\n secondOfferValue: this.state.displaySecondCurrency\r\n ? this.state.vehicleOfferData.secondOfferValue\r\n : null,\r\n secondOfferValueWithVAT: this.state.displaySecondCurrency\r\n ? this.state.vehicleOfferData.secondOfferValueWithVAT\r\n : null\r\n };\r\n\r\n await this.vehicleService.SaveVehicleOffer(data);\r\n\r\n await this.submitForm(\r\n this.props.caseSettingsState.case!.id,\r\n this.props.workflowForm.id,\r\n null\r\n );\r\n\r\n await this.loadOffers();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({\r\n executing: false\r\n });\r\n }\r\n };\r\n\r\n handleGuaranteeTypeChange = (newValue: IReferential | null) => {\r\n if (!R.isNil(newValue!.displayName)) {\r\n if (RenaultGoldList.includes(newValue!.code!.toString())) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'RENEW_GOLD_INFO_MESSAGE',\r\n 'Aceasta garantie include si Garantia de producator !'\r\n ),\r\n {\r\n variant: 'info',\r\n autoHideDuration: 5000\r\n }\r\n );\r\n }\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n guaranteeType: newValue,\r\n guaranteeTypeId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n }\r\n };\r\n\r\n\r\n handlePurchaseOriginChange = (newValue: IReferential | null) => {\r\n if (!R.isNil(newValue!.displayName)) {\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n purchaseOrigin: newValue,\r\n purchaseOriginId: newValue === null ? null : newValue.id,\r\n withNewVehicle: newValue && newValue.code === PurchaseOriginCode.NC ? true : false\r\n }\r\n });\r\n }\r\n };\r\n\r\n \r\n handleMakeChange = (newValue: IReferential | null) => {\r\n if (!R.isNil(newValue!.displayName)) {\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n make: newValue,\r\n makeId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n }\r\n };\r\n\r\n handleSaleChannelChange = (newValue: IReferential | null) => {\r\n if (!R.isNil(newValue!.displayName)) {\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n saleChannel: newValue,\r\n saleChannelId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n }\r\n };\r\n\r\n handleIsActiveNewVehicle = (e: any) => {\r\n //in acest caz vom prelua automat ca si origine achizitie / by default - Trade In VN - Achizitie de vehicul rulat ( VO) cu vanzare de vehicul nou ( VN)\r\n let purchaseOrigin: IReferential | null = null;\r\n if (e.currentTarget.checked && !this.props.caseSettingsState.caseSettings?.workflow?.hideRenewAdvert) {\r\n purchaseOrigin = this.state.purchaseOrigins.find((item) => item.code === PurchaseOriginCode.NC) || null;\r\n }\r\n\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n withNewVehicle: e.currentTarget.checked,\r\n newVin: e.currentTarget.checked ? this.state.vehicleOfferData.newVin : '',\r\n purchaseOrigin: e.currentTarget.checked ? purchaseOrigin : null,\r\n purchaseOriginId: e.currentTarget.checked ? (purchaseOrigin?.id ?? null) : null,\r\n }\r\n });\r\n };\r\n\r\n getInvoicePdf = async (\r\n id: number,\r\n vehicleId: number,\r\n caseId: number,\r\n caseClientHistoryId: number | null\r\n ) => {\r\n const reportParameters = [\r\n {\r\n name: 'vehicleId',\r\n value: vehicleId.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'caseId',\r\n value: caseId.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'offerId',\r\n value: id.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'organizationId',\r\n value: this.props.appState.appUser!.organization?.id.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'caseClientHistoryId',\r\n value: caseClientHistoryId?.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'apiUrl',\r\n value: Constants.apiRoot\r\n } as ReportParameter\r\n ];\r\n\r\n const fileBlob = await this.reportService.GetReport(\r\n ReportTypeCode.RENAULT_INVOICE,\r\n reportParameters\r\n );\r\n FileSaver.saveAs(fileBlob, 'Proforma invoice.pdf');\r\n if (this.props.caseSettingsState.caseSettings!.workflow.saveDocuments) {\r\n const fileName = `Proforma invoice_${id}.pdf`;\r\n console.log('Save file', fileName, 'Id oferta', id);\r\n await this.saveGeneratedFile(fileBlob, fileName);\r\n }\r\n };\r\n\r\n getOfferPdf = async (id: number, vehicleId: number, caseId: number) => {\r\n const reportParameters = [\r\n {\r\n name: 'vehicleId',\r\n value: vehicleId.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'caseId',\r\n value: caseId.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'calculationId',\r\n value: this.props.caseSettingsState.case?.caseCalculation?.id.toString() || null\r\n } as ReportParameter,\r\n {\r\n name: 'offerId',\r\n value: id.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'organizationId',\r\n value: this.props.appState.appUser!.organization?.id.toString()\r\n } as ReportParameter,\r\n\r\n {\r\n name: 'apiUrl',\r\n value: Constants.apiRoot\r\n } as ReportParameter,\r\n {\r\n name: 'organizationOwnerId',\r\n value: this.props.caseSettingsState.case?.organizationOwnerId.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'hideOrganizationLogo',\r\n value: this.props.caseSettingsState.caseSettings?.workflow?.hideRenewAdvert ? 'true' : 'false'\r\n } as ReportParameter\r\n ];\r\n\r\n const fileBlob = await this.reportService.GetReport(\r\n ReportTypeCode.RENAULT_OFFER,\r\n reportParameters\r\n );\r\n FileSaver.saveAs(fileBlob, 'Offer.pdf');\r\n if (this.props.caseSettingsState.caseSettings!.workflow.saveDocuments) {\r\n const fileName = `Offer_${id}.pdf`;\r\n console.log('Save file', fileName, 'Id oferta', id);\r\n await this.saveGeneratedFile(fileBlob, fileName);\r\n }\r\n };\r\n\r\n saveGeneratedFile = async (fileBlob: Blob, fileName: string) => {\r\n try {\r\n //Save the report into attachments\r\n const attachments: CaseAttachment[] = [];\r\n attachments.push({\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n attachmentTypeId: this.state.attachType.id,\r\n attachmentType: this.state.attachType,\r\n file: new File([fileBlob], fileName),\r\n isSelection: false,\r\n includeInOtherTab: true,\r\n checkFileName: true\r\n } as CaseAttachment);\r\n\r\n const newFiles = await this.caseService.AddCaseAttachment(attachments);\r\n\r\n console.log('newFiles', newFiles);\r\n } catch (error) {\r\n console.log('error', error);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n \r\n showGetInvoiceButton = (offer: VehicleOffer) => {\r\n const workflowSteps = this.props.caseSettingsState.caseSettings?.workflow.workflowSections;\r\n if (!isNullOrUndefined(workflowSteps)) {\r\n const code17Steps = workflowSteps?.find((wfs) => {\r\n const codeF17 = wfs.workflowSectionSteps.find((x) =>\r\n x.workflowSectionStepForms.find((wfssf) => wfssf.form.code === 'F17')\r\n );\r\n return !isNullOrUndefined(codeF17);\r\n });\r\n if (!isNullOrUndefined(code17Steps)) {\r\n return (\r\n \r\n this.getInvoicePdf(offer.id, offer.vehicleId, offer.caseId, offer.caseClientHistoryId)\r\n }\r\n >\r\n {this.translatorService.Tranlate('SALE_OFFER_INVOICE_PROFORMA', 'Factura Proforma')}\r\n \r\n );\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n showOfferTimeline = (caseHasVAT: boolean) => {\r\n const priceLabel = caseHasVAT\r\n ? this.translatorService.Tranlate('SALE_OFFER_PRICE_OFFERED_WITH_VAT', 'Pret calculat cu TVA')\r\n : this.translatorService.Tranlate('SALE_OFFER_PRICE_OFFERED', 'Pret calculat cu TVA');\r\n\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n\r\n const vehicleHasNoVAT =\r\n offerTypeCode === CaseTypeCode.SALE && this.props.vehicleState.vehicle?.purchaseVatRate === 0;\r\n\r\n return this.state.offers.map((offer, index) => {\r\n const price = !vehicleHasNoVAT\r\n ? this.getPriceWithVAT(offer.offerValue, this.state.vehicleOfferData.vatValue)\r\n : offer.offerValue + offer.offerVatAmount;\r\n const secondPrice = !vehicleHasNoVAT\r\n ? offer.secondOfferValue\r\n ? this.getPriceWithVAT(offer.secondOfferValue, this.state.vehicleOfferData.vatValue)\r\n : null\r\n : !R.isNil(offer.secondOfferValue) && !R.isNil(offer.secondOfferVatAmount)\r\n ? offer.secondOfferValue + offer.secondOfferVatAmount\r\n : null;\r\n return (\r\n
\r\n
\r\n
\r\n

\r\n {moment.utc(offer.dateCreation).local().format(this.props.appState.longDateFormat) +\r\n ' (' +\r\n offer.createdByUser!.email +\r\n ')'}\r\n

\r\n

\r\n {`${priceLabel}: ${price} ${offer.currency}`}\r\n {secondPrice ? '(' + secondPrice + offer.secondCurrency + ')' : ''}\r\n

\r\n\r\n {offer.purchaseOrigin != null && (\r\n

\r\n {' '}\r\n {this.translatorService.Tranlate('SALE_OFFER_PURCHASE_ORIGIN', 'Origine achizitie')}:\r\n {offer.purchaseOrigin!.displayName ? ' ' + offer.purchaseOrigin!.displayName : null}\r\n

\r\n )}\r\n\r\n {offer.saleChannel != null && (\r\n

\r\n {' '}\r\n {this.translatorService.Tranlate('SALE_OFFER_SALE_CHANNEL', 'Canal vanzare')}:\r\n {offer.saleChannel!.displayName ? ' ' + offer.saleChannel!.displayName : null}\r\n

\r\n )}\r\n\r\n {offer.guaranteeType != null && (\r\n

\r\n {' '}\r\n {this.translatorService.Tranlate('SALE_OFFER_GUARANTEE_TYPE', 'Tip garantie')}:\r\n {offer.guaranteeType!.displayName ? ' ' + offer.guaranteeType!.displayName : null}\r\n

\r\n )}\r\n\r\n \r\n \r\n {this.showGetInvoiceButton(offer)}\r\n \r\n \r\n this.getOfferPdf(offer.id, offer.vehicleId, offer.caseId)}\r\n >\r\n {this.translatorService.Tranlate('SALE_OFFER_INVOICE_PDF', 'Oferta PDF')}\r\n \r\n \r\n \r\n this.openContractModal(offer, price)}\r\n >\r\n {this.translatorService.Tranlate('SALE_OFFER_CONTRACT', 'Contract')}\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n });\r\n };\r\n\r\n renderClientDataForm = (caseHasVAT: boolean) => {\r\n const saleOfferPriceWithoutVatLabel = caseHasVAT\r\n ? this.translatorService.Tranlate('SALE_OFFER_PRICE_WITHOUT_VAT', 'Pret recomandat fara TVA')\r\n : this.translatorService.Tranlate('SALE_OFFER_PRICE', 'Pret recomandat');\r\n\r\n const saleOfferPriceOfferedWithoutVatLabel = caseHasVAT\r\n ? this.translatorService.Tranlate(\r\n 'SALE_OFFER_PRICE_OFFERED_WITHOUT_VAT',\r\n 'Pret ofertat fara TVA'\r\n )\r\n : this.translatorService.Tranlate('SALE_OFFER_PRICE_OFFERED', 'Pret ofertat');\r\n\r\n const saleOfferPriceOfferedWithVatLabel = caseHasVAT\r\n ? this.translatorService.Tranlate('SALE_OFFER_PRICE_OFFERED_WITH_VAT', 'Pret ofertat cu TVA')\r\n : this.translatorService.Tranlate('SALE_OFFER_PRICE_OFFERED', 'Pret ofertat');\r\n\r\n const saleOfferCalculatedPriceWithoutVat = caseHasVAT\r\n ? this.translatorService.Tranlate('SALE_OFFER_CALCULATED_PRICE_WITHOUT_VAT', 'Pret calculat')\r\n : this.translatorService.Tranlate('SALE_OFFER_CALCULATED_PRICE', 'Pret calculat');\r\n\r\n const purchasePrice = (this.props.vehicleState?.vehicle?.purchasePrice as number) || 0;\r\n\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n\r\n const vehicleHasNoVAT =\r\n offerTypeCode === CaseTypeCode.SALE && this.props.vehicleState.vehicle?.purchaseVatRate === 0;\r\n\r\n return (\r\n {\r\n this.submitData(e);\r\n }}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n {caseHasVAT && (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n\r\n {this.props.isSaleOfferType === false ? (\r\n
\r\n \r\n\r\n \r\n
\r\n ) : (\r\n ''\r\n )}\r\n\r\n \r\n \r\n \r\n \r\n {caseHasVAT && (\r\n \r\n \r\n \r\n )}\r\n \r\n\r\n \r\n \r\n {\r\n const offerValue = this.getOfferPriceWithoutVAT(e.target.value);\r\n const secondOfferValueWithVAT = this.setSecondValueBasedOnCaseCurrency(\r\n e.target.value,\r\n this.state.vehicleOfferData.currencyRate\r\n );\r\n const secondOfferValue = secondOfferValueWithVAT\r\n ? this.getOfferPriceWithoutVAT(secondOfferValueWithVAT)\r\n : 0;\r\n const secondOfferVatAmount = secondOfferValueWithVAT\r\n ? this.setSecondVatFromOfferPrice(secondOfferValueWithVAT)\r\n : 0;\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n offerValueWithVAT: e.target.value,\r\n offerValue: offerValue,\r\n secondOfferValueWithVAT: secondOfferValueWithVAT\r\n ? secondOfferValueWithVAT\r\n : 0,\r\n secondOfferValue: secondOfferValue,\r\n secondOfferVatAmount: secondOfferVatAmount\r\n }\r\n });\r\n }}\r\n validators={['required', 'minNumber:1']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu'),\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={\r\n this.state.displaySecondCurrency\r\n ? saleOfferPriceOfferedWithVatLabel +\r\n ' | ' +\r\n this.state.vehicleOfferData.offerValueWithVAT +\r\n ' ' +\r\n this.state.vehicleOfferData.currency +\r\n ' (' +\r\n this.state.vehicleOfferData.secondOfferValueWithVAT +\r\n ' ' +\r\n this.state.vehicleOfferData.secondCurrency +\r\n ')'\r\n : saleOfferPriceOfferedWithVatLabel\r\n }\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom,\r\n style: { fontWeight: 500 }\r\n }}\r\n />\r\n \r\n \r\n {\r\n const value = e.target.value;\r\n const secondOfferValueWithVAT = this.setSecondValueBasedOnCaseCurrency(\r\n this.state.vehicleOfferData.offerValueWithVAT,\r\n parseFloat(value)\r\n );\r\n const secondOfferValue = secondOfferValueWithVAT\r\n ? this.getOfferPriceWithoutVAT(secondOfferValueWithVAT)\r\n : 0;\r\n console.log(secondOfferValue);\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n currencyRate: parseFloat(value),\r\n secondOfferValueWithVAT: secondOfferValueWithVAT\r\n ? secondOfferValueWithVAT\r\n : 0,\r\n secondOfferValue: secondOfferValue ? secondOfferValue : 0,\r\n secondOfferVatAmount: secondOfferValueWithVAT\r\n ? this.setSecondVatFromOfferPrice(secondOfferValueWithVAT)\r\n : 0\r\n }\r\n });\r\n }}\r\n validators={['required', 'minNumber:1']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu'),\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('SALE_OFFER_PRICE_FXRATE', 'Curs valutar')}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustomCurrencyRate,\r\n style: { fontWeight: 500 }\r\n }}\r\n />\r\n \r\n \r\n\r\n {\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n comments: e.target.value\r\n }\r\n });\r\n }}\r\n validators={[]}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('SALE_OFFER_OBSERVATIONS', 'Observatii')}\r\n multiline\r\n variant=\"outlined\"\r\n rows={6}\r\n />\r\n\r\n {this.props.isSaleOfferType === false ? (\r\n <>\r\n
\r\n
\r\n this.handleIsActiveNewVehicle(e)}\r\n color=\"primary\" />}\r\n label={this.translatorService.Tranlate(\r\n 'SALE_OFFER_WITH_SALE_NEW_VEHICLE',\r\n 'Cu vanzare vehicul nou'\r\n )}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\" />\r\n
\r\n\r\n this.handleMakeChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )} />\r\n
\r\n {this.props.caseSettingsState.caseSettings?.workflow?.hideRenewAdvert ? null : (\r\n
\r\n this.handlePurchaseOriginChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )} />\r\n
\r\n )}\r\n \r\n ) : (this.props.caseSettingsState.caseSettings?.workflow?.hideRenewAdvert ? null : \r\n <>\r\n
\r\n this.handleGuaranteeTypeChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )} />\r\n
\r\n
\r\n this.handleSaleChannelChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )} />\r\n
\r\n \r\n )}\r\n
\r\n\r\n \r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.reportService = (this.context as AppContext).reportsService;\r\n\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n\r\n const caseHasNoVAT =\r\n offerTypeCode === CaseTypeCode.AQUISITION && this.state.vehicleOfferData.vatValue === 0;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
\r\n {this.renderClientDataForm(!caseHasNoVAT)}\r\n\r\n \r\n {this.state.offers.length > 0 ? (\r\n
\r\n {this.showOfferTimeline(!caseHasNoVAT)}\r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n ) : null}\r\n {this.state.contractModalOpened && (\r\n \r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabSaleOfferFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabSaleOfferForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, CaseSettingsActionCreators } from '../../../store';\r\nimport { withSnackbar } from 'notistack';\r\nimport {\r\n Button,\r\n Grid,\r\n FormControlLabel,\r\n Switch,\r\n InputAdornment,\r\n IconButton,\r\n Paper,\r\n Dialog,\r\n DialogContent,\r\n Modal,\r\n DialogActions,\r\n DialogContentText,\r\n Divider,\r\n Box,\r\n CircularProgress\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../../context/Contexts';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { WorkflowSectionStepForm } from '../../../interfaces/Workflow';\r\nimport { ICaseService } from '../../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport {\r\n ParametreCode,\r\n VehicleAdvertOperationTypes,\r\n RefConstants,\r\n CurrencyCode,\r\n ReportTypeCode,\r\n Constants,\r\n AdvertOptionCodeEnum,\r\n excludedAdvertisers,\r\n VehicleAttachmentTypeCodeOrder,\r\n AttachmentTypeCode\r\n} from '../../../helpers/Constants';\r\nimport { AppUser } from '../../../interfaces/AppUser';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { FormHelpers } from '../../../helpers/forms/FormHelpers';\r\nimport NumberFormat from 'react-number-format';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { IVehicleService } from '../../../services/Interfaces/IVehicleService';\r\nimport {\r\n AddDetailsPublishRcr,\r\n PublishAdvertRcr,\r\n VehicleAdvert,\r\n VehicleOption\r\n} from '../../../interfaces/Vehicle';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport * as R from 'ramda';\r\nimport { FormCode } from '../../../helpers/forms/FormCode';\r\nimport {\r\n ICaseDetailsCaseTabVehicleAdvertState,\r\n ICaseVehicleAge\r\n} from './ICaseDetailsCaseTabVehicleAdvertState';\r\nimport { ExternalCaseDetailsCaseTabVwehicleAdvertProps } from './ExternalCaseDetailsCaseTabVwehicleAdvertProps';\r\nimport { ICaseDetailsCaseTabVehicleAdvertProps } from './ICaseDetailsCaseTabVehicleAdvertProps';\r\nimport { IAppUserService } from '../../../services/Interfaces/IAppUserService';\r\nimport { Utils } from '../../../helpers/Utils';\r\nimport { Clear as ClearIcon } from '@material-ui/icons';\r\nimport { ReportParameter } from '../../../interfaces/Reports';\r\nimport FileSaver from 'file-saver';\r\nimport { IReportsService } from '../../../services/Interfaces/IReportsService';\r\nimport MaterialTable, { Column } from 'material-table';\r\nimport {\r\n getAdvertLocalization,\r\n getLocalization,\r\n MaterialTableIcons\r\n} from '../../_shared/TableSettings';\r\nimport _ from 'lodash';\r\nimport { CaseAttachment, CaseAttachmentDto } from '../../../interfaces/Case';\r\n\r\nconst minNumberOfCharactersAdvertDetails = 35;\r\nconst maxNumberOfCharactersAdvertDetails = 6000;\r\n\r\nclass CaseDetailsCaseTabVehicleAdvertComponent extends React.PureComponent<\r\n ICaseDetailsCaseTabVehicleAdvertProps,\r\n ICaseDetailsCaseTabVehicleAdvertState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n private appUserService!: IAppUserService;\r\n private reportService!: IReportsService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: true,\r\n hasRights: false,\r\n executing: false,\r\n isUserHidden: false,\r\n advertiserOperations: [] as any[],\r\n valuationPrice: 0,\r\n vatValue: 0,\r\n vehicleAdvertHistory: [],\r\n vehicleAdvertData: {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n vehicleId: this.props.caseSettingsState.case?.vehicleId,\r\n price: 0,\r\n priceWithVat: 0,\r\n hasInvoice: false,\r\n leasingConcession: false,\r\n individual: true,\r\n privateBusiness: false,\r\n authorizedDealer: false,\r\n hasFinanceEligibility: false,\r\n manufacturerWarrantyDate: null,\r\n isRegistered: false,\r\n isFirstOwner: false,\r\n hasAccident: false,\r\n hasServiceBook: false,\r\n hasParticlesFilter: false,\r\n hasStandardImages: true,\r\n hasOptionalImages: false,\r\n vehicleAdvertOptions: [] as any,\r\n currency: this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value\r\n } as VehicleAdvert,\r\n makeTypes: [] as IReferential[],\r\n modelTypes: [] as IReferential[],\r\n fuelTypes: [] as IReferential[],\r\n transmissionTypes: [] as IReferential[],\r\n gearBoxTypes: [] as IReferential[],\r\n pollutionNormTypes: [] as IReferential[],\r\n carBodyTypes: [] as IReferential[],\r\n regionsTypes: [] as IReferential[],\r\n originCountriesTypes: [] as IReferential[],\r\n citiesTypes: [] as IReferential[],\r\n districtsTypes: [] as IReferential[],\r\n paintTypes: [] as IReferential[],\r\n advertisers: [] as IReferential[],\r\n vehicleOptions: [] as VehicleOption[],\r\n colorTypes: [] as IReferential[],\r\n isOpen: false,\r\n dialogVisible: false,\r\n guaranteeTypes: [] as IReferential[],\r\n isPublishLoading: false,\r\n attachType: {} as IReferential\r\n } as ICaseDetailsCaseTabVehicleAdvertState;\r\n\r\n inputTextValidator = React.createRef();\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n // let caseParametersList = this.props.caseSettingsState.case!.caseParameters;\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseVehicleAdvert();\r\n }\r\n );\r\n\r\n ValidatorForm.addValidationRule('minLength', (value) => {\r\n if (!value) {\r\n return true;\r\n }\r\n\r\n if (value.length >= minNumberOfCharactersAdvertDetails) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n ValidatorForm.addValidationRule('maxLength', (value) => {\r\n if (!value) {\r\n return true;\r\n }\r\n\r\n if (value.length <= maxNumberOfCharactersAdvertDetails) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n loadCaseVehicleAdvert = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n if (R.isNil(this.props.vehicleState.vehicle)) {\r\n this.setState({ isLoading: false });\r\n return;\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n // const guaranteeTypeRef = Referentials.find(item => item.code === ReferentialCode.GuaranteeType);\r\n // const offerTypeRef = Referentials.find(item => item.code === ReferentialCode.OfferTye);\r\n\r\n // const offerTypeList = await this.appReferentialService.Get(offerTypeRef!.baseUrl);\r\n\r\n // const [guaranteeTypeList] = await Promise.all([\r\n // this.appReferentialService.Get(guaranteeTypeRef!.baseUrl)\r\n // ]);\r\n\r\n const {\r\n vehicleMakeRef,\r\n bodyTypeRef,\r\n tractionTypeRef,\r\n transmissionTypeRef,\r\n fuelTypeRef,\r\n paintTypeRef,\r\n pollutionNormRef,\r\n modelRef,\r\n colorRef,\r\n regionRef,\r\n cityRef,\r\n advertiserRef,\r\n districtRef,\r\n countryOriginRef,\r\n guaranteeTypeRef\r\n } = RefConstants;\r\n\r\n const [\r\n vehicleMakeList,\r\n bodyTypeList,\r\n tractionTypeList,\r\n transmissionTypeList,\r\n fuelTypeList,\r\n paintTypeList,\r\n pollutionNormList,\r\n regions,\r\n cities,\r\n advertisers,\r\n models,\r\n colors,\r\n advertDistricts,\r\n originCountries,\r\n guaranteeTypeList,\r\n attachmentType\r\n ] = await Promise.all([\r\n this.appReferentialService.Get(vehicleMakeRef!.baseUrl),\r\n this.appReferentialService.Get(bodyTypeRef!.baseUrl),\r\n this.appReferentialService.Get(tractionTypeRef!.baseUrl),\r\n this.appReferentialService.Get(transmissionTypeRef!.baseUrl),\r\n this.appReferentialService.Get(fuelTypeRef!.baseUrl),\r\n this.appReferentialService.Get(paintTypeRef!.baseUrl),\r\n this.appReferentialService.Get(pollutionNormRef!.baseUrl),\r\n this.appReferentialService.Get(regionRef!.baseUrl),\r\n this.appReferentialService.Get(cityRef!.baseUrl),\r\n this.appReferentialService.Get(advertiserRef!.baseUrl),\r\n this.appReferentialService.Get(modelRef!.baseUrl),\r\n this.appReferentialService.Get(colorRef!.baseUrl),\r\n this.appReferentialService.Get(districtRef!.baseUrl),\r\n this.appReferentialService.Get(countryOriginRef!.baseUrl),\r\n this.appReferentialService.Get(guaranteeTypeRef!.baseUrl),\r\n this.caseService.GetAttachmentTypeByCode(AttachmentTypeCode.OTHER)\r\n ]);\r\n\r\n const caseParameters = this.props.caseSettingsState.case!.caseParameters;\r\n const vatParameter = caseParameters.filter(\r\n (parameter) => parameter.parameter!.code === ParametreCode.TVA\r\n );\r\n\r\n const vehicleAdvert = await this.vehicleService.GetVehicleAdvert(\r\n this.props.caseSettingsState.case!.vehicleId,\r\n caseId\r\n );\r\n\r\n const vehicleAdvertHistory = await this.getVehicleAdvertHistoryAmongWithUsers();\r\n let initialOptions: any;\r\n let vehicleInfo: any;\r\n\r\n console.log('props', this.props);\r\n const vehicle = await this.vehicleService.GetVehicle(\r\n this.props.caseSettingsState.case!.vehicleId as any\r\n );\r\n this.props.vehicleState.vehicle = _.cloneDeep(vehicle);\r\n if (R.isNil(vehicleAdvert)) {\r\n vehicleInfo = this.props.vehicleState.vehicle;\r\n initialOptions = this.props.vehicleState.vehicle!.vehicleOptions;\r\n } else {\r\n vehicleAdvert.individual = !vehicleAdvert.privateBusiness;\r\n\r\n const result = this.props.vehicleState.vehicle!.vehicleOptions.filter((o1) =>\r\n vehicleAdvert!.vehicleAdvertOptions.some((o2) => o1.id === o2.vehicleOptionId)\r\n );\r\n\r\n const intermediaryArr =\r\n result &&\r\n (result as any).map((item: any) => ({\r\n ...item,\r\n checked: true,\r\n tableData: {\r\n checked: true\r\n }\r\n }));\r\n initialOptions =\r\n intermediaryArr &&\r\n this.props.vehicleState.vehicle!.vehicleOptions.map((item) => ({\r\n ...item,\r\n ...intermediaryArr.find(({ id }: any) => id === item.id)\r\n }));\r\n }\r\n\r\n const vatValue = parseFloat(vatParameter[0]!.value);\r\n\r\n const valuationPrice = this.getValuationPrice();\r\n\r\n this.setState({\r\n isLoading: false,\r\n hasRights: hasRights,\r\n isUserHidden: !hasRights,\r\n makeTypes: vehicleMakeList,\r\n carBodyTypes: bodyTypeList,\r\n transmissionTypes: tractionTypeList,\r\n gearBoxTypes: transmissionTypeList,\r\n pollutionNormTypes: pollutionNormList,\r\n fuelTypes: fuelTypeList,\r\n paintTypes: paintTypeList,\r\n regionsTypes: regions,\r\n originCountriesTypes: originCountries,\r\n citiesTypes: cities as any[] as IReferential[],\r\n advertisers: this.props.caseSettingsState.caseSettings?.workflow?.hideRenewAdvert ? advertisers.filter((x) => !excludedAdvertisers.includes(x.code ?? \"\")) : advertisers,\r\n vehicleOptions: initialOptions,\r\n modelTypes: models,\r\n colorTypes: colors,\r\n valuationPrice,\r\n vatValue: this.getVatParameterValue(),\r\n districtsTypes: advertDistricts,\r\n guaranteeTypes: guaranteeTypeList,\r\n vehicleAdvertHistory: vehicleAdvertHistory,\r\n attachType: attachmentType,\r\n vehicleAdvertData: vehicleAdvert\r\n ? {\r\n ...vehicleAdvert,\r\n countryOrigin:\r\n originCountries.find(({ id }) => id === vehicleAdvert?.countryOriginId) || null\r\n }\r\n : {\r\n ...this.state.vehicleAdvertData,\r\n vat: vatValue,\r\n price: 0,\r\n vin: vehicleInfo?.vin,\r\n firstRegistrationDate: new Date(vehicleInfo!.firstRegistrationDate),\r\n makeDate: new Date(vehicleInfo!.makeDate || vehicleInfo!.firstRegistrationDate),\r\n engineSize: vehicleInfo!.engineSize,\r\n color: vehicleInfo!.color,\r\n make: vehicleInfo!.make,\r\n version: vehicleInfo!.version,\r\n fuelType: vehicleInfo!.fuelType,\r\n transmissionType: vehicleInfo!.transmissionType,\r\n pollutionNorm: vehicleInfo!.pollutionNorm,\r\n bodyType: vehicleInfo!.bodyType,\r\n kilometersNr: vehicleInfo!.kilometersNr,\r\n horsePower: vehicleInfo!.horsePower,\r\n power: vehicleInfo!.power,\r\n tractionType: vehicleInfo!.tractionType,\r\n model: vehicleInfo!.model!,\r\n nrOfDoors: vehicleInfo!.nrOfDoors,\r\n paintType: vehicleInfo!.paintType,\r\n co2Emission: vehicleInfo!.co2,\r\n region: regions.find((x) => x.displayName === 'Bucuresti - Ilfov') || null,\r\n city: cities.find((x) => x.displayName === 'Bucuresti') || null,\r\n district: advertDistricts.find((x) => x.displayName === 'Sectorul 1') || null\r\n }\r\n });\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n\r\n getValuationPrice = () => {\r\n const caseValuation = this.props.caseSettingsState.case?.caseValuation;\r\n const valuationValue = !R.isNil(caseValuation) ? caseValuation.offerPrice : 0;\r\n\r\n return Utils.ConvertCurrency(\r\n this.props.appState.currencyRates,\r\n CurrencyCode.EUR,\r\n this.state.vehicleAdvertData.currency,\r\n valuationValue\r\n );\r\n };\r\n\r\n getVatParameterValue = () => {\r\n const caseParameters = this.props.caseSettingsState.case!.caseParameters;\r\n const vatParameter = caseParameters.find(\r\n (parameter) => parameter.parameter!.code === ParametreCode.TVA\r\n );\r\n\r\n return vatParameter ? parseFloat(vatParameter.value) : 0;\r\n };\r\n\r\n getPriceWithoutVAT = (price: number, vat: number) => {\r\n const caseHasNoVAT = this.props.vehicleState?.vehicle?.purchaseVatRate === 0 || false;\r\n const purchasePrice = (this.props.vehicleState?.vehicle?.purchasePrice as number) || 0;\r\n\r\n const vatValue = !caseHasNoVAT\r\n ? this.getReverseVatValue(price, vat)\r\n : Utils.getMarginVat(price, +purchasePrice, vat);\r\n\r\n return Number.parseFloat((price - vatValue).toFixed(2));\r\n };\r\n\r\n getReverseVatValue = (price: number, vat: number): number => {\r\n return Number.parseFloat(((price / (1 + vat / 100) - price) * -1).toFixed(2));\r\n };\r\n\r\n private async getVehicleAdvertHistoryAmongWithUsers() {\r\n const vehicleAdvertHistory = await this.vehicleService.GetVehicleAdvertHistory(\r\n this.props.caseSettingsState.case!.vehicleId,\r\n this.props.caseSettingsState.case!.id\r\n );\r\n const users = await this.appUserService.GetUsersInfo(\r\n Array.from(new Set(vehicleAdvertHistory.map((item) => item.createdBy)))\r\n );\r\n vehicleAdvertHistory.forEach((item) => {\r\n const user = users.find((u) => u.id === item.createdBy);\r\n item.createdByUser = R.isNil(user) ? null : user;\r\n });\r\n return vehicleAdvertHistory;\r\n }\r\n\r\n public getErrorDetails(errorDetails: Map>): any {\r\n const text: string[] = [];\r\n for (const [advertiser, details] of Object.entries(errorDetails)) {\r\n if (!R.isNil(details)) {\r\n text.push(`${advertiser}:`);\r\n for (const [key, value] of Object.entries(details)) {\r\n {\r\n text.push(`${key}:${value}`);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {' '}\r\n {text.map((t, index) => (\r\n
{t}
\r\n ))}{' '}\r\n
\r\n );\r\n }\r\n\r\n getDocForm = (): WorkflowSectionStepForm | undefined => {\r\n let form: WorkflowSectionStepForm | undefined = undefined;\r\n\r\n for (const section of this.props.caseSettingsState.caseSettings!.workflow!.workflowSections!) {\r\n if (form !== undefined) break;\r\n for (const step of section.workflowSectionSteps) {\r\n form = step.workflowSectionStepForms.find((f) => f.form.code === FormCode.CASE_ATTACHMENTS);\r\n if (form !== undefined) {\r\n break;\r\n }\r\n }\r\n }\r\n return form;\r\n };\r\n\r\n getCaseAttachements = async () => {\r\n const form = this.getDocForm();\r\n if (form === undefined) {\r\n return [];\r\n }\r\n const workflowDocumentsTypes = form.workflowDocumentTypes;\r\n const [attachmentTypes] = await Promise.all([\r\n this.appReferentialService.Get(RefConstants.attachementTypeRef!.baseUrl)\r\n ]);\r\n\r\n workflowDocumentsTypes.forEach((wfDoc) => {\r\n const documentType = attachmentTypes.find((item) => item.id === wfDoc.documentTypeId);\r\n wfDoc.documentType = R.isNil(documentType) ? null : documentType;\r\n });\r\n\r\n return await this.caseService.GetCaseAttachments(\r\n this.props.caseSettingsState.case!.id,\r\n workflowDocumentsTypes.map((item) => item.documentType!.code!)\r\n );\r\n };\r\n\r\n /* Get year and days diff between two dates */\r\n dateDiffYears = (date1: Date, date2: Date): ICaseVehicleAge => {\r\n const diff = new Date(date2).getTime() - new Date(date1).getTime();\r\n const years = Math.floor(diff / (1000 * 60 * 60 * 24 * 365));\r\n const days = Math.floor(diff / (1000 * 60 * 60 * 24)) - years * 365;\r\n const age = {\r\n years: years,\r\n days: days\r\n };\r\n console.log(\r\n 'endDate: ',\r\n date2,\r\n 'startDate: ',\r\n date1,\r\n 'numberOfDays: ',\r\n Math.floor(diff / (1000 * 60 * 60 * 24))\r\n );\r\n console.log('age', age);\r\n return age;\r\n };\r\n\r\n checkMakeYearAndKilometersNr = (operationType: string) => {\r\n let makeYearAndKilometersNrValid = true;\r\n const selectedAdvertiserCodes = [...this.state.advertiserOperations]\r\n .filter((item) => item.operationType === operationType && item.checked === true)\r\n .map((item) => item.advertiserCode);\r\n if (selectedAdvertiserCodes.includes('REN')) {\r\n const kilometersNr = this.state.vehicleAdvertData.kilometersNr;\r\n const today = new Date(moment().format('YYYY-MM-DD'));\r\n const vehicleAge = this.dateDiffYears(\r\n this.state.vehicleAdvertData.firstRegistrationDate,\r\n today\r\n );\r\n if (kilometersNr > 200000 || vehicleAge.years >= 12) {\r\n makeYearAndKilometersNrValid = false;\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'PUBLISH_RENAULT_SELECTION_ADVERT',\r\n 'Autovehiculul pe care doriti sa-l publicati pe site-ul Renault Selection nu indeplineste criteriile necesare pentru publicare , o vechime mai mica de 12 ani si/sau mai putin de 200.000 km'\r\n ),\r\n {\r\n variant: 'error',\r\n autoHideDuration: 5000\r\n }\r\n );\r\n }\r\n }\r\n return makeYearAndKilometersNrValid;\r\n };\r\n\r\n publishAdvert = (operationType: string) => async (e: any) => {\r\n try {\r\n const makeYearAndKilometersNrValid = this.checkMakeYearAndKilometersNr(operationType);\r\n if (!makeYearAndKilometersNrValid) {\r\n return;\r\n }\r\n\r\n this.setState({ executing: true, isPublishLoading: true });\r\n const selectedAdvertiserCodes = [...this.state.advertiserOperations]\r\n .filter((item) => item.operationType === operationType && item.checked === true)\r\n .map((item) => item.advertiserCode);\r\n\r\n const caseAttachments = await this.getCaseAttachements();\r\n const attachments = caseAttachments.map((a) => {\r\n return {\r\n id: a.id,\r\n caseId: a.caseId,\r\n attachmentTypeId: a.attachmentTypeId,\r\n attachmentTypeCode: a.attachmentType?.code,\r\n fileName: a.fileName,\r\n originalFileName: a.originalFileName,\r\n files: [a.file],\r\n caseRequestId: a.caseRequestId,\r\n paymentId: a.paymentId,\r\n caseClientId: a.caseClientId,\r\n isSelection: a.isSelection,\r\n fileUrl: a.url\r\n };\r\n }).sort((a: CaseAttachmentDto, b: CaseAttachmentDto) => {\r\n const indexA = VehicleAttachmentTypeCodeOrder.indexOf(a!.attachmentTypeCode ?? '');\r\n const indexB = VehicleAttachmentTypeCodeOrder.indexOf(b!.attachmentTypeCode ?? '');\r\n return indexA - indexB;\r\n });\r\n console.log('attachments', attachments);\r\n const result = await this.vehicleService.PublishAdvert(\r\n this.state.vehicleAdvertData.id,\r\n selectedAdvertiserCodes,\r\n attachments\r\n );\r\n\r\n const { success, details } = result;\r\n if (success) {\r\n const vehicleAdvertHistory = await this.getVehicleAdvertHistoryAmongWithUsers();\r\n this.setState({\r\n vehicleAdvertHistory: vehicleAdvertHistory\r\n });\r\n }\r\n success\r\n ? this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n })\r\n : this.props.enqueueSnackbar(this.getErrorDetails(details), {\r\n variant: 'error',\r\n autoHideDuration: 5000\r\n });\r\n\r\n // Send published adverts to RCR only if the vehicle is imported\r\n if (this.props.vehicleState.vehicle?.isImported) {\r\n const originalPrice = Number(this.state.vehicleAdvertData.priceWithVat);\r\n const priceForEmployee = originalPrice - originalPrice * 0.05;\r\n const hasDecimal = priceForEmployee % 1 !== 0;\r\n const formattedPrice = hasDecimal\r\n ? Number(priceForEmployee.toFixed(1))\r\n : Number(priceForEmployee);\r\n const adDetails = [] as AddDetailsPublishRcr[];\r\n\r\n result.advertPublishedResults.map((item) => {\r\n adDetails.push({\r\n AdvertiserCode: item.advertiser,\r\n AdUrl: item.url,\r\n Price: formattedPrice\r\n });\r\n });\r\n\r\n const requestData = {\r\n ConnectId: this.state.vehicleAdvertData.vehicleId,\r\n AdDetails: adDetails\r\n } as PublishAdvertRcr;\r\n\r\n const sendAdvertsToRcrResult = await this.vehicleService.SendPublishedAdvertsToRcr(\r\n requestData\r\n );\r\n\r\n sendAdvertsToRcrResult.success\r\n ? this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'SUCCES_MSG_SEND_ADVERTS_TO_RCR',\r\n 'Operatiunea publicarii anuntului catre angajati a fost realizata cu succes'\r\n ),\r\n {\r\n variant: 'success'\r\n }\r\n )\r\n : this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'ERROR_MSG_SEND_ADVERTS_TO_RCR',\r\n 'Operatiunea publicarii anuntului catre angajati nu a putut fi realizata'\r\n ),\r\n {\r\n variant: 'error',\r\n autoHideDuration: 5000\r\n }\r\n );\r\n }\r\n\r\n this.setState({\r\n isPublishLoading: false\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({\r\n executing: false,\r\n isPublishLoading: false\r\n });\r\n }\r\n };\r\n\r\n deleteAdvert = (operationType: string) => async (e: any) => {\r\n try {\r\n this.setState({ executing: true });\r\n const selectedAdvertiserCodes = [...this.state.advertiserOperations]\r\n .filter((item) => item.operationType === operationType && item.checked === true)\r\n .map((item) => item.advertiserCode);\r\n\r\n const result = await this.vehicleService.DeleteAdvert(\r\n this.state.vehicleAdvertData.id,\r\n selectedAdvertiserCodes\r\n );\r\n const { success, details } = result;\r\n\r\n if (success) {\r\n const vehicleAdvertHistory = await this.getVehicleAdvertHistoryAmongWithUsers();\r\n this.setState({ vehicleAdvertHistory: vehicleAdvertHistory });\r\n }\r\n\r\n success\r\n ? this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n })\r\n : this.props.enqueueSnackbar(this.getErrorDetails(details), {\r\n variant: 'error',\r\n autoHideDuration: 5000\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({\r\n executing: false\r\n });\r\n }\r\n };\r\n\r\n checkConfirmChanges = async () => {\r\n if (!this.state.vehicleAdvertData.vehicleAdvertOptions.length) {\r\n this.setState({ isOpen: true, dialogVisible: true });\r\n } else {\r\n this.submitData();\r\n }\r\n };\r\n\r\n submitData = async () => {\r\n try {\r\n this.setState({ executing: true, isOpen: false, dialogVisible: false });\r\n\r\n const data: VehicleAdvert = {\r\n ...this.state.vehicleAdvertData,\r\n vatAmount: this.state.vehicleAdvertData.priceWithVat - this.state.vehicleAdvertData.price\r\n };\r\n\r\n const result = await this.vehicleService.SaveVehicleAdvert(data);\r\n\r\n const vehicleAdvertHistory = await this.getVehicleAdvertHistoryAmongWithUsers();\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...data,\r\n id: result.id\r\n },\r\n vehicleAdvertHistory: vehicleAdvertHistory\r\n });\r\n\r\n await this.submitForm(\r\n this.props.caseSettingsState.case!.id,\r\n this.props.workflowForm.id,\r\n null\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({\r\n executing: false\r\n });\r\n }\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n getVATValue = (price: number, vat: number): number => {\r\n return Number.parseFloat((price * (vat / 100)).toFixed(2));\r\n };\r\n\r\n getPriceWithVAT = (price: number, vat: number) => {\r\n const vatValue = Number.parseFloat((price * (vat / 100)).toFixed(2));\r\n return price + vatValue;\r\n };\r\n\r\n handleSwitchValue = (fieldName: string) => (e: any) => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n [fieldName]: e.currentTarget.checked\r\n }\r\n });\r\n };\r\n\r\n handleIsActiveIndividual = (e: any) => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n individual: e.currentTarget.checked,\r\n privateBusiness: !e.currentTarget.checked\r\n }\r\n });\r\n };\r\n\r\n handleIsActiveBusiness = (e: any) => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n privateBusiness: e.currentTarget.checked,\r\n individual: !e.currentTarget.checked\r\n }\r\n });\r\n };\r\n\r\n getVATFromAdvertPrice = () => {\r\n const caseHasNoVAT = this.props.vehicleState?.vehicle?.purchaseVatRate === 0 || false;\r\n const purchasePrice = (this.props.vehicleState?.vehicle?.purchasePrice as number) || 0;\r\n\r\n const advertPrice = this.state.vehicleAdvertData.priceWithVat;\r\n const caseParameters = this.props.caseSettingsState.case!.caseParameters;\r\n const vatParameter = caseParameters.filter(\r\n (parameter) => parameter.parameter!.code === ParametreCode.TVA\r\n );\r\n const vat = parseFloat(vatParameter[0]!.value);\r\n\r\n if (!caseHasNoVAT) {\r\n const offerPriceWithoutVAT = advertPrice / (1 + vat / 100);\r\n\r\n return Number.parseFloat((offerPriceWithoutVAT * (vat / 100)).toFixed(2));\r\n }\r\n\r\n return Utils.getMarginVat(advertPrice, purchasePrice, vat);\r\n };\r\n\r\n handleMakeTypeChange = async (newValue: IReferential | null) => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n make: newValue,\r\n makeId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n };\r\n\r\n handleModelTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n model: newValue,\r\n modelId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n };\r\n\r\n handleFuelTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n fuelType: newValue,\r\n fuelTypeId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n };\r\n\r\n handleTransmissionTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n tractionType: newValue,\r\n tractionTypeId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n };\r\n\r\n handleGearBoxTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n transmissionType: newValue,\r\n transmissionTypeId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n };\r\n\r\n handlePollutionNormTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n pollutionNorm: newValue,\r\n pollutionNormId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n };\r\n\r\n handleCarBodyTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n bodyType: newValue,\r\n bodyTypeId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n };\r\n\r\n handleGuaranteeTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n guaranteeType: newValue,\r\n guaranteeTypeId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n };\r\n\r\n handleAdvertRegionTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n region: newValue,\r\n regionId: newValue === null ? null : newValue.id,\r\n city: null,\r\n cityId: null,\r\n district: null,\r\n districtId: null\r\n }\r\n });\r\n };\r\n\r\n handleAdvertOriginCountryTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n countryOrigin: newValue,\r\n countryOriginId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n };\r\n\r\n handleAdvertDistrictTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n district: newValue,\r\n districtId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n };\r\n\r\n handleAdvertCityTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n city: newValue,\r\n cityId: newValue === null ? null : newValue.id,\r\n district: null,\r\n districtId: null\r\n }\r\n });\r\n };\r\n\r\n handlePaintTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n paintType: newValue,\r\n paintTypeId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n };\r\n\r\n handleColorTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n color: newValue,\r\n colorId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n };\r\n\r\n handleManufacturerWarrantyDateChange = (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n manufacturerWarrantyDate: new Date(date.format('YYYY-MM-DD'))\r\n }\r\n });\r\n };\r\n\r\n handleManufacturerWarrantyDateClear = () => {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n manufacturerWarrantyDate: null\r\n }\r\n });\r\n };\r\n\r\n handleManufacturedYearDateChange = (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n makeDate: new Date(date.format('YYYY-MM-DD'))\r\n }\r\n });\r\n };\r\n\r\n handleFirstRegistrationDateChange = (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n firstRegistrationDate: new Date(date.format('YYYY-MM-DD'))\r\n }\r\n });\r\n };\r\n\r\n handleToggleOptions = (id: number) => (event: any) => {\r\n const idx = this.state.vehicleOptions.findIndex((item) => item.id == id);\r\n const newOptions = [...this.state.vehicleOptions];\r\n newOptions[idx] = {\r\n ...newOptions[idx],\r\n checked: event.target.checked,\r\n tableData: {\r\n checked: event.target.checked\r\n }\r\n } as any;\r\n const vehicleAdvertOptions = newOptions\r\n .filter((item: any) => item.checked === true)\r\n .map((item) => ({\r\n vehicleAdvertId: this.state.vehicleAdvertData.id,\r\n vehicleOptionId: item.id,\r\n gtid: this.props.appState.appUser!.gtId\r\n })) as any;\r\n\r\n this.setState({\r\n vehicleOptions: newOptions,\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n vehicleAdvertOptions: vehicleAdvertOptions\r\n }\r\n });\r\n };\r\n\r\n onToogleAdvertiser = (e: any, operationType: string, advertiserCode: string) => {\r\n const advertiserOperations = [...this.state.advertiserOperations];\r\n const idx = advertiserOperations.findIndex(\r\n (item) => item.operationType === operationType && item.advertiserCode === advertiserCode\r\n );\r\n idx < 0\r\n ? advertiserOperations.push({\r\n operationType: operationType,\r\n advertiserCode: advertiserCode,\r\n checked: e.currentTarget.checked\r\n })\r\n : (advertiserOperations[idx].checked = e.currentTarget.checked);\r\n\r\n this.setState({ advertiserOperations: advertiserOperations });\r\n };\r\n\r\n getAdvertReportWord = async (vehicleAdvertId: number, vehicleId: number, caseId: number) => {\r\n const reportParameters = [\r\n {\r\n name: 'vehicleId',\r\n value: vehicleId.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'caseId',\r\n value: caseId.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'vehicleAdvertId',\r\n value: vehicleAdvertId.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'organizationId',\r\n value: this.props.appState.appUser!.organization?.id.toString()\r\n } as ReportParameter,\r\n\r\n {\r\n name: 'apiUrl',\r\n value: Constants.apiRoot\r\n } as ReportParameter,\r\n {\r\n name: 'organizationOwnerId',\r\n value: this.props.caseSettingsState.case?.organizationOwnerId.toString()\r\n } as ReportParameter\r\n ];\r\n const fileBlob = await this.reportService.GetReport(\r\n ReportTypeCode.ADVERT_REPORT,\r\n reportParameters\r\n );\r\n FileSaver.saveAs(fileBlob, 'Afis Pret.docx');\r\n if (this.props.caseSettingsState.caseSettings!.workflow.saveDocuments) {\r\n const fileName = `Afis Pret_${vehicleAdvertId}.docx`;\r\n console.log('Save file', fileName, 'Id Publicare', vehicleAdvertId);\r\n await this.saveGeneratedFile(fileBlob, fileName);\r\n }\r\n };\r\n\r\n\r\n saveGeneratedFile = async (fileBlob: Blob, fileName: string) => {\r\n try {\r\n //Save the report into attachments\r\n const attachments: CaseAttachment[] = [];\r\n attachments.push({\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n attachmentTypeId: this.state.attachType.id,\r\n attachmentType: this.state.attachType,\r\n file: new File([fileBlob], fileName),\r\n isSelection: false,\r\n includeInOtherTab: true,\r\n checkFileName: true\r\n } as CaseAttachment);\r\n\r\n const newFiles = await this.caseService.AddCaseAttachment(attachments);\r\n\r\n console.log('newFiles', newFiles);\r\n } catch (error) {\r\n console.log('error', error);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n \r\n showOfferTimeline = () => {\r\n const caseHasNoVAT = this.props.vehicleState?.vehicle?.purchaseVatRate == 0;\r\n\r\n return this.state.vehicleAdvertHistory.map((vehicleAdv, index) => (\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n this.getAdvertReportWord(vehicleAdv.id, vehicleAdv.vehicleId, vehicleAdv.caseId)\r\n }\r\n >\r\n {this.translatorService.Tranlate('ADVERT_REPORT_PDF', 'Afis Pret')}\r\n \r\n \r\n \r\n\r\n

\r\n {moment.utc(vehicleAdv.dateCreation).local().format(this.props.appState.longDateFormat)}\r\n

\r\n

\r\n {vehicleAdv.createdByUser?.userName}\r\n

\r\n

\r\n {caseHasNoVAT\r\n ? this.translatorService.Tranlate('VEHICLE_ADVERT_PRICE_OFFERED', 'Pret calculat')\r\n : this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_PRICE_OFFERED_WITH_VAT',\r\n 'Pret calculat cu TVA'\r\n )}\r\n :{vehicleAdv.priceWithVat + ' ' + this.state.vehicleAdvertData.currency},\r\n

\r\n {vehicleAdv.vehicleAdvertAdvertisers.map((item, idx) => (\r\n \r\n ))}\r\n
\r\n
\r\n ));\r\n };\r\n\r\n isAdvertisersDisabled(operationType: string): boolean | undefined {\r\n const operation =\r\n operationType == VehicleAdvertOperationTypes.publish\r\n ? VehicleAdvertOperationTypes.delete\r\n : VehicleAdvertOperationTypes.publish;\r\n const result = this.state.advertiserOperations.filter(\r\n (item) => item.operationType === operation && item.checked === true\r\n );\r\n if (result && result.length) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n renderAdvertisers = (operationType: string) => {\r\n const isMavoAdvertPresent = this.state.advertisers.some(\r\n (i) => i.code === AdvertOptionCodeEnum.MAVO\r\n );\r\n return this.state.advertisers.map((adv, index) => {\r\n return (\r\n \r\n
\r\n this.onToogleAdvertiser(e, operationType, adv.code!)}\r\n color=\"primary\"\r\n />\r\n }\r\n label={adv.name ? adv.displayName : ''}\r\n labelPlacement=\"end\"\r\n className=\"mt-2 ml-0 mr-0\"\r\n />\r\n
\r\n
\r\n );\r\n });\r\n };\r\n\r\n handleCloseConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n\r\n handleOpenConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: true,\r\n dialogVisible: true\r\n });\r\n };\r\n\r\n handleCloseModal = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n\r\n getCarOptionsColumns = () => {\r\n return [\r\n {\r\n field: 'name',\r\n title: this.translatorService.Tranlate(\r\n 'CAR_DETAILS_CAR_ADEVERT_OPTIONAL_OPTION',\r\n 'Descriere dotari autovehicul'\r\n ),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'checked',\r\n render: (option: VehicleOption) => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n } as Column\r\n ];\r\n };\r\n\r\n public renderCarOptionsTable = () => {\r\n return (\r\n \r\n }}\r\n />\r\n );\r\n };\r\n scrollToRef = (ref: any) => window.scrollTo(0, ref.current.offsetTop);\r\n\r\n rendeVehicleAdvertForm = () => {\r\n const calculatedPriceWithVat = this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_PRICE_WITH_VAT',\r\n 'Pret calculat cu TVA'\r\n );\r\n\r\n const advertPriceWithVat = this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_ADVERT_PRICE_WITH_VAT',\r\n 'Pret anunt cu TVA'\r\n );\r\n\r\n const caseHasNoVAT = this.props.vehicleState?.vehicle?.purchaseVatRate === 0 || false;\r\n const purchasePrice = (this.props.vehicleState?.vehicle?.purchasePrice as number) || 0;\r\n\r\n return (\r\n {\r\n this.checkConfirmChanges();\r\n }}\r\n onError={(errors) => {\r\n if (errors[0].props.name === 'advertPriceWithVAT') {\r\n this.scrollToRef(this.inputTextValidator);\r\n }\r\n }}\r\n >\r\n
\r\n \r\n \r\n {\r\n this.setState({\r\n valuationPrice: e.target.value\r\n });\r\n }}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_PRICE_WITHOUT_VAT',\r\n 'Pret calculat fara TVA'\r\n )}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n priceWithVat: e.target.value,\r\n price: this.getPriceWithoutVAT(e.target.value, this.state.vatValue)\r\n }\r\n });\r\n }}\r\n validators={['required', 'matchRegexp:^[1-9][0-9]*$']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu'),\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_ZERO_VALUE',\r\n 'Va rugam sa completati pretul de vanzare'\r\n )\r\n ]}\r\n label={advertPriceWithVat}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n \r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_FINANCIAL_OPTIONS_TITLE',\r\n 'Optiuni financiare'\r\n )}\r\n
\r\n \r\n \r\n
\r\n \r\n }\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_HAS_INVOICE',\r\n 'Se emite factura'\r\n )}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n
\r\n
\r\n \r\n
\r\n \r\n }\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_HAS_LEASING',\r\n 'Predare leasing'\r\n )}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n
\r\n
\r\n \r\n
\r\n \r\n }\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_HAS_AUTHORIZED_DEALER',\r\n 'Dealer autorizat'\r\n )}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n
\r\n
\r\n
\r\n {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n description: e.target.value\r\n }\r\n });\r\n }}\r\n validators={['required', 'minLength', 'maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu'),\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MIN_LENGTH',\r\n 'Numar minim de caractere: '\r\n ) + minNumberOfCharactersAdvertDetails,\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharactersAdvertDetails\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_OBSERVATIONS',\r\n 'Detalii anunt'\r\n )}\r\n multiline\r\n variant=\"outlined\"\r\n rows={6}\r\n />\r\n {/*\r\n
\r\n {this.translatorService.Tranlate('VEHICLE_ADVERT_FORM_REGIONS_TITLE', 'Locatie anunt')}\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n this.handleAdvertRegionTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n \r\n
\r\n city.dependencyId === this.state.vehicleAdvertData.regionId\r\n ) || this.state.citiesTypes\r\n }\r\n value={this.state.vehicleAdvertData.city || null}\r\n onChange={(e: any, newValue: IReferential | null) =>\r\n this.handleAdvertCityTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n district.dependencyId === this.state.vehicleAdvertData.cityId\r\n ) || []\r\n }\r\n value={this.state.vehicleAdvertData.district || null}\r\n onChange={(e: any, newValue: IReferential | null) =>\r\n this.handleAdvertDistrictTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n district.dependencyId === this.state.vehicleAdvertData.cityId\r\n ).length > 0\r\n ? ['required']\r\n : []\r\n }\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n ]}\r\n />\r\n )}\r\n />\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n */}\r\n
\r\n {this.translatorService.Tranlate('VEHICLE_ADVERT_FORM_DETAILS_TITLE', 'Detalii')}\r\n
\r\n \r\n \r\n \r\n this.handleColorTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n\r\n \r\n \r\n this.handlePaintTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n this.handleMakeTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n\r\n \r\n \r\n this.handleModelTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n {/* */}\r\n \r\n \r\n \r\n {/* \r\n
\r\n this.handleIsActiveFinanceEligibility(e)}\r\n color=\"primary\" />}\r\n label={this.translatorService.Tranlate(\"VEHICLE_ADVERT_FORM_HAS_FINANCE_ELIGIBILITY\", \"Eligibil pentru finantare\")}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n
\r\n
*/}\r\n
\r\n \r\n \r\n {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n version: e.target.value\r\n }\r\n });\r\n }}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('VEHICLE_ADVERT_FORM_VERSION', 'Versiune')}\r\n />\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n ''\r\n )\r\n }}\r\n // minDate={new Date(\"01.01.1900\")}\r\n // error={this.state.datePickerYearOfFabricationError}\r\n // helperText={this.state.datePickerYearOfFabricationError === true ? this.translatorService.Tranlate(\"CAR_DETAILS_YEAR_OF_FABRICATION_ERROR\", \"Data fabricatiei trebuie sa fie mai mica decat cea a primei inmatriculari\") : \"\"}\r\n // minDate={activeButton === 1 ? new Date() : this.state.minDate}\r\n />\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n warrantyKmLimit: e.target.value\r\n }\r\n });\r\n }}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_KM_LIMIT',\r\n 'sau in limita a'\r\n )}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n \r\n \r\n {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n kilometersNr: e.target.value\r\n }\r\n });\r\n }}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('VEHICLE_ADVERT_FORM_KM', 'Kilometraj')}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n \r\n \r\n
\r\n \r\n this.handleAdvertOriginCountryTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n \r\n \r\n {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n vin: e.target.value\r\n }\r\n });\r\n }}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('VEHICLE_ADVERT_FORM_VIN', 'VIN')}\r\n />\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n this.handleFuelTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n
\r\n \r\n }\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_HAS_REGISTERED',\r\n 'Inmatriculat'\r\n )}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n
\r\n
\r\n
\r\n \r\n \r\n {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n horsePower: e.target.value\r\n }\r\n });\r\n }}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('VEHICLE_ADVERT_FORM_HP', 'Putere')}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n \r\n \r\n
\r\n \r\n }\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_HAS_FIRST_OWNER',\r\n 'Primul proprietar'\r\n )}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n
\r\n
\r\n
\r\n \r\n \r\n {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n engineSize: e.target.value\r\n }\r\n });\r\n }}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_CM3',\r\n 'Capacitate cilindrica'\r\n )}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n \r\n \r\n
\r\n \r\n }\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_HAS_FIRST_ACCIDENT',\r\n 'Fara accident in istoric'\r\n )}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n this.handleTransmissionTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n
\r\n \r\n }\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_HAS_SERVICE_BOOK',\r\n 'Carte de service'\r\n )}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n this.handleGearBoxTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n
\r\n \r\n }\r\n label={this.translatorService.Tranlate('VEHICLE_ADVERT_FORM_IS_NEW', 'Nou')}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n this.handlePollutionNormTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n }\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_HAS_PARTICLES_FILTER',\r\n 'Filtru de particule'\r\n )}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n
\r\n
\r\n\r\n \r\n
\r\n {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n co2Emission: e.target.value\r\n }\r\n });\r\n }}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_CO2_EMISSION',\r\n 'Emisii CO2'\r\n )}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n }\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_HAS_FINANCE_ELIGIBILITY',\r\n 'Eligibil pentru finantare'\r\n )}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n {\r\n this.setState({\r\n vehicleAdvertData: {\r\n ...this.state.vehicleAdvertData,\r\n nrOfDoors: e.target.value\r\n }\r\n });\r\n }}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_NR_OF_DOORS',\r\n 'Numar de portiere'\r\n )}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n
\r\n
\r\n \r\n
\r\n \r\n this.handleCarBodyTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n this.handleGuaranteeTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n }\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_HAS_STANDARD_IMAGES',\r\n 'Fotografii Standard'\r\n )}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n
\r\n
\r\n \r\n
\r\n \r\n }\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_HAS_OPTIONAL_IMAGES',\r\n 'Fotografii Optionale'\r\n )}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_OPTIONS_TITLE',\r\n 'Dotari standard + optionale '\r\n )}\r\n
\r\n {this.state.vehicleOptions ? this.renderCarOptionsTable() : ''}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {`${this.translatorService.Tranlate(\r\n 'VEHICLE_OPTION_CONFIRMATION_MESSAGE',\r\n 'Nu a fost selectata nicio optiune de echipare , doriti sa continuati ?'\r\n )} `}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n\r\n \r\n \r\n \r\n {this.state.isPublishLoading && (\r\n \r\n )}\r\n {this.translatorService.Tranlate(\r\n 'VEHICLE_ADVERT_FORM_PUBLISH_ADVERT',\r\n 'Publica anunt'\r\n )}\r\n \r\n \r\n {this.renderAdvertisers(VehicleAdvertOperationTypes.publish)}\r\n \r\n\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_ADVERT_FORM_DELETE_ADVERT', 'Sterge anunt')}\r\n \r\n \r\n {this.renderAdvertisers(VehicleAdvertOperationTypes.delete)}\r\n \r\n \r\n );\r\n };\r\n\r\n private optionIsChecked(option: VehicleOption): boolean | undefined {\r\n const res = (this.state.vehicleOptions.find((op) => op.id === option.id) as any).checked;\r\n return res || false;\r\n }\r\n\r\n private isChecked(operationType: string, advertiserCode: string): boolean | undefined {\r\n const result = this.state.advertiserOperations.find(\r\n (item) => item.operationType === operationType && item.advertiserCode === advertiserCode\r\n );\r\n return result === undefined ? false : result.checked;\r\n }\r\n\r\n private publishingAndDeletingAreAllowed(operationType: string): boolean {\r\n const selectedAdvertiserCodes = this.state.advertiserOperations.find(\r\n (item) => item.operationType === operationType && item.checked === true\r\n );\r\n\r\n return (\r\n !this.state.hasRights ||\r\n this.state.executing ||\r\n this.state.vehicleAdvertData.id === 0 ||\r\n !selectedAdvertiserCodes ||\r\n selectedAdvertiserCodes.length === 0\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.reportService = (this.context as AppContext).reportsService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
{this.rendeVehicleAdvertForm()}
\r\n ) : null}\r\n\r\n \r\n {this.state.vehicleAdvertHistory.length > 0 ? (\r\n
\r\n {this.showOfferTimeline()}\r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabVwehicleAdvertProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabVehicleAdvertComponent as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CaseEventHistory } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { WorkflowCostCenter, WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport DropdownTreeSelect from 'react-dropdown-tree-select';\r\nimport { Button, Grid } from '@material-ui/core';\r\nimport _ from 'lodash';\r\nimport { IWorkflowService } from '../../services/Interfaces/IWorkflowService';\r\nimport { ReferentialCode } from '../../helpers/Constants';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { Autocomplete } from '@material-ui/lab';\r\n\r\ninterface ICaseDetailsCaseTabEventBillingDetailsFormState {\r\n formData: CaseEventHistory;\r\n isLoading: boolean;\r\n workflowCostCenters: WorkflowCostCenter[];\r\n hasRights: boolean;\r\n executing: boolean;\r\n organizationBranches: OrganizationBranch[];\r\n selectedOrganizationBranch: OrganizationBranch | null;\r\n organizationDeliveryBranches: OrganizationBranch[];\r\n selectedDeliveryOrganizationBranch: OrganizationBranch | null;\r\n interventionTypesBranches: OrganizationBranch[];\r\n selectedInterventionTypeBranch: OrganizationBranch | null;\r\n}\r\n\r\ninterface OrganizationBranch {\r\n id: number;\r\n organizationId: number;\r\n organizationName: string;\r\n organizationAddress: string;\r\n children: OrganizationBranch[];\r\n parentId: number | null;\r\n path: string | null;\r\n label: string;\r\n checked: boolean | null;\r\n}\r\nexport interface ExternalCaseDetailsCaseTabEventBillingDetailsFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseTabEventBillingDetailsFormProps = {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & typeof CaseSettingsActionCreators &\r\n ExternalCaseDetailsCaseTabEventBillingDetailsFormProps &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabEventBillingDetailsForm extends React.PureComponent<\r\n ICaseDetailsCaseTabEventBillingDetailsFormProps,\r\n ICaseDetailsCaseTabEventBillingDetailsFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n private organizationService!: IOrganizationService;\r\n private workflowService!: IWorkflowService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n formData: {} as CaseEventHistory,\r\n isLoading: true,\r\n workflowCostCenters: [],\r\n hasRights: false,\r\n executing: false,\r\n organizationDeliveryBranches: [],\r\n selectedDeliveryOrganizationBranch: null,\r\n organizationBranches: [],\r\n selectedOrganizationBranch: null,\r\n interventionTypesBranches: [],\r\n selectedInterventionTypeBranch: null\r\n } as ICaseDetailsCaseTabEventBillingDetailsFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n }\r\n\r\n loadData = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n \r\n const refInterventionType = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.InterventionType\r\n );\r\n let caseEvent = this.props.caseSettingsState.case!.caseEvent;\r\n const [newCaseEvent, workflowCostCenters, interventionTypes] = await Promise.all([\r\n this.caseService.GetCurrentEvent(caseId),\r\n this.workflowService.GetUserWorkflowCostCenters(\r\n this.props.caseSettingsState.caseSettings?.workflow.id || 0\r\n ),\r\n this.appReferentialService.Get(refInterventionType!.baseUrl)\r\n ]);\r\n\r\n if (!isNullOrUndefined(newCaseEvent)) {\r\n caseEvent.organizationId = newCaseEvent.organizationId;\r\n caseEvent.deliveryOrganizationId = newCaseEvent.deliveryOrganizationId;\r\n caseEvent.interventionTypeId = newCaseEvent.interventionTypeId;\r\n this.props.SetCaseEvent(caseEvent);\r\n }\r\n\r\n //Cost Centers\r\n const organzationListBranches = [] as OrganizationBranch[];\r\n for (const x of workflowCostCenters) {\r\n organzationListBranches.push({\r\n id: x!.costCenter!.id,\r\n organizationId: x!.costCenter!.id,\r\n organizationName: x!.costCenter!.displayName,\r\n organizationAddress: '',\r\n children: [],\r\n parentId: null,\r\n path: null,\r\n label: x!.costCenter!.displayName,\r\n checked: false\r\n });\r\n }\r\n\r\n let selectedOrganization = null;\r\n if (!isNullOrUndefined(caseEvent)) {\r\n selectedOrganization =\r\n organzationListBranches.find(\r\n (x) => x.organizationId === caseEvent.organizationId\r\n ) || null;\r\n if (selectedOrganization != null) {\r\n selectedOrganization.checked = true;\r\n }\r\n }\r\n\r\n //Intervention Types\r\n const interventionTypeListBranches = [] as OrganizationBranch[];\r\n for (const x of interventionTypes) {\r\n interventionTypeListBranches.push({\r\n id: x!.id,\r\n organizationId: x!.id,\r\n organizationName: x!.displayName,\r\n organizationAddress: '',\r\n children: [],\r\n parentId: null,\r\n path: null,\r\n label: x!.displayName,\r\n checked: false\r\n });\r\n }\r\n\r\n let selectedInterventionType = null;\r\n if (!isNullOrUndefined(caseEvent)) {\r\n selectedInterventionType =\r\n interventionTypeListBranches.find(\r\n (x) => x.id === caseEvent.interventionTypeId\r\n ) || null;\r\n if (selectedInterventionType != null) {\r\n selectedInterventionType.checked = true;\r\n }\r\n }\r\n\r\n let workflowPartners = [] as OrganizationBranch[];\r\n let selectedDeliveryOrganization = null;\r\n if (\r\n this.props.caseSettingsState.caseSettings?.workflow.workflowPartners &&\r\n this.props.caseSettingsState.caseSettings?.workflow.workflowPartners.length > 0\r\n ) {\r\n const partnerOrganizations =\r\n this.props.caseSettingsState.caseSettings?.workflow.workflowPartners.map((x) => x.partner);\r\n for (const x of partnerOrganizations) {\r\n workflowPartners.push({\r\n id: x!.id,\r\n organizationId: x!.id,\r\n organizationName: x!.name,\r\n organizationAddress: x!.address,\r\n children: [],\r\n parentId: x!.parentId,\r\n path: null,\r\n label: x?.name + (x?.address ? ' ' + x?.address : ''),\r\n checked: false\r\n });\r\n }\r\n }\r\n\r\n const parentIds = workflowPartners.filter((x) => !x.parentId).map((x) => x.id);\r\n\r\n const organizationHierarchy = await this.organizationService.GetOrganizationDescendents(\r\n parentIds\r\n );\r\n\r\n const organizationDeliveryBranches =\r\n organizationHierarchy.map((x) => {\r\n return {\r\n id: x.id,\r\n organizationId: x.id,\r\n organizationName: x.name,\r\n organizationAddress: x.address,\r\n children: [],\r\n parentId: x.parentId,\r\n path: null,\r\n label: x.name + (x.address ? ' ' + x.address : ''),\r\n checked: false\r\n } as OrganizationBranch;\r\n }) || [];\r\n\r\n organizationDeliveryBranches.forEach((x) => {\r\n workflowPartners.push(x);\r\n });\r\n\r\n const arrMap = workflowPartners.reduce((acc: any, el: any, i) => {\r\n acc[el.id] = i;\r\n return acc;\r\n }, {});\r\n\r\n const roots = [] as OrganizationBranch[];\r\n\r\n // Push each element to parent's children array\r\n workflowPartners.forEach((el) => {\r\n if (el.parentId === null || arrMap[el.parentId] == null) {\r\n roots.push(el);\r\n } else {\r\n workflowPartners[arrMap[el.parentId]].children.push(el);\r\n }\r\n });\r\n workflowPartners = roots;\r\n this.assignObjectPaths(workflowPartners, '');\r\n \r\n if (!isNullOrUndefined(caseEvent)) {\r\n selectedDeliveryOrganization =\r\n roots.find(\r\n (x) => x.organizationId === caseEvent.deliveryOrganizationId\r\n ) || null;\r\n if (selectedDeliveryOrganization != null) {\r\n selectedDeliveryOrganization.checked = true;\r\n }\r\n\r\n if (selectedDeliveryOrganization == null) {\r\n selectedDeliveryOrganization =\r\n organizationDeliveryBranches.find(\r\n (x) => x.organizationId === caseEvent.deliveryOrganizationId\r\n ) || null;\r\n if (selectedDeliveryOrganization != null) {\r\n selectedDeliveryOrganization.checked = true;\r\n }\r\n }\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n if (isNullOrUndefined(this.props.caseSettingsState.case!.caseEvent)) {\r\n caseEvent = {\r\n id: 0,\r\n caseId: caseId\r\n } as CaseEventHistory\r\n }\r\n\r\n this.setState({\r\n formData: caseEvent,\r\n isLoading: false,\r\n workflowCostCenters: workflowCostCenters,\r\n hasRights: hasRights,\r\n organizationBranches: organzationListBranches,\r\n selectedOrganizationBranch: selectedOrganization || null,\r\n organizationDeliveryBranches: workflowPartners || [],\r\n selectedDeliveryOrganizationBranch: selectedDeliveryOrganization || null,\r\n interventionTypesBranches: interventionTypeListBranches,\r\n selectedInterventionTypeBranch: selectedInterventionType || null\r\n });\r\n };\r\n\r\n assignObjectPaths = (obj: any, stack: any) => {\r\n Object.keys(obj).forEach((k) => {\r\n const node = obj[k];\r\n if (node && typeof node === 'object' && !Array.isArray(node)) {\r\n node.path = stack ? `${stack}.${k}` : k;\r\n this.assignObjectPaths(node, node.path);\r\n }\r\n });\r\n };\r\n\r\n findRecursive = (\r\n arr: OrganizationBranch[],\r\n organizationId: number\r\n ): OrganizationBranch | null => {\r\n let result: OrganizationBranch | null = null;\r\n for (const entry in arr) {\r\n if (arr[entry].organizationId == organizationId) {\r\n result = arr[entry];\r\n break;\r\n }\r\n if (arr[entry].children?.length) {\r\n const partialResult = this.findRecursive(arr[entry].children, organizationId);\r\n if (partialResult != null) {\r\n result = partialResult;\r\n break;\r\n }\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n \r\n onDropDownChange = (currentNode: any, selectedNodes: any) => {\r\n // react-dropdown-tree-select doesn't have an intrinsic mechanism for keeping track of selected items, only provides what is selected\r\n // So we have to manually check/uncheck the leaves from this tree used by this component\r\n let newSelectionOrganizationBranch: OrganizationBranch | null = null;\r\n if (this.state.selectedOrganizationBranch) {\r\n const oldSelectionOrganizationBranch = this.findRecursive(\r\n this.state.organizationBranches,\r\n this.state.selectedOrganizationBranch.organizationId\r\n );\r\n if (oldSelectionOrganizationBranch) {\r\n oldSelectionOrganizationBranch.checked = false;\r\n }\r\n }\r\n\r\n if (selectedNodes.length == 1) {\r\n const newPartialSelectionOrganizationBranch =\r\n this.findRecursive(\r\n this.state.organizationBranches,\r\n (selectedNodes[0] as OrganizationBranch)?.organizationId\r\n ) || null;\r\n\r\n if (newPartialSelectionOrganizationBranch) {\r\n newPartialSelectionOrganizationBranch.checked = true;\r\n newSelectionOrganizationBranch = newPartialSelectionOrganizationBranch;\r\n }\r\n }\r\n\r\n this.setState({\r\n ...this.state,\r\n selectedOrganizationBranch: newSelectionOrganizationBranch\r\n });\r\n };\r\n\r\n\r\n onDeliveryDropDownChange = (currentNode: any, selectedNodes: any) => {\r\n // react-dropdown-tree-select doesn't have an intrinsic mechanism for keeping track of selected items, only provides what is selected\r\n // So we have to manually check/uncheck the leaves from this tree used by this component\r\n let newSelectionOrganizationBranch: OrganizationBranch | null = null;\r\n if (this.state.selectedDeliveryOrganizationBranch) {\r\n const oldSelectionOrganizationBranch = this.findRecursive(\r\n this.state.organizationDeliveryBranches,\r\n this.state.selectedDeliveryOrganizationBranch.organizationId\r\n );\r\n if (oldSelectionOrganizationBranch) {\r\n oldSelectionOrganizationBranch.checked = false;\r\n }\r\n }\r\n\r\n if (selectedNodes.length == 1) {\r\n const newPartialSelectionOrganizationBranch =\r\n this.findRecursive(\r\n this.state.organizationDeliveryBranches,\r\n (selectedNodes[0] as OrganizationBranch)?.organizationId\r\n ) || null;\r\n\r\n if (newPartialSelectionOrganizationBranch) {\r\n newPartialSelectionOrganizationBranch.checked = true;\r\n newSelectionOrganizationBranch = newPartialSelectionOrganizationBranch;\r\n }\r\n }\r\n\r\n this.setState({\r\n ...this.state,\r\n selectedDeliveryOrganizationBranch: newSelectionOrganizationBranch\r\n });\r\n };\r\n\r\n onInteventionTypeDropDownChange = (currentNode: any, selectedNodes: any) => {\r\n // react-dropdown-tree-select doesn't have an intrinsic mechanism for keeping track of selected items, only provides what is selected\r\n // So we have to manually check/uncheck the leaves from this tree used by this component\r\n let newInterventionTypeBranch: OrganizationBranch | null = null;\r\n if (this.state.selectedDeliveryOrganizationBranch) {\r\n const oldInterventionTypeBranch = this.findRecursive(\r\n this.state.interventionTypesBranches,\r\n this.state.selectedDeliveryOrganizationBranch.organizationId\r\n );\r\n if (oldInterventionTypeBranch) {\r\n oldInterventionTypeBranch.checked = false;\r\n }\r\n }\r\n\r\n if (selectedNodes.length == 1) {\r\n const newPartialSelectionInterventionTypeBranch =\r\n this.findRecursive(\r\n this.state.interventionTypesBranches,\r\n (selectedNodes[0] as OrganizationBranch)?.organizationId\r\n ) || null;\r\n\r\n if (newPartialSelectionInterventionTypeBranch) {\r\n newPartialSelectionInterventionTypeBranch.checked = true;\r\n newInterventionTypeBranch = newPartialSelectionInterventionTypeBranch;\r\n }\r\n }\r\n\r\n this.setState({\r\n ...this.state,\r\n selectedInterventionTypeBranch: newInterventionTypeBranch\r\n });\r\n };\r\n\r\n onSubmit = async () => {\r\n try {\r\n this.setState({ executing: true });\r\n if (isNullOrUndefined(this.state.selectedOrganizationBranch)) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('CASE_EVENT_COST_CENTER_MANDATORY', 'Centru de cost este obligatoriu!'), \r\n {\r\n variant: 'error'\r\n });\r\n this.setState({ executing: false });\r\n return;\r\n }\r\n\r\n if (isNullOrUndefined(this.state.selectedDeliveryOrganizationBranch)) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('CASE_EVENT_LOCATION_MANDATORY', 'Adresa de livrare este obligatorie!'), \r\n {\r\n variant: 'error'\r\n });\r\n this.setState({ executing: false });\r\n return;\r\n }\r\n\r\n if (isNullOrUndefined(this.state.selectedInterventionTypeBranch)) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('CASE_EVENT_INTERVENTION_TYPE_MANDATORY', 'Tip interventie este obligatoriu!'), \r\n {\r\n variant: 'error'\r\n });\r\n this.setState({ executing: false });\r\n return;\r\n }\r\n\r\n let data = this.state.formData as CaseEventHistory;\r\n data.caseId = this.props.caseSettingsState.case!.id;\r\n data.organizationId = this.state.selectedOrganizationBranch!.id;\r\n data.deliveryOrganizationId = this.state.selectedDeliveryOrganizationBranch!.id;\r\n data.insuredPersonType = null;\r\n data.interventionTypeId = this.state.selectedInterventionTypeBranch!.id;\r\n if (isNullOrUndefined(data.id)) {\r\n data.id = 0;\r\n }\r\n\r\n if (data.id === 0) {\r\n data = await this.caseService.AddCaseEvent(data);\r\n } else {\r\n await this.caseService.UpdateCaseEvent(data);\r\n }\r\n if (this.props.workflowForm.form.hasActions) {\r\n await this.submitForm(data.caseId, this.props.workflowForm.id, null);\r\n }\r\n\r\n this.props.SetCaseEvent(data);\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (err) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n renderFormData = (form: WorkflowSectionStepForm) => {\r\n return (\r\n
\r\n {\r\n this.onSubmit();\r\n }}\r\n > \r\n \r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_EVENT_COST_CENTER',\r\n 'Centru de cost'\r\n )} *\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'CASE_EVENT_LOCATION_LABEL',\r\n 'Adresa de livrare'\r\n )} *\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('CASE_EVENT_INTERVENTION_TYPE_LABEL','Tip Interventie')} *\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ?
{this.renderFormData(this.props.workflowForm)}
: null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabEventBillingDetailsFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabEventBillingDetailsForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n VehicleState\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Button, Grid, FormControlLabel, Switch, Divider } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport {\r\n ParametreCode,\r\n ReferentialCode,\r\n OfferTypeCode,\r\n CurrencyCode,\r\n ReportTypeCode,\r\n Constants,\r\n VehicleStatusCodeEnum,\r\n RenaultGoldList,\r\n AttachmentTypeCode\r\n} from '../../helpers/Constants';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport NumberFormat from 'react-number-format';\r\nimport moment from 'moment';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { VehicleOffer } from '../../interfaces/Vehicle';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport { ReportParameter } from '../../interfaces/Reports';\r\nimport { IReportsService } from '../../services/Interfaces/IReportsService';\r\nimport FileSaver from 'file-saver';\r\nimport * as R from 'ramda';\r\nimport { CaseTypeCode } from '../../helpers/Constants';\r\nimport { CurrencyEnum } from '../../enums/CurrencyEnum';\r\nimport { CaseAttachment, CaseRequest } from '../../interfaces/Case';\r\nimport _ from 'lodash';\r\n\r\ninterface ICaseDetailsCaseTabSoldCarFormState {\r\n isLoading: boolean;\r\n hasRights: boolean;\r\n executing: boolean;\r\n isUserHidden: boolean;\r\n vehicleOfferData: VehicleOffer;\r\n guaranteeTypes: IReferential[];\r\n offerTypes: IReferential[];\r\n offers: VehicleOffer[];\r\n offerType: IReferential | null;\r\n displaySecondCurrency: boolean;\r\n saleChannels: IReferential[];\r\n attachType: IReferential;\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseTabSoldCarFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n isSaleOfferType: boolean;\r\n}\r\n\r\ntype ICaseDetailsCaseTabSoldCarFormProps = ExternalCaseDetailsCaseTabSoldCarFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n} & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabSoldCarForm extends React.PureComponent<\r\n ICaseDetailsCaseTabSoldCarFormProps,\r\n ICaseDetailsCaseTabSoldCarFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n private appUserService!: IAppUserService;\r\n private reportService!: IReportsService;\r\n private checkIfCurrencyIsEurOrRon: boolean =\r\n this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value == CurrencyCode.EUR ||\r\n this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value == CurrencyCode.RON;\r\n static contextType = ApplicationContext;\r\n state = {\r\n isLoading: true,\r\n hasRights: false,\r\n executing: false,\r\n isUserHidden: false,\r\n guaranteeTypes: [] as IReferential[],\r\n offerTypes: [],\r\n offers: [],\r\n offerType: null,\r\n currencyRates: [],\r\n displaySecondCurrency: this.checkIfCurrencyIsEurOrRon,\r\n vehicleOfferData: {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n vehicleId: this.props.caseSettingsState.case!.vehicleId,\r\n comments: '',\r\n damageValue: 0,\r\n newVin: '',\r\n offerValue: 0,\r\n offerValueWithVAT: 0,\r\n priceValue: 0,\r\n tradeInValue: 0,\r\n vatValue: 0,\r\n withNewVehicle: this.props.isSaleOfferType,\r\n currency: this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value,\r\n currencyRate: Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value == CurrencyCode.RON\r\n ? CurrencyCode.EUR\r\n : this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value\r\n ),\r\n secondCurrency: this.checkIfCurrencyIsEurOrRon\r\n ? this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value == CurrencyCode.EUR\r\n ? CurrencyCode.RON\r\n : CurrencyCode.EUR\r\n : null,\r\n secondOfferValue: this.checkIfCurrencyIsEurOrRon ? 0 : null,\r\n secondOfferVatAmount: this.checkIfCurrencyIsEurOrRon ? 0 : null,\r\n secondOfferValueWithVAT: this.checkIfCurrencyIsEurOrRon ? 0 : null\r\n } as VehicleOffer,\r\n saleChannels: [] as IReferential[],\r\n attachType: {} as IReferential\r\n } as ICaseDetailsCaseTabSoldCarFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n // let caseParametersList = this.props.caseSettingsState.case!.caseParameters;\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseSaleOfferForm();\r\n if (!this.props.appState.currencyRates.length) {\r\n await this.getCurrencyRates();\r\n }\r\n }\r\n );\r\n }\r\n\r\n\r\n getCurrencyRates = async () => {\r\n const rates = await this.vehicleService.GetCurrencyRates();\r\n this.props.appState.currencyRates = rates;\r\n console.log('currencyRates', this.props.appState.currencyRates);\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n currencyRate: Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value == CurrencyCode.RON\r\n ? CurrencyCode.EUR\r\n : this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value\r\n )\r\n }\r\n });\r\n };\r\n\r\n getCurrentCurrency = (): string => {\r\n return this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value;\r\n };\r\n\r\n getVATValue = (price: number, vat: number): number => {\r\n return Number.parseFloat((price * (vat / 100)).toFixed(2));\r\n };\r\n\r\n getPriceWithVAT = (price: number, vat: number) => {\r\n const vatValue = this.getVATValue(price, vat);\r\n return Number.parseFloat((price + vatValue).toFixed(2));\r\n };\r\n\r\n getReverseVatValue = (price: number, vat: number): number => {\r\n return Number.parseFloat(((price / (1 + vat / 100) - price) * -1).toFixed(2));\r\n };\r\n\r\n getPriceWithoutVAT = (price: number, vat: number) => {\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n\r\n const vehicleHasNoVAT =\r\n offerTypeCode === CaseTypeCode.SALE && this.props.vehicleState.vehicle?.purchaseVatRate === 0;\r\n\r\n const purchasePrice = (this.props.vehicleState?.vehicle?.purchasePrice as number) || 0;\r\n\r\n const vatValue = !vehicleHasNoVAT\r\n ? this.getReverseVatValue(price, vat)\r\n : Utils.getMarginVat(price, +purchasePrice, vat);\r\n\r\n return Number.parseFloat((price - vatValue).toFixed(2));\r\n };\r\n\r\n getOfferPriceWithoutVAT = (offerPrice: number): number => {\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n\r\n const vehicleHasNoVAT =\r\n offerTypeCode === CaseTypeCode.SALE && this.props.vehicleState.vehicle?.purchaseVatRate === 0;\r\n\r\n const purchasePrice = (this.props.vehicleState?.vehicle?.purchasePrice as number) || 0;\r\n\r\n const caseParameters = this.props.caseSettingsState.case!.caseParameters;\r\n const vatParameter = caseParameters.filter(\r\n (parameter) => parameter.parameter!.code === ParametreCode.TVA\r\n );\r\n const vat = parseFloat(vatParameter[0]!.value);\r\n\r\n const vatValue = !vehicleHasNoVAT\r\n ? this.getReverseVatValue(offerPrice, vat)\r\n : Utils.getMarginVat(offerPrice, +purchasePrice, vat);\r\n\r\n return Number.parseFloat((offerPrice - vatValue).toFixed(2));\r\n };\r\n\r\n getVATFromOfferPrice = () => {\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n\r\n const vehicleHasNoVAT =\r\n offerTypeCode === CaseTypeCode.SALE && this.props.vehicleState.vehicle?.purchaseVatRate === 0;\r\n\r\n const purchasePrice = (this.props.vehicleState?.vehicle?.purchasePrice as number) || 0;\r\n\r\n const offerPrice = this.state.vehicleOfferData.offerValueWithVAT;\r\n const caseParameters = this.props.caseSettingsState.case!.caseParameters;\r\n const vatParameter = caseParameters.filter(\r\n (parameter) => parameter.parameter!.code === ParametreCode.TVA\r\n );\r\n\r\n const vat = parseFloat(vatParameter[0]!.value);\r\n\r\n if (!vehicleHasNoVAT) {\r\n const offerPriceWithoutVAT = offerPrice / (1 + vat / 100);\r\n\r\n return Number.parseFloat((offerPriceWithoutVAT * (vat / 100)).toFixed(2));\r\n }\r\n\r\n return Utils.getMarginVat(offerPrice, purchasePrice, vat);\r\n };\r\n\r\n getValuationPrice = (caseHasVAT: boolean) => {\r\n const caseValuation = this.props.caseSettingsState.case?.caseValuation;\r\n let valuationValue = caseValuation\r\n ? this.props.isSaleOfferType\r\n ? this.props.caseSettingsState.case!.caseValuation?.offerPrice || 0\r\n : this.props.caseSettingsState.case!.caseValuation?.tradeInPrice || 0\r\n : 0;\r\n\r\n const caseValuationVatValue = caseValuation?.vatRate || 0;\r\n\r\n if (!caseHasVAT) {\r\n valuationValue = Utils.getPriceWithoutVat(valuationValue, caseValuationVatValue);\r\n }\r\n\r\n return Utils.ConvertCurrency(\r\n this.props.appState.currencyRates,\r\n CurrencyCode.EUR,\r\n this.state.vehicleOfferData.currency,\r\n valuationValue\r\n );\r\n };\r\n\r\n setStatePriceAndVAT = () => {\r\n const caseParameters = this.props.caseSettingsState.case!.caseParameters;\r\n const vatParameter = caseParameters.filter(\r\n (parameter) => parameter.parameter!.code === ParametreCode.TVA\r\n );\r\n\r\n const vatValue = +vatParameter[0]?.value || 0;\r\n const caseHasNoVAT = vatValue === 0;\r\n\r\n const tradeInValue = this.getValuationPrice(!caseHasNoVAT);\r\n\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n offerType: this.state.offerType,\r\n offerTypeId: this.state.offerType!.id,\r\n tradeInValue,\r\n damageValue: this.getDamageValue(),\r\n offerValue: 0,\r\n offerValueWithVAT: this.getPriceWithVAT(0, vatValue),\r\n priceValue: Number.parseFloat(\r\n (this.getPriceWithoutVAT(tradeInValue, vatValue) - this.getDamageValue()).toFixed(2)\r\n ),\r\n vatValue: parseFloat(vatParameter[0]!.value)\r\n }\r\n });\r\n };\r\n\r\n getDamageValue = () => {\r\n if (R.isNil(this.props.caseSettingsState.case!.caseCalculation)) {\r\n return 0;\r\n }\r\n\r\n const damage = this.props.caseSettingsState.case!.caseCalculation.amountWithoutTVA;\r\n\r\n return Utils.ConvertCurrency(\r\n this.props.appState.currencyRates,\r\n this.props.caseSettingsState.case!.caseCalculation.currencyCode,\r\n this.getCurrentCurrency(),\r\n damage\r\n );\r\n };\r\n\r\n setSecondValueBasedOnCaseCurrency(value: number, currencyRate: number): number | null {\r\n let resultValue = null;\r\n if (\r\n this.state.vehicleOfferData.currency == CurrencyCode.EUR ||\r\n this.state.vehicleOfferData.currency == CurrencyCode.RON\r\n ) {\r\n resultValue = 0;\r\n const previousCurrencyCode = this.state.vehicleOfferData.currency;\r\n const futureCurrencyCode =\r\n this.state.vehicleOfferData.currency == CurrencyCode.EUR\r\n ? CurrencyCode.RON\r\n : CurrencyCode.EUR;\r\n if (!R.isNil(value) && previousCurrencyCode) {\r\n let previousCurrencyRate = Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n previousCurrencyCode\r\n );\r\n\r\n let futureCurrencyRate = Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n futureCurrencyCode\r\n );\r\n\r\n if (this.state.vehicleOfferData.currency == CurrencyEnum.EUR) {\r\n previousCurrencyRate = currencyRate;\r\n } else if (this.state.vehicleOfferData.currency == CurrencyCode.RON) {\r\n futureCurrencyRate = currencyRate;\r\n }\r\n\r\n resultValue = value * (previousCurrencyRate / futureCurrencyRate);\r\n return Number.parseFloat(resultValue.toFixed(2));\r\n }\r\n }\r\n\r\n return resultValue;\r\n }\r\n\r\n setSecondVatFromOfferPrice(offerValueWithVAT: number): number {\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n const vehicleHasNoVAT =\r\n offerTypeCode === CaseTypeCode.SALE && this.props.vehicleState.vehicle?.purchaseVatRate === 0;\r\n const purchasePrice = (this.props.vehicleState?.vehicle?.purchasePrice as number) || 0;\r\n const caseParameters = this.props.caseSettingsState.case!.caseParameters;\r\n const vatParameter = caseParameters.filter(\r\n (parameter) => parameter.parameter!.code === ParametreCode.TVA\r\n );\r\n const vat = parseFloat(vatParameter[0]!.value);\r\n if (!vehicleHasNoVAT) {\r\n const offerPriceWithoutVAT = offerValueWithVAT / (1 + vat / 100);\r\n return Number.parseFloat((offerPriceWithoutVAT * (vat / 100)).toFixed(2));\r\n }\r\n return Utils.getMarginVat(offerValueWithVAT, purchasePrice, vat);\r\n }\r\n\r\n loadCaseSaleOfferForm = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n const guaranteeTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.GuaranteeType\r\n );\r\n const offerTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OfferTye\r\n );\r\n\r\n const saleChannelRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.SaleChannel\r\n );\r\n\r\n const offerTypeList = await this.appReferentialService.Get(offerTypeRef!.baseUrl);\r\n\r\n const offerType = offerTypeList.find(\r\n (item) =>\r\n (item.code === OfferTypeCode.SELL && this.props.isSaleOfferType) ||\r\n (item.code === OfferTypeCode.BUY && !this.props.isSaleOfferType)\r\n )!;\r\n\r\n const [guaranteeTypeList, offers, saleChannelList, vehicleAdvert, attachmentType] = await Promise.all([\r\n this.appReferentialService.Get(guaranteeTypeRef!.baseUrl),\r\n R.isNil(this.props.caseSettingsState.case!.vehicleId)\r\n ? []\r\n : this.vehicleService.GetVehicleOffers(\r\n this.props.caseSettingsState.case!.vehicleId,\r\n this.props.caseSettingsState.case!.id,\r\n offerType.id\r\n ),\r\n this.appReferentialService.Get(saleChannelRef!.baseUrl),\r\n this.vehicleService.GetVehicleAdvert(\r\n this.props.caseSettingsState.case!.vehicleId,\r\n caseId\r\n ),\r\n this.caseService.GetAttachmentTypeByCode(AttachmentTypeCode.OTHER)\r\n ]);\r\n\r\n const users = await this.appUserService.GetUsersInfo(offers.map((item) => item.createdBy));\r\n offers.forEach((item) => {\r\n const user = users.find((u) => u.id === item.createdBy);\r\n item.createdByUser = R.isNil(user) ? null : user;\r\n });\r\n\r\n this.setState(\r\n {\r\n isLoading: false,\r\n hasRights: hasRights,\r\n isUserHidden: !hasRights,\r\n guaranteeTypes: guaranteeTypeList.filter((item) => item.isActive),\r\n offerTypes: offerTypeList,\r\n offers: offers,\r\n offerType: offerType,\r\n saleChannels: saleChannelList.filter((item) => item.isActive),\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n guaranteeType: vehicleAdvert ? vehicleAdvert!.guaranteeType : null,\r\n guaranteeTypeId: vehicleAdvert ? vehicleAdvert!.guaranteeTypeId : null\r\n },\r\n attachType: attachmentType\r\n },\r\n this.setStatePriceAndVAT\r\n );\r\n };\r\n \r\n handleSaleChannelChange = (newValue: IReferential | null) => {\r\n if (!R.isNil(newValue!.displayName)) {\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n saleChannel: newValue,\r\n saleChannelId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n }\r\n };\r\n\r\n loadOffers = async () => {\r\n const offers = await this.vehicleService.GetVehicleOffers(\r\n this.props.caseSettingsState.case!.vehicleId!,\r\n this.props.caseSettingsState.case!.id,\r\n this.state.offerType!.id\r\n );\r\n\r\n const users = await this.appUserService.GetUsersInfo(offers.map((item) => item.createdBy));\r\n offers.forEach((item) => {\r\n const user = users.find((u) => u.id === item.createdBy);\r\n item.createdByUser = R.isNil(user) ? null : user;\r\n });\r\n\r\n this.setState({\r\n offers: offers\r\n });\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n\r\n const vehicleId = this.props.caseSettingsState.case?.vehicleId;\r\n if (newStatus.caseStatus?.code === 'CLOSED') {\r\n if (vehicleId) {\r\n await this.vehicleService.ChangeVehicleStatus({\r\n vehicleId,\r\n statusId: VehicleStatusCodeEnum.Sold,\r\n comment: ''\r\n });\r\n }\r\n if (vehicleId) {\r\n await this.vehicleService.DeleteAllAdvertWhenCaseStatusBecameClosed(caseId, vehicleId);\r\n }\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n\r\n NumberFormatCustomCurrencyRate = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={4}\r\n />\r\n );\r\n };\r\n\r\n submitData = async (e: any) => {\r\n try {\r\n this.setState({ executing: true });\r\n const data: VehicleOffer = {\r\n ...this.state.vehicleOfferData,\r\n offerVatAmount:\r\n this.state.vehicleOfferData.offerValueWithVAT - this.state.vehicleOfferData.offerValue,\r\n secondCurrency: this.state.displaySecondCurrency\r\n ? this.state.vehicleOfferData.secondCurrency\r\n : null,\r\n secondOfferValue: this.state.displaySecondCurrency\r\n ? this.state.vehicleOfferData.secondOfferValue\r\n : null,\r\n secondOfferValueWithVAT: this.state.displaySecondCurrency\r\n ? this.state.vehicleOfferData.secondOfferValueWithVAT\r\n : null\r\n };\r\n\r\n await this.vehicleService.SaveVehicleOfferWithoutCaseId(data);\r\n\r\n const caseRequest = {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n text: this.state.vehicleOfferData.offerValueWithVAT + ' EUR',\r\n subject: '',\r\n to: '',\r\n userIdTo: '',\r\n organizationId: null,\r\n attachments: [] as CaseAttachment[],\r\n caseSectionStepFormId: this.props.workflowForm.id\r\n } as CaseRequest;\r\n\r\n await this.caseService.AddCaseRequest(caseRequest);\r\n\r\n await this.submitForm(\r\n this.props.caseSettingsState.case!.id,\r\n this.props.workflowForm.id,\r\n null\r\n );\r\n\r\n await this.loadOffers();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({\r\n executing: false\r\n });\r\n }\r\n };\r\n\r\n handleGuaranteeTypeChange = (newValue: IReferential | null) => {\r\n if (!R.isNil(newValue!.displayName)) {\r\n if (RenaultGoldList.includes(newValue!.code!.toString())) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'RENEW_GOLD_INFO_MESSAGE',\r\n 'Aceasta garantie include si Garantia de producator !'\r\n ),\r\n {\r\n variant: 'info',\r\n autoHideDuration: 5000\r\n }\r\n );\r\n }\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n guaranteeType: newValue,\r\n guaranteeTypeId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n }\r\n };\r\n\r\n handleIsActiveNewVehicle = (e: any) => {\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n withNewVehicle: e.currentTarget.checked,\r\n newVin: e.currentTarget.checked ? this.state.vehicleOfferData.newVin : ''\r\n }\r\n });\r\n };\r\n\r\n getInvoicePdf = async (\r\n id: number,\r\n vehicleId: number,\r\n caseId: number,\r\n caseClientHistoryId: number | null\r\n ) => {\r\n const reportParameters = [\r\n {\r\n name: 'vehicleId',\r\n value: vehicleId.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'caseId',\r\n value: caseId.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'offerId',\r\n value: id.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'organizationId',\r\n value: this.props.appState.appUser!.organization?.id.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'caseClientHistoryId',\r\n value: caseClientHistoryId?.toString()\r\n } as ReportParameter,\r\n {\r\n name: 'apiUrl',\r\n value: Constants.apiRoot\r\n } as ReportParameter\r\n ];\r\n\r\n const fileBlob = await this.reportService.GetReport(\r\n ReportTypeCode.RENAULT_INVOICE,\r\n reportParameters\r\n );\r\n FileSaver.saveAs(fileBlob, 'Proforma invoice.pdf');\r\n if (this.props.caseSettingsState.caseSettings!.workflow.saveDocuments) {\r\n const fileName = `Proforma invoice_${id}.pdf`;\r\n console.log('Save file', fileName, 'Id oferta', id);\r\n await this.saveGeneratedFile(fileBlob, fileName);\r\n }\r\n };\r\n\r\n saveGeneratedFile = async (fileBlob: Blob, fileName: string) => {\r\n try {\r\n //Save the report into attachments\r\n const attachments: CaseAttachment[] = [];\r\n attachments.push({\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n attachmentTypeId: this.state.attachType.id,\r\n attachmentType: this.state.attachType,\r\n file: new File([fileBlob], fileName),\r\n isSelection: false,\r\n includeInOtherTab: true,\r\n checkFileName: true\r\n } as CaseAttachment);\r\n\r\n const newFiles = await this.caseService.AddCaseAttachment(attachments);\r\n\r\n console.log('newFiles', newFiles);\r\n } catch (error) {\r\n console.log('error', error);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n showOfferTimeline = (caseHasVAT: boolean) => {\r\n const priceLabel = caseHasVAT\r\n ? this.translatorService.Tranlate('SALE_OFFER_PRICE_OFFERED_WITH_VAT', 'Pret calculat cu TVA')\r\n : this.translatorService.Tranlate('SALE_OFFER_PRICE_OFFERED', 'Pret calculat cu TVA');\r\n\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n\r\n const vehicleHasNoVAT =\r\n offerTypeCode === CaseTypeCode.SALE && this.props.vehicleState.vehicle?.purchaseVatRate === 0;\r\n\r\n return this.state.offers.map((offer, index) => {\r\n const price = !vehicleHasNoVAT\r\n ? this.getPriceWithVAT(offer.offerValue, this.state.vehicleOfferData.vatValue)\r\n : offer.offerValue + offer.offerVatAmount;\r\n const secondPrice = !vehicleHasNoVAT\r\n ? offer.secondOfferValue\r\n ? this.getPriceWithVAT(offer.secondOfferValue, this.state.vehicleOfferData.vatValue)\r\n : null\r\n : !R.isNil(offer.secondOfferValue) && !R.isNil(offer.secondOfferVatAmount)\r\n ? offer.secondOfferValue + offer.secondOfferVatAmount\r\n : null;\r\n return (\r\n
\r\n
\r\n
\r\n

\r\n {moment.utc(offer.dateCreation).local().format(this.props.appState.longDateFormat) +\r\n ' (' +\r\n offer.createdByUser!.email +\r\n ')'}\r\n

\r\n

\r\n {`${priceLabel}: ${price} ${offer.currency}`}\r\n {secondPrice ? '(' + secondPrice + offer.secondCurrency + ')' : ''}\r\n

\r\n\r\n {offer.purchaseOrigin != null && (\r\n

\r\n {' '}\r\n {this.translatorService.Tranlate('SALE_OFFER_PURCHASE_ORIGIN', 'Origine achizitie')}:\r\n {offer.purchaseOrigin!.displayName ? ' ' + offer.purchaseOrigin!.displayName : null}\r\n

\r\n )}\r\n\r\n {offer.saleChannel != null && (\r\n

\r\n {' '}\r\n {this.translatorService.Tranlate('SALE_OFFER_SALE_CHANNEL', 'Canal vanzare')}:\r\n {offer.saleChannel!.displayName ? ' ' + offer.saleChannel!.displayName : null}\r\n

\r\n )}\r\n\r\n {offer.guaranteeType != null && (\r\n

\r\n {' '}\r\n {this.translatorService.Tranlate('SALE_OFFER_GUARANTEE_TYPE', 'Tip garantie')}:\r\n {offer.guaranteeType!.displayName ? ' ' + offer.guaranteeType!.displayName : null}\r\n

\r\n )}\r\n
\r\n
\r\n );\r\n });\r\n };\r\n\r\n renderClientDataForm = (caseHasVAT: boolean) => {\r\n const saleOfferPriceOfferedWithoutVatLabel = caseHasVAT\r\n ? this.translatorService.Tranlate(\r\n 'SALE_OFFER_PRICE_OFFERED_DIALOG_WITHOUT_VAT',\r\n 'Pret vanzare fara TVA'\r\n )\r\n : this.translatorService.Tranlate('SALE_OFFER_PRICE_OFFERED_DIALOG', 'Pret vanzare');\r\n\r\n const saleOfferPriceOfferedWithVatLabel = caseHasVAT\r\n ? this.translatorService.Tranlate(\r\n 'SALE_OFFER_PRICE_OFFERED_DIALOG_WITH_VAT',\r\n 'Pret vanzare cu TVA'\r\n )\r\n : this.translatorService.Tranlate('SALE_OFFER_PRICE_OFFERED_DIALOG', 'Pret vanzare');\r\n\r\n return (\r\n {\r\n this.submitData(e);\r\n }}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n {caseHasVAT && (\r\n \r\n \r\n \r\n )}\r\n \r\n\r\n \r\n \r\n {\r\n const offerValue = this.getOfferPriceWithoutVAT(e.target.value);\r\n const secondOfferValueWithVAT = this.setSecondValueBasedOnCaseCurrency(\r\n e.target.value,\r\n this.state.vehicleOfferData.currencyRate\r\n );\r\n const secondOfferValue = secondOfferValueWithVAT\r\n ? this.getOfferPriceWithoutVAT(secondOfferValueWithVAT)\r\n : 0;\r\n const secondOfferVatAmount = secondOfferValueWithVAT\r\n ? this.setSecondVatFromOfferPrice(secondOfferValueWithVAT)\r\n : 0;\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n offerValueWithVAT: e.target.value,\r\n offerValue: offerValue,\r\n secondOfferValueWithVAT: secondOfferValueWithVAT\r\n ? secondOfferValueWithVAT\r\n : 0,\r\n secondOfferValue: secondOfferValue,\r\n secondOfferVatAmount: secondOfferVatAmount\r\n }\r\n });\r\n }}\r\n validators={['required', 'minNumber:1']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu'),\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={\r\n this.state.displaySecondCurrency\r\n ? saleOfferPriceOfferedWithVatLabel +\r\n ' | ' +\r\n this.state.vehicleOfferData.offerValueWithVAT +\r\n ' ' +\r\n this.state.vehicleOfferData.currency +\r\n ' (' +\r\n this.state.vehicleOfferData.secondOfferValueWithVAT +\r\n ' ' +\r\n this.state.vehicleOfferData.secondCurrency +\r\n ')'\r\n : saleOfferPriceOfferedWithVatLabel\r\n }\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom,\r\n style: { fontWeight: 500 }\r\n }}\r\n />\r\n \r\n \r\n {\r\n const value = e.target.value;\r\n const secondOfferValueWithVAT = this.setSecondValueBasedOnCaseCurrency(\r\n this.state.vehicleOfferData.offerValueWithVAT,\r\n parseFloat(value)\r\n );\r\n const secondOfferValue = secondOfferValueWithVAT\r\n ? this.getOfferPriceWithoutVAT(secondOfferValueWithVAT)\r\n : 0;\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n currencyRate: parseFloat(value),\r\n secondOfferValueWithVAT: secondOfferValueWithVAT\r\n ? secondOfferValueWithVAT\r\n : 0,\r\n secondOfferValue: secondOfferValue ? secondOfferValue : 0,\r\n secondOfferVatAmount: secondOfferValueWithVAT\r\n ? this.setSecondVatFromOfferPrice(secondOfferValueWithVAT)\r\n : 0\r\n }\r\n });\r\n }}\r\n validators={['required', 'minNumber:1']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu'),\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('SALE_OFFER_PRICE_FXRATE', 'Curs valutar')}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustomCurrencyRate,\r\n style: { fontWeight: 500 }\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n this.handleGuaranteeTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n this.handleSaleChannelChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )} \r\n />\r\n \r\n \r\n
\r\n\r\n \r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n \r\n );\r\n };\r\n\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.reportService = (this.context as AppContext).reportsService;\r\n\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n\r\n const caseHasNoVAT =\r\n offerTypeCode === CaseTypeCode.AQUISITION && this.state.vehicleOfferData.vatValue === 0;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
\r\n {this.renderClientDataForm(!caseHasNoVAT)}\r\n\r\n \r\n {this.state.offers.length > 0 ? (\r\n
\r\n {this.showOfferTimeline(!caseHasNoVAT)}\r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabSoldCarFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabSoldCarForm as any));\r\n","import { API } from '../../helpers/API';\r\nimport { AppointmentRequestPayload, AppointmentsFiltersType, ChangeAppointmentStatusPayload } from '../../types/Agenda';\r\n\r\nexport const getClientListRequest = async () => {\r\n try {\r\n const response = await API.GetAsync('/case/appointmentClients');\r\n return {\r\n message: 'Success',\r\n error: false,\r\n data: response.data\r\n };\r\n } catch (e) {\r\n return {\r\n message: 'Error getting clients list',\r\n error: true\r\n };\r\n }\r\n};\r\n\r\nexport const getCarListRequest = async () => {\r\n try {\r\n const response = await API.GetAsync('/case/appointmentVehicles');\r\n return {\r\n message: 'Success',\r\n error: false,\r\n data: response.data\r\n };\r\n } catch (e) {\r\n return {\r\n message: 'Error getting cars list',\r\n error: true\r\n };\r\n }\r\n};\r\n\r\n\r\nexport const getAppointmentStatus = async () => {\r\n try {\r\n const response = await API.GetAsync('/case/Referential/AppointmentStatus');\r\n return {\r\n message: 'Success',\r\n error: false,\r\n data: response.data\r\n };\r\n } catch (e) {\r\n return {\r\n message: 'Error getting status list',\r\n error: true\r\n };\r\n }\r\n};\r\n\r\nexport const getJobListRequest = async () => {\r\n try {\r\n const response = await API.GetAsync('/case/Referential/JobType');\r\n return {\r\n message: 'Success',\r\n error: false,\r\n data: response.data\r\n };\r\n } catch (e) {\r\n return {\r\n message: 'Error getting jobs list',\r\n error: true\r\n };\r\n }\r\n};\r\n\r\nexport const getAppointmentsRequest = async (payload: AppointmentsFiltersType) => {\r\n try {\r\n const response = await API.Post2Async('/case/appointment', payload);\r\n return {\r\n message: 'Success',\r\n error: false,\r\n data: response.data\r\n };\r\n } catch (e) {\r\n return {\r\n message: 'Error getting appointments list',\r\n error: true\r\n };\r\n }\r\n};\r\n\r\nexport const getAppointment = async (id: number) => {\r\n try {\r\n const response = await API.GetAsync(`case/appointment/${id}`);\r\n return {\r\n message: 'Success',\r\n error: false,\r\n data: response.data\r\n };\r\n } catch (e) {\r\n return {\r\n message: 'Error getting appointment',\r\n error: true\r\n };\r\n }\r\n};\r\n\r\nexport const addAppointment = async (payload: AppointmentRequestPayload) => {\r\n try {\r\n const response = await API.Post2Async('/case/new-appointment', payload);\r\n return {\r\n message: 'Success',\r\n error: false,\r\n data: response.data\r\n };\r\n } catch (e) {\r\n console.log(e.response)\r\n return {\r\n message: 'Error save appointment',\r\n error: true\r\n };\r\n }\r\n};\r\n\r\nexport const getAppointmentCategoryType = async () => {\r\n try {\r\n const response = await API.GetAsync('/case/Referential/AppointmentCategoryType');\r\n return {\r\n message: 'Success',\r\n error: false,\r\n data: response.data\r\n };\r\n } catch (e) {\r\n return {\r\n message: 'Error get appointment category type',\r\n error: true\r\n };\r\n }\r\n};\r\n\r\n\r\nexport const changeAppointmentStatus = async (payload: ChangeAppointmentStatusPayload) => {\r\n try {\r\n const response = await API.Post2Async('/case/appointment/status', payload);\r\n return {\r\n message: 'Success',\r\n error: false,\r\n data: response.data\r\n };\r\n } catch (e) {\r\n console.log(e.response)\r\n return {\r\n message: 'Error change appointment status',\r\n error: true\r\n };\r\n }\r\n};\r\n\r\nexport const newAppointmentCase = async (payload: { appointmentId: number, workflowId: number }) => {\r\n try {\r\n const response = await API.Post2Async('/case/new-appointment-case', payload);\r\n return {\r\n message: 'Success',\r\n error: false,\r\n data: response.data\r\n };\r\n } catch (e) {\r\n console.log(e.response)\r\n return {\r\n message: 'Error new appointment case',\r\n error: true\r\n };\r\n }\r\n};\r\n\r\nexport const getAppointmentByCaseId = async (id: number) => {\r\n try {\r\n const response = await API.GetAsync(`case/appointmentByCaseId?caseId=${id}`);\r\n return {\r\n message: 'Success',\r\n error: false,\r\n data: response.data\r\n };\r\n } catch (e) {\r\n return {\r\n message: 'Error getting appointment',\r\n error: true\r\n };\r\n }\r\n};\r\n\r\nexport const getAppointmentFiltersRequest = async () => {\r\n try {\r\n const response = await API.Post2Async(`/case/appointment/filters`, {\r\n dateFilterStartDate: null,\r\n datefilterEndDate: null\r\n });\r\n return {\r\n message: 'Success',\r\n error: false,\r\n data: response.data\r\n };\r\n } catch (e) {\r\n return {\r\n message: 'Error getting appointment filters',\r\n error: true\r\n };\r\n }\r\n};\r\n\r\nexport const setLastOfferRejected = async (caseId: string, lastOfferRejected: boolean) => {\r\n try {\r\n const response = await API.PutAsync(`/case/lastOfferRejected/${caseId}?lastOfferRejected=${lastOfferRejected}`, {});\r\n return {\r\n message: 'Success',\r\n error: false,\r\n data: response.data\r\n };\r\n } catch (e) {\r\n return {\r\n message: 'Error last offer rejected',\r\n error: true\r\n };\r\n }\r\n};\r\n\r\n","import moment from 'moment';\r\nimport { AppointmentStatusType, AppointmentType } from '../types/Agenda';\r\nimport { getAppointmentCategoryType, getAppointmentStatus } from '../components/agenda/agenda.requests';\r\n\r\nexport const sanitizeAppointment = (appointment: AppointmentType) => {\r\n const { datetime } = appointment;\r\n\r\n if (typeof datetime === 'string') {\r\n appointment.datetime = JSON.parse(datetime);\r\n }\r\n\r\n return appointment;\r\n};\r\n\r\n// get day as dd/mm/yyyy using moment\r\nexport const getDay = (date: Date, dateFormat: string) => {\r\n return moment(date).format(dateFormat);\r\n};\r\n\r\nexport const getHourForAppointment = () =>{\r\n const currentDate = new Date();\r\n const hours = currentDate.getHours();\r\n const minutes = currentDate.getMinutes();\r\n if (minutes >= 0 && minutes <= 29) {\r\n currentDate.setMinutes(30)\r\n } else if (minutes >= 31 && minutes <= 59) {\r\n currentDate.setHours(hours+1)\r\n currentDate.setMinutes(0)\r\n }\r\n return moment(currentDate).format('HH:mm');\r\n}\r\n\r\n// get hour as hh:mm using moment\r\nexport const getHour = (date: Date | string ) => {\r\n // if already a string and it's like hh:mm then return it\r\n if (typeof date === 'string' && date.indexOf(':') > -1) {\r\n const indexHour = date.indexOf(':');\r\n return indexHour > 3 ? date.slice(indexHour - 2, indexHour + 3) : date\r\n }\r\n\r\n return moment(date).format('HH:mm');\r\n};\r\n\r\nexport type CalendarEvent = {\r\n title: string;\r\n start: Date;\r\n end: Date;\r\n allDay?: boolean;\r\n resource?: any;\r\n};\r\n\r\nexport const formatAppointmentForCalendar = (appointment: AppointmentType, dateFormat: string): CalendarEvent => {\r\n const appointmentDate = new Date(appointment.date);\r\n const day = getDay(appointmentDate, dateFormat);\r\n const hour = getHour(appointmentDate);\r\n\r\n const start = moment(`${day} ${hour}`, 'DD-MM-YYYY HH:mm').toDate();\r\n const end = moment(start).add(30, 'minutes').toDate();\r\n return {\r\n title: `#${appointment.id} la ${hour}`,\r\n start,\r\n end,\r\n resource: appointment\r\n };\r\n};\r\n\r\nconst randomNumberBetween = (min: number, max: number) => {\r\n return Math.floor(Math.random() * (max - min + 1) + min);\r\n};\r\n\r\nexport const appointmentsInDay = (day: Date, appointments: AppointmentType[] | undefined, dateFormat: string) => {\r\n if(!appointments){\r\n return [];\r\n }\r\n const dayAsString = getDay(day, dateFormat);\r\n return appointments.filter((appointment) => getDay(new Date(appointment.date), dateFormat).replace(' ', '') === dayAsString.replace(' ', ''));\r\n};\r\n\r\nexport const getStatusData = (status: string, statusList: any, language: string): { color: string; text: string} => {\r\n let text = '';\r\n Object.values(statusList).forEach((statusItem: any) => {\r\n if(statusItem.code === status){\r\n const indexLang = statusItem.translations.findIndex((trans: any) => trans.language === language);\r\n text = indexLang !== -1 ? statusItem.translations[indexLang].name : statusItem.name;\r\n }\r\n }\r\n );\r\n if (status === statusList?.CANCELED?.code) {\r\n return { color: '#E57373', text: text };\r\n }\r\n\r\n if (status === statusList?.INITIATA?.code) {\r\n return { color: '#FFC107', text: text };\r\n }\r\n\r\n if (status === statusList?.RESCHEDULED?.code) {\r\n return { color: '#5383ff', text: text };\r\n }\r\n\r\n if (status === statusList?.CONFIRMED?.code) {\r\n return { color: '#81C784', text: text };\r\n }\r\n\r\n if (status === statusList?.PAYMENT_CONFIRMATION?.code) {\r\n return { color: '#64B5F6', text: text };\r\n }\r\n\r\n if (status === statusList?.ESTIMATE_ACCEPTED?.code) {\r\n return { color: '#408f43', text: text };\r\n }\r\n\r\n if (status) {\r\n return { color: '#B0BEC5', text: text };\r\n }\r\n\r\n return { color: '#B0BEC5', text: 'Necunoscut' };\r\n};\r\n\r\n\r\nexport const generateArrayOfHours = () => {\r\n const hours = [];\r\n\r\n for (let hour = 0; hour < 24; hour++) {\r\n for (let minute = 0; minute < 60; minute += 30) {\r\n const formattedHour = `${String(hour).padStart(2, '0')}:${String(minute).padStart(2, '0')}`;\r\n hours.push(formattedHour);\r\n }\r\n }\r\n\r\n return hours;\r\n};\r\n\r\nexport const getStatusList = async (setIsLoading: (val: boolean) => void, setValue: any, enqueueSnackbar:any) => {\r\n setIsLoading(true);\r\n\r\n const response = await getAppointmentStatus();\r\n const responseData = response.data as Array;\r\n\r\n if (!responseData) {\r\n enqueueSnackbar(\r\n 'Eroare get status list!',\r\n {\r\n variant: 'error',\r\n autoHideDuration: 5000\r\n }\r\n );\r\n return\r\n }\r\n const futureStatusList: any = {};\r\n responseData.forEach((status: AppointmentStatusType) => {\r\n if(status && status?.code){\r\n futureStatusList[status?.code] = status\r\n }\r\n \r\n })\r\n setValue(futureStatusList)\r\n setIsLoading(false);\r\n}\r\n\r\nexport const getCategoryTypeList = async (setIsLoading: (val: boolean) => void, setValue: any, enqueueSnackbar: any) => {\r\n setIsLoading(true);\r\n\r\n const response = await getAppointmentCategoryType();\r\n if (!response.data) {\r\n enqueueSnackbar(\r\n 'Eroare get status list!',\r\n {\r\n variant: 'error',\r\n autoHideDuration: 5000\r\n }\r\n );\r\n return\r\n }\r\n setValue(response.data)\r\n setIsLoading(false);\r\n}\r\n\r\nconst toStartOfWeek = (date:any) => {\r\n const dayOfWeek = date.getDay();\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() - dayOfWeek);\r\n}\r\n\r\nexport const formatDate = (date:string)=>{\r\n const parts = date.split('-');\r\n const formattedDateString = `${parts[2]}-${parts[1]}-${parts[0]}`;\r\n const formatedDate = new Date(formattedDateString);\r\n return formatedDate\r\n}\r\n\r\n\r\nexport const areDatesInSameWeek = (dates:any) => {\r\n if (dates.length === 0) return false;\r\n const firstDate = formatDate(dates[0])\r\n const startOfWeek = toStartOfWeek(firstDate);\r\n for (let i = 0; i < dates.length; i++) {\r\n const currentDate = formatDate(dates[i]);\r\n const currentStartOfWeek = toStartOfWeek(currentDate);\r\n\r\n if (currentStartOfWeek.getTime() !== startOfWeek.getTime()) {\r\n return false; \r\n }\r\n }\r\n\r\n return true;\r\n}","import React, { useEffect, useState } from 'react';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { Typography, Box } from '@material-ui/core';\r\nimport { getClientListRequest } from '../agenda/agenda.requests';\r\nimport { Client } from '../agenda/agenda.types'\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\n\r\ninterface ClientAutocompleteProps {\r\n value: Client | null,\r\n disabled?:boolean,\r\n error?:boolean;\r\n onChange?: (event: React.ChangeEvent, selectedOption: Client | null) => void;\r\n}\r\n\r\nconst ClientAutocomplete: React.FC = ({value, onChange, disabled, error }) => {\r\n const translatorService = new TranslatorService();\r\n const [clients, setClients] = useState([]);\r\n const getClientList = async () => {\r\n const response = await getClientListRequest();\r\n const responseData = response.data as Client[];\r\n if(value && !value?.id){\r\n setClients([...responseData, value])\r\n }else{\r\n setClients(responseData);\r\n }\r\n \r\n };\r\n\r\n const getLabel = (option:Client) =>{\r\n if (option.personTypeId === 1) {\r\n return !option.firstName && !option.lastName ? `${option.email}` : `${option.firstName} ${option.lastName || ''}`\r\n } else if (option.personTypeId === 2) {\r\n return option.companyName\r\n }\r\n return '';\r\n }\r\n\r\n useEffect(() => {\r\n getClientList();\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n {translatorService.Tranlate('APPOINTMENT_CLIENT_TITLE','Client')}\r\n \r\n \r\n \r\n getLabel(client) ||\"\"}\r\n onChange={(e: any, newValue: Client | null)=>{ onChange && onChange(e, newValue)}}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ClientAutocomplete;\r\n","import React from 'react';\r\nimport { Box, Typography } from '@material-ui/core';\r\nimport { Car } from '../agenda/agenda.types';\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\nimport { useAppSelector } from '../../store/configureStore';\r\nimport { getDay } from '../../utils/appointments';\r\n\r\ninterface CarDetailsProps {\r\n selectedCar: Car | null;\r\n disabled?:boolean,\r\n type?:string\r\n}\r\n\r\nconst CarDetails: React.FC = ({ selectedCar, disabled, type }) => {\r\n const translatorService = new TranslatorService();\r\n const dateFormat = useAppSelector((state) => state.app?.dateFormat);\r\n\r\n if (!selectedCar) {\r\n return null;\r\n }\r\n\r\n const CategoryAppointmentDetails = () =>{\r\n return \r\n {selectedCar.plateNumber ? {`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_PLATE_NUMBER', 'Plate number')}: ${selectedCar.plateNumber}`} :null}\r\n {selectedCar.vin ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_VIN', 'VIN')}: ${selectedCar.vin}`}:null}\r\n {selectedCar.numberOfKilometers ? {`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_MILEAGE', 'Mileage')}: ${selectedCar.numberOfKilometers}`} : null}\r\n {selectedCar.identifiedMake || selectedCar.model.brand ? {`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_MAKE', 'Make')}: ${selectedCar.identifiedMake ? selectedCar.identifiedMake : selectedCar.model.brand}`}:null}\r\n {selectedCar.identifiedModel || selectedCar.model.name ? {`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_MODEL', 'Model')}: ${selectedCar.identifiedModel ? selectedCar.identifiedModel : selectedCar.model.name}`}:null}\r\n {selectedCar.firstPlateDate ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_REGISTRATION_DATE', 'Registration date')}: `}{selectedCar.firstPlateDate ? getDay(new Date(selectedCar.firstPlateDate), dateFormat || 'DD/MM/YYYY') : ''}:null}\r\n {selectedCar.identifiedFuelType ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_FUEL_TYPE', 'Fuel type')}: ${selectedCar.identifiedFuelType ?? ''}`}:null}\r\n {selectedCar.engineSize ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_ENGINE_CAPACITY', 'Engine capacity')}: ${selectedCar.engineSize ?? ''}`}:null}\r\n {selectedCar.power ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_POWER', 'Power (in KW)')}: ${selectedCar.power ?? ''}`}:null}\r\n {selectedCar.identifiedCarBody ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_CAR_BODY', 'Car body')}: ${selectedCar.identifiedCarBody ?? ''}`}:null}\r\n {selectedCar.motDate ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_REGULAR_MOT', 'Regular technical inspection until(MOT)')}: `}{selectedCar.motDate ? getDay(new Date(selectedCar.motDate), dateFormat || 'DD/MM/YYYY') : ''}:null}\r\n {selectedCar.carColor ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_COLOR', 'Color')}: ${selectedCar.carColor ?? ''}`}:null}\r\n {selectedCar.engineType ? {`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_ENGINE_TYPE', 'Engine type')}: ${selectedCar.engineType ?? ''}`}:null}\r\n {selectedCar.carCategory?.displayName ? {`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_VEHICLE_CATEGORY', 'Vehicle category')}: ${selectedCar.carCategory?.displayName ?? ''}`}:null}\r\n \r\n }\r\n\r\n const CategoryAddAppointment = () =>{\r\n return \r\n {selectedCar?.plateNumber ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_PLATE_NUMBER', 'Plate number')}: ${selectedCar.plateNumber}`}:null}\r\n {selectedCar?.vin ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_VIN', 'VIN')}: ${selectedCar.vin}`}:null}\r\n {selectedCar?.identifiedMake || selectedCar?.model?.brand ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_MAKE', 'Make')}: ${selectedCar.identifiedMake ? selectedCar.identifiedMake : selectedCar.model.brand}`}:null}\r\n {selectedCar?.identifiedModel || selectedCar?.model?.name ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_MODEL', 'Model')}: ${selectedCar.identifiedModel ? selectedCar.identifiedModel : selectedCar.model.name}`}:null}\r\n {selectedCar?.identifiedCarBody ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_CAR_BODY', 'Car body')}: ${selectedCar.identifiedCarBody ?? ''}`}:null}\r\n {selectedCar?.identifiedFuelType ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_FUEL_TYPE', 'Fuel type')}: ${selectedCar.identifiedFuelType ?? ''}`}:null}\r\n {selectedCar?.firstPlateDate ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_REGISTRATION_DATE', 'Registration date')}: `}{selectedCar.firstPlateDate ? getDay(new Date(selectedCar.firstPlateDate), dateFormat || 'DD/MM/YYYY') : ''}:null}\r\n {selectedCar?.motDate ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_REGULAR_MOT', 'Regular technical inspection until(MOT)')}: `}{selectedCar.motDate ? getDay(new Date(selectedCar.motDate), dateFormat || 'DD/MM/YYYY') : ''}:null}\r\n {selectedCar?.engineSize ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_ENGINE_CAPACITY', 'Engine capacity')}: ${selectedCar.engineSize ?? ''}`}:null}\r\n {selectedCar?.power ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_POWER', 'Power (in KW)')}: ${selectedCar.power ?? ''}`}:null}\r\n {selectedCar?.engineType ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_ENGINE_TYPE', 'Engine type')}: ${selectedCar.engineType ?? ''}`}:null}\r\n {selectedCar?.carCategory?.displayName ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_VEHICLE_CATEGORY', 'Vehicle category')}: ${selectedCar.carCategory?.displayName ?? ''}`}:null}\r\n {selectedCar?.carColor ?{`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_VEHICLE_COLOR', 'Color')}: ${selectedCar.carColor ?? ''}`}:null}\r\n {selectedCar?.numberOfKilometers ? {`${translatorService.Tranlate('APPOINTMENT_CAR_DETAILS_MILEAGE', 'Mileage')}: ${selectedCar.numberOfKilometers}`} : null}\r\n \r\n }\r\n\r\n return (<>\r\n {type === 'details' ? CategoryAppointmentDetails() : CategoryAddAppointment()}\r\n \r\n );\r\n};\r\n\r\nexport default CarDetails;\r\n\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport { Box, Typography } from '@material-ui/core';\r\nimport { getJobListRequest } from '../agenda/agenda.requests';\r\nimport { Job } from '../agenda/agenda.types';\r\nimport { useAppSelector } from '../../store/configureStore';\r\nimport { ITranslation } from '../../interfaces/IReferential';\r\nimport { Option } from '../../types/Agenda';\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\n\r\n\r\ninterface JobsMultipleSelectionProps {\r\n selectedValues: Option[];\r\n onChange?: (selectedValues: Option[]) => void;\r\n disabled?: boolean,\r\n error?:boolean\r\n}\r\n\r\nconst JobsMultipleSelection: React.FC = ({\r\n selectedValues,\r\n onChange,\r\n disabled,\r\n error\r\n}) => {\r\n const [options, setOptions] = useState([]);\r\n const language = useAppSelector((state)=>state.app?.language)\r\n const [selected, setSelected] = useState(selectedValues || []);\r\n const translatorService = new TranslatorService();\r\n\r\n const fetchJobOptions = async () => {\r\n const response = await getJobListRequest();\r\n const responseData = response.data as Job[];\r\n\r\n const jobOptions: Option[] = responseData.map((job) => ({\r\n translations: job.translations,\r\n name: job.name,\r\n id: job.id,\r\n \r\n }));\r\n setOptions(jobOptions);\r\n };\r\n\r\n const getTranslations = (status: any) => {\r\n const indexLang = status.translations.findIndex((trans: any) => trans.language === language);\r\n return indexLang !== -1 ? status.translations[indexLang].name : status.name;\r\n }\r\n\r\n useEffect(() => {\r\n fetchJobOptions();\r\n }, []);\r\n\r\n const handleChange = (value: Option) => {\r\n if(!onChange){\r\n return;\r\n }\r\n const isSelected = selected.some((selectedOption) => selectedOption.id === value.id || selectedOption.jobTypeId === value.id);\r\n\r\n if (isSelected) {\r\n const newSelected = selected.filter((selectedOption) => selectedOption.id !== value.id || selectedOption.jobTypeId === value.id);\r\n setSelected(newSelected);\r\n onChange(newSelected);\r\n } else {\r\n const newSelected = [...selected, value];\r\n setSelected(newSelected);\r\n onChange(newSelected);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {translatorService.Tranlate('APPOINTMENT_JOB_TYPE_TITLE', 'Job type')}\r\n \r\n \r\n \r\n {options.map((option) => (\r\n selectedOption.id === option.id || selectedOption.jobTypeId === option.id)}\r\n onChange={() => handleChange(option)}\r\n value={option.id}\r\n />\r\n }\r\n label={getTranslations(option)}\r\n />\r\n ))}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default JobsMultipleSelection;\r\n","import React, { ChangeEvent } from 'react';\r\nimport { Box, Typography, TextField } from '@material-ui/core';\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\n\r\ninterface JobDetailsProps {\r\n onChange?: (event: ChangeEvent) => void;\r\n details?:string;\r\n disabled?:boolean;\r\n type?:string;\r\n inputProps?:any\r\n}\r\n\r\nconst JobDetails: React.FC = ({ onChange, details, disabled, type, inputProps }) => {\r\n const translatorService = new TranslatorService();\r\n const handleDescriptionChange = (event: ChangeEvent) => {\r\n onChange && onChange(event);\r\n };\r\n\r\n\r\n return (\r\n \r\n \r\n {translatorService.Tranlate('APPOINTMENT_JOB_DETAILS_TITLE', 'Job details')}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default JobDetails;\r\n","import React, { useContext, useEffect, useMemo, useState } from 'react';\r\nimport { Box, } from '@material-ui/core';\r\nimport { useAppDispatch, useAppSelector } from '../../store/configureStore';\r\nimport { Calendar, momentLocalizer } from 'react-big-calendar';\r\nimport moment from 'moment';\r\nimport { Card } from 'reactstrap';\r\nimport {\r\n AGENDA_SET_SELECTED_RANGE\r\n} from '../../store/actions/ActionTypes';\r\nimport { formatAppointmentForCalendar, getDay, getStatusData } from '../../utils/appointments';\r\nimport { useHistory } from 'react-router';\r\nimport { AppointmentType } from '../../types/Agenda';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport ArrowLeftIcon from '@material-ui/icons/ArrowLeft';\r\nimport ArrowRightIcon from '@material-ui/icons/ArrowRight'\r\nimport { AppointmentStatusCodeEnum } from '../../helpers/Constants';\r\n\r\nexport const BigCalendar = ({ getAppointments, defaultView, setDefaultView, defaultDay, handleSlotSelect }: any) => {\r\n const history = useHistory()\r\n const localizer = momentLocalizer(moment);\r\n const [zoomLevel, setZoomLevel] = useState(window.devicePixelRatio);\r\n const selectedRange = useAppSelector((state) => state.agenda?.selectedRange);\r\n const context = useContext(ApplicationContext);\r\n const translatorService = context.translatorService;\r\n// const [view, setView] = React.useState<'month' | 'week' | 'day' | 'agenda'>(defaultView || 'month')\r\n const appointments = useAppSelector((state) => state.agenda?.appointments.filter((appointment) => appointment?.appointmentStatus?.code !== AppointmentStatusCodeEnum.CANCELED.toString()));\r\n const dispatch = useAppDispatch();\r\n const dateFormat = useAppSelector((state) => state.app?.dateFormat);\r\n\r\n useEffect(() => {\r\n if (defaultView === 'agenda') {\r\n return;\r\n }\r\n\r\n // if selectedRange is null, set it to current month\r\n if (!selectedRange) {\r\n setDefaultView('month');\r\n return;\r\n }\r\n\r\n // if selectedRange start_date and end_date are the same, set view to day (can bedifferent hours)\r\n if (getDay(selectedRange.start_date, dateFormat || 'DD/MM/YYYY') === getDay(selectedRange.end_date, dateFormat || 'DD/MM/YYYY')) {\r\n setDefaultView('day');\r\n return;\r\n }\r\n\r\n // if selectedRange start_date and end_date are not the same but the difference is less than 7 days, set view to week\r\n if (selectedRange.start_date !== selectedRange.end_date) {\r\n const diff = moment(selectedRange.end_date).diff(moment(selectedRange.start_date), 'days');\r\n\r\n if (diff < 7) {\r\n setDefaultView('week');\r\n return;\r\n }\r\n }\r\n\r\n setDefaultView('month');\r\n }, [selectedRange]);\r\n\r\n const formatedAppointments = useMemo(() => {\r\n if (!appointments) {\r\n return [];\r\n }\r\n return appointments.map((e) => formatAppointmentForCalendar(e, dateFormat || 'DD/MM/YYYY'));\r\n }, [appointments]);\r\n\r\n useEffect(() => {\r\n const handleZoomChange = () => {\r\n setZoomLevel(window.devicePixelRatio);\r\n };\r\n\r\n const matchMedia = window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);\r\n matchMedia.addEventListener('change', handleZoomChange);\r\n\r\n window.addEventListener('resize', handleZoomChange);\r\n return () => {\r\n matchMedia.removeEventListener('change', handleZoomChange);\r\n window.removeEventListener('resize', handleZoomChange);\r\n };\r\n }, []);\r\n\r\n const getEventStyle = () => {\r\n let fontSize = '14px'; \r\n const padding = '4px';\r\n if (zoomLevel > 1) {\r\n fontSize = `${14 - zoomLevel*1}px`; // text mai mic la zoom in\r\n } else if (zoomLevel < 1) {\r\n fontSize = '16px'; // text mai mare la zoom out\r\n }\r\n return {\r\n style: {\r\n fontSize,\r\n padding\r\n }\r\n };\r\n };\r\n\r\n interface DateRange {\r\n start: Date;\r\n end: Date;\r\n }\r\n \r\n interface MonthRange {\r\n monthName: string;\r\n startDate: string; // Data de început a lunii\r\n endDate: string; // Data de sfârșit a lunii\r\n }\r\n \r\n const getFullMonthRangesInRange = (range: DateRange): MonthRange | null => {\r\n const startDate = range.start; \r\n const endDate = range.end;\r\n \r\n // Initialize current to the first day of the month of the start date\r\n const current = new Date(startDate.getFullYear(), startDate.getMonth(), 1);\r\n\r\n // Iterate through each month in the date range\r\n while (current <= endDate) {\r\n // Calculate the start and end of the current month\r\n const monthStart = new Date(current.getFullYear(), current.getMonth(), 1);\r\n const monthEnd = new Date(current.getFullYear(), current.getMonth() + 1, 0);\r\n monthEnd.setHours(23, 59, 59, 999);\r\n\r\n // Check if the whole month is within the date range\r\n if (monthStart >= startDate && monthEnd <= endDate) {\r\n return {\r\n monthName: current.toLocaleString('default', { month: 'long' }), // Month name (e.g., \"June\")\r\n startDate: moment(monthStart).format('YYYY-MM-DDTHH:mm:ss'), // Start date of the month\r\n endDate: moment(monthEnd).format('YYYY-MM-DDTHH:mm:ss') // End date of the month, inclusive\r\n };\r\n }\r\n // Move to the next month\r\n current.setMonth(current.getMonth() + 1);\r\n }\r\n\r\n return null; // Return null if no full month is found\r\n };\r\n \r\n return (\r\n \r\n {\r\n setDefaultView(view);\r\n }}\r\n components={{\r\n event: (props) => \r\n }}\r\n eventPropGetter={getEventStyle}\r\n messages={{\r\n date: translatorService.Tranlate('TABLE_DATE', 'Dată'),\r\n time: translatorService.Tranlate('TABLE_TIME','Timp'),\r\n event: translatorService.Tranlate('TABLE_REZERVATION', 'Rezervare'),\r\n allDay: translatorService.Tranlate('TABLE_ALL_DAY', 'Toată ziua'),\r\n week: translatorService.Tranlate('TABLE_WEEK', 'Săptămână'),\r\n work_week: translatorService.Tranlate('TABLE_WORK_WEEK', 'Săptămână de lucru'),\r\n day: translatorService.Tranlate('TABLE_DAY', 'Ziuă'),\r\n month: translatorService.Tranlate('TABLE_MONTH', 'Lună'),\r\n previous: ,\r\n next: ,\r\n yesterday: translatorService.Tranlate('TABLE_YESTERDAY', 'Ieri'),\r\n tomorrow: translatorService.Tranlate('TABLE_TOMORROW', 'Mâine'),\r\n today: translatorService.Tranlate('TABLE_TODAY', 'Azi'),\r\n agenda: translatorService.Tranlate('TABLE_AGENDA', 'Agendă'),\r\n\r\n noEventsInRange: translatorService.Tranlate('TABLE_NO_EVENTS_IN_RANGE', 'Nu există rezervări în această perioadă'),\r\n\r\n showMore: (total: any) => `${translatorService.Tranlate('TABLE_TOTAL','Încă')} ${total}`\r\n }}\r\n key={JSON.stringify(selectedRange + defaultDay + zoomLevel)}\r\n defaultDate={defaultDay || selectedRange?.start_date || new Date()}\r\n value={selectedRange}\r\n onRangeChange={(range:any) => {\r\n if (range.start && range.end) {\r\n console.log('range', range);\r\n dispatch({\r\n type: AGENDA_SET_SELECTED_RANGE,\r\n payload: {\r\n start_date: range.start,\r\n end_date: range.end\r\n }\r\n });\r\n\r\n const rang: DateRange = {\r\n start: range.start,\r\n end: range.end\r\n };\r\n const fullMonthRanges = getFullMonthRangesInRange(rang);\r\n console.log('fullMonthRanges', fullMonthRanges);\r\n // Call getAppointments with the correctly formatted date range\r\n getAppointments({\r\n dateFilterStartDate: fullMonthRanges?.startDate || range.start,\r\n datefilterEndDate: fullMonthRanges?.endDate || range.end\r\n });\r\n return;\r\n }\r\n\r\n // if array with more than 1 element, it's weekly view\r\n if (range.length > 1) {\r\n dispatch({\r\n type: AGENDA_SET_SELECTED_RANGE,\r\n payload: {\r\n start_date: range[0],\r\n end_date: range[range.length - 1]\r\n }\r\n });\r\n getAppointments({\r\n dateFilterStartDate: range[0],\r\n datefilterEndDate: range[range.length - 1]\r\n })\r\n return;\r\n }\r\n\r\n // if array with 1 element, it's daily view\r\n if (range.length === 1) {\r\n dispatch({\r\n type: AGENDA_SET_SELECTED_RANGE,\r\n payload: {\r\n start_date: range[0],\r\n end_date: range[0]\r\n }\r\n });\r\n const date = new Date(range[0]);\r\n const endDate = date.setDate(date.getDate() + 1)\r\n getAppointments({\r\n dateFilterStartDate: range[0],\r\n datefilterEndDate: moment(endDate).format()\r\n })\r\n return;\r\n }\r\n }}\r\n startAccessor=\"start\"\r\n endAccessor=\"end\"\r\n onSelectEvent={(event: any) => {\r\n history.push(`/appointment/${event.resource.id}`)\r\n }}\r\n onSelectSlot={handleSlotSelect}\r\n popup\r\n style={{ width: '100%', heigth: '80vh' }}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport const CustomEvent = ({ event, customStyle }: any) => {\r\n const resource = event.resource as AppointmentType;\r\n const statusList = useAppSelector((state) => state.agenda?.statusList)\r\n const language = useAppSelector((state)=>state.app?.language)\r\n\r\n if (!resource) {\r\n return null;\r\n }\r\n\r\n const { text, color } = getStatusData(resource?.appointmentStatus?.code || '', statusList, language);\r\n\r\n return (\r\n \r\n {text}\r\n {`${resource.id} ${resource?.vehicle?.plateNumber ? `(${resource?.vehicle?.plateNumber})`:''}`} \r\n \r\n );\r\n};\r\n","import React, { useState } from 'react';\r\nimport { Box, Button, CircularProgress, IconButton, Modal, TextField, Typography } from '@material-ui/core';\r\nimport Calendar from 'react-calendar';\r\nimport 'react-calendar/dist/Calendar.css';\r\nimport { generateArrayOfHours, getDay, getHour, getStatusList } from '../../utils/appointments';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\nimport moment from 'moment';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { BigCalendar } from '../agenda/BigCalendar';\r\nimport { getAppointmentsRequest } from '../agenda/agenda.requests';\r\nimport { ResponseAppointmentsData } from '../../types/Agenda';\r\nimport { useAppDispatch, useAppSelector } from '../../store/configureStore';\r\nimport { AGENDA_SET_APPOINTMENTS, AGENDA_SET_SELECTED_RANGE, AGENDA_SET_STATUS_LIST } from '../../store/actions/ActionTypes';\r\nimport { useSnackbar } from 'notistack';\r\n\r\ninterface CustomStyleProps{\r\n calendarStyle?:any,\r\n hourDropdownStyle?:any\r\n}\r\n\r\ninterface AppointmentCalendarProps{\r\n day:Date | null,\r\n setDay: (val:Date | null) => void, \r\n hour:string | null, \r\n setHour: (val:string | null) => void,\r\n disabled?:boolean,\r\n customStyle?:CustomStyleProps\r\n minDate?:any\r\n showDefaultCalendar:boolean\r\n}\r\n\r\nexport const AppointmentCalendar = ({ day, setDay, hour, setHour, disabled, customStyle, minDate, showDefaultCalendar }: AppointmentCalendarProps) => {\r\n const [isLoading, setIsLoading] = React.useState(false);\r\n const [showCalendar, setShowCalendar] = useState(false);\r\n const [showBigCalendar, setShowBigCalendar] = useState(false);\r\n const hours = generateArrayOfHours()\r\n const translatorService = new TranslatorService();\r\n const [localAppointments, setLocalAppoitments] = useState>([]);\r\n const [localLoading, setLocalLoading] = useState(false);\r\n const [defaultView, setDefaultView] = useState<'month' | 'week' | 'day' | 'agenda'>('week');\r\n const [defaultDay, setDefaultDay] = useState()\r\n const dispatch = useAppDispatch();\r\n const [showDropdown, setShowDropdown] = useState(false);\r\n const { enqueueSnackbar } = useSnackbar();\r\n const dateFormat = useAppSelector((state) => state.app?.dateFormat);\r\n const statusList = useAppSelector((state) => state.agenda?.statusList);\r\n const [isLoadingDate, setIsLoadingDate] = useState(false);\r\n const [isLoadingHour, setIsLoadingHour] = useState(false);\r\n\r\n React.useEffect(() => {\r\n if (Object.keys(statusList).length === 0) {\r\n getStatusList(setIsLoading, (value:any)=>{\r\n dispatch({\r\n type: AGENDA_SET_STATUS_LIST,\r\n payload: value\r\n });\r\n }, enqueueSnackbar);\r\n }\r\n }, []);\r\n \r\n const handleSelectOption = (ora:string) => {\r\n setHour(ora)\r\n setShowDropdown(false);\r\n };\r\n\r\n const getSyles = (generalStyle:any, customStyle:any)=>{\r\n if(customStyle){\r\n return {...generalStyle, ...customStyle}\r\n }\r\n return {...generalStyle}\r\n }\r\n\r\n const fetchAppointments = async (filters: any, onlyOneDay?: boolean) => {\r\n !onlyOneDay && setLocalLoading(true)\r\n const response = await getAppointmentsRequest(filters);\r\n\r\n const responseData = response.data as ResponseAppointmentsData;\r\n\r\n if (!responseData?.appointments) {\r\n !onlyOneDay && setLocalLoading(false)\r\n return\r\n }\r\n\r\n if (onlyOneDay) {\r\n setLocalAppoitments(responseData?.appointments)\r\n } else {\r\n dispatch({\r\n type: AGENDA_SET_APPOINTMENTS,\r\n payload: responseData.appointments,\r\n });\r\n }\r\n\r\n !onlyOneDay && setLocalLoading(false)\r\n };\r\n\r\n const onSelectSlot = (slotInfo: any) => {\r\n const selectedDate = new Date(slotInfo.start);\r\n if (defaultView === 'month') {\r\n setDefaultDay(selectedDate);\r\n setDefaultView('day')\r\n } else {\r\n const currentDate = new Date();\r\n if (selectedDate < currentDate) {\r\n enqueueSnackbar(translatorService.Tranlate('PAST_DATE', 'You cannot select a date from the past for scheduling'), {\r\n variant: 'error'\r\n });\r\n return;\r\n }\r\n const selectedHour = selectedDate.getHours();\r\n const selectedMinute = selectedDate.getMinutes();\r\n setDay(selectedDate);\r\n setHour(`${selectedHour < 10 ? `0${selectedHour}` : selectedHour}:${selectedMinute < 10 ? `0${selectedMinute}` : selectedMinute}`);\r\n setShowBigCalendar(false)\r\n }\r\n }\r\n\r\n const renderCalendar = () => {\r\n return
\r\n { setShowBigCalendar(false) }}>\r\n
\r\n
\r\n { setShowBigCalendar(false) }}>\r\n \r\n \r\n
\r\n \r\n {translatorService.Tranlate('APPOINTMENT_RESCHUDELE_CALENDAR_TITLE', 'Select the date and time for rescheduling')}\r\n \r\n \r\n
\r\n
\r\n
\r\n }\r\n\r\n const mapAppointments = async () => {\r\n const currentDate = defaultDay == null ? new Date() : defaultDay; \r\n const firstDayOfMonth = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1);\r\n const lastDayOfMonth = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0);\r\n lastDayOfMonth.setHours(23, 59, 59, 999);\r\n \r\n dispatch({\r\n type: AGENDA_SET_SELECTED_RANGE,\r\n payload: {\r\n start_date: firstDayOfMonth,\r\n end_date: lastDayOfMonth\r\n }\r\n });\r\n\r\n await fetchAppointments({\r\n dateFilterStartDate: moment(firstDayOfMonth).format('YYYY-MM-DDTHH:mm:ss'),\r\n datefilterEndDate: moment(lastDayOfMonth).format('YYYY-MM-DDTHH:mm:ss')\r\n });\r\n\r\n setDefaultView('month');\r\n }\r\n\r\n return (\r\n \r\n \r\n {translatorService.Tranlate('APPOINTMENT_CALENDAR_TITLE', 'Schedule')}\r\n \r\n \r\n \r\n {\r\n if(!showDefaultCalendar){\r\n const currentDate = new Date();\r\n setDefaultDay(currentDate);\r\n setIsLoadingDate(true);\r\n await mapAppointments();\r\n setIsLoadingDate(false);\r\n setShowBigCalendar(true);\r\n setDefaultView('week');\r\n return;\r\n }\r\n if (showDropdown) { setShowDropdown(false) } setShowCalendar(!showCalendar)\r\n }}\r\n InputProps={{\r\n endAdornment: (\r\n \r\n {isLoadingDate && (\r\n \r\n )}\r\n \r\n \r\n ),\r\n style: { cursor: 'pointer' } \r\n }}\r\n />\r\n\r\n {showCalendar && showDefaultCalendar ? {setDay(date); setShowCalendar(false)}}\r\n /> : null}\r\n {showBigCalendar && !showDefaultCalendar ? renderCalendar():null}\r\n \r\n \r\n {\r\n if (!showDefaultCalendar) {\r\n const currentDate = new Date();\r\n setDefaultDay(currentDate);\r\n setIsLoadingHour(true);\r\n await mapAppointments();\r\n setIsLoadingHour(false);\r\n setShowBigCalendar(true);\r\n setDefaultView('week');\r\n return;\r\n }\r\n if(showCalendar){setShowCalendar(false)} setShowDropdown(!showDropdown)\r\n }}\r\n placeholder={translatorService.Tranlate('APPOINTMENT_SELECT_PLACEHOLDER', 'Selecteaza')}\r\n InputProps={{\r\n endAdornment: (\r\n \r\n {isLoadingHour && (\r\n \r\n )}\r\n \r\n \r\n ),\r\n style: { cursor: 'pointer' }\r\n }}\r\n />\r\n\r\n {showDropdown && showDefaultCalendar && (\r\n
\r\n {hours.map((ora:string) => (\r\n handleSelectOption(ora)} style={{ marginBottom:8, textAlign:'center'}}>\r\n {ora}\r\n \r\n ))}\r\n
\r\n )}\r\n \r\n
\r\n\r\n
\r\n
\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Box, Tooltip, Typography } from '@material-ui/core';\r\n// Components\r\nimport * as R from 'ramda';\r\nimport { getHour, getHourForAppointment } from '../../utils/appointments';\r\nimport { AppointmentType } from '../../types/Agenda';;\r\nimport Loader from '../Loader';\r\nimport { rest } from 'lodash';\r\nimport ClientAutocomplete from '../appointment/ClientAutocomplete';\r\nimport CarDetails from '../appointment/CarDetails';\r\nimport JobsMultipleSelection from '../appointment/JobsMultipleSelection';\r\nimport { FormControlLabel, Switch } from '@material-ui/core';\r\nimport JobDetails from '../appointment/JobDetails';\r\nimport { AppointmentCalendar } from '../appointment/AppointmentCalendar';\r\nimport { Job } from '../agenda/agenda.types';\r\nimport { addAppointment, getAppointmentByCaseId, getJobListRequest } from '../agenda/agenda.requests';\r\nimport { Button } from 'reactstrap';\r\nimport { WorkflowPartner, WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { AppState, ApplicationState, CaseSettingsActionCreators, CaseSettingsState } from '../../store';\r\nimport { ProviderContext, withSnackbar } from 'notistack';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { connect } from 'react-redux';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport moment from 'moment';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { TextValidator } from 'react-material-ui-form-validator';\r\nimport _ from 'lodash';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\ninterface ICaseDetailsCaseServiceAddAppointmentFormState {\r\n isLoading: boolean,\r\n appointment: AppointmentType,\r\n date: Date | null,\r\n hour: string | null,\r\n hasRights: boolean,\r\n selectedUser: AppUser | null;\r\n organizations: WorkflowPartner[]; \r\n isUserHidden:boolean;\r\n isUsersDisabled:boolean;\r\n isLoading2:boolean;\r\n users: AppUser[];\r\n executing: boolean;\r\n isCarInService: boolean;\r\n requiresServiceScheduling:boolean;\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseServiceAddAppointmentFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseServiceAddAppointmentFormProps =\r\n ExternalCaseDetailsCaseServiceAddAppointmentFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n } & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseServiceAddAppointmentForm extends React.PureComponent<\r\n ICaseDetailsCaseServiceAddAppointmentFormProps,\r\n ICaseDetailsCaseServiceAddAppointmentFormState\r\n> {\r\n\r\n private caseService!: ICaseService;\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n isLoading: false,\r\n appointment:{} as AppointmentType,\r\n date:new Date(),\r\n hour: getHourForAppointment(),\r\n hasRights: false,\r\n selectedUser: null,\r\n organizations: [],\r\n isUserHidden:false,\r\n isUsersDisabled:false, \r\n isLoading2: false,\r\n users:[],\r\n executing: false,\r\n isCarInService: true,\r\n requiresServiceScheduling: false\r\n } as ICaseDetailsCaseServiceAddAppointmentFormState;\r\n\r\n public componentDidMount() {\r\n this.getAppointment()\r\n }\r\n\r\n\r\n getAppointment = async () => {\r\n this.setState({ isLoading: true });\r\n \r\n const res = await getAppointmentByCaseId(Number.parseInt(this.props.match.params.id));\r\n\r\n const appointment = res.data as AppointmentType\r\n if (res.error || !appointment) {\r\n this.setState({ isLoading: false });\r\n return;\r\n }\r\n \r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n this.setState({ \r\n isLoading: false, \r\n appointment: appointment, \r\n date: appointment.parentId ? new Date(appointment.date): null,\r\n hour: appointment.parentId ? getHour(new Date(appointment.date)) : null,\r\n hasRights: hasRights,\r\n isCarInService: this.props.caseSettingsState.case!.carInService,\r\n requiresServiceScheduling: !this.props.caseSettingsState.case!.carInService\r\n }, this.setCaseAllocation);\r\n }\r\n\r\n setCaseAllocation = async () => {\r\n if (!this.state.hasRights) {\r\n return;\r\n }\r\n\r\n const allocationResult = await FormHelpers.ParseAllocations(\r\n this.props.workflowForm.workflowFormActions,\r\n this.state.organizations,\r\n this.appUserService\r\n );\r\n if (R.isNil(allocationResult)) {\r\n const partner = this.state.organizations.find(\r\n (item) => item.partnerId === this.props.caseSettingsState.case!.caseStatus.assignedTo!.hoId\r\n );\r\n this.setState(\r\n {\r\n selectedUser: this.props.caseSettingsState.case!.caseStatus.assignedTo,\r\n organizations: this.state.organizations,\r\n },\r\n async () => await this.loadUsers(R.isNil(partner) ? null : partner.partnerId, null)\r\n );\r\n return;\r\n }\r\n if (allocationResult.isLastUser || allocationResult.caseStatusId != null) {\r\n this.setState({ isUserHidden: true });\r\n return;\r\n }\r\n this.setState(\r\n {\r\n selectedUser: allocationResult.user,\r\n organizations: allocationResult.partners,\r\n isUsersDisabled: !R.isNil(allocationResult.user),\r\n },\r\n async () => {\r\n if (allocationResult.partner === null) {\r\n return;\r\n }\r\n await this.loadUsers(allocationResult.partner.partnerId, allocationResult.roleId);\r\n }\r\n );\r\n };\r\n\r\n loadUsers = async (organizationId: number | null, roleId: number | null) => {\r\n if (organizationId === null) {\r\n this.setState({\r\n isLoading2: false\r\n });\r\n } else {\r\n const users = await this.appUserService.GetUserAppUsers();\r\n\r\n this.setState({\r\n users: users.users.filter(\r\n (user) =>\r\n (user.organization!.hoId === organizationId ||\r\n user.organizationId === organizationId) &&\r\n ((roleId !== null && user.roleId === roleId) || roleId === null)\r\n ),\r\n isLoading2: false\r\n });\r\n }\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n getPayloadFormat = async (carInService: boolean) =>{\r\n const response = await getJobListRequest();\r\n const responseData = response.data as Job[];\r\n const selectedJobs = this.state.appointment.appointmentJobTypes.map((job)=>{\r\n const indexJob = responseData.findIndex((item)=> item.id === job.jobTypeId);\r\n return {id:job.jobTypeId, name:responseData[indexJob].displayName}}\r\n )\r\n const finalDate = this.state.date ?? null;\r\n const splitHour = this.state.hour != null ? this.state.hour.split(':') : null;\r\n if (finalDate && splitHour) {\r\n finalDate.setHours(parseInt(splitHour[0]));\r\n finalDate.setMinutes(parseInt(splitHour[1]));\r\n }\r\n const payload = {\r\n serviceId: this.state.appointment.serviceId,\r\n appointmentClient:this.state.appointment.appointmentClient,\r\n appointmentJobTypes: selectedJobs,\r\n jobDetails: this.state.appointment.jobDetails,\r\n vehicle: {\r\n vin: this.state.appointment.vehicle.vin || null,\r\n plateNumber: this.state.appointment.vehicle?.plateNumber || null,\r\n make: this.state.appointment.vehicle?.identifiedMake || null,\r\n model: this.state.appointment.vehicle?.identifiedModel || null,\r\n carBody: this.state.appointment.vehicle?.identifiedCarBody || null,\r\n fuelType: this.state.appointment.vehicle?.identifiedFuelType || null,\r\n registrationDate: this.state.appointment.vehicle.registrationDate,\r\n engineSize: this.state.appointment.vehicle.engineSize,\r\n power: this.state.appointment.vehicle.power,\r\n numberOfKilometers: this.state.appointment.vehicle.numberOfKilometers,\r\n },\r\n date: finalDate != null ? moment(finalDate).format() : null,\r\n appointmentCategoryTypeId: 2,\r\n workflowId: this.props.caseSettingsState.caseSettings!.workflow.id,\r\n parentId:this.state.appointment.id,\r\n caseId:this.state.appointment.caseId,\r\n carInService: carInService\r\n }\r\n return payload;\r\n }\r\n\r\n handleSwitchChange = (checked: boolean, isCarInService:boolean) => {\r\n this.setState({\r\n isCarInService: isCarInService ? checked : !checked,\r\n requiresServiceScheduling: isCarInService ? !checked : checked\r\n });\r\n };\r\n \r\n addNewAppointment = async() => {\r\n const finalDate = this.state.date ?? null;\r\n const splitHour = this.state.hour != null ? this.state.hour.split(':') : null;\r\n let hasErrors = false;\r\n if (!finalDate) {\r\n hasErrors = true;\r\n this.validateFieldRequiredAdd('calendar');\r\n }\r\n if (!splitHour) {\r\n hasErrors = true;\r\n this.validateFieldRequiredAdd('hour');\r\n }\r\n if (hasErrors) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('COMPLETE_MANDATORY_FIELDS', 'Completati campurile obligatorii!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n\r\n this.setState({ executing: true });\r\n const payload = await this.getPayloadFormat(false);\r\n const res = await addAppointment(payload)\r\n if (res.error) {\r\n this.setState({ executing: false });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n return;\r\n }\r\n\r\n await this.submitForm(\r\n Number.parseInt(this.props.match.params.id),\r\n this.props.workflowForm.id,\r\n this.state.selectedUser\r\n );\r\n\r\n this.setState(\r\n {\r\n appointment:{} as AppointmentType,\r\n selectedUser: null,\r\n executing:false\r\n }\r\n );\r\n }\r\n\r\n carInService = async () => {\r\n //Set date and hour to null \r\n this.setState({ date: null, hour: null, executing: true });\r\n\r\n //Create new appointment with car in service = true\r\n const payload = await this.getPayloadFormat(true);\r\n const res = await addAppointment(payload);\r\n if (res.error) {\r\n this.setState({ executing: false });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n\r\n return;\r\n }\r\n }\r\n\r\n handleUserChange = (newValue: AppUser | null) => {\r\n this.setState({ selectedUser: newValue });\r\n };\r\n\r\n displayInfo = (info: string) => {\r\n return (\r\n { e.preventDefault() }}\r\n {...rest}\r\n disableHoverListener={!this.state.hasRights || this.state.executing}\r\n title={info}\r\n placement='right'\r\n >\r\n
\r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n validateFieldRequiredAdd = (field: string) => {\r\n const identifyInput = document\r\n .getElementsByClassName('id-' + field)[0]\r\n .closest('div') as HTMLElement;\r\n \r\n const inputValidate = identifyInput.classList.add('Mui-error'); \r\n return inputValidate;\r\n };\r\n\r\n validateFieldRequiredRemove = (field: string) => {\r\n const identifyInput = document\r\n .getElementsByClassName('id-' + field)[0]\r\n .closest('div') as HTMLElement;\r\n\r\n const inputValidate = identifyInput.classList.remove('Mui-error'); \r\n return inputValidate;\r\n };\r\n\r\n\r\n public render() {\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n\r\n return <>{this.state.isLoading ? :\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n {this.translatorService.Tranlate('APPOINTMENT_CAR_TITLE', 'Car')}\r\n \r\n {this.state.appointment?.vehicle && }\r\n \r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n {this.translatorService.Tranlate('APPOINTMENT_CAR_REPAIR_TITLE', 'Reparație mașină')}\r\n \r\n \r\n {this.state.isCarInService && (\r\n {\r\n console.log(checked);\r\n }}\r\n color=\"primary\"\r\n id=\"isCarInService\"\r\n \r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n
\r\n \r\n {this.translatorService.Tranlate('APPOINTMENT_CAR_IS_IN_SERVICE', 'Mașina este în service')}\r\n \r\n {this.displayInfo(this.translatorService.Tranlate('APPOINTMENT_CAR_IS_IN_SERVICE_INFO', 'Selectează dacă mașina rămâne în service pe perioada reparației și nu este nevoie de o programare'))}\r\n
\r\n }\r\n />\r\n )}\r\n {!this.state.isCarInService && (\r\n {\r\n console.log(checked);\r\n }}\r\n color=\"primary\"\r\n id=\"requiresServiceScheduling\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={\r\n
\r\n \r\n {this.translatorService.Tranlate('APPOINTMENT_REQUIRES_SERVICE_SCHEDULING', 'Necesită programare service')}\r\n \r\n {this.displayInfo(this.translatorService.Tranlate('APPOINTMENT_REQUIRES_SERVICE_SCHEDULING_INFO', 'Selectează dacă este necesară o programare pentru reparația mașinii'))}\r\n
\r\n }\r\n />\r\n )}\r\n
\r\n
\r\n\r\n {this.state.requiresServiceScheduling && this.state.appointment.date !== null ? \r\n
\r\n {\r\n this.validateFieldRequiredRemove('calendar');\r\n this.setState({ date: day });\r\n }} \r\n hour={this.state.hour} \r\n setHour={(hour) => {\r\n this.validateFieldRequiredRemove('hour');\r\n this.setState({ hour:hour });\r\n }} \r\n minDate={new Date()}\r\n customStyle={{\r\n calendarStyle:{marginTop:-335},\r\n hourDropdownStyle:{marginTop:-260}\r\n }}\r\n showDefaultCalendar={false}\r\n />\r\n
\r\n
:<>}\r\n {!this.state.isLoading2 && this.state.users.length > 0 ? (\r\n this.handleUserChange(newValue)}\r\n getOptionLabel={(option: AppUser) => option.userName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n ) : null}\r\n
\r\n this.addNewAppointment()}\r\n disabled={!this.state.hasRights || this.state.executing}\r\n >\r\n {this.translatorService.Tranlate('CASE_DETAILS_BUTTON_SAVE', 'Save')}\r\n \r\n
\r\n
\r\n }\r\n}\r\n};\r\n\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseServiceAddAppointmentFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseServiceAddAppointmentForm as any));","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Button, Checkbox, FormControlLabel, Grid, Switch, Typography } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport NumberFormat from 'react-number-format';\r\nimport * as R from 'ramda';\r\nimport { Appointment, CaseVehicleDetails } from '../../interfaces/Case';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport MomentUtils from '@date-io/moment';\r\nimport moment from 'moment';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport _ from 'lodash';\r\nimport { CalculationTypeCode, CountryCodeEnum } from '../../helpers/Constants';\r\n\r\ninterface ICaseDetailsCaseTabInOutDataFormState {\r\n isLoading: boolean;\r\n hasRights: boolean;\r\n executing: boolean;\r\n caseVehicleDetails: CaseVehicleDetails;\r\n repairDateError: string;\r\n appointment: Appointment | null;\r\n minDate: string | null;\r\n}\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\n\r\nexport interface ExternalCaseDetailsCaseTabInOutDataFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseTabInOutDataFormProps = ExternalCaseDetailsCaseTabInOutDataFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabInOutDataForm extends React.PureComponent<\r\n ICaseDetailsCaseTabInOutDataFormProps,\r\n ICaseDetailsCaseTabInOutDataFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n isLoading: false,\r\n hasRights: false,\r\n executing: false,\r\n caseVehicleDetails: {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n repairDate: null,\r\n hasOkWindows: false,\r\n hasGlitchWindows: false,\r\n hasOkLights: false,\r\n hasGlitchLights: false,\r\n hasOkBodyAndPaint: false,\r\n hasGlitchBodyAndPaint: false,\r\n hasOkWipers: false,\r\n hasGlitchWipers: false,\r\n fuelInTheTank1: false,\r\n fuelInTheTank2: false,\r\n fuelInTheTank3: false,\r\n fuelInTheTank4: false,\r\n fuelInTheTank5: false,\r\n mandatoryEquipment1: true,\r\n mandatoryEquipment2: true,\r\n mandatoryEquipment3: true,\r\n mandatoryEquipment4: true,\r\n mandatoryEquipment5: true,\r\n otherEquipment1: false,\r\n otherEquipment2: false,\r\n otherEquipment3: false,\r\n otherEquipment4: false,\r\n otherEquipment5: false,\r\n hasPickUp: false,\r\n replacementVehicle: false,\r\n documentsReceived1: false,\r\n documentsReceived2: false,\r\n documentsReceived3: false,\r\n documentsReceived4: false\r\n } as CaseVehicleDetails,\r\n appointment: null,\r\n minDate: null\r\n } as ICaseDetailsCaseTabInOutDataFormState;\r\n\r\n inputTextValidator = React.createRef();\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseInOutDataForm();\r\n }\r\n );\r\n }\r\n\r\n loadCaseInOutDataForm = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n \r\n this.setState({\r\n ...this.state,\r\n isLoading: true\r\n });\r\n\r\n const [appointment, lastApprovedCaseCalculationHistory] = await Promise.all([\r\n this.props.workflowForm.appointmentCategoryTypeId != null ? this.caseService.GetAppointmentByType(caseId, this.props.workflowForm.appointmentCategoryTypeId) : null,\r\n this.caseService.GetLastApprovedCaseCalculationHistory(caseId, CalculationTypeCode.ALT.toString())\r\n ]);\r\n\r\n console.log('Programare asociata: ', appointment);\r\n if (appointment == null) {\r\n // this.props.enqueueSnackbar(this.translatorService.Tranlate('NO_APPOINTMENT_FOUND', 'Nu s-a gasit programarea asociata!'), {\r\n // variant: 'warning'\r\n // });\r\n\r\n this.setState({\r\n ...this.state,\r\n isLoading: false\r\n }); \r\n\r\n return;\r\n }\r\n\r\n let caseVehicleDetails = await this.caseService.GetCurrentVehicleDetails(appointment.id);\r\n if (R.isNil(caseVehicleDetails)) {\r\n caseVehicleDetails = _.cloneDeep(this.state.caseVehicleDetails);\r\n caseVehicleDetails.repairDate = appointment.date ? moment(appointment.date).format('YYYY-MM-DD') : null;\r\n caseVehicleDetails.repairPrice = lastApprovedCaseCalculationHistory != null ? lastApprovedCaseCalculationHistory.amount * 1.1 : caseVehicleDetails.repairPrice;\r\n caseVehicleDetails.appointmentId = appointment.id;\r\n }\r\n \r\n console.log('caseVehicleDetails', caseVehicleDetails);\r\n \r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n this.setState({\r\n ...this.state,\r\n isLoading: false,\r\n hasRights: hasRights,\r\n caseVehicleDetails: caseVehicleDetails,\r\n appointment: appointment,\r\n minDate: appointment && appointment.date ? moment(appointment.date).format('YYYY-MM-DD') : null\r\n });\r\n };\r\n\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n isAllowed = (values: any) => {\r\n const { floatValue } = values;\r\n console.log('isAllowed', floatValue);\r\n return floatValue === undefined || floatValue <= 999999.99;\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n const countryCode = (this.props.appState.appUser?.organization?.country ?? null)?.code ?? CountryCodeEnum.RO.toString();\r\n if (countryCode == CountryCodeEnum.CZ.toString()) {\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator=\" \"\r\n decimalSeparator=\",\"\r\n decimalScale={2}\r\n fixedDecimalScale={true}\r\n isAllowed={this.isAllowed}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n\r\n };\r\n\r\n submitCaseVehicleDetailsData = async (e: any) => {\r\n try {\r\n if (this.state.caseVehicleDetails && !this.state.caseVehicleDetails.repairDate) { \r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('VALIDATORS_REQUIRED_REPAIR_DATE', 'Campul estimare data reparatie este obligatoriu!'), {\r\n variant: 'error'\r\n }); \r\n return;\r\n }\r\n\r\n this.setState({ executing: true });\r\n\r\n let newCaseVehicleDetails = {\r\n ...this.state.caseVehicleDetails\r\n };\r\n\r\n if (this.state.caseVehicleDetails.id === 0) {\r\n newCaseVehicleDetails = await this.caseService.AddCaseVehicleDetails(this.state.caseVehicleDetails);\r\n } else {\r\n await this.caseService.UpdateCaseVehicleDetails(newCaseVehicleDetails);\r\n }\r\n\r\n await this.submitForm(\r\n this.props.caseSettingsState.case!.id,\r\n this.props.workflowForm.id,\r\n null\r\n );\r\n\r\n await this.loadCaseInOutDataForm();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n onChange =\r\n (fieldName: string, fieldNameId?: string) => (e: any, newValue?: IReferential | null) => {\r\n !R.isNil(fieldNameId)\r\n ? this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n [fieldName]: newValue || e.target.value,\r\n [fieldNameId]: Utils.GetIdOrNull(newValue)\r\n }\r\n })\r\n : this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n [fieldName]: newValue || e.target.value\r\n }\r\n });\r\n };\r\n\r\n onChangeCheckedField = (fieldName: string, fieldNameId?: string) => (e: any) => {\r\n !R.isNil(fieldNameId)\r\n ? this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n [fieldName]: e.target.value.checked\r\n }\r\n })\r\n : this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n [fieldName]: e.target.value.checked\r\n }\r\n });\r\n };\r\n\r\n handleHasOkWindows = (e: any) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n hasOkWindows: e.currentTarget.checked,\r\n hasGlitchWindows: !e.currentTarget.checked\r\n }\r\n });\r\n };\r\n\r\n handleHasOkLights = (e: any) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n hasOkLights: e.currentTarget.checked,\r\n hasGlitchLights: !e.currentTarget.checked\r\n }\r\n });\r\n };\r\n\r\n handleHasOkBodyAndPaint = (e: any) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n hasOkBodyAndPaint: e.currentTarget.checked,\r\n hasGlitchBodyAndPaint: !e.currentTarget.checked\r\n }\r\n });\r\n };\r\n\r\n handleHasOkWipers = (e: any) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n hasOkWipers: e.currentTarget.checked,\r\n hasGlitchWipers: !e.currentTarget.checked\r\n }\r\n });\r\n };\r\n\r\n handleCheckBoxFuelInTheTank1Change = async (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n fuelInTheTank1: checked,\r\n fuelInTheTank2: checked ? false : this.state.caseVehicleDetails.fuelInTheTank2,\r\n fuelInTheTank3: checked ? false : this.state.caseVehicleDetails.fuelInTheTank3,\r\n fuelInTheTank4: checked ? false : this.state.caseVehicleDetails.fuelInTheTank4,\r\n }\r\n });\r\n }\r\n\r\n handleCheckBoxFuelInTheTank2Change = async (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n fuelInTheTank2: checked,\r\n fuelInTheTank1: checked ? false : this.state.caseVehicleDetails.fuelInTheTank1,\r\n fuelInTheTank3: checked ? false : this.state.caseVehicleDetails.fuelInTheTank3,\r\n fuelInTheTank4: checked ? false : this.state.caseVehicleDetails.fuelInTheTank4,\r\n fuelInTheTank5: checked ? false : this.state.caseVehicleDetails.fuelInTheTank5\r\n }\r\n });\r\n }\r\n\r\n handleCheckBoxFuelInTheTank3Change = async (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n fuelInTheTank3: checked,\r\n fuelInTheTank1: checked ? false : this.state.caseVehicleDetails.fuelInTheTank1,\r\n fuelInTheTank2: checked ? false : this.state.caseVehicleDetails.fuelInTheTank2,\r\n fuelInTheTank4: checked ? false : this.state.caseVehicleDetails.fuelInTheTank4,\r\n fuelInTheTank5: checked ? false : this.state.caseVehicleDetails.fuelInTheTank5\r\n }\r\n });\r\n }\r\n\r\n handleCheckBoxFuelInTheTank4Change = async (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n fuelInTheTank4: checked,\r\n fuelInTheTank1: checked ? false : this.state.caseVehicleDetails.fuelInTheTank1,\r\n fuelInTheTank2: checked ? false : this.state.caseVehicleDetails.fuelInTheTank2,\r\n fuelInTheTank3: checked ? false : this.state.caseVehicleDetails.fuelInTheTank3,\r\n fuelInTheTank5: checked ? false : this.state.caseVehicleDetails.fuelInTheTank5\r\n }\r\n });\r\n }\r\n\r\n handleCheckBoxFuelInTheTank5Change = async (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n fuelInTheTank5: checked,\r\n fuelInTheTank1: checked ? false : this.state.caseVehicleDetails.fuelInTheTank1,\r\n fuelInTheTank2: checked ? false : this.state.caseVehicleDetails.fuelInTheTank2,\r\n fuelInTheTank3: checked ? false : this.state.caseVehicleDetails.fuelInTheTank3,\r\n fuelInTheTank4: checked ? false : this.state.caseVehicleDetails.fuelInTheTank4\r\n }\r\n });\r\n }\r\n\r\n handleCheckBoxMandatoryEquipment1Change = async (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n mandatoryEquipment1: checked\r\n }\r\n });\r\n }\r\n\r\n handleCheckBoxMandatoryEquipment2Change = async (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n mandatoryEquipment2: checked\r\n }\r\n });\r\n }\r\n\r\n handleCheckBoxMandatoryEquipment3Change = async (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n mandatoryEquipment3: checked\r\n }\r\n });\r\n }\r\n\r\n handleCheckBoxMandatoryEquipment4Change = async (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n mandatoryEquipment4: checked\r\n }\r\n });\r\n }\r\n\r\n handleCheckBoxMandatoryEquipment5Change = async (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n mandatoryEquipment5: checked\r\n }\r\n });\r\n }\r\n\r\n handleCheckBoxOtherEquipment1Change = async (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n otherEquipment1: checked\r\n }\r\n });\r\n }\r\n\r\n handleCheckBoxOtherEquipment2Change = async (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n otherEquipment2: checked\r\n }\r\n });\r\n }\r\n\r\n handleCheckBoxOtherEquipment3Change = async (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n otherEquipment3: checked\r\n }\r\n });\r\n }\r\n \r\n handleCheckBoxOtherEquipment4Change = async (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n otherEquipment4: checked\r\n }\r\n });\r\n }\r\n\r\n handleCheckBoxOtherEquipment5Change = async (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n otherEquipment5: checked\r\n }\r\n });\r\n }\r\n\r\n handleHasPickUp = (e: any) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n hasPickUp: e.currentTarget.checked\r\n }\r\n });\r\n };\r\n\r\n handleReplacementVehicle = (e: any) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n replacementVehicle: e.currentTarget.checked\r\n }\r\n });\r\n };\r\n\r\n handleCheckBoxDocumentsReceived1Change = (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n documentsReceived1: checked\r\n }\r\n });\r\n }\r\n\r\n handleCheckBoxDocumentsReceived2Change = (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n documentsReceived2: checked\r\n }\r\n });\r\n }\r\n\r\n handleCheckBoxDocumentsReceived3Change = (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n documentsReceived3: checked\r\n }\r\n });\r\n }\r\n \r\n handleCheckBoxDocumentsReceived4Change = (checked: boolean) => {\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n documentsReceived4: checked\r\n }\r\n });\r\n }\r\n\r\n \r\n handleRepairDateChange = (\r\n date: MaterialUiPickersDate | null,\r\n value?: string | null\r\n ) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n repairDate: date.format('YYYY-MM-DD'),\r\n },\r\n repairDateError: ''\r\n });\r\n };\r\n\r\n validateDates = (repairDate: string | null): void => {\r\n /*\r\n Validate repair date\r\n */\r\n let repairDateError = '';\r\n if (!repairDate) {\r\n repairDateError = this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu');\r\n } \r\n\r\n this.setState({\r\n repairDateError: repairDateError\r\n });\r\n }\r\n\r\n rendeCaseVehicleDetailsDataForm = () => {\r\n return (\r\n {\r\n this.submitCaseVehicleDetailsData(e);\r\n }}\r\n >\r\n
\r\n \r\n \r\n {/* VEHICLE_CONDITION_FROM_OUTSIDE_SECTION */}\r\n \r\n {this.translatorService.Tranlate('VEHICLE_DETAILS_REPAIR_DATE', 'Estimare data reparatie')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {/* VEHICLE_CONDITION_FROM_OUTSIDE_SECTION */}\r\n \r\n {this.translatorService.Tranlate('VEHICLE_DETAILS_REPAIR_PRICE_SECTION', 'Estimarea cost reparatie')}\r\n \r\n \r\n {\r\n const inputValue = e.target.value;\r\n const parsedValue = inputValue === \"\" || isNaN(inputValue) ? null : parseFloat(inputValue);\r\n this.setState({\r\n caseVehicleDetails: {\r\n ...this.state.caseVehicleDetails,\r\n repairPrice: parsedValue\r\n }\r\n }, () => {\r\n console.log('repairPrice', this.state.caseVehicleDetails);\r\n });\r\n }} \r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('VEHICLE_DETAILS_REPAIR_PRICE', 'Pret estimativ reparatie')}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom,\r\n style: { fontWeight: 500 }\r\n }}\r\n />\r\n \r\n \r\n \r\n\r\n {/* VEHICLE_SERVICE_COMMENT_SECTION */}\r\n \r\n {this.translatorService.Tranlate('VEHICLE_SERVICE_COMMENT_SECTION', 'Comentariu service')}\r\n \r\n \r\n \r\n this.onChange('serviceComment')(e)}\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_SERVICE_COMMENT_SECTION',\r\n 'Comentariu service'\r\n )}\r\n multiline\r\n variant=\"outlined\"\r\n rows={2}\r\n />\r\n \r\n \r\n {/* VEHICLE_CONDITION_FROM_OUTSIDE_SECTION */}\r\n \r\n {this.translatorService.Tranlate('VEHICLE_CONDITION_FROM_OUTSIDE_SECTION', 'Vehicle condition from the outside')}\r\n \r\n \r\n \r\n
\r\n this.handleHasOkWindows(e)}\r\n color=\"primary\"\r\n />\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_DETAILS_HAS_OK_WINDOWS_AND_WINDSHIELD',\r\n 'Geamuri si parbriz OK'\r\n )}\r\n labelPlacement=\"start\"\r\n className=\"mt-3 ml-2 mr-0\"\r\n />\r\n
\r\n
\r\n \r\n this.onChange('hasWindowsComment')(e)}\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_DETAILS_HAS_OK_WINDOWS_AND_WINDSHIELD_COMMENT',\r\n 'Observatii geamuri si parbriz'\r\n )}\r\n multiline\r\n variant=\"outlined\"\r\n rows={2}\r\n />\r\n \r\n
\r\n\r\n \r\n \r\n
\r\n this.handleHasOkLights(e)}\r\n color=\"primary\"\r\n />\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_DETAILS_HAS_OK_LIGHTS',\r\n 'Lumini OK'\r\n )}\r\n labelPlacement=\"start\"\r\n className=\"mt-3 ml-2 mr-0\"\r\n />\r\n
\r\n
\r\n \r\n this.onChange('hasLightsComment')(e)}\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_DETAILS_HAS_OK_LIGHTS_COMMENT',\r\n 'Observatii lumini'\r\n )}\r\n multiline\r\n variant=\"outlined\"\r\n rows={2}\r\n />\r\n \r\n
\r\n\r\n \r\n \r\n
\r\n this.handleHasOkBodyAndPaint(e)}\r\n color=\"primary\"\r\n />\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_DETAILS_HAS_OK_BODY_AND_PAINT',\r\n 'Caroserie si vopsea OK'\r\n )}\r\n labelPlacement=\"start\"\r\n className=\"mt-3 ml-2 mr-0\"\r\n />\r\n
\r\n
\r\n \r\n this.onChange('hasBodyAndPaintComment')(e)}\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_DETAILS_HAS_OK_BODY_AND_PAINT_COMMENT',\r\n 'Observatii caroserie si vopsea'\r\n )}\r\n multiline\r\n variant=\"outlined\"\r\n rows={2}\r\n />\r\n \r\n
\r\n\r\n \r\n \r\n
\r\n this.handleHasOkWipers(e)}\r\n color=\"primary\"\r\n />\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_DETAILS_HAS_OK_WIPERS',\r\n 'Stergatoare OK'\r\n )}\r\n labelPlacement=\"start\"\r\n className=\"mt-3 ml-2 mr-0\"\r\n />\r\n
\r\n
\r\n \r\n this.onChange('hasWipersComment')(e)}\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_DETAILS_HAS_OK_WIPERS_COMMENT',\r\n 'Observatii stergatoare'\r\n )}\r\n multiline\r\n variant=\"outlined\"\r\n rows={2}\r\n />\r\n \r\n
\r\n \r\n {/* FUEL_IN_THE_TANK_SECTION */}\r\n \r\n {this.translatorService.Tranlate('FUEL_IN_THE_TANK_LABEL', 'Fuel in the tank')}\r\n \r\n \r\n this.handleCheckBoxFuelInTheTank1Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={'0'}\r\n className=\"mt-3 ml-0 mr-5\"\r\n />\r\n\r\n this.handleCheckBoxFuelInTheTank2Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={'1/4'}\r\n className=\"mt-3 ml-0 mr-5\"\r\n />\r\n\r\n this.handleCheckBoxFuelInTheTank3Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={'1/2'}\r\n className=\"mt-3 ml-0 mr-5\"\r\n />\r\n\r\n this.handleCheckBoxFuelInTheTank4Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={'3/4'}\r\n className=\"mt-3 ml-0 mr-5\"\r\n />\r\n\r\n this.handleCheckBoxFuelInTheTank5Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={'1'}\r\n className=\"mt-3 ml-0 mr-5\"\r\n />\r\n \r\n\r\n {/* MANDATORY_EQUIPMENT_SECTION */}\r\n \r\n {this.translatorService.Tranlate('MANDATORY_EQUIPMENT_SECTION', 'Mandatory equipment')}\r\n \r\n \r\n this.handleCheckBoxMandatoryEquipment1Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={this.translatorService.Tranlate('MANDATORY_EQUIPMENT_SECTION_1', 'First aid kit')}\r\n className=\"mt-3 ml-0 mr-3\"\r\n />\r\n\r\n this.handleCheckBoxMandatoryEquipment2Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={this.translatorService.Tranlate('MANDATORY_EQUIPMENT_SECTION_2', 'Itrogens')}\r\n className=\"mt-3 ml-0 mr-3\"\r\n />\r\n\r\n this.handleCheckBoxMandatoryEquipment3Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={this.translatorService.Tranlate('MANDATORY_EQUIPMENT_SECTION_3', 'Reserve')}\r\n className=\"mt-3 ml-0 mr-3\"\r\n /> \r\n\r\n this.handleCheckBoxMandatoryEquipment4Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={this.translatorService.Tranlate('MANDATORY_EQUIPMENT_SECTION_4', 'Rope')}\r\n className=\"mt-3 ml-0 mr-3\"\r\n /> \r\n\r\n this.handleCheckBoxMandatoryEquipment5Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={this.translatorService.Tranlate('MANDATORY_EQUIPMENT_SECTION_5', 'Light bulbs')} \r\n className=\"mt-3 ml-0 mr-3\"\r\n /> \r\n \r\n\r\n {/* OTHER_EQUIPMENT_SECTION */}\r\n \r\n {this.translatorService.Tranlate('OTHER_EQUIPMENT_SECTION', 'Other equipment')}\r\n \r\n \r\n this.handleCheckBoxOtherEquipment1Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={this.translatorService.Tranlate('OTHER_EQUIPMENT_SECTION_1', 'Car radio')}\r\n className=\"mt-3 ml-0 mr-3\"\r\n />\r\n\r\n this.handleCheckBoxOtherEquipment2Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={this.translatorService.Tranlate('OTHER_EQUIPMENT_SECTION_2', 'Navigation')}\r\n className=\"mt-3 ml-0 mr-3\"\r\n />\r\n\r\n this.handleCheckBoxOtherEquipment3Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={this.translatorService.Tranlate('OTHER_EQUIPMENT_SECTION_3', 'Hands free')}\r\n className=\"mt-3 ml-0 mr-3\"\r\n />\r\n\r\n this.handleCheckBoxOtherEquipment4Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={this.translatorService.Tranlate('OTHER_EQUIPMENT_SECTION_4', 'Fire extinguisher')}\r\n className=\"mt-3 ml-0 mr-3\"\r\n />\r\n\r\n this.handleCheckBoxOtherEquipment5Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={this.translatorService.Tranlate('OTHER_EQUIPMENT_SECTION_5', 'Profession')}\r\n className=\"mt-3 ml-0 mr-3\"\r\n />\r\n\r\n \r\n\r\n {/* REQUIREMENT_SECTION */}\r\n \r\n {this.translatorService.Tranlate('REQUIREMENT_SECTION', 'Requirement')}\r\n \r\n \r\n \r\n
\r\n this.handleHasPickUp(e)}\r\n color=\"primary\"\r\n />\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_DETAILS_HAS_PICK_UP',\r\n 'Pick-up'\r\n )}\r\n labelPlacement=\"start\"\r\n className=\"mt-3 ml-2 mr-0\"\r\n />\r\n
\r\n
\r\n\r\n \r\n this.onChange('pickUpCode')(e)}\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_DETAILS_PICK_UP_CODE',\r\n 'Pick-up code'\r\n )}\r\n multiline\r\n variant=\"outlined\"\r\n rows={2}\r\n />\r\n \r\n\r\n \r\n
\r\n this.handleReplacementVehicle(e)}\r\n color=\"primary\"\r\n />\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_DETAILS_HAS_REPLACEMENT_VEHICLE',\r\n 'Replacement vehicle'\r\n )}\r\n labelPlacement=\"start\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n
\r\n
\r\n
\r\n\r\n {/* DOCUMENTS_RECEIVED_SECTION */}\r\n \r\n {this.translatorService.Tranlate('DOCUMENTS_RECEIVED_SECTION', 'Documents received')}\r\n \r\n \r\n this.handleCheckBoxDocumentsReceived1Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={this.translatorService.Tranlate('DOCUMENTS_RECEIVED_SECTION_1', 'Large TP')}\r\n className=\"mt-3 ml-0 mr-5\"\r\n />\r\n\r\n this.handleCheckBoxDocumentsReceived2Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={this.translatorService.Tranlate('DOCUMENTS_RECEIVED_SECTION_2', 'Small TP')}\r\n className=\"mt-3 ml-0 mr-5\"\r\n />\r\n\r\n this.handleCheckBoxDocumentsReceived3Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={this.translatorService.Tranlate('DOCUMENTS_RECEIVED_SECTION_3', 'Green card')}\r\n className=\"mt-3 ml-0 mr-5\"\r\n />\r\n\r\n this.handleCheckBoxDocumentsReceived4Change(e.target.checked)}\r\n disabled={!this.state.hasRights}\r\n \r\n >\r\n }\r\n label={this.translatorService.Tranlate('DOCUMENTS_RECEIVED_SECTION_4', 'Service book')}\r\n className=\"mt-3 ml-0 mr-5\"\r\n />\r\n \r\n
\r\n\r\n this.validateDates(this.state.caseVehicleDetails.repairDate)}\r\n >\r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
{this.rendeCaseVehicleDetailsDataForm()}
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabInOutDataFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabInOutDataForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Button, Grid} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport {\r\n ReferentialCode,\r\n InsuredTypeCode\r\n} from '../../helpers/Constants';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport NumberFormat from 'react-number-format';\r\nimport { CaseClient } from '../../interfaces/Case';\r\nimport { CNP } from 'romanian-personal-identity-code-validator';\r\nimport * as R from 'ramda';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\ninterface ICaseDetailsCaseTabIntegrationClientDataFormState {\r\n isLoading: boolean;\r\n hasRights: boolean;\r\n executing: boolean;\r\n isUserHidden: boolean;\r\n clientData: CaseClient;\r\n personTypes: Array;\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseTabIntegrationClientDataFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseTabIntegrationClientDataFormProps = ExternalCaseDetailsCaseTabIntegrationClientDataFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabIntegrationClientDataForm extends React.PureComponent<\r\nICaseDetailsCaseTabIntegrationClientDataFormProps,\r\nICaseDetailsCaseTabIntegrationClientDataFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n isLoading: false,\r\n hasRights: false,\r\n executing: false,\r\n isUserHidden: false,\r\n clientData: {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n caseSectionStepFormId: this.props.workflowForm.id,\r\n clientId: 0,\r\n pin: '',\r\n companyNumber: '',\r\n companyName: '',\r\n gdprAgreement: true,\r\n address: '',\r\n city: null,\r\n region: null,\r\n district: null,\r\n bankAccount: '',\r\n email: '',\r\n phone: ''\r\n } as CaseClient\r\n } as ICaseDetailsCaseTabIntegrationClientDataFormState;\r\n\r\n inputTextValidator = React.createRef();\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseClientDataForm();\r\n }\r\n );\r\n }\r\n\r\n loadCaseClientDataForm = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (R.isNil(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n const casee = this.props.caseSettingsState.case;\r\n\r\n let caseClient = this.state.clientData;\r\n if (!R.isNil(casee!.caseClient)) {\r\n caseClient = casee!.caseClient;\r\n }\r\n\r\n const personTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.PersonType\r\n );\r\n\r\n const personTypeList = await this.appReferentialService.Get(personTypeRef!.baseUrl);\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n console.log('personTypeList', personTypeList);\r\n this.setState({\r\n ...this.state,\r\n isLoading: false,\r\n hasRights: hasRights,\r\n isUserHidden: !hasRights,\r\n personTypes: personTypeList,\r\n clientData: caseClient\r\n });\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n\r\n submitClientData = async (e: any) => {\r\n try {\r\n this.setState({ executing: true });\r\n\r\n let newCaseClient = {\r\n ...this.state.clientData,\r\n caseSectionStepFormId: this.props.workflowForm.id\r\n };\r\n\r\n if (this.state.clientData.id === 0) {\r\n newCaseClient = await this.caseService.AddCaseClient(this.state.clientData);\r\n } else {\r\n await this.caseService.UpdateCaseClient(newCaseClient);\r\n }\r\n\r\n await this.submitForm(\r\n this.props.caseSettingsState.case!.id,\r\n this.props.workflowForm.id,\r\n null\r\n );\r\n\r\n this.props.SetCaseClientData(newCaseClient);\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n handleCNPChange = (e: any) => {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n pin: e.target.value\r\n }\r\n });\r\n };\r\n\r\n handlePersonTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n personType: newValue,\r\n personTypeId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n };\r\n\r\n handleTextChange = (e: any) => {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n email: e.target.value\r\n }\r\n });\r\n };\r\n\r\n handleAddressChange = (e: any) => {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n address: e.target.value\r\n }\r\n });\r\n };\r\n\r\n handleBankAccountChange = (e: any) => {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n bankAccount: e.target.value\r\n }\r\n });\r\n };\r\n\r\n handleIsActiveAgreement = (e: any) => {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n gdprAgreement: e.currentTarget.checked\r\n }\r\n });\r\n };\r\n\r\n\r\n handleCnpCuiOnBlur = async (newValue: any) => {\r\n if (\r\n isNullOrUndefined(this.state.clientData.personType) ||\r\n (this.state.clientData.pin.length == 0 && this.state.clientData.companyNumber.length == 0)\r\n ) {\r\n return;\r\n }\r\n this.setState({ isLoading: true });\r\n\r\n const pin_cui =\r\n this.state.clientData.personType!.code === InsuredTypeCode.PJ\r\n ? this.state.clientData.companyNumber\r\n : this.state.clientData.pin;\r\n\r\n const clients = await this.caseService.SearchClient(\r\n this.state.clientData.personType!.id,\r\n pin_cui,\r\n ''\r\n );\r\n\r\n if (clients.length > 0) {\r\n const client = clients[0];\r\n this.setState({\r\n ...this.state,\r\n clientData: {\r\n ...this.state.clientData,\r\n clientId: client.id,\r\n companyName: client.companyName,\r\n companyNumber: client.companyNumber,\r\n contactPerson: client.contactPerson,\r\n phone: client.phone,\r\n firstName: client.firstName,\r\n lastName: client.lastName,\r\n email: client.email,\r\n address: client.address\r\n }\r\n });\r\n }\r\n\r\n this.setState({ isLoading: false });\r\n };\r\n\r\n\r\n rendeClientDataForm = () => {\r\n return (\r\n {\r\n this.submitClientData(e);\r\n }}\r\n >\r\n
\r\n \r\n this.handlePersonTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n {!R.isNil(this.state.clientData.personType!) &&\r\n this.state.clientData.personType!.code === InsuredTypeCode.PJ ? (\r\n
\r\n {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n companyNumber: e.target.value\r\n }\r\n });\r\n }}\r\n onBlur={async (e: any) => {\r\n await this.handleCnpCuiOnBlur(e);\r\n }}\r\n label={this.translatorService.Tranlate('CLIENT_DATA_FORM_CUI', 'CUI')}\r\n />\r\n\r\n {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n companyName: e.target.value\r\n }\r\n });\r\n }}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'CLIENT_DATA_FORM_COMPANY_NAME',\r\n 'Nume companie'\r\n )}\r\n />\r\n\r\n {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n contactPerson: e.target.value\r\n }\r\n });\r\n }}\r\n placeholder={this.translatorService.Tranlate(\r\n 'CLIENT_DATA_FORM_CONTACT_PERSON',\r\n 'Persoana de contact'\r\n )}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'CLIENT_DATA_FORM_CONTACT_PERSON',\r\n 'Persoana de contact'\r\n )}\r\n />\r\n
\r\n ) : (\r\n
\r\n {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n firstName: e.target.value\r\n }\r\n });\r\n }}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('CLIENT_DATA_FORM_FULL_NAME', 'Nume complet')}\r\n />\r\n
\r\n )}\r\n\r\n this.handleTextChange(e)}\r\n validators={['isEmail']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_EMAIL', 'E-mail invalid')\r\n ]}\r\n label={this.translatorService.Tranlate('CLIENT_DATA_FORM_EMAIL', 'E-mail')}\r\n />\r\n\r\n {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n phone: e.target.value\r\n }\r\n });\r\n }}\r\n name=\"phone\"\r\n className=\"m-2\"\r\n label={this.translatorService.Tranlate('CLIENT_DATA_FORM_PHONE', 'Telefon')}\r\n value={this.state.clientData.phone || ''}\r\n />\r\n\r\n \r\n \r\n
\r\n {\r\n this.setState({\r\n ...this.state,\r\n clientData: {\r\n ...this.state.clientData,\r\n address: e.target.value\r\n }\r\n });\r\n }}\r\n label={this.translatorService.Tranlate('CLIENT_DATA_FORM_ADDRESS', 'Adresa')}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
{this.rendeClientDataForm()}
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabIntegrationClientDataFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabIntegrationClientDataForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Button } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport {\r\n WorkflowFormAction,\r\n WorkflowSectionStepForm\r\n} from '../../interfaces/Workflow';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CaseAttachment, CaseRequest } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IWorkflowService } from '../../services/Interfaces/IWorkflowService';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport {\r\n WorkflowFormActionTypeCode\r\n} from '../../helpers/Constants';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport 'react-dropdown-tree-select/dist/styles.css';\r\nimport * as R from 'ramda';\r\n\r\n\r\ninterface ICaseDetailsCaseCarfixAnalysisFormState {\r\n backToServiceFormData: CaseRequest;\r\n selectedUser: AppUser | null;\r\n isLoading: boolean;\r\n isLoading2: boolean;\r\n hasRights: boolean;\r\n isUserHidden: boolean;\r\n executing: boolean;\r\n formSubmitted: boolean;\r\n wfTransitionStepAction: WorkflowFormAction;\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseCarfixAnalysisFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseCarfixAnalysisFormProps =\r\n ExternalCaseDetailsCaseCarfixAnalysisFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n } & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseCarfixAnalysisForm extends React.PureComponent<\r\n ICaseDetailsCaseCarfixAnalysisFormProps,\r\n ICaseDetailsCaseCarfixAnalysisFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private workflowService!: IWorkflowService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n backToServiceFormData: {} as CaseRequest,\r\n selectedUser: null,\r\n isLoading: false,\r\n isLoading2: false,\r\n hasRights: false,\r\n isUserHidden: false,\r\n executing: false,\r\n formSubmitted: false,\r\n wfTransitionStepAction: {} as WorkflowFormAction\r\n } as ICaseDetailsCaseCarfixAnalysisFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseBackToServiceForm();\r\n }\r\n );\r\n }\r\n\r\n\r\n loadCaseBackToServiceForm = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseStatusId = this.props.caseSettingsState.case?.caseStatus?.caseStatusId;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n const caseRequest = {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n text: this.translatorService.Tranlate(this.props.workflowForm.comments, ''),\r\n subject: '',\r\n to: '',\r\n clientEmail: !R.isNil(this.props.caseSettingsState.case!.caseClient) ? this.props.caseSettingsState.case!.caseClient.email : '',\r\n userIdTo: '',\r\n organizationId: null,\r\n attachments: [] as CaseAttachment[],\r\n caseSectionStepFormId: this.props.workflowForm.id\r\n } as CaseRequest;\r\n\r\n const wfStepActions = await this.workflowService.GetWorkflowSectionStepFormActions(\r\n this.props.workflowForm.id\r\n );\r\n\r\n const wfTransitionStepAction =\r\n wfStepActions.find(\r\n (item) =>\r\n item.actionType?.code === WorkflowFormActionTypeCode.STATUS_TRANSITION &&\r\n caseStatusId === item.fromStatusId\r\n ) || ({} as WorkflowFormAction);\r\n\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n \r\n this.setState(\r\n {\r\n backToServiceFormData: caseRequest,\r\n isLoading: false,\r\n hasRights: hasRights,\r\n wfTransitionStepAction\r\n }\r\n );\r\n };\r\n\r\n sendEmail = async () => {\r\n try {\r\n let request = this.state.backToServiceFormData;\r\n const { toWorkflowId, toStatusId } = this.state.wfTransitionStepAction;\r\n const userId = this.props.appState?.appUser?.id || this.state.selectedUser?.id;\r\n\r\n if (isNullOrUndefined(request)) {\r\n return;\r\n }\r\n\r\n this.setState({ executing: true, formSubmitted: true });\r\n\r\n request!.id = 0;\r\n\r\n if (toWorkflowId && toStatusId) {\r\n await this.caseService.ChangeCaseWorkflow(\r\n toWorkflowId,\r\n request.caseId,\r\n userId!,\r\n toStatusId\r\n );\r\n } else {\r\n request = await this.caseService.AddCaseRequest(request);\r\n }\r\n\r\n await this.submitForm(request.caseId, request.caseSectionStepFormId, this.state.selectedUser);\r\n\r\n this.setState(\r\n {\r\n backToServiceFormData: {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n text: this.translatorService.Tranlate(this.props.workflowForm.comments, ''),\r\n subject: '',\r\n to: '',\r\n clientEmail: !R.isNil(this.props.caseSettingsState.case!.caseClient) ? this.props.caseSettingsState.case!.caseClient.email : '',\r\n userId: '',\r\n organizationId: null,\r\n attachments: [] as CaseAttachment[],\r\n caseSectionStepFormId: this.props.workflowForm.id\r\n } as CaseRequest,\r\n formSubmitted: false,\r\n selectedUser: null\r\n },\r\n );\r\n\r\n if (toWorkflowId && toStatusId) {\r\n this.props.SetCaseSettings(request.caseId);\r\n }\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appuser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appuser);\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n console.log('newStatus', newStatus);\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n if (appuser !== null) {\r\n this.props.AddPartner(appuser!.hoId === null ? appuser!.organizationId : appuser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n handleUserChange = (newValue: AppUser | null) => {\r\n this.setState({ selectedUser: newValue });\r\n };\r\n\r\n rendeBackToServiceForm = () => {\r\n return isNullOrUndefined(this.state.backToServiceFormData) ? null : (\r\n {\r\n this.sendEmail();\r\n }}\r\n >\r\n
\r\n ) => {\r\n this.setState({\r\n backToServiceFormData: {\r\n ...this.state.backToServiceFormData,\r\n text: e.target.value\r\n }\r\n });\r\n }}\r\n variant=\"outlined\"\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n
\r\n
\r\n ) => {\r\n this.setState({\r\n backToServiceFormData: {\r\n ...this.state.backToServiceFormData,\r\n clientEmail: e.target.value\r\n }\r\n });\r\n }}\r\n label={this.translatorService.Tranlate(\r\n 'CASE_BACK_TO_SERVICE_FORM_USER_LABEL',\r\n 'Utilizator'\r\n )}\r\n />\r\n
\r\n\r\n this.setState({ formSubmitted: true })}\r\n disabled={!this.state.hasRights || this.state.executing}\r\n >\r\n {this.translatorService.Tranlate('CASE_COMMENT_SEND', 'Trimite')}\r\n \r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
{this.rendeBackToServiceForm()}
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseCarfixAnalysisFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseCarfixAnalysisForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Button } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport {\r\n WorkflowFormAction,\r\n WorkflowSectionStepForm\r\n} from '../../interfaces/Workflow';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { CaseAttachment, CaseRequest } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IWorkflowService } from '../../services/Interfaces/IWorkflowService';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport {\r\n WorkflowFormActionTypeCode\r\n} from '../../helpers/Constants';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport 'react-dropdown-tree-select/dist/styles.css';\r\nimport * as R from 'ramda';\r\nimport _ from 'lodash';\r\n\r\n\r\ninterface ICaseDetailsCaseCarfixBackToServiceFormState {\r\n backToServiceFormData: CaseRequest;\r\n selectedUser: AppUser | null;\r\n isLoading: boolean;\r\n isLoading2: boolean;\r\n hasRights: boolean;\r\n isUserHidden: boolean;\r\n executing: boolean;\r\n formSubmitted: boolean;\r\n wfTransitionStepAction: WorkflowFormAction;\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseCarfixBackToServiceFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseCarfixBackToServiceFormProps =\r\n ExternalCaseDetailsCaseCarfixBackToServiceFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n } & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseCarfixBackToServiceForm extends React.PureComponent<\r\n ICaseDetailsCaseCarfixBackToServiceFormProps,\r\n ICaseDetailsCaseCarfixBackToServiceFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private workflowService!: IWorkflowService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n backToServiceFormData: {} as CaseRequest,\r\n selectedUser: null,\r\n isLoading: false,\r\n isLoading2: false,\r\n hasRights: false,\r\n isUserHidden: false,\r\n executing: false,\r\n formSubmitted: false,\r\n wfTransitionStepAction: {} as WorkflowFormAction\r\n } as ICaseDetailsCaseCarfixBackToServiceFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseBackToServiceForm();\r\n }\r\n );\r\n }\r\n\r\n\r\n loadCaseBackToServiceForm = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseStatusId = this.props.caseSettingsState.case?.caseStatus?.caseStatusId;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n const caseRequest = {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n text: '',\r\n subject: '',\r\n to: '',\r\n clientEmail: !R.isNil(this.props.caseSettingsState.case!.caseClient) ? this.props.caseSettingsState.case!.caseClient.email : '',\r\n userIdTo: '',\r\n organizationId: null,\r\n attachments: [] as CaseAttachment[],\r\n caseSectionStepFormId: this.props.workflowForm.id\r\n } as CaseRequest;\r\n\r\n const [wfStepActions, caseRequests] = await Promise.all([\r\n this.workflowService.GetWorkflowSectionStepFormActions(this.props.workflowForm.id), \r\n this.caseService.GetCaseRequests(caseId, null)]\r\n );\r\n\r\n const wfTransitionStepAction =\r\n wfStepActions.find(\r\n (item) =>\r\n item.actionType?.code === WorkflowFormActionTypeCode.STATUS_TRANSITION &&\r\n caseStatusId === item.fromStatusId\r\n ) || ({} as WorkflowFormAction);\r\n\r\n const externalCaseRequests = _.cloneDeep(caseRequests.filter(x => x.isExternal == true));\r\n if (externalCaseRequests.length > 0) {\r\n caseRequest.text = externalCaseRequests[0].text;\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n \r\n this.setState(\r\n {\r\n backToServiceFormData: caseRequest,\r\n isLoading: false,\r\n hasRights: hasRights,\r\n wfTransitionStepAction\r\n }\r\n );\r\n };\r\n\r\n sendEmail = async () => {\r\n try {\r\n let request = this.state.backToServiceFormData;\r\n const { toWorkflowId, toStatusId } = this.state.wfTransitionStepAction;\r\n const userId = this.props.appState?.appUser?.id || this.state.selectedUser?.id;\r\n\r\n if (isNullOrUndefined(request)) {\r\n return;\r\n }\r\n\r\n this.setState({ executing: true, formSubmitted: true });\r\n\r\n request!.id = 0;\r\n\r\n if (toWorkflowId && toStatusId) {\r\n await this.caseService.ChangeCaseWorkflow(\r\n toWorkflowId,\r\n request.caseId,\r\n userId!,\r\n toStatusId\r\n );\r\n } else {\r\n request = await this.caseService.AddCaseRequest(request);\r\n }\r\n\r\n await this.submitForm(request.caseId, request.caseSectionStepFormId, this.state.selectedUser);\r\n\r\n this.setState(\r\n {\r\n backToServiceFormData: {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n text: '',\r\n subject: '',\r\n to: '',\r\n clientEmail: !R.isNil(this.props.caseSettingsState.case!.caseClient) ? this.props.caseSettingsState.case!.caseClient.email : '',\r\n userId: '',\r\n organizationId: null,\r\n attachments: [] as CaseAttachment[],\r\n caseSectionStepFormId: this.props.workflowForm.id\r\n } as CaseRequest,\r\n formSubmitted: false,\r\n selectedUser: null\r\n },\r\n );\r\n\r\n if (toWorkflowId && toStatusId) {\r\n this.props.SetCaseSettings(request.caseId);\r\n }\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appuser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appuser);\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n console.log('newStatus', newStatus);\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n if (appuser !== null) {\r\n this.props.AddPartner(appuser!.hoId === null ? appuser!.organizationId : appuser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n handleUserChange = (newValue: AppUser | null) => {\r\n this.setState({ selectedUser: newValue });\r\n };\r\n\r\n rendeBackToServiceForm = () => {\r\n return isNullOrUndefined(this.state.backToServiceFormData) ? null : (\r\n {\r\n this.sendEmail();\r\n }}\r\n >\r\n
\r\n ) => {\r\n this.setState({\r\n backToServiceFormData: {\r\n ...this.state.backToServiceFormData,\r\n text: e.target.value\r\n }\r\n });\r\n }}\r\n variant=\"outlined\"\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n
\r\n
\r\n ) => {\r\n this.setState({\r\n backToServiceFormData: {\r\n ...this.state.backToServiceFormData,\r\n clientEmail: e.target.value\r\n }\r\n });\r\n }}\r\n label={this.translatorService.Tranlate(\r\n 'CASE_BACK_TO_SERVICE_FORM_USER_LABEL',\r\n 'Utilizator'\r\n )}\r\n />\r\n
\r\n\r\n this.setState({ formSubmitted: true })}\r\n disabled={!this.state.hasRights || this.state.executing}\r\n >\r\n {this.translatorService.Tranlate('CASE_COMMENT_SEND', 'Trimite')}\r\n \r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
{this.rendeBackToServiceForm()}
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseCarfixBackToServiceFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseCarfixBackToServiceForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Button, Grid} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport {\r\n WorkflowFormAction,\r\n WorkflowSectionStepForm\r\n} from '../../interfaces/Workflow';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Appointment, CaseAttachment, CaseRequest } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IWorkflowService } from '../../services/Interfaces/IWorkflowService';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport {\r\n WorkflowFormActionTypeCode\r\n} from '../../helpers/Constants';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport 'react-dropdown-tree-select/dist/styles.css';\r\nimport * as R from 'ramda';\r\n\r\ninterface ICaseDetailsCaseCarfixValidateAppointmentFormState {\r\n backToServiceFormData: CaseRequest;\r\n selectedUser: AppUser | null;\r\n isLoading: boolean;\r\n isLoading2: boolean;\r\n hasRights: boolean;\r\n isUserHidden: boolean;\r\n executing: boolean;\r\n formSubmitted: boolean;\r\n wfTransitionStepAction: WorkflowFormAction;\r\n appointment: Appointment | null;\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseCarfixValidateAppointmentFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseCarfixValidateAppointmentFormProps =\r\n ExternalCaseDetailsCaseCarfixValidateAppointmentFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n } & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseCarfixValidateAppointmentForm extends React.PureComponent<\r\n ICaseDetailsCaseCarfixValidateAppointmentFormProps,\r\n ICaseDetailsCaseCarfixValidateAppointmentFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private workflowService!: IWorkflowService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n backToServiceFormData: {} as CaseRequest,\r\n selectedUser: null,\r\n isLoading: false,\r\n isLoading2: false,\r\n hasRights: false,\r\n isUserHidden: false,\r\n executing: false,\r\n formSubmitted: false,\r\n wfTransitionStepAction: {} as WorkflowFormAction,\r\n appointment: null\r\n } as ICaseDetailsCaseCarfixValidateAppointmentFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n }\r\n\r\n\r\n loadData = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseStatusId = this.props.caseSettingsState.case?.caseStatus?.caseStatusId;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n const [appointment, wfStepActions] = await Promise.all([\r\n this.caseService.GetAppointmentByCaseId(caseId),\r\n this.workflowService.GetWorkflowSectionStepFormActions(\r\n this.props.workflowForm.id\r\n )\r\n ]);\r\n\r\n const caseRequest = {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n text: this.translatorService.Tranlate(this.props.workflowForm.comments, ''),\r\n subject: '',\r\n to: '',\r\n clientEmail: '',\r\n userIdTo: '',\r\n organizationId: null,\r\n attachments: [] as CaseAttachment[],\r\n caseSectionStepFormId: this.props.workflowForm.id\r\n } as CaseRequest;\r\n\r\n const wfTransitionStepAction =\r\n wfStepActions.find(\r\n (item) =>\r\n item.actionType?.code === WorkflowFormActionTypeCode.STATUS_TRANSITION &&\r\n caseStatusId === item.fromStatusId\r\n ) || ({} as WorkflowFormAction);\r\n\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n console.log('appointment', appointment);\r\n \r\n this.setState(\r\n {\r\n backToServiceFormData: caseRequest,\r\n isLoading: false,\r\n hasRights: hasRights,\r\n appointment: appointment,\r\n wfTransitionStepAction\r\n }\r\n );\r\n };\r\n\r\n sendEmail = async () => {\r\n try {\r\n let request = this.state.backToServiceFormData;\r\n const { toWorkflowId, toStatusId } = this.state.wfTransitionStepAction;\r\n const userId = this.props.appState?.appUser?.id || this.state.selectedUser?.id;\r\n\r\n if (isNullOrUndefined(request)) {\r\n return;\r\n }\r\n\r\n this.setState({ executing: true, formSubmitted: true });\r\n\r\n request!.id = 0;\r\n\r\n if (toWorkflowId && toStatusId) {\r\n await this.caseService.ChangeCaseWorkflow(\r\n toWorkflowId,\r\n request.caseId,\r\n userId!,\r\n toStatusId\r\n );\r\n } else {\r\n request = await this.caseService.AddCaseRequest(request);\r\n }\r\n\r\n await this.submitForm(request.caseId, request.caseSectionStepFormId, this.state.selectedUser);\r\n\r\n this.setState(\r\n {\r\n backToServiceFormData: {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n text: this.translatorService.Tranlate(this.props.workflowForm.comments, ''),\r\n subject: '',\r\n to: '',\r\n clientEmail: '',\r\n userId: '',\r\n organizationId: null,\r\n attachments: [] as CaseAttachment[],\r\n caseSectionStepFormId: this.props.workflowForm.id\r\n } as CaseRequest,\r\n formSubmitted: false,\r\n selectedUser: null\r\n },\r\n );\r\n\r\n if (toWorkflowId && toStatusId) {\r\n this.props.SetCaseSettings(request.caseId);\r\n }\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appuser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appuser);\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n this.props.SetCaseStatus(newStatus);\r\n if (appuser !== null) {\r\n this.props.AddPartner(appuser!.hoId === null ? appuser!.organizationId : appuser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n handleUserChange = (newValue: AppUser | null) => {\r\n this.setState({ selectedUser: newValue });\r\n };\r\n\r\n onClick = async (id: number) => {\r\n try {\r\n this.props.history.push('/appointment/' + id);\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n };\r\n\r\n rendeBackToServiceForm = () => {\r\n return isNullOrUndefined(this.state.backToServiceFormData) ? null : (\r\n {\r\n this.sendEmail();\r\n }}\r\n >\r\n
\r\n ) => {\r\n this.setState({\r\n backToServiceFormData: {\r\n ...this.state.backToServiceFormData,\r\n text: e.target.value\r\n }\r\n });\r\n }}\r\n variant=\"outlined\"\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n
\r\n {R.isNil(this.state.appointment) ? null : (\r\n \r\n \r\n
\r\n {this.translatorService.Tranlate('VALIDATE_APPOINTMENT_ID', 'Id Programare') + ':'}\r\n
\r\n this.onClick(this.state.appointment!.id)}\r\n style={{ cursor: 'pointer' }}\r\n >\r\n {this.state.appointment!.id}\r\n
\r\n \r\n \r\n )}\r\n\r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.workflowService = (this.context as AppContext).workflowService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
{this.rendeBackToServiceForm()}
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseCarfixValidateAppointmentFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseCarfixValidateAppointmentForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport {\r\n WorkflowSectionStepForm\r\n} from '../../interfaces/Workflow';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport 'react-dropdown-tree-select/dist/styles.css';\r\nimport { Button } from '@material-ui/core';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { ChangeCaseStatusRequest } from '../../interfaces/Case';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { CaseStatusCodeEnum, ReferentialCode } from '../../helpers/Constants';\r\nimport Referentials from '../../helpers/Referentials.json';\r\n\r\ninterface ICaseDetailsCaseRepairInProgressFormState {\r\n isLoading: boolean;\r\n hasRights: boolean;\r\n executing: boolean;\r\n caseStatuses: IReferential[];\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseRepairInProgressFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCaseRepairInProgressFormProps =\r\n ExternalCaseDetailsCaseRepairInProgressFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n } & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseRepairInProgressForm extends React.PureComponent<\r\n ICaseDetailsCaseRepairInProgressFormProps,\r\n ICaseDetailsCaseRepairInProgressFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n isLoading: false,\r\n hasRights: false,\r\n isUserHidden: false,\r\n executing: false,\r\n caseStatuses: []\r\n } as ICaseDetailsCaseRepairInProgressFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n }\r\n\r\n loadData = async () => {\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n const refCaseStatus = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CaseStatus\r\n );\r\n \r\n const caseStatuses = await this.appReferentialService.Get(refCaseStatus!.baseUrl);\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n this.setState(\r\n {\r\n isLoading: false,\r\n caseStatuses: caseStatuses,\r\n hasRights: hasRights\r\n }\r\n );\r\n };\r\n\r\n repairHasBeenFinished = async (e: any) => {\r\n try {\r\n this.setState({ executing: true });\r\n\r\n await this.submitForm(\r\n this.props.caseSettingsState.case!.id,\r\n this.props.workflowForm.id,\r\n null\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n\r\n this.setState({ executing: false });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n updateOffer = async (e: any) => {\r\n try {\r\n this.setState({ executing: true });\r\n\r\n const newStatus = this.state.caseStatuses.find(x => x.code === CaseStatusCodeEnum.ACTUALIZEAZA_CALCULATIE.toString());\r\n const caseStatusRequest = {\r\n caseId: this.props.caseSettingsState.case!.id,\r\n statusId: newStatus!.id\r\n } as ChangeCaseStatusRequest;\r\n const currentStatus = await this.caseService.ChangeCaseStatus(caseStatusRequest);\r\n\r\n this.props.SetCaseStatus(currentStatus);\r\n\r\n this.setState({ executing: false });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
\r\n {!this.props.workflowForm.hideFirstButton && (\r\n \r\n {this.translatorService.Tranlate(this.props.workflowForm.firstButtonLabel, '')}\r\n \r\n )}\r\n {!this.props.workflowForm.hideSecondButton && (\r\n \r\n {this.translatorService.Tranlate(this.props.workflowForm.secondButtonLabel, '')}\r\n \r\n )}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseRepairInProgressFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseRepairInProgressForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport {\r\n WorkflowSectionStepForm\r\n} from '../../interfaces/Workflow';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { FormHelpers } from '../../helpers/forms/FormHelpers';\r\nimport 'react-dropdown-tree-select/dist/styles.css';\r\nimport { Button, Grid, Tooltip, Typography } from '@material-ui/core';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { FormControlLabel, Switch } from '@material-ui/core';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { rest } from 'lodash';\r\nimport { ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { ChangeCaseStatusBasedCodeRequest } from '../../interfaces/Case';\r\nimport { CaseStatusCodeEnum } from '../../helpers/Constants';\r\n\r\ninterface ICaseDetailsCarInServiceFormState {\r\n isLoading: boolean;\r\n hasRights: boolean;\r\n executing: boolean;\r\n carInService: boolean;\r\n}\r\n\r\nexport interface ExternalCaseDetailsCarInServiceFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n}\r\n\r\ntype ICaseDetailsCarInServiceFormProps =\r\n ExternalCaseDetailsCarInServiceFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n } & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCarInServiceForm extends React.PureComponent<\r\n ICaseDetailsCarInServiceFormProps,\r\n ICaseDetailsCarInServiceFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n isLoading: false,\r\n hasRights: false,\r\n isUserHidden: false,\r\n executing: false,\r\n carInService: true\r\n } as ICaseDetailsCarInServiceFormState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (isNullOrUndefined(caseSettings) || Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n }\r\n\r\n loadData = async () => {\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n this.props.caseSettingsState.case!.caseStatus.caseStatusId\r\n );\r\n\r\n console.log('case', this.props.caseSettingsState.case!);\r\n\r\n this.setState(\r\n {\r\n isLoading: false,\r\n hasRights: hasRights,\r\n carInService: !this.props.caseSettingsState.case!.carInServiceDate ? true : this.props.caseSettingsState.case!.carInService \r\n }\r\n );\r\n };\r\n\r\n continue = async (e: any) => {\r\n try {\r\n this.setState({ executing: true });\r\n\r\n await this.submitForm(\r\n this.props.caseSettingsState.case!.id,\r\n this.props.workflowForm.id,\r\n null\r\n );\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n\r\n this.setState({ executing: false });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n submitForm = async (caseId: number, caseSectionStepFormId: number, appUser: AppUser | null) => {\r\n let newStatus = await this.caseService.SubmitForm(caseId, caseSectionStepFormId, appUser);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n\r\n this.props.SetCaseStatus(newStatus);\r\n if (appUser !== null) {\r\n this.props.AddPartner(appUser!.hoId === null ? appUser!.organizationId : appUser!.hoId);\r\n }\r\n\r\n const hasRights = FormHelpers.HasRights(\r\n this.props.workflowForm.workflowFormPermissions,\r\n this.props.appState.appUser!,\r\n newStatus.caseStatusId\r\n );\r\n this.setState({ hasRights: hasRights });\r\n };\r\n\r\n\r\n submitCaseCarInServiceData = async (e: any) => {\r\n try {\r\n this.setState({ executing: true });\r\n\r\n const response = await this.caseService.SetCarInService(this.props.caseSettingsState.case!.id, this.state.carInService);\r\n\r\n this.props.SetCarInService(response.carInService, response.carInServiceDate);\r\n\r\n if (!response.carInService) {\r\n const caseStatusRequest = {\r\n caseId: this.props.caseSettingsState.case!.id,\r\n statusCode: CaseStatusCodeEnum.CAR_LEAVE_WORKSHOP.toString()\r\n } as ChangeCaseStatusBasedCodeRequest;\r\n const currentStatus = await this.caseService.ChangeCaseStatusBasedCode(caseStatusRequest);\r\n\r\n this.props.SetCaseStatus(currentStatus);\r\n } else {\r\n await this.submitForm(\r\n this.props.caseSettingsState.case!.id,\r\n this.props.workflowForm.id,\r\n null\r\n );\r\n }\r\n await this.loadData();\r\n\r\n this.setState({ executing: false });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ executing: false });\r\n }\r\n };\r\n\r\n displayInfo = (info: string) => {\r\n return (\r\n { e.preventDefault() }}\r\n {...rest}\r\n disableHoverListener={!this.state.hasRights || this.state.executing}\r\n title={info}\r\n placement='right'\r\n >\r\n
\r\n \r\n
\r\n \r\n );\r\n };\r\n \r\n handleSwitchChange = (e: any) => {\r\n this.setState({\r\n carInService: e.currentTarget.checked\r\n });\r\n };\r\n\r\n rendeCarInServiceForm = () => {\r\n return (\r\n {\r\n this.submitCaseCarInServiceData(e);\r\n }}\r\n >\r\n
\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('APPOINTMENT_CAR_REPAIR_TITLE', 'Reparație mașină')}\r\n \r\n \r\n
\r\n this.handleSwitchChange(e)}\r\n color=\"primary\"\r\n />\r\n }\r\n label={\r\n
\r\n \r\n {this.state.carInService ? this.translatorService.Tranlate('CASE_CAR_IS_IN_SERVICE', 'Mașina este în service') \r\n : this.translatorService.Tranlate('CASE_CAR_IS_NOT_IN_SERVICE', 'Masina nu ramane in service') }\r\n \r\n {this.displayInfo(this.translatorService.Tranlate('CASE_CAR_IS_IN_SERVICE_INFO', 'Selectează dacă mașina rămâne în service'))}\r\n
\r\n }\r\n labelPlacement=\"end\"\r\n className=\"mt-3 mr-0\"\r\n />\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n \r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
{this.rendeCarInServiceForm()}
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCarInServiceFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCarInServiceForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, CaseSettingsState } from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Box,\r\n Tabs,\r\n Tab,\r\n Grid,\r\n Button,\r\n Stepper,\r\n Step,\r\n StepButton,\r\n StepLabel,\r\n StepConnector,\r\n AppBar,\r\n IconButton,\r\n Typography,\r\n withStyles,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { Card } from 'reactstrap';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport {\r\n WorkflowCurrentSectionStepResult,\r\n WorkflowSection,\r\n WorkflowSectionStep,\r\n WorkflowSectionStepForm,\r\n WorkflowSectionStepResult\r\n} from '../../interfaces/Workflow';\r\nimport { isNullOrUndefined } from 'util';\r\nimport CaseDetailsCaseTabSummaryForm from './CaseDetailsCaseTabSummaryForm';\r\nimport CaseDetailsCaseTabHistoryForm from './CaseDetailsCaseTabHistoryForm';\r\nimport CaseDetailsCaseTabModifyWorkflowForm from './CaseDetailsCaseTabModifyWorkflowForm';\r\nimport CaseDetailsCaseTabDocumentsForm from './CaseDetailsCaseTabDocumentsForm';\r\nimport CaseDetailsCaseTabCarPhotosForm from './CaseDetailsCaseTabCarPhotosForm';\r\nimport CaseDetailsCaseTabCalculationsForm from './CaseDetailsCaseTabCalculationsForm';\r\nimport CaseDetailsCaseTabCarDetailsForm from './CaseDetailsCaseTabCarDetailsForm';\r\nimport CaseDetailsCaseTabEventDetailsForm from './CaseDetailsCaseTabEventDetailsForm';\r\nimport CaseDetailsCaseTabBackToServiceForm from './CaseDetailsCaseTabBackToServiceForm';\r\nimport CaseDetailsCaseTabOtherServiceForm from './CaseDetailsCaseTabOtherServiceForm';\r\nimport CaseDetailsCaseTabPaymentDetailsForm from './CaseDetailsCaseTabPaymentDetailsForm';\r\nimport CaseDetailsCaseTabOrderForm from './CaseDetailsCaseTabOrderForm';\r\nimport CaseDetailsCaseServiceAppointmentsForm from './CaseDetailsCaseServiceAppointmentsForm';\r\nimport CaseDetailsCaseTabClientDataForm from './CaseDetailsCaseTabClientDataForm';\r\nimport CaseDetailsCaseTabCarDetailsExtendedContainer from './vehicleDetails/CaseDetailsCaseTabCarDetailsExtendedContainer';\r\nimport CaseDetailsCaseTabCarRepairCostForm from './CaseDetailsCaseTabCarRepairCostForm';\r\nimport CaseDetailsCaseTabSaleOfferForm from './CaseDetailsCaseTabSaleOfferForm';\r\nimport CaseDetailsCaseTabVehicleAdvertComponent from './advert/CaseDetailsCaseTabVehicleAdvertComponent';\r\nimport { FormCode } from '../../helpers/forms/FormCode';\r\nimport AddCircleIcon from '@material-ui/icons/AddCircle';\r\nimport Xarrow from 'react-xarrows';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport PlayCircleOutlineIcon from '@material-ui/icons/PlayCircleOutline';\r\nimport { Badge } from '@material-ui/core';\r\nimport CaseDetailsCaseTabEventBillingDetailsForm from './CaseDetailsCaseTabEventBillingDetailsForm';\r\nimport CaseDetailsCaseTabSoldCarForm from './CaseDetailsCaseTabSoldCarForm';\r\nimport CaseDetailsCaseServiceAddAppointmentForm from './CaseDetailsCaseServiceAddAppointmentForm';\r\nimport CaseDetailsCaseTabInOutDataForm from './CaseDetailsCaseTabInOutDataForm';\r\nimport CaseDetailsCaseTabIntegrationClientDataForm from './CaseDetailsCaseTabIntegrationClientDataForm';\r\nimport CaseDetailsCaseCarfixAnalysisForm from './CaseDetailsCaseCarfixAnalysisForm';\r\nimport _ from 'lodash';\r\nimport CaseDetailsCaseCarfixBackToServiceForm from './CaseDetailsCaseCarfixBackToServiceForm';\r\nimport CaseDetailsCaseCarfixValidateAppointmentForm from './CaseDetailsCaseCarfixValidateAppointmentForm';\r\nimport CaseDetailsCaseRepairInProgressForm from './CaseDetailsCaseRepairInProgressForm';\r\nimport CaseDetailsCarInServiceForm from './CaseDetailsCarInServiceForm';\r\n\r\n\r\ninterface ICaseDetailsCaseTabState {\r\n workflowForms: WorkflowSectionStepForm[];\r\n\r\n workflowCaseSections: WorkflowSection[];\r\n workflowCaseSectionSteps: WorkflowSectionStep[];\r\n workflowCaseSectionStepForms: WorkflowSectionStepForm[];\r\n\r\n selectedWorkflowSection: WorkflowSection | null;\r\n selectedStep: WorkflowSectionStep | null;\r\n\r\n activeStep: number;\r\n selectedTabForm: number;\r\n isLoading: boolean;\r\n\r\n formData: any;\r\n refreshDesign: boolean;\r\n isDialogOpen: boolean;\r\n isDialogFormOpen: boolean;\r\n\r\n renderForms: boolean;\r\n}\r\n\r\nexport const excludedSteps = [FormCode.CASE_VEHICLE_PB_ANUNT];\r\n\r\n\r\ntype ICaseDetailsCaseTabProps = { caseSettingsState: CaseSettingsState } & ProviderContext &\r\n RouteComponentProps<{ id: string; formId: string }>;\r\n\r\nconst StyledBadge = withStyles({\r\n badge: {\r\n backgroundColor: 'var(--success)',\r\n color: 'var(--success)',\r\n boxShadow: '0 0 0 2px #fff',\r\n '&::after': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n borderRadius: '50%',\r\n animation: '$ripple 1.2s infinite ease-in-out',\r\n border: '1px solid currentColor',\r\n content: '\"\"'\r\n }\r\n },\r\n '@keyframes ripple': {\r\n '0%': {\r\n transform: 'scale(.8)',\r\n opacity: 1\r\n },\r\n '100%': {\r\n transform: 'scale(2.4)',\r\n opacity: 0\r\n }\r\n }\r\n})(Badge);\r\n\r\nclass CaseDetailsCaseTab extends React.PureComponent<\r\n ICaseDetailsCaseTabProps,\r\n ICaseDetailsCaseTabState\r\n> {\r\n static contextType = ApplicationContext;\r\n state = {\r\n workflowCaseSections: [],\r\n selectedWorkflowSection: null,\r\n selectedStep: null,\r\n workflowCaseSectionSteps: [],\r\n workflowForms: [],\r\n workflowCaseSectionStepForms: [],\r\n selectedTabForm: 0,\r\n activeStep: 0,\r\n isLoading: false,\r\n formData: null,\r\n refreshDesign: false,\r\n isDialogOpen: false,\r\n isDialogFormOpen: false,\r\n renderForms: true\r\n } as ICaseDetailsCaseTabState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n if (isNullOrUndefined(caseSettings)) {\r\n return;\r\n }\r\n\r\n if (!isNullOrUndefined(this.props.match.params.formId)) {\r\n const sections = caseSettings.workflow\r\n .workflowSections!.filter((item) => item.isActive)\r\n .sort(this.sortFunction);\r\n const currentStatus = this.props.caseSettingsState.case!.caseStatus;\r\n const selectedWorkflowSection = sections.find((item: WorkflowSection) => item.isCurrent(currentStatus.caseStatusId));\r\n for (const section of sections) {\r\n const steps = section.workflowSectionSteps\r\n .filter((item) => item.isActive)\r\n .sort(this.sortFunction);\r\n for (const step of steps) {\r\n const forms = step.workflowSectionStepForms\r\n .filter((item) => item.isActive)\r\n .sort(this.sortFunction);\r\n const formIndex = forms.findIndex(\r\n (form) => form.id.toString() === this.props.match.params.formId\r\n );\r\n if (formIndex !== -1 && section.id === selectedWorkflowSection?.id) {\r\n this.setState(\r\n {\r\n isLoading: true,\r\n selectedWorkflowSection: section,\r\n selectedStep: step,\r\n selectedTabForm: formIndex,\r\n activeStep: steps.findIndex((item) => item.id === step.id)\r\n },\r\n () => {\r\n this.loadCaseSettings(section.id);\r\n }\r\n );\r\n\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadCaseSettings(null);\r\n }\r\n );\r\n }\r\n\r\n loadCaseSettings = (workflowCaseSectionId: number | null) => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n const initialWorkflowCaseSectionId = _.cloneDeep(workflowCaseSectionId);\r\n if (isNullOrUndefined(caseSettings)) {\r\n return;\r\n }\r\n\r\n const workflowCaseSections = caseSettings\r\n .workflow!.workflowSections!.filter((item) => item.isActive)\r\n .sort(this.sortFunction);\r\n\r\n workflowCaseSectionId =\r\n workflowCaseSectionId === null ? workflowCaseSections[0].id : workflowCaseSectionId;\r\n\r\n const workflowCaseSection = workflowCaseSections.find(\r\n (item) => item.id === workflowCaseSectionId\r\n );\r\n\r\n this.setState(\r\n {\r\n isLoading: false,\r\n workflowCaseSections: workflowCaseSections,\r\n selectedWorkflowSection: isNullOrUndefined(workflowCaseSection) ? null : workflowCaseSection\r\n },\r\n () => {\r\n if (initialWorkflowCaseSectionId === null) {\r\n this.loadInitialWorkflowSteps();\r\n } else {\r\n this.loadWorkflowSteps();\r\n }\r\n }\r\n );\r\n };\r\n\r\n loadWorkflowSteps = () => {\r\n if (isNullOrUndefined(this.state.selectedWorkflowSection)) {\r\n return;\r\n }\r\n\r\n const workflowCaseSectionSteps = this.state.selectedWorkflowSection.workflowSectionSteps\r\n .filter((item) => item.isActive)\r\n .sort(this.sortFunction);\r\n\r\n const selectedStep =\r\n this.state.selectedStep == null ? workflowCaseSectionSteps[0] : this.state.selectedStep;\r\n const workflowCaseSectionStepForms =\r\n workflowCaseSectionSteps.length === 0\r\n ? []\r\n : selectedStep.workflowSectionStepForms.sort(this.sortFunction);\r\n\r\n this.setState({\r\n isLoading: false,\r\n workflowCaseSectionSteps: workflowCaseSectionSteps,\r\n workflowCaseSectionStepForms: workflowCaseSectionStepForms,\r\n selectedTabForm: 0\r\n });\r\n };\r\n\r\n loadInitialWorkflowSteps = () => {\r\n if (isNullOrUndefined(this.state.selectedWorkflowSection)) {\r\n return;\r\n }\r\n\r\n const workflowCaseSectionSteps = this.state.selectedWorkflowSection.workflowSectionSteps\r\n .filter((item) => item.isActive)\r\n .sort(this.sortFunction);\r\n\r\n const selectedStep =\r\n this.state.selectedStep == null ? workflowCaseSectionSteps[0] : this.state.selectedStep;\r\n const workflowCaseSectionStepForms =\r\n workflowCaseSectionSteps.length === 0\r\n ? []\r\n : selectedStep.workflowSectionStepForms.sort(this.sortFunction);\r\n\r\n this.setState({\r\n isLoading: false,\r\n workflowCaseSectionSteps: workflowCaseSectionSteps,\r\n workflowCaseSectionStepForms: workflowCaseSectionStepForms,\r\n selectedTabForm: 0\r\n }, () => {\r\n this.loadCurrentWorkflowSelectedStep();\r\n });\r\n };\r\n\r\n loadCurrentWorkflowSelectedStep = () => {\r\n const currentStatus = this.props.caseSettingsState.case!.caseStatus;\r\n const selectedWorkflowSection = this.getSelectedWorkflowSection(currentStatus.caseStatusId);\r\n if (!isNullOrUndefined(selectedWorkflowSection)) {\r\n this.handleTabChange(selectedWorkflowSection);\r\n }\r\n }\r\n \r\n sortFunction = (a: any, b: any) => {\r\n return a.order - b.order;\r\n };\r\n\r\n onButtonClick = (newValue: WorkflowSection) => {\r\n this.setState(\r\n {\r\n selectedWorkflowSection: newValue,\r\n selectedTabForm: 0,\r\n activeStep: 0,\r\n selectedStep: null,\r\n isDialogOpen: true\r\n },\r\n () => {\r\n this.loadWorkflowSteps();\r\n }\r\n );\r\n };\r\n\r\n renderSectionTabs = () => {\r\n const sectionTabs = [] as any[];\r\n\r\n let selectedItemId = -1;\r\n if (!isNullOrUndefined(this.state.selectedWorkflowSection)) {\r\n selectedItemId = this.state.selectedWorkflowSection.id;\r\n }\r\n\r\n if (this.props.caseSettingsState.caseSettings !== null) {\r\n const sections = this.state.workflowCaseSections.length;\r\n this.state.workflowCaseSections.forEach((item: WorkflowSection, index: number) => {\r\n sectionTabs.push(\r\n \r\n this.onButtonClick(item)}\r\n >\r\n {item.section!.displayName}\r\n \r\n \r\n );\r\n });\r\n }\r\n return sectionTabs;\r\n };\r\n\r\n renderSectionTabs2 = () => {\r\n const sectionTabs = [] as any[];\r\n\r\n let selectedItemId = -1;\r\n if (!isNullOrUndefined(this.state.selectedWorkflowSection)) {\r\n selectedItemId = this.state.selectedWorkflowSection.id;\r\n }\r\n\r\n if (this.props.caseSettingsState.caseSettings !== null) {\r\n this.state.workflowCaseSections.forEach((item: WorkflowSection, index: number) => {\r\n sectionTabs.push(\r\n \r\n \r\n
\r\n
\r\n {index + 1 + '. ' + item.section!.displayName}\r\n
\r\n this.onButtonClick(item)}\r\n >\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n );\r\n });\r\n }\r\n return (\r\n
\r\n
\r\n \r\n {sectionTabs}\r\n \r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n renderStepper = () => {\r\n return (\r\n
\r\n }\r\n activeStep={this.state.activeStep}\r\n style={{ backgroundColor: 'transparent' }}\r\n >\r\n {this.renderSteps()}\r\n \r\n
\r\n );\r\n };\r\n\r\n \r\n componentDidUpdate(prevProps: ICaseDetailsCaseTabProps) {\r\n if (prevProps.caseSettingsState.case!.caseStatus.caseStatusId != this.props.caseSettingsState.case!.caseStatus.caseStatusId) {\r\n const prevStatus = prevProps.caseSettingsState.case!.caseStatus;\r\n const currentStatus = this.props.caseSettingsState.case!.caseStatus;\r\n\r\n const prevStep = this.getStepBasedCaseStatus(this.state.workflowCaseSectionSteps, prevStatus.caseStatusId);\r\n const step = prevStep.step;\r\n console.log('prevStep', prevStep);\r\n if (!isNullOrUndefined(step.workflowStep) && excludedSteps.includes(step.workflowStep!.code ?? '')) {\r\n console.log('Nu trece la pasul urmator!');\r\n return;\r\n }\r\n\r\n const selectedWorkflowSection = this.getSelectedWorkflowSection(currentStatus.caseStatusId);\r\n console.log('selectedWorkflowSection', selectedWorkflowSection);\r\n if (!isNullOrUndefined(selectedWorkflowSection)) {\r\n this.handleTabChange(selectedWorkflowSection);\r\n }\r\n\r\n }\r\n }\r\n\r\n handleTabChange = (newValue: WorkflowSection) => {\r\n this.setState(\r\n {\r\n selectedWorkflowSection: newValue,\r\n selectedTabForm: 0,\r\n activeStep: 0,\r\n selectedStep: null,\r\n isDialogOpen: true\r\n },\r\n () => {\r\n this.loadWorkflowCurrentSteps();\r\n }\r\n );\r\n };\r\n\r\n loadWorkflowCurrentSteps = () => {\r\n if (isNullOrUndefined(this.state.selectedWorkflowSection)) {\r\n return;\r\n }\r\n\r\n /*\r\n Get current section steps\r\n */\r\n const workflowCaseSectionSteps = this.state.selectedWorkflowSection.workflowSectionSteps\r\n .filter((item) => item.isActive)\r\n .sort(this.sortFunction);\r\n\r\n /*\r\n Get current step\r\n */\r\n const workflowCaseSectionStep = this.getStepBasedCaseStatus(workflowCaseSectionSteps, this.props.caseSettingsState.case!.caseStatus.caseStatusId);\r\n const step = workflowCaseSectionStep.index;\r\n const selectedStep = workflowCaseSectionStep.step;\r\n\r\n this.setState(\r\n {\r\n isLoading: false,\r\n workflowCaseSectionSteps: workflowCaseSectionSteps,\r\n workflowCaseSectionStepForms: selectedStep.workflowSectionStepForms\r\n .filter((item) => item.isActive)\r\n .sort(this.sortFunction),\r\n selectedTabForm: 0,\r\n activeStep: step,\r\n selectedStep: selectedStep,\r\n isDialogFormOpen: true,\r\n renderForms: false\r\n },\r\n () => {\r\n this.setState({ renderForms: true });\r\n }\r\n );\r\n };\r\n\r\n getSelectedWorkflowSection = (caseStatusId: number): WorkflowSection | null => {\r\n const selectedWorkflowSection = this.state.workflowCaseSections.find((item: WorkflowSection) => item.isCurrent(caseStatusId));\r\n if (!isNullOrUndefined(selectedWorkflowSection)) {\r\n return selectedWorkflowSection;\r\n }\r\n console.log('Nu exista sectiunea curenta!', this.state.workflowCaseSections);\r\n return this.state.workflowCaseSections[this.state.workflowCaseSections.length - 1];\r\n }\r\n\r\n getStepBasedCaseStatus = (workflowCaseSectionSteps: WorkflowSectionStep[], caseStatusId: number) : WorkflowSectionStepResult => {\r\n const index = workflowCaseSectionSteps.findIndex((step: WorkflowSectionStep) => step.isCurrent(caseStatusId));\r\n\r\n if (index !== -1) {\r\n return {\r\n index: index,\r\n step: workflowCaseSectionSteps[index]\r\n };\r\n }\r\n\r\n console.log('Nu exista pasul curent!', workflowCaseSectionSteps);\r\n return {\r\n index: workflowCaseSectionSteps.length - 1,\r\n step: workflowCaseSectionSteps[workflowCaseSectionSteps.length - 1]\r\n };\r\n }\r\n\r\n handleStep = (step: number, selectedStep: WorkflowSectionStep) => () => {\r\n this.setState(\r\n {\r\n activeStep: step,\r\n selectedStep: selectedStep,\r\n workflowCaseSectionStepForms: selectedStep.workflowSectionStepForms\r\n .filter((item) => item.isActive)\r\n .sort(this.sortFunction),\r\n selectedTabForm: 0,\r\n isDialogFormOpen: true,\r\n renderForms: false\r\n },\r\n () => this.setState({ renderForms: true })\r\n );\r\n };\r\n\r\n renderSteps = () => {\r\n const renderSteps = [] as any[];\r\n this.state.workflowCaseSectionSteps.forEach((step: WorkflowSectionStep, index: number) => {\r\n renderSteps.push(\r\n \r\n \r\n \r\n {step.workflowStep!.displayName}\r\n {step.isCurrent(this.props.caseSettingsState.case!.caseStatus.caseStatusId) ? (\r\n \r\n <>\r\n \r\n ) : null}\r\n \r\n \r\n \r\n );\r\n });\r\n return renderSteps;\r\n };\r\n\r\n isStepCurrent = (step: WorkflowSectionStep): boolean => {\r\n const caseStatusId = this.props.caseSettingsState.case!.caseStatus.caseStatusId;\r\n\r\n const result = step.workflowSectionStepCaseStatuses.find(\r\n (cs) => cs.caseStatusId === caseStatusId\r\n );\r\n\r\n return result !== undefined;\r\n };\r\n\r\n renderSteps2 = () => {\r\n const renderSteps = [] as any[];\r\n let selectedItemId = 0;\r\n if (!isNullOrUndefined(this.state.selectedStep)) {\r\n selectedItemId = this.state.selectedStep.id;\r\n }\r\n\r\n renderSteps.push();\r\n this.state.workflowCaseSectionSteps.forEach((step: WorkflowSectionStep, index: number) => {\r\n renderSteps.push(\r\n \r\n \r\n
\r\n
\r\n {index + 1 + '. ' + step.workflowStep!.displayName}\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n );\r\n });\r\n renderSteps.push(\r\n \r\n );\r\n\r\n return (\r\n
\r\n \r\n {renderSteps}\r\n \r\n \r\n \r\n \r\n \r\n {this.state.selectedWorkflowSection!.section!.displayName}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {this.renderTabForms()}\r\n \r\n \r\n
\r\n );\r\n };\r\n handleChangeTabForm = (event: React.ChangeEvent, newValue: number) => {\r\n this.setState({\r\n selectedTabForm: newValue\r\n });\r\n };\r\n\r\n renderForms = () => {\r\n const renderForms = [] as any[];\r\n this.state.workflowCaseSectionStepForms.forEach(\r\n (form: WorkflowSectionStepForm, index: number) => {\r\n renderForms.push();\r\n }\r\n );\r\n\r\n return renderForms;\r\n };\r\n renderTabForms = () => {\r\n return (\r\n
\r\n \r\n \r\n {this.renderForms()}\r\n \r\n \r\n {this.renderSelectedForm()}\r\n
\r\n );\r\n };\r\n\r\n renderSelectedForm = () => {\r\n const tabPanels = [] as any[];\r\n if (!this.state.renderForms) {\r\n return null;\r\n }\r\n\r\n this.state.workflowCaseSectionStepForms.forEach(\r\n (item: WorkflowSectionStepForm, index: number) => {\r\n tabPanels.push(\r\n \r\n {item.form.code === FormCode.CASE_SUMMARY ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_HISTORY ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_CHANGE_WORKFLOW ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_ATTACHMENTS ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_CAR_PHOTOS ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_CAR_DATA ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_EVENT_DATA ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_EVENT_DATE_FACT ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_CALCULATIONS ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_ORDER ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_BACK_TO_SERVICE ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_OTHER_SERVICE ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_PAYMENT_DETAILS_SERVICE ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_SERVICE_APPOINTMENT ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_LKQ_APPOINTMENT ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_CLIENT_DATA ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_CAR_DETAILS ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_CAR_REPAIR_COST ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_SALE_OFFER ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_BUY_OFFER ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_SOLD_CAR ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_PAYMENT_DETAILS_WITH_CURRENCY ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_VEHICLE_ADVERT ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CASE_IN_OUT_REPORT ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CARFIX_CASE_CLIENT_DATA ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CARFIX_ANALYSIS_STEP ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CARFIX_BACK_TO_SERVICE_STEP ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CARFIX_APPOINTMENT_VALIDATION_STEP ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CARFIX_REPAIR_IN_PROGRESS_STEP ? (\r\n \r\n ) : null}\r\n {item.form.code === FormCode.CAR_IN_SERVICE ? (\r\n \r\n ) : null}\r\n \r\n );\r\n }\r\n );\r\n return tabPanels;\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState({ isDialogOpen: false });\r\n };\r\n\r\n closeDialogForm = async () => {\r\n this.setState({ isDialogFormOpen: false });\r\n };\r\n\r\n public render() {\r\n return (\r\n \r\n
\r\n \r\n
\r\n {/* this.setState({ refreshDesign: !this.state.refreshDesign })}>\r\n \r\n */}\r\n {!this.state.isLoading ? (\r\n this.state.refreshDesign ? (\r\n
\r\n {this.renderSectionTabs2()}\r\n \r\n \r\n \r\n {this.state.selectedWorkflowSection!.section!.displayName}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
{this.renderSteps2()}
\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n \r\n {this.renderSectionTabs()}\r\n \r\n \r\n \r\n \r\n \r\n {this.renderStepper()}\r\n \r\n \r\n {this.renderTabForms()}\r\n \r\n \r\n \r\n \r\n \r\n )\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings\r\n }),\r\n null\r\n)(withSnackbar(CaseDetailsCaseTab as any));\r\n","import React, { Fragment } from 'react';\r\nimport { AppActionCreators, ApplicationState, AppState, CaseSettingsState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { ProviderContext, withSnackbar } from 'notistack';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { CaseComment } from '../../interfaces/Case';\r\nimport { Button, List, ListItem, Divider, Menu, MenuItem } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport avatar4 from '../../assets/images/avatars/avatar4.jpg';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { CommentTypeCode } from '../../helpers/Constants';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\ninterface ICaseCommentsState {\r\n caseComments: CaseComment[];\r\n commentText: string | null;\r\n isLoading: boolean;\r\n selectedCommentType: string;\r\n openMenuItem: any | null;\r\n selectedCaseCommentId: number | null;\r\n editComment: boolean;\r\n editTextComment: string | null;\r\n}\r\n\r\ntype ICaseCommentsProps = {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & typeof AppActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCommentsTab extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n private caseService!: ICaseService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n caseComments: [],\r\n commentText: '',\r\n isLoading: false,\r\n selectedCommentType: CommentTypeCode.PUBLIC,\r\n openMenuItem: null,\r\n selectedCaseCommentId: null,\r\n editComment: false,\r\n editTextComment: null\r\n } as ICaseCommentsState;\r\n\r\n public componentDidMount() {\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseComments();\r\n }\r\n );\r\n }\r\n\r\n loadCaseComments = async () => {\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (Number.isNaN(caseId)) {\r\n return;\r\n }\r\n const caseComments = await this.caseService.GetCaseComments(caseId);\r\n\r\n if (caseComments.length === 0) {\r\n this.setState({\r\n isLoading: false\r\n });\r\n\r\n return;\r\n }\r\n\r\n const users = await this.appUserService.GetUsersInfo(\r\n Array.from(new Set(caseComments.map((item) => item.userId.toString())))\r\n );\r\n\r\n for (const cc of caseComments) {\r\n const usr = users.find((item) => item.id === cc.userId.toString());\r\n cc.user = isNullOrUndefined(usr) ? null : usr;\r\n }\r\n\r\n this.setState({\r\n isLoading: false,\r\n caseComments: caseComments.sort(function (a: any, b: any) {\r\n return b.date - a.date;\r\n })\r\n });\r\n };\r\n\r\n mailHandleClick = (e: any, id: number) => {\r\n const index = this.state.caseComments.findIndex((item) => item.id === id);\r\n this.setState({\r\n selectedCaseCommentId: id,\r\n openMenuItem: e.currentTarget,\r\n editTextComment: this.state.caseComments[index].text,\r\n editComment: false\r\n });\r\n };\r\n\r\n handleDeleteComment = async () => {\r\n try {\r\n const comments = [...this.state.caseComments];\r\n\r\n await this.caseService.RemoveCaseComment(this.state.selectedCaseCommentId!);\r\n\r\n const index = comments.findIndex((item) => item.id === this.state.selectedCaseCommentId);\r\n comments.splice(index, 1);\r\n\r\n this.setState({ caseComments: comments, openMenuItem: false });\r\n } catch (err) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleEditComment = () => {\r\n this.setState({ openMenuItem: false, editComment: true });\r\n };\r\n\r\n editCaseComment = async () => {\r\n try {\r\n const comments = [...this.state.caseComments];\r\n const index = comments.findIndex((item) => item.id === this.state.selectedCaseCommentId);\r\n comments[index].text = this.state.editTextComment === null ? '' : this.state.editTextComment;\r\n\r\n await this.caseService.UpdateCaseComment(comments[index]);\r\n\r\n this.setState({ editComment: false, openMenuItem: false, caseComments: comments });\r\n } catch (err) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n displayText = (text: string) => {\r\n const lines = text.split('\\n');\r\n\r\n return lines.map((item: string, index: number) => (\r\n

\r\n {item}\r\n

\r\n ));\r\n };\r\n\r\n renderCaseComments = () => {\r\n const caseComments = [] as any[];\r\n if (this.state.caseComments.length !== 0) {\r\n this.state.caseComments.forEach((comment: CaseComment, index: number) => {\r\n caseComments.push(\r\n
\r\n {index === 0 ? null : }\r\n
\r\n \r\n {moment.utc(comment.date).local().format('L')}\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {moment.utc(comment.date).local().format('LT')}\r\n \r\n
\r\n {comment.user!.firstName +\r\n ' ' +\r\n comment.user!.lastName +\r\n ' (' +\r\n comment.user!.organization!.hoName +\r\n ')'}\r\n
\r\n
\r\n
\r\n
\r\n {this.state.selectedCaseCommentId !== comment.id ||\r\n this.state.editComment === false ? (\r\n this.displayText(comment.text)\r\n ) : (\r\n \r\n
\r\n ) => {\r\n this.setState({ editTextComment: e.currentTarget.value });\r\n }}\r\n validators={['required']}\r\n errorMessages={[]}\r\n />\r\n
\r\n
\r\n {\r\n this.setState({ editComment: false, openMenuItem: false });\r\n }}\r\n >\r\n {this.translatorService.Tranlate('CANCEL', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n )}\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n });\r\n }\r\n return caseComments;\r\n };\r\n\r\n addCaseComment = async () => {\r\n if (this.state.commentText !== null) {\r\n try {\r\n const caseComment = await this.caseService.AddCaseComment({\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n text: this.state.commentText,\r\n commentTypeCode: this.state.selectedCommentType\r\n } as CaseComment);\r\n\r\n caseComment.user = this.props.appState.appUser;\r\n const caseComments = [caseComment, ...this.state.caseComments];\r\n\r\n this.setState({\r\n commentText: '',\r\n caseComments: caseComments\r\n });\r\n\r\n this.props.LoadComments();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
\r\n
\r\n {/*
\r\n \r\n \r\n \r\n )\r\n }}\r\n />\r\n
*/}\r\n
\r\n \r\n
\r\n ) => {\r\n this.setState({ commentText: e.currentTarget.value });\r\n }}\r\n validators={['required']}\r\n errorMessages={[]}\r\n />\r\n
\r\n
\r\n
\r\n {\r\n this.setState({ selectedCommentType: CommentTypeCode.PUBLIC });\r\n }}\r\n >\r\n {this.translatorService.Tranlate('CASE_COMMENT_TYPE_PUBLIC', 'Public')}\r\n \r\n {\r\n this.setState({ selectedCommentType: CommentTypeCode.INTERNAL });\r\n }}\r\n >\r\n {this.translatorService.Tranlate('CASE_COMMENT_TYPE_INTERNAL', 'Intern')}\r\n \r\n {\r\n this.setState({ selectedCommentType: CommentTypeCode.PRIVATE });\r\n }}\r\n >\r\n {this.translatorService.Tranlate('CASE_COMMENT_TYPE_PRIVATE', 'Privat')}\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n {/* */}\r\n {this.renderCaseComments()}\r\n {/* */}\r\n \r\n
\r\n {/* \r\n
\r\n ) => { this.setState({ commentText: e.currentTarget.value }) }}\r\n validators={['required']}\r\n errorMessages={[]}\r\n\r\n />\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
*/}\r\n
\r\n
\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n // (state: ApplicationState) => state.app\r\n (state: ApplicationState) => {\r\n return { caseSettingsState: state.caseSettings, appState: state.app };\r\n },\r\n AppActionCreators\r\n)(withSnackbar(CaseDetailsCommentsTab as any));\r\n","import React, { Fragment } from 'react';\r\nimport { ApplicationState, AppState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { ProviderContext, withSnackbar } from 'notistack';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { CaseRequest, CaseStatusHistory } from '../../interfaces/Case';\r\nimport moment from 'moment';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../helpers/Constants';\r\nimport { isNullOrUndefined } from 'util';\r\nimport CaseDetailsCaseRequests from '../cases/CaseDetailsCaseRequests';\r\nimport { Box, Card, CardContent } from '@material-ui/core';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\n\r\ninterface ICaseStatusHistoryState {\r\n caseStatusHistory: CaseStatusHistory[];\r\n caseRequests: CaseRequest[];\r\n isLoading: boolean;\r\n}\r\n\r\ntype ICaseStatusHistoryProps = AppState & ProviderContext & RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsHistoryTab extends React.PureComponent<\r\n ICaseStatusHistoryProps,\r\n ICaseStatusHistoryState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n private caseService!: ICaseService;\r\n private vehicleService!: IVehicleService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n caseStatusHistory: [],\r\n caseRequests: [],\r\n isLoading: false\r\n } as ICaseStatusHistoryState;\r\n\r\n public componentDidMount() {\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseStatusHistory();\r\n }\r\n );\r\n }\r\n\r\n loadCaseStatusHistory = async () => {\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (Number.isNaN(caseId)) {\r\n return;\r\n }\r\n const ref = Referentials.referential.find((item) => item.code === ReferentialCode.CaseStatus);\r\n\r\n const [caseStatusHistory, caseRequests, vehicleCosts] = await Promise.all([\r\n this.caseService.GetCaseStatusHistory(caseId),\r\n this.caseService.GetCaseRequests(caseId, null),\r\n this.vehicleService.GetCostRequests(caseId, null)\r\n ]);\r\n\r\n for (const vehicleCost of vehicleCosts) {\r\n const caseRequest = {\r\n attachments: vehicleCost.attachments,\r\n id: vehicleCost.id,\r\n userId: vehicleCost.userId,\r\n caseSectionStepFormId: vehicleCost.caseSectionStepFormId,\r\n vehicleId: vehicleCost.vehicleId,\r\n caseId: vehicleCost.caseId,\r\n value: vehicleCost.value,\r\n date: vehicleCost.date,\r\n isVehicleCost: true,\r\n costType: vehicleCost.costType,\r\n currencyRate: vehicleCost.currencyRate,\r\n currency: vehicleCost.currency,\r\n secondValue: vehicleCost.secondValue,\r\n secondCurrency: vehicleCost.secondCurrency,\r\n to: null\r\n } as any as CaseRequest;\r\n caseRequests.push(caseRequest);\r\n }\r\n\r\n const userIds = caseStatusHistory.map((item) => item.assignedToId);\r\n userIds.push(...caseStatusHistory.map((item) => item.userId));\r\n userIds.push(...caseRequests.map((item) => item.userId));\r\n\r\n const users = await this.appUserService.GetUsersInfo(Array.from(new Set(userIds)));\r\n\r\n for (const i of caseStatusHistory) {\r\n const user = users.find((u) => u.id === i.userId);\r\n const assignedTo = users.find((u) => u.id === i.assignedToId);\r\n\r\n i.user = isNullOrUndefined(user) ? null : user;\r\n i.assignedTo = isNullOrUndefined(assignedTo) ? null : assignedTo;\r\n }\r\n for (const i of caseRequests) {\r\n const user = users.find((u) => u.id === i.userId);\r\n i.user = isNullOrUndefined(user) ? null : user;\r\n }\r\n\r\n this.setState({\r\n isLoading: false,\r\n caseStatusHistory: caseStatusHistory.sort(function (a: any, b: any) {\r\n return b.date - a.date;\r\n }),\r\n caseRequests: caseRequests.sort(function (a: any, b: any) {\r\n return b.date - a.date;\r\n })\r\n });\r\n };\r\n\r\n showTimelineTariff = () => {\r\n const caseStatusHistory = this.state.caseStatusHistory;\r\n\r\n if (caseStatusHistory.length === 0) {\r\n return (\r\n \r\n {this.translatorService.Tranlate(\r\n 'TARIFF_EDIT_LABOR_TAB_NO_DATA',\r\n 'Nu exista date de afisat!'\r\n )}\r\n \r\n );\r\n }\r\n\r\n return caseStatusHistory.map((caseStatus, index) => (\r\n
\r\n
\r\n
\r\n

\r\n {caseStatus.caseStatus!.displayName + ' (' + caseStatus.assignedTo!.userName + ')'}\r\n

\r\n

\r\n {moment.utc(caseStatus.date).local().format(this.props.longDateFormat) +\r\n ' (' +\r\n caseStatus.user!.userName +\r\n ')'}\r\n

\r\n
\r\n {index != 0\r\n ? this.renderCaseRequests(caseStatus.date, caseStatusHistory[index - 1].date)\r\n : this.renderCaseRequestsForFirstStatus(caseStatus.date)}\r\n
\r\n
\r\n
\r\n ));\r\n };\r\n\r\n renderCaseRequests = (startDate: Date, endDate: Date) => {\r\n const req = this.state.caseRequests.filter(\r\n (item) => startDate <= item.date && item.date <= endDate\r\n );\r\n const formIds = Array.from(new Set(req.map((r) => r.caseSectionStepFormId)));\r\n return formIds.map((item, index) => (\r\n r.caseSectionStepFormId === item)}\r\n carfixOfferComments={false}\r\n />\r\n ));\r\n };\r\n\r\n renderCaseRequestsForFirstStatus = (startDate: Date) => {\r\n const req = this.state.caseRequests.filter(\r\n (item) => startDate <= item.date && new Date(item.date) < new Date()\r\n );\r\n\r\n const formIds = Array.from(new Set(req.map((r) => r.caseSectionStepFormId)));\r\n return formIds.map((item, index) => (\r\n r.caseSectionStepFormId === item)}\r\n carfixOfferComments={false}\r\n />\r\n ));\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n \r\n \r\n
\r\n
\r\n {' '}\r\n {this.showTimelineTariff()}{' '}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect((state: ApplicationState) => state.app)(\r\n withSnackbar(CaseDetailsHistoryTab as any)\r\n);\r\n","import React, { Fragment } from 'react';\r\nimport { AppActionCreators, ApplicationState, AppState, CaseSettingsState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { ProviderContext, withSnackbar } from 'notistack';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { CaseComment, NotifySupportRequest } from '../../interfaces/Case';\r\nimport { Button, List, ListItem, Divider, Menu, MenuItem } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { CommentTypeCode, NotifySupportTemplateEnum, RoleClaimsEnum } from '../../helpers/Constants';\r\nimport { isNullOrUndefined } from 'util';\r\nimport _ from 'lodash';\r\n\r\ninterface ICaseSupportCommentsState {\r\n caseSupportComments: CaseComment[];\r\n commentText: string | null;\r\n isLoading: boolean;\r\n selectedCommentType: string;\r\n openMenuItem: any | null;\r\n selectedCaseCommentId: number | null;\r\n editComment: boolean;\r\n editTextComment: string | null;\r\n}\r\n\r\ntype ICaseSupportCommentsProps = {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n} & typeof AppActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseSupportCommentsTab extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n private caseService!: ICaseService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n state = {\r\n caseSupportComments: [],\r\n commentText: '',\r\n isLoading: false,\r\n selectedCommentType: !this.hasRight(RoleClaimsEnum.AdminSupport) ? CommentTypeCode.SUPPORT_REQUEST : CommentTypeCode.SUPPORT_RESPONSE,\r\n openMenuItem: null,\r\n selectedCaseCommentId: null,\r\n editComment: false,\r\n editTextComment: null\r\n } as ICaseSupportCommentsState;\r\n\r\n public componentDidMount() {\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseSupportComments();\r\n }\r\n );\r\n }\r\n\r\n loadCaseSupportComments = async () => {\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n if (Number.isNaN(caseId)) {\r\n return;\r\n }\r\n const caseComments = await this.caseService.GetCaseCommentsByTab(caseId, true);\r\n\r\n if (caseComments.length === 0) {\r\n this.setState({\r\n isLoading: false\r\n });\r\n\r\n return;\r\n }\r\n\r\n const users = await this.appUserService.GetUsersInfo(\r\n Array.from(new Set(caseComments.map((item) => item.userId.toString())))\r\n );\r\n\r\n for (const cc of caseComments) {\r\n const usr = users.find((item) => item.id === cc.userId.toString());\r\n cc.user = isNullOrUndefined(usr) ? null : usr;\r\n }\r\n\r\n this.setState({\r\n isLoading: false,\r\n caseSupportComments: caseComments.sort(function (a: any, b: any) {\r\n return b.date - a.date;\r\n })\r\n });\r\n };\r\n\r\n mailHandleClick = (e: any, id: number) => {\r\n const index = this.state.caseSupportComments.findIndex((item) => item.id === id);\r\n this.setState({\r\n selectedCaseCommentId: id,\r\n openMenuItem: e.currentTarget,\r\n editTextComment: this.state.caseSupportComments[index].text,\r\n editComment: false\r\n });\r\n };\r\n\r\n handleDeleteComment = async () => {\r\n try {\r\n const comments = [...this.state.caseSupportComments];\r\n\r\n await this.caseService.RemoveCaseComment(this.state.selectedCaseCommentId!);\r\n\r\n const index = comments.findIndex((item) => item.id === this.state.selectedCaseCommentId);\r\n comments.splice(index, 1);\r\n\r\n this.setState({ caseSupportComments: comments, openMenuItem: false });\r\n } catch (err) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleEditComment = () => {\r\n this.setState({ openMenuItem: false, editComment: true });\r\n };\r\n\r\n editCaseComment = async () => {\r\n try {\r\n const comments = [...this.state.caseSupportComments];\r\n const index = comments.findIndex((item) => item.id === this.state.selectedCaseCommentId);\r\n comments[index].text = this.state.editTextComment === null ? '' : this.state.editTextComment;\r\n\r\n const adminSupport = this.hasRight(RoleClaimsEnum.AdminSupport);\r\n const userSupportComment = this.state.caseSupportComments.find((item) => item.commentTypeCode === CommentTypeCode.SUPPORT_REQUEST && item.userId !== this.props.appState.appUser!.id);\r\n \r\n if (adminSupport && !userSupportComment) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('NO_USER_FOUNDED', 'Nu s-a gasit utilizatorul!'), {\r\n variant: 'error'\r\n });\r\n return;\r\n }\r\n\r\n const request = {\r\n caseId: this.props.caseSettingsState.case!.id,\r\n toUserId: adminSupport ? userSupportComment?.userId : null,\r\n template: this.hasRight(RoleClaimsEnum.AdminSupport) ? NotifySupportTemplateEnum.CASE_SUPPORT_RESPONSE : NotifySupportTemplateEnum.CASE_NOTIFY_SUPPORT,\r\n caseComment: comments[index]\r\n } as NotifySupportRequest;\r\n \r\n await this.caseService.SendNotifySupport(request);\r\n\r\n this.setState({ editComment: false, openMenuItem: false, caseSupportComments: comments });\r\n } catch (err) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n displayText = (text: string) => {\r\n const lines = text.split('\\n');\r\n\r\n return lines.map((item: string, index: number) => (\r\n

\r\n {item}\r\n

\r\n ));\r\n };\r\n\r\n renderCaseComments = () => {\r\n const caseSupportComments = [] as any[];\r\n if (this.state.caseSupportComments.length !== 0) {\r\n this.state.caseSupportComments.forEach((comment: CaseComment, index: number) => {\r\n caseSupportComments.push(\r\n
\r\n {index === 0 ? null : }\r\n
\r\n \r\n {moment.utc(comment.date).local().format('L')}\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {moment.utc(comment.date).local().format('LT')}\r\n \r\n
\r\n {comment.user!.firstName +\r\n ' ' +\r\n comment.user!.lastName +\r\n ' (' +\r\n comment.user!.organization!.hoName +\r\n ')'}\r\n
\r\n
\r\n
\r\n
\r\n {this.state.selectedCaseCommentId !== comment.id ||\r\n this.state.editComment === false ? (\r\n this.displayText(comment.text)\r\n ) : (\r\n \r\n
\r\n ) => {\r\n this.setState({ editTextComment: e.currentTarget.value });\r\n }}\r\n validators={['required']}\r\n errorMessages={[]}\r\n />\r\n
\r\n
\r\n {\r\n this.setState({ editComment: false, openMenuItem: false });\r\n }}\r\n >\r\n {this.translatorService.Tranlate('CANCEL', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n )}\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n });\r\n }\r\n return caseSupportComments;\r\n };\r\n\r\n addCaseComment = async () => {\r\n if (this.state.commentText !== null) {\r\n try {\r\n const adminSupport = this.hasRight(RoleClaimsEnum.AdminSupport);\r\n const userSupportComment = this.state.caseSupportComments.find((item) => item.commentTypeCode === CommentTypeCode.SUPPORT_REQUEST && item.userId !== this.props.appState.appUser!.id);\r\n \r\n if (adminSupport && !userSupportComment) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('NO_USER_FOUNDED', 'Nu s-a gasit utilizatorul!'), {\r\n variant: 'error'\r\n });\r\n return;\r\n }\r\n\r\n const request = {\r\n caseId: this.props.caseSettingsState.case!.id,\r\n toUserId: adminSupport ? userSupportComment?.userId : null,\r\n template: adminSupport ? NotifySupportTemplateEnum.CASE_SUPPORT_RESPONSE : NotifySupportTemplateEnum.CASE_NOTIFY_SUPPORT,\r\n caseComment: {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n text: this.state.commentText,\r\n commentTypeCode: this.state.selectedCommentType,\r\n isFromSupportTab: true\r\n } as CaseComment\r\n } as NotifySupportRequest;\r\n const caseComment = await this.caseService.SendNotifySupport(request);\r\n\r\n caseComment.user = this.props.appState.appUser;\r\n const caseComments = [caseComment, ...this.state.caseSupportComments];\r\n\r\n this.setState({\r\n commentText: '',\r\n caseSupportComments: caseComments\r\n });\r\n\r\n this.props.LoadComments();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
\r\n
\r\n
\r\n \r\n
\r\n ) => {\r\n this.setState({ commentText: e.currentTarget.value });\r\n }}\r\n validators={['required']}\r\n errorMessages={[]}\r\n />\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n {this.renderCaseComments()}\r\n \r\n
\r\n
\r\n
\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => {\r\n return { caseSettingsState: state.caseSettings, appState: state.app };\r\n },\r\n AppActionCreators\r\n)(withSnackbar(CaseDetailsCaseSupportCommentsTab as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n CaseSettingsState,\r\n VehicleActionCreators,\r\n VehicleState\r\n} from '../../store';\r\nimport * as R from 'ramda';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Box, Tabs, Tab, Button, Typography, Modal, Dialog, DialogContent, DialogActions, DialogContentText,\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { PageTitle } from '../../layout-components';\r\nimport { Card } from 'reactstrap';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport CaseDetailsCaseTab from './CaseDetailsCaseTab';\r\nimport CaseDetailsCommentsTab from './CaseDetailsCommentsTab';\r\nimport CaseDetailsHistoryTab from './CaseDetailsHistoryTab';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { setLastOfferRejected } from '../agenda/agenda.requests';\r\nimport { CaseCalculationHistory } from '../../interfaces/Case';\r\nimport _ from 'lodash';\r\nimport { CalculationTypeCode } from '../../helpers/Constants';\r\nimport { getDay } from '../../utils/appointments';\r\nimport moment from 'moment';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport CaseDetailsSupportCommentsTab from './CaseDetailsSupportCommentsTab';\r\n\r\ninterface ICaseDetailsState {\r\n selectedTab: number;\r\n rejectedOfferModal: boolean;\r\n caseCalculations: CaseCalculationHistory[]\r\n}\r\n\r\ntype ICaseDetailsProps = {\r\n caseSettingsState: CaseSettingsState;\r\n vehicleState: VehicleState;\r\n appState: AppState;\r\n} & typeof CaseSettingsActionCreators &\r\n typeof VehicleActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetails extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private caseService!: ICaseService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n selectedTab: 0,\r\n rejectedOfferModal: false,\r\n caseCalculations: []\r\n } as ICaseDetailsState;\r\n\r\n public async componentDidMount() {\r\n const caseId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(caseId)) {\r\n return;\r\n }\r\n\r\n await this.props.SetCaseSettings(caseId);\r\n await this.props.setVehicleObject(null);\r\n let resultCaseCalculations: CaseCalculationHistory[] = [];\r\n if (this.props.caseSettingsState.caseSettings?.workflow?.isCarfixIntegration) {\r\n const res = await this.caseService.GetCaseCalculationHistories(caseId)\r\n const caseCalculationCopy = _.sortBy(_.cloneDeep(res), 'date').reverse();\r\n resultCaseCalculations = _.cloneDeep(_.filter(caseCalculationCopy, function (caseCalculation) {\r\n return caseCalculation.calculationType.code == CalculationTypeCode.ALT;\r\n }));\r\n }\r\n if (!isNullOrUndefined(this.props.caseSettingsState.case!.vehicleId)) {\r\n await this.props.setVehicle(this.props.caseSettingsState.case!.vehicleId);\r\n }\r\n\r\n let selectedTab = 0;\r\n if (this.props.match.url.toLowerCase() === '/cases/' + caseId + '/comments') {\r\n selectedTab = 1;\r\n }\r\n\r\n this.setState({ selectedTab: selectedTab, rejectedOfferModal: this?.props?.caseSettingsState?.case?.lastOfferRejected || false, caseCalculations: resultCaseCalculations });\r\n }\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n private getTitleDescription(): string | null {\r\n const { make, model, version, plateNumber } = this.props.vehicleState?.vehicle || {};\r\n const { brand, displayName } = this.props.caseSettingsState.case?.caseVehicle?.model || {};\r\n const { plateNumber: casePlateNumber } = this.props.caseSettingsState.case?.caseVehicle || {};\r\n\r\n const carMake = make?.name || brand || '';\r\n const carModel = model?.name || '';\r\n const carVersion = version || displayName || '';\r\n const carPlateNumber = plateNumber || casePlateNumber || '';\r\n\r\n return carMake && carVersion ? `${carMake} ${carModel} ${carVersion} ${carPlateNumber}` : null;\r\n }\r\n\r\n private getStatusDescription(): string | null {\r\n const { caseStatus } = this.props.caseSettingsState.case?.caseStatus || {};\r\n return caseStatus ? `${caseStatus.displayName}` : null;\r\n }\r\n\r\n renderOfferPriceAndDate = (calculation: CaseCalculationHistory) => {\r\n if (!calculation) {\r\n return ''\r\n }\r\n let result = '0';\r\n if (!R.isNil(calculation.amount)) {\r\n result = calculation.amount?.toFixed(2);\r\n }\r\n const price = Utils.countryNumberFormat(result, this.props.appState.appUser?.organization?.country ?? null) + ' ';\r\n const date = moment.utc(calculation.date).local().format(this.props.appState.longDateFormat);\r\n return `${price} ${calculation.currencyCode} (${this.translatorService.Tranlate('GENERATE_IN', 'generata in')} ${date})`\r\n }\r\n\r\n renderLastOfferApproved = () => {\r\n const indexOfLastOfferApproved = this.state.caseCalculations?.findIndex((calculation: CaseCalculationHistory) => calculation.hasBeenApproved);\r\n if (indexOfLastOfferApproved !== -1) {\r\n return \r\n {`${this.translatorService.Tranlate(\r\n 'LAST_OFFER_APPROVED',\r\n 'Reparatia va continua cu ultima calculatie acceptata, in valoare de'\r\n )} ${this.state.caseCalculations[indexOfLastOfferApproved] ? this.renderOfferPriceAndDate(this.state.caseCalculations[indexOfLastOfferApproved]) : ''}`}\r\n\r\n \r\n }\r\n return <>\r\n }\r\n\r\n renderlastOfferRejectedModal = () => {\r\n return this.setState({ rejectedOfferModal: false })}>\r\n this.setState({ rejectedOfferModal: false })}>\r\n \r\n \r\n {`${this.translatorService.Tranlate(\r\n 'LAST_OFFER_REJECTED',\r\n 'Clientul a REFUZAT oferta cu pretul'\r\n )} ${this.state?.caseCalculations?.length > 0 && !this.state.caseCalculations[0]?.hasBeenApproved ? this.renderOfferPriceAndDate(this.state.caseCalculations[0]) : ''}`}\r\n \r\n {this.renderLastOfferApproved()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n renderLastStatus = () => {\r\n const text = this.getStatusDescription();\r\n return \r\n
\r\n \r\n \r\n {text}\r\n \r\n \r\n
\r\n
\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n const description = this.getTitleDescription();\r\n\r\n if (isNullOrUndefined(this.props.caseSettingsState.caseSettings)) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('CASE_STATUS_LABEL', 'Status: ')}\r\n \r\n {this.renderLastStatus()}\r\n \r\n }\r\n />\r\n {this?.state.rejectedOfferModal ? this.renderlastOfferRejectedModal() : null}\r\n {!this.props.caseSettingsState.isLoading ? (\r\n \r\n \r\n \r\n \r\n {!this.props.caseSettingsState.caseSettings.workflow.hideComments && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n
\r\n \r\n
\r\n {!this.props.caseSettingsState.isLoading && !this.props?.vehicleState?.vehicle?.loading ? (\r\n
\r\n \r\n \r\n \r\n {!this.props.caseSettingsState.caseSettings.workflow.hideComments && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n ) : null}\r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => {\r\n return { caseSettingsState: state.caseSettings, vehicleState: state.vehicle, appState: state.app };\r\n },\r\n { ...CaseSettingsActionCreators, ...VehicleActionCreators }\r\n)(withSnackbar(CaseDetails as any));\r\n","import { Moment } from 'moment';\r\nimport { VehicleInventoryAgeFilterEnum } from '../../enums/VehicleInventoryAgeFilterEnum';\r\nimport { FiltersSelectItem } from './FiltersSelectItem';\r\n\r\nexport interface VehicleFiltersState {\r\n startDate: Moment;\r\n endDate: Moment;\r\n selectedOrganisations: FiltersSelectItem[];\r\n makeId?: number;\r\n modelId?: number;\r\n fuelId?: number;\r\n locationId?: number;\r\n transmissionTypeId?: number;\r\n tractionTypeId?: number;\r\n inventoryAgeFilter?: VehicleInventoryAgeFilterEnum;\r\n statusId?: number;\r\n technicalConditionId?: number;\r\n}\r\n\r\nexport enum VehicleMainFilterStateKeys {\r\n START_DATE = 'startDate',\r\n END_DATE = 'endDate',\r\n SELECTED_ORGANIZATIONS = 'selectedOrganisations'\r\n}\r\n\r\nexport enum VehicleFilterStateKeys {\r\n MAKE_ID = 'makeId',\r\n LOCATION_ID = 'locationId',\r\n MODEL_ID = 'modelId',\r\n TECHNICAL_CONDITION_ID = 'technicalConditionId',\r\n STATUS_ID = 'statusId',\r\n INVENTORY_AGE_FILTER = 'inventoryAgeFilter',\r\n FUEL_ID = 'fuelId',\r\n TRANSMISSION_TYPE_ID = 'transmissionTypeId',\r\n TRACTION_TYPE_ID = 'tractionTypeId'\r\n}\r\n","import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\r\nimport { Button, Card, Chip, Grid } from '@material-ui/core';\r\nimport {\r\n VehicleFiltersState,\r\n VehicleFilterStateKeys\r\n} from '../../../interfaces/Dashboard/VehicleFiltersState';\r\nimport isNil from 'lodash/isNil';\r\nimport { VehicleResult } from '../../../interfaces/Dashboard/VehicleResult';\r\nimport { DashboardFilter } from '../../../interfaces/Dashboard/DashboardFilter';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\n\r\ninterface Props {\r\n filters: VehicleFiltersState;\r\n data?: VehicleResult;\r\n setFiltersValueByName(name: string, value: any): void;\r\n resetInventoryFilters(): void;\r\n}\r\n\r\nconst VehicleDashboardAppliedFilters: React.FC = ({\r\n filters,\r\n data,\r\n setFiltersValueByName,\r\n resetInventoryFilters\r\n}) => {\r\n const [orgName, setOrgName] = useState();\r\n const context = useContext(ApplicationContext);\r\n\r\n const lessThan = context.translatorService.Tranlate('DASHBOARD_LESS_THAN', 'mai putin de');\r\n const days = context.translatorService.Tranlate('DASHBOARD_DAYS', 'zile');\r\n\r\n const appliedFilters = useMemo(() => {\r\n if (!data || !filters) {\r\n return;\r\n }\r\n const result: DashboardFilter[] = [];\r\n Object.values(VehicleFilterStateKeys).forEach((value) => {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n const id = filters[value];\r\n if (!isNil(id)) {\r\n result.push({ id: id, propertyName: value });\r\n }\r\n });\r\n\r\n for (const item of result) {\r\n switch (item.propertyName) {\r\n case VehicleFilterStateKeys.MAKE_ID:\r\n item.displayName = data.byMaker.find(({ id }) => id === item.id)?.displayName;\r\n break;\r\n case VehicleFilterStateKeys.LOCATION_ID:\r\n item.displayName = orgName;\r\n break;\r\n case VehicleFilterStateKeys.MODEL_ID:\r\n item.displayName = data.byModel.find(({ id }) => id === item.id)?.displayName;\r\n break;\r\n case VehicleFilterStateKeys.TECHNICAL_CONDITION_ID:\r\n item.displayName = data.byTechnicalCondition.find(\r\n ({ id }) => id === item.id\r\n )?.displayName;\r\n break;\r\n case VehicleFilterStateKeys.STATUS_ID:\r\n item.displayName = data.byStatusType.find(({ id }) => id === item.id)?.displayName;\r\n break;\r\n case VehicleFilterStateKeys.INVENTORY_AGE_FILTER:\r\n item.displayName = `${lessThan} ${\r\n data.byInventoryAge.find(({ id }) => id === item.id)?.displayName\r\n } ${days}`;\r\n break;\r\n case VehicleFilterStateKeys.FUEL_ID:\r\n item.displayName = data.byFuelType.find(({ id }) => id === item.id)?.displayName;\r\n break;\r\n case VehicleFilterStateKeys.TRANSMISSION_TYPE_ID:\r\n item.displayName = data.byTransmissionType.find(({ id }) => id === item.id)?.displayName;\r\n break;\r\n case VehicleFilterStateKeys.TRACTION_TYPE_ID:\r\n item.displayName = data.byTractionType.find(({ id }) => id === item.id)?.displayName;\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n }, [data, days, filters, lessThan, orgName]);\r\n\r\n useEffect(() => {\r\n const getOrgName = async () => {\r\n if (!isNil(filters.locationId)) {\r\n const organization = await context.organizationService.GetOrganization(filters.locationId);\r\n\r\n if (organization) {\r\n setOrgName(organization.displayName);\r\n }\r\n } else {\r\n setOrgName(undefined);\r\n }\r\n };\r\n\r\n getOrgName();\r\n }, [context.organizationService, filters.locationId]);\r\n\r\n const handleDelete = useCallback(\r\n (propertyName: string) => {\r\n setFiltersValueByName(propertyName, undefined);\r\n },\r\n [setFiltersValueByName]\r\n );\r\n\r\n if (!appliedFilters?.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n {context.translatorService.Tranlate(\r\n 'DASHBOARD_APPLIED_FILTERS',\r\n 'Filtre aplicate1'\r\n )}\r\n
\r\n
\r\n
\r\n \r\n {context.translatorService.Tranlate('DASHBOARD_RESET_FILTERS', 'Reseteaza filtre1')}\r\n \r\n
\r\n
\r\n {appliedFilters.map((item: DashboardFilter, index) => {\r\n return (\r\n handleDelete(item.propertyName)}\r\n />\r\n );\r\n })}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default VehicleDashboardAppliedFilters;\r\n","import { isNil } from 'ramda';\r\nimport React, { useContext, useMemo, useState } from 'react';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\n\r\nimport { DashboardItem } from '../../../interfaces/Dashboard/DashboardItem';\r\n\r\ninterface Props {\r\n title: string;\r\n selectedId: number;\r\n items: DashboardItem[];\r\n handleBarClick(dataIndex?: number): void;\r\n}\r\n\r\nconst VehicleBarChart: React.FC = ({ title, selectedId, items = [], handleBarClick }) => {\r\n const context = useContext(ApplicationContext);\r\n\r\n const numberOfVehicles = context.translatorService.Tranlate(\r\n 'DASHBOARD_VEHICLE_COUNT',\r\n 'Numar vehicule'\r\n );\r\n\r\n const maxValue = Math.max(...items.map((item) => item.value));\r\n\r\n const series = useMemo(() => {\r\n return [\r\n {\r\n name: numberOfVehicles,\r\n data: items.map((i) => i.value)\r\n }\r\n ];\r\n }, [items, numberOfVehicles]);\r\n\r\n const options = useMemo(() => {\r\n const categories = items.map((i) => i.displayName);\r\n return {\r\n chart: {\r\n type: 'bar',\r\n events: {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dataPointSelection: (event: any, chartContext: any, config: any) => {\r\n if (!isNil(config.dataPointIndex)) {\r\n handleBarClick(config.dataPointIndex);\r\n }\r\n }\r\n },\r\n toolbar: {\r\n show: false\r\n },\r\n selection: {\r\n enabled: true,\r\n type: 'x',\r\n fill: {\r\n color: '#24292e',\r\n opacity: 0.1\r\n }\r\n }\r\n },\r\n legend: {\r\n show: false\r\n },\r\n plotOptions: {\r\n bar: {\r\n borderRadius: 4,\r\n horizontal: true,\r\n distributed: true\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true\r\n },\r\n xaxis: {\r\n categories,\r\n tickAmount: maxValue === 1 || (maxValue === 2 && maxValue),\r\n labels: {\r\n formatter: function (val: number) {\r\n return val.toFixed(0);\r\n }\r\n }\r\n },\r\n yaxis: {\r\n labels: {\r\n formatter: function (val: any) {\r\n return val;\r\n }\r\n }\r\n }\r\n };\r\n }, [items, handleBarClick]);\r\n\r\n const chartHeight = useMemo(() => {\r\n return items.length * 30 + 100;\r\n }, [items.length]);\r\n\r\n const selectedItemName = useMemo(() => {\r\n const item = items.find(({ id }) => id === selectedId);\r\n\r\n return item?.displayName;\r\n }, [items, selectedId]);\r\n\r\n return (\r\n
\r\n
\r\n {!selectedItemName ? title : `${title}: ${selectedItemName}`}\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default VehicleBarChart;\r\n","import React, { useContext } from 'react';\r\nimport { Card, Grid } from '@material-ui/core';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\n\r\ninterface Props {\r\n count: number;\r\n averageMileage: number;\r\n averageVehicleAge: number;\r\n}\r\n\r\nconst VehicleAverages: React.FC = ({ count, averageMileage, averageVehicleAge }) => {\r\n const context = useContext(ApplicationContext);\r\n\r\n return (\r\n <>\r\n \r\n \r\n
\r\n
{context.translatorService.Tranlate('DASHBOARD_TOTAL_INVENTORY', 'Total stoc')}
\r\n

{count}

\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {context.translatorService.Tranlate('DASHBOARD_AVERAGE_MILEAGE', 'Rulaj mediu')}\r\n
\r\n

{`${averageMileage} km`}

\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {context.translatorService.Tranlate('DASHBOARD_AVERAGE_VEHICLE_AGE', 'Varsta medie')}\r\n
\r\n

{`${averageVehicleAge} ani`}

\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default VehicleAverages;\r\n","import { isNil } from 'lodash';\r\nimport React, { useContext, useMemo } from 'react';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\n\r\nimport { DashboardItem } from '../../../interfaces/Dashboard/DashboardItem';\r\n\r\ninterface Props {\r\n title: string;\r\n items: DashboardItem[];\r\n handleBarClick(dataIndex?: number): void;\r\n}\r\nconst VehicleAverageAgeBarChart: React.FC = ({ title, items, handleBarClick }) => {\r\n const context = useContext(ApplicationContext);\r\n\r\n const vehicleCount = context.translatorService.Tranlate(\r\n 'DASHBOARD_VEHICLE_COUNT',\r\n 'Numar vehicule'\r\n );\r\n const lessThan = context.translatorService.Tranlate('DASHBOARD_LESS_THAN', 'mai putin de');\r\n const days = context.translatorService.Tranlate('DASHBOARD_DAYS', 'zile');\r\n const series = useMemo(() => {\r\n return [\r\n {\r\n name: vehicleCount,\r\n data: items.slice(0, -1).map((i) => i.value)\r\n }\r\n ];\r\n }, [items, vehicleCount]);\r\n\r\n const options = useMemo(() => {\r\n const categories = items.slice(0, -1).map((i) => `${lessThan} ${i.displayName} ${days}`);\r\n return {\r\n chart: {\r\n type: 'bar',\r\n events: {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dataPointSelection: (event: any, chartContext: any, config: any) => {\r\n if (!isNil(config.dataPointIndex)) {\r\n handleBarClick(config.dataPointIndex);\r\n }\r\n }\r\n },\r\n height: 500,\r\n toolbar: {\r\n show: false\r\n }\r\n },\r\n legend: {\r\n show: false\r\n },\r\n plotOptions: {\r\n bar: {\r\n borderRadius: 4,\r\n distributed: true\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true\r\n },\r\n xaxis: {\r\n categories\r\n },\r\n yaxis: {\r\n labels: {\r\n formatter: function (val: any) {\r\n return val;\r\n }\r\n }\r\n }\r\n };\r\n }, [days, handleBarClick, items, lessThan]);\r\n\r\n return (\r\n
\r\n
{title}
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default VehicleAverageAgeBarChart;\r\n","import React, { useCallback, useContext, useEffect, useState } from 'react';\r\nimport { MapContainer, TileLayer, Marker } from 'react-leaflet';\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-ignore\r\nimport EnhancedMarker from 'react-leaflet-enhanced-marker';\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-ignore\r\nimport GeocoderArcGIS from 'geocoder-arcgis';\r\nimport { KeyValuePair } from '../../../interfaces/Dashboard/KeyValuePair';\r\nimport Loader from '../../Loader';\r\nimport L from 'leaflet';\r\n\r\nimport 'leaflet/dist/leaflet.css';\r\nimport icon from 'leaflet/dist/images/marker-icon.png';\r\nimport iconShadow from 'leaflet/dist/images/marker-shadow.png';\r\nimport { Tooltip } from '@material-ui/core';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\n\r\nconst DefaultIcon = L.icon({\r\n iconUrl: icon,\r\n shadowUrl: iconShadow,\r\n iconSize: [25, 41],\r\n iconAnchor: [15, 25]\r\n});\r\n\r\nL.Marker.prototype.options.icon = DefaultIcon;\r\n\r\ninterface CustomMarkerProps {\r\n count: number;\r\n selected: boolean;\r\n name: string;\r\n}\r\n\r\nconst CustomMarker: React.FC = ({ count, selected, name }) => {\r\n const markerStyle = {\r\n backgroundColor: selected ? '#00008B' : '#207AC9',\r\n color: 'white',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n width: '80px',\r\n height: '30px',\r\n alignItems: 'center',\r\n borderRadius: '10px'\r\n };\r\n\r\n return (\r\n \r\n
{`${count}`}
\r\n
\r\n );\r\n};\r\n\r\ninterface MapMarker {\r\n lat: number;\r\n long: number;\r\n count: number;\r\n id: number;\r\n name: string;\r\n address: string;\r\n}\r\n\r\ninterface Props {\r\n vehicleLocationCount: KeyValuePair[];\r\n locationId?: number;\r\n setLocationId(locationId?: number): void;\r\n parentCallback: (values: any[]) => any;\r\n}\r\n\r\nconst VehicleMap: React.FC = ({\r\n vehicleLocationCount = [],\r\n locationId,\r\n setLocationId,\r\n parentCallback\r\n}) => {\r\n const [mapMarkers, setMapMarkers] = useState([]);\r\n const [mapLoading, setMapLoading] = useState(false);\r\n\r\n const context = useContext(ApplicationContext);\r\n\r\n const handleMapMarkerClick = useCallback(\r\n (id: number) => {\r\n if (locationId === id) {\r\n setLocationId(undefined);\r\n } else {\r\n setLocationId(id);\r\n }\r\n },\r\n [locationId, setLocationId]\r\n );\r\n\r\n useEffect(() => {\r\n const getGeoData = async () => {\r\n setMapLoading(true);\r\n const geocoder = new GeocoderArcGIS();\r\n const markers: MapMarker[] = [];\r\n for (const item of vehicleLocationCount) {\r\n if (item.key) {\r\n const organization = await context.organizationService.GetOrganization(item.key);\r\n\r\n if (!organization) {\r\n continue;\r\n }\r\n\r\n const params = {\r\n countryCode: 'ro',\r\n city: organization.city,\r\n address: organization.address\r\n };\r\n\r\n try {\r\n const response = await geocoder.findAddressCandidates(params);\r\n\r\n if (response && response.candidates.length) {\r\n markers.push({\r\n count: item.value,\r\n address: response.candidates[0].address,\r\n lat: response.candidates[0].location.y,\r\n long: response.candidates[0].location.x,\r\n name: organization.displayName,\r\n id: item.key\r\n });\r\n }\r\n } catch {\r\n continue;\r\n }\r\n }\r\n }\r\n setMapMarkers(markers);\r\n parentCallback(markers);\r\n setMapLoading(false);\r\n };\r\n\r\n if (vehicleLocationCount.length) {\r\n getGeoData();\r\n }\r\n }, [context.organizationService, vehicleLocationCount]);\r\n\r\n if (mapLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n {mapMarkers.map(({ lat, long, count, id, name }, index) => {\r\n return (\r\n <>\r\n \r\n }\r\n position={[lat, long]}\r\n key={index}\r\n eventHandlers={{\r\n click: () => {\r\n handleMapMarkerClick(id);\r\n }\r\n }}\r\n />\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default VehicleMap;\r\n","import { isNil } from 'lodash';\r\nimport React, { useMemo } from 'react';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport { DashboardItem } from '../../../interfaces/Dashboard/DashboardItem';\r\n\r\ninterface Props {\r\n title: string;\r\n items: DashboardItem[];\r\n handleDonutClick(dataIndex?: number): void;\r\n}\r\n\r\nconst VehicleDonutChart: React.FC = ({ title, items, handleDonutClick }) => {\r\n const series = useMemo(() => {\r\n return items.map((i) => i.value);\r\n }, [items]);\r\n\r\n const options = useMemo(() => {\r\n const labels = items.map((i) => i.displayName);\r\n return {\r\n chart: {\r\n type: 'donut',\r\n events: {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dataPointSelection: (event: any, chartContext: any, config: any) => {\r\n if (!isNil(config.dataPointIndex)) {\r\n handleDonutClick(config.dataPointIndex);\r\n }\r\n }\r\n }\r\n },\r\n labels,\r\n legend: {\r\n position: 'bottom'\r\n },\r\n responsive: [\r\n {\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n position: 'bottom'\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n }, [handleDonutClick, items]);\r\n\r\n return (\r\n
\r\n
{title}
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default VehicleDonutChart;\r\n","import React, { useContext, useMemo } from 'react';\r\n\r\nimport MaterialTable from '@material-table/core';\r\nimport { getLocalization, MaterialTableIcons } from '../../_shared/TableSettings';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\nimport { Paper } from '@material-ui/core';\r\nimport { DashboardGroupedItemDto } from '../../../interfaces/Dashboard/VehicleResult';\r\n\r\ninterface Props {\r\n items: DashboardGroupedItemDto[];\r\n technicalConditionId?: number;\r\n setTechnicalCondtionId(technicalConditionId?: number): void;\r\n}\r\n\r\nconst VehicleConditionTable: React.FC = ({\r\n items,\r\n technicalConditionId,\r\n setTechnicalCondtionId\r\n}) => {\r\n const context = useContext(ApplicationContext);\r\n\r\n const exterior = context.translatorService.Tranlate('DASHBOARD_EXTERIOR', 'Exterior');\r\n const interior = context.translatorService.Tranlate('DASHBOARD_INTERIOR', 'Interior');\r\n const mechanical = context.translatorService.Tranlate('DASHBOARD_MECHANICAL', 'Mecanica');\r\n\r\n const columns = useMemo(() => {\r\n return [\r\n { title: '', field: 'displayName' },\r\n {\r\n title: interior,\r\n field: 'byInConditionValue'\r\n },\r\n {\r\n title: exterior,\r\n field: 'byOutCondition'\r\n },\r\n {\r\n title: mechanical,\r\n field: 'byTehnicalConditionValue'\r\n }\r\n ];\r\n }, [exterior, interior, mechanical]);\r\n\r\n return (\r\n
\r\n ({\r\n backgroundColor: technicalConditionId === rowData.id ? '#267DC3' : '#FFF',\r\n color: technicalConditionId === rowData.id ? '#FFF' : '#000'\r\n })\r\n }}\r\n components={{\r\n Container: (props) => ,\r\n Pagination: () => null\r\n }}\r\n onRowClick={(evt, selectedRow) => setTechnicalCondtionId(selectedRow?.id)}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default VehicleConditionTable;\r\n","import React, { useCallback, useContext, useMemo } from 'react';\r\n\r\nimport MaterialTable from '@material-table/core';\r\nimport { DashboardItem } from '../../../interfaces/Dashboard/DashboardItem';\r\nimport { getLocalization, MaterialTableIcons } from '../../_shared/TableSettings';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\nimport { Paper } from '@material-ui/core';\r\nimport sumBy from 'lodash/sumBy';\r\n\r\ninterface Props {\r\n byInventoryAge: DashboardItem[];\r\n withMissingInfo: number;\r\n items: DashboardItem[];\r\n statusId?: number;\r\n setStatusId(statusId?: number): void;\r\n}\r\n\r\nconst VehicleStockTable: React.FC = ({\r\n items,\r\n statusId,\r\n setStatusId,\r\n byInventoryAge,\r\n withMissingInfo\r\n}) => {\r\n const context = useContext(ApplicationContext);\r\n\r\n const vehicleCount = context.translatorService.Tranlate(\r\n 'DASHBOARD_VEHICLE_COUNT',\r\n 'Numar vehicule'\r\n );\r\n const dashboardState = context.translatorService.Tranlate('DASHBOARD_STATE', 'Status');\r\n const lackingInformation = context.translatorService.Tranlate(\r\n 'DASHBOARD_LACKING_INFORMATION',\r\n 'Cu informatii lipsa'\r\n );\r\n const moreThan90Days = context.translatorService.Tranlate(\r\n 'DASHBOARD_INVENTORY_MORE_THAN_90_DAYS',\r\n 'In stoc de peste 90 zile'\r\n );\r\n\r\n const columns = useMemo(() => {\r\n return [\r\n {\r\n title: vehicleCount,\r\n field: 'value'\r\n },\r\n {\r\n title: dashboardState,\r\n field: 'displayName'\r\n }\r\n ];\r\n }, [dashboardState, vehicleCount]);\r\n\r\n const data = useMemo(() => {\r\n const nrOfVehiclesOlderThan90Days = sumBy(\r\n byInventoryAge.filter(({ id }) => id >= 4),\r\n 'value'\r\n );\r\n return [\r\n {\r\n id: 99,\r\n displayName: lackingInformation,\r\n value: withMissingInfo\r\n },\r\n {\r\n id: 98,\r\n displayName: moreThan90Days,\r\n value: nrOfVehiclesOlderThan90Days\r\n },\r\n ...items\r\n ];\r\n }, [byInventoryAge, items, lackingInformation, moreThan90Days, withMissingInfo]);\r\n\r\n const handleBarClick = useCallback(\r\n (rowId?: number) => {\r\n if (rowId === 99 || rowId === 98) {\r\n return;\r\n }\r\n\r\n setStatusId(rowId);\r\n },\r\n [setStatusId]\r\n );\r\n\r\n const getRowBackgroundColor = useCallback(\r\n (rowId: number) => {\r\n if (rowId == 98 || rowId === 99) {\r\n return '#EBECF0';\r\n }\r\n\r\n return statusId === rowId ? '#267DC3' : '#FFF';\r\n },\r\n [statusId]\r\n );\r\n\r\n const getRowColor = useCallback(\r\n (rowId: number) => {\r\n if (rowId == 98 || rowId === 99) {\r\n return '#000';\r\n }\r\n\r\n return statusId === rowId ? '#FFF' : '#000';\r\n },\r\n [statusId]\r\n );\r\n\r\n return (\r\n
\r\n ({\r\n backgroundColor: getRowBackgroundColor(rowData.id),\r\n color: getRowColor(rowData.id)\r\n })\r\n }}\r\n components={{\r\n Container: (props) => ,\r\n Pagination: () => null\r\n }}\r\n onRowClick={(evt, selectedRow) => handleBarClick(selectedRow?.id)}\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default VehicleStockTable;\r\n","import { Moment } from 'moment';\r\nimport { VehicleInventoryAgeFilterEnum } from '../../enums/VehicleInventoryAgeFilterEnum';\r\nimport { FiltersSelectItem } from './FiltersSelectItem';\r\n\r\nexport interface DashboardFiltersState {\r\n startDate: Moment;\r\n endDate: Moment;\r\n selectedOrganisations: FiltersSelectItem[];\r\n makeId?: number;\r\n modelId?: number;\r\n fuelId?: number;\r\n locationId?: number;\r\n transmissionTypeId?: number;\r\n tractionTypeId?: number;\r\n inventoryAgeFilter?: VehicleInventoryAgeFilterEnum;\r\n statusId?: number;\r\n technicalConditionId?: number;\r\n includeVat?: boolean;\r\n offerTypeId?: number;\r\n clientTypeId?: number;\r\n}\r\n\r\nexport enum DashboardMainFilterStateKeys {\r\n START_DATE = 'startDate',\r\n END_DATE = 'endDate',\r\n SELECTED_ORGANIZATIONS = 'selectedOrganisations',\r\n INCLUDE_VAT = 'includeVat'\r\n}\r\n\r\nexport enum DashboardFilterStateKeys {\r\n MAKE_ID = 'makeId',\r\n LOCATION_ID = 'locationId',\r\n MODEL_ID = 'modelId',\r\n TECHNICAL_CONDITION_ID = 'technicalConditionId',\r\n STATUS_ID = 'statusId',\r\n INVENTORY_AGE_FILTER = 'inventoryAgeFilter',\r\n FUEL_ID = 'fuelId',\r\n TRANSMISSION_TYPE_ID = 'transmissionTypeId',\r\n TRACTION_TYPE_ID = 'tractionTypeId',\r\n CLIENT_TYPE_ID = 'clientTypeId',\r\n OFFER_TYPE_ID = 'offerTypeId'\r\n}\r\n","import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\r\nimport moment from 'moment';\r\nimport { Grid, TextField, FormControlLabel, Switch, FormLabel } from '@material-ui/core';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport {\r\n DashboardFiltersState,\r\n DashboardMainFilterStateKeys\r\n} from '../../interfaces/Dashboard/DashboardFiltersState';\r\nimport { FiltersSelectItem } from '../../interfaces/Dashboard/FiltersSelectItem';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport Loader from '../Loader';\r\n\r\ninterface Props {\r\n filters: DashboardFiltersState;\r\n setFiltersValueByName(name: string, value: any): void;\r\n vatFilterVisible?: boolean;\r\n}\r\n\r\nconst DashboardFilters: React.FC = ({\r\n filters,\r\n setFiltersValueByName,\r\n vatFilterVisible = false\r\n}) => {\r\n const {\r\n app: { dateFormat, language, appUser }\r\n } = useSelector((state: any) => state);\r\n\r\n const context = useContext(ApplicationContext);\r\n\r\n const [organizations, setOrganizations] = useState([]);\r\n\r\n const handleFiltersChange = useCallback(\r\n (value: any, name: string) => {\r\n setFiltersValueByName(name, value);\r\n },\r\n [setFiltersValueByName]\r\n );\r\n\r\n useEffect(() => {\r\n const loadOrganizations = async () => {\r\n const organizations = await context.organizationService.GetOrganizationsByHO(\r\n appUser.hoId,\r\n null\r\n );\r\n\r\n if (organizations.length) {\r\n const selectItems = organizations.map(({ id, name, parent }) => {\r\n return { id, name, parentId: parent ? parent.id : undefined };\r\n });\r\n\r\n if (selectItems.length) {\r\n setOrganizations(selectItems);\r\n }\r\n }\r\n };\r\n\r\n loadOrganizations();\r\n }, [appUser.hoId, context.organizationService]);\r\n\r\n const getAllChildren = useCallback(\r\n (data: FiltersSelectItem[], parentId: number) => {\r\n const children = organizations.filter((i) => i.parentId === parentId);\r\n\r\n for (const child of children) {\r\n data.push(child);\r\n getAllChildren(data, child.id);\r\n }\r\n\r\n return data;\r\n },\r\n [organizations]\r\n );\r\n\r\n const availableOrganizations = useMemo(() => {\r\n const userOrganization = organizations.find((item) => item.id === appUser.organizationId);\r\n\r\n if (userOrganization) {\r\n const children = getAllChildren([], userOrganization.id);\r\n return [userOrganization, ...children];\r\n }\r\n\r\n return [];\r\n }, [appUser.organizationId, getAllChildren, organizations]);\r\n\r\n useEffect(() => {\r\n const selectedItem = organizations.find((item) => item.id === appUser.organizationId);\r\n if (selectedItem) {\r\n const childItems = getAllChildren([], selectedItem.id);\r\n setFiltersValueByName(DashboardMainFilterStateKeys.SELECTED_ORGANIZATIONS, [\r\n selectedItem,\r\n ...childItems\r\n ]);\r\n }\r\n }, [appUser.organizationId, getAllChildren, organizations, setFiltersValueByName]);\r\n\r\n if (!organizations.length) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {\r\n handleFiltersChange(value, DashboardMainFilterStateKeys.START_DATE);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n handleFiltersChange(value, DashboardMainFilterStateKeys.END_DATE);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n handleFiltersChange(newValue, DashboardMainFilterStateKeys.SELECTED_ORGANIZATIONS)\r\n }\r\n getOptionLabel={(option: FiltersSelectItem) => option.name}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n {vatFilterVisible && (\r\n \r\n {\r\n handleFiltersChange(e.target.checked, DashboardMainFilterStateKeys.INCLUDE_VAT);\r\n }}\r\n />\r\n }\r\n label={\r\n \r\n \r\n {context.translatorService.Tranlate(\r\n 'DASHBOARD_PRICES_WITH_TAX',\r\n 'Preturi cu TVA'\r\n )}\r\n \r\n \r\n }\r\n />\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default DashboardFilters;\r\n","import { VehicleFiltersState } from '../../../interfaces/Dashboard/VehicleFiltersState';\r\n\r\nexport const SET_MAKEID = '[FILTERS] SET_MAKEID';\r\nexport const SET_MODELID = '[FILTERS] SET_MODELID';\r\nexport const SET_VALUE_BY_NAME = '[FILTERS] SET_VALUE_BY_NAME';\r\nexport const SET_TECHNICAL_CONDITION_ID = '[FILTERS] SET_TECHNICAL_CONDITION_ID';\r\nexport const SET_STATUS_ID = '[FILTERS] SET_STATUS_ID';\r\nexport const SET_INVENTORY_AGE_FILTER = '[FILTERS] SET_INVENTORY_AGE_FILTER';\r\nexport const SET_FUEL_ID = '[FILTERS] SET_FUEL_ID';\r\nexport const SET_TRANSMISSION_TYPE_ID = '[FILTERS] SET_TRANSMISSION_TYPE_ID';\r\nexport const SET_TRACTION_TYPE_ID = '[FILTERS] SET_TRACTION_TYPE_ID';\r\nexport const SET_LOCATION_ID = '[FILTERS] SET_LOCATION_ID';\r\nexport const RESET_INVENTORY_FILTERS = '[FILTERS] RESET_INVENTORY_FILTERS';\r\n\r\nexport const vehicleDashboardReducer = (state: VehicleFiltersState, action: any) => {\r\n switch (action.type) {\r\n case SET_MAKEID:\r\n return { ...state, makeId: action.makeId !== state.makeId ? action.makeId : undefined };\r\n case SET_MODELID:\r\n return { ...state, modelId: action.modelId !== state.modelId ? action.modelId : undefined };\r\n case SET_TECHNICAL_CONDITION_ID:\r\n return {\r\n ...state,\r\n technicalConditionId:\r\n action.technicalConditionId !== state.technicalConditionId\r\n ? action.technicalConditionId\r\n : undefined\r\n };\r\n case SET_STATUS_ID:\r\n return {\r\n ...state,\r\n statusId: action.statusId !== state.statusId ? action.statusId : undefined\r\n };\r\n case SET_LOCATION_ID:\r\n return {\r\n ...state,\r\n locationId: action.locationId !== state.locationId ? action.locationId : undefined\r\n };\r\n case SET_FUEL_ID:\r\n return {\r\n ...state,\r\n fuelId: action.fuelId !== state.fuelId ? action.fuelId : undefined\r\n };\r\n case SET_TRANSMISSION_TYPE_ID:\r\n return {\r\n ...state,\r\n transmissionTypeId:\r\n action.transmissionTypeId !== state.transmissionTypeId\r\n ? action.transmissionTypeId\r\n : undefined\r\n };\r\n case SET_INVENTORY_AGE_FILTER:\r\n return {\r\n ...state,\r\n inventoryAgeFilter:\r\n action.inventoryAgeFilter !== state.inventoryAgeFilter\r\n ? action.inventoryAgeFilter\r\n : undefined\r\n };\r\n case SET_TRACTION_TYPE_ID:\r\n return {\r\n ...state,\r\n tractionTypeId:\r\n action.tractionTypeId !== state.tractionTypeId ? action.tractionTypeId : undefined\r\n };\r\n case SET_VALUE_BY_NAME:\r\n return { ...state, [action.name]: action.value };\r\n case RESET_INVENTORY_FILTERS:\r\n return {\r\n ...state,\r\n makeId: undefined,\r\n modelId: undefined,\r\n fuelId: undefined,\r\n locationId: undefined,\r\n transmissionTypeId: undefined,\r\n tractionTypeId: undefined,\r\n inventoryAgeFilter: undefined,\r\n statusId: undefined,\r\n technicalConditionId: undefined\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n","import React, { useCallback, useContext, useEffect, useMemo, useReducer, useState } from 'react';\r\nimport moment from 'moment';\r\nimport { Card, Grid, Paper, Button } from '@material-ui/core';\r\nimport axios from 'axios';\r\n\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\nimport { VehicleFilter } from '../../../interfaces/Dashboard/VehicleFilter';\r\nimport { VehicleResult } from '../../../interfaces/Dashboard/VehicleResult';\r\nimport VehicleDashboardAppliedFilters from './VehicleDashboardAppliedFilters';\r\nimport VehicleBarChart from './VehicleBarChart';\r\nimport VehicleAverages from './VehicleAverages';\r\nimport VehicleAverageAgeBarChart from './VehicleAverageAgeBarChart';\r\nimport VehicleMap from './VehicleMap';\r\nimport VehicleDonutChart from './VehicleDonutChart';\r\nimport VehicleConditionTable from './VehicleConditionTable';\r\nimport VehicleStockTable from './VehicleStockTable';\r\nimport Loader from '../../Loader';\r\nimport isNil from 'lodash/isNil';\r\nimport DashboardFilters from '../DashboardFilters';\r\nimport {\r\n vehicleDashboardReducer,\r\n RESET_INVENTORY_FILTERS,\r\n SET_FUEL_ID,\r\n SET_INVENTORY_AGE_FILTER,\r\n SET_LOCATION_ID,\r\n SET_MAKEID,\r\n SET_MODELID,\r\n SET_STATUS_ID,\r\n SET_TECHNICAL_CONDITION_ID,\r\n SET_TRACTION_TYPE_ID,\r\n SET_TRANSMISSION_TYPE_ID,\r\n SET_VALUE_BY_NAME\r\n} from './vehicleDashboardReducer';\r\nimport { useSelector } from 'react-redux';\r\nimport { PptService } from '../../../services/PptService';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport { numberFormat } from '../../../utils/numberFormat';\r\nimport _ from 'lodash';\r\n// import { creatPpt, getFilterInfo } from '../../../utils/pptFunctions';\r\n\r\nconst VehicleDashboard: React.FC = () => {\r\n const [filters, dispatch] = useReducer(vehicleDashboardReducer, {\r\n startDate: moment().add(-3, 'month'),\r\n endDate: moment(),\r\n selectedOrganisations: [],\r\n makeId: undefined,\r\n modelId: undefined,\r\n fuelId: undefined,\r\n locationId: undefined,\r\n transmissionTypeId: undefined,\r\n tractionTypeId: undefined,\r\n inventoryAgeFilter: undefined,\r\n technicalConditionId: undefined,\r\n statusId: undefined\r\n });\r\n\r\n const [data, setData] = useState();\r\n\r\n const [updatedItems, setUpdatedItems] = useState([]);\r\n\r\n const context = useContext(ApplicationContext);\r\n\r\n const constantsData = MUITranslations.GetDashboardTranslations(context.translatorService);\r\n\r\n const {\r\n app: { language, dateFormat }\r\n } = useSelector((state: any) => state);\r\n\r\n const setFiltersValueByName = useCallback((name: string, value: any) => {\r\n dispatch({ type: SET_VALUE_BY_NAME, name, value });\r\n }, []);\r\n\r\n const setMakeId = useCallback((makeId?: number) => {\r\n dispatch({ type: SET_MAKEID, makeId });\r\n }, []);\r\n\r\n const setModelId = useCallback((modelId?: number) => {\r\n dispatch({ type: SET_MODELID, modelId });\r\n }, []);\r\n\r\n const setTechnicalConditionId = useCallback((technicalConditionId?: number) => {\r\n dispatch({ type: SET_TECHNICAL_CONDITION_ID, technicalConditionId });\r\n }, []);\r\n\r\n const setStatusId = useCallback((statusId?: number) => {\r\n dispatch({ type: SET_STATUS_ID, statusId });\r\n }, []);\r\n\r\n const setInventoryAgeFilter = useCallback((inventoryAgeFilter?: number) => {\r\n dispatch({ type: SET_INVENTORY_AGE_FILTER, inventoryAgeFilter });\r\n }, []);\r\n\r\n const setFuelId = useCallback((fuelId?: number) => {\r\n dispatch({ type: SET_FUEL_ID, fuelId });\r\n }, []);\r\n\r\n const setTransmissionTypeId = useCallback((transmissionTypeId?: number) => {\r\n dispatch({ type: SET_TRANSMISSION_TYPE_ID, transmissionTypeId });\r\n }, []);\r\n\r\n const setTractionTypeId = useCallback((tractionTypeId?: number) => {\r\n dispatch({ type: SET_TRACTION_TYPE_ID, tractionTypeId });\r\n }, []);\r\n\r\n const setLocationId = useCallback((locationId?: number) => {\r\n dispatch({ type: SET_LOCATION_ID, locationId });\r\n }, []);\r\n\r\n const resetInventoryFilters = useCallback(() => {\r\n dispatch({ type: RESET_INVENTORY_FILTERS });\r\n }, []);\r\n\r\n const handleFuelTypeDonutClick = useCallback(\r\n (dataIndex?: number) => {\r\n if (!isNil(dataIndex)) {\r\n const fuelId = data?.byFuelType[dataIndex].id;\r\n if (!isNil(fuelId)) {\r\n setFuelId(fuelId);\r\n }\r\n }\r\n },\r\n [data?.byFuelType, setFuelId]\r\n );\r\n\r\n const handleTractionTypeDonutClick = useCallback(\r\n (dataIndex?: number) => {\r\n if (!isNil(dataIndex)) {\r\n const tractionTypeId = data?.byTractionType[dataIndex].id;\r\n if (!isNil(tractionTypeId)) {\r\n setTractionTypeId(tractionTypeId);\r\n }\r\n }\r\n },\r\n [data?.byTractionType, setTractionTypeId]\r\n );\r\n\r\n const handleTransmissionTypeDonutClick = useCallback(\r\n (dataIndex?: number) => {\r\n if (!isNil(dataIndex)) {\r\n const transmissionTypeId = data?.byTransmissionType[dataIndex].id;\r\n if (!isNil(transmissionTypeId)) {\r\n setTransmissionTypeId(transmissionTypeId);\r\n }\r\n }\r\n },\r\n [data?.byTransmissionType, setTransmissionTypeId]\r\n );\r\n\r\n const handleInventoryAgeBarClick = useCallback(\r\n (dataIndex?: number) => {\r\n if (!isNil(dataIndex)) {\r\n const inventoryAgeFilter = data?.byInventoryAge[dataIndex].id;\r\n if (!isNil(inventoryAgeFilter)) {\r\n setInventoryAgeFilter(inventoryAgeFilter);\r\n }\r\n }\r\n },\r\n [data?.byInventoryAge, setInventoryAgeFilter]\r\n );\r\n\r\n const handleMakeBarClick = useCallback(\r\n (dataIndex?: number) => {\r\n if (!isNil(dataIndex)) {\r\n const makeId = data?.byMaker[dataIndex].id;\r\n if (!isNil(makeId)) {\r\n setMakeId(makeId);\r\n }\r\n }\r\n },\r\n [data?.byMaker, setMakeId]\r\n );\r\n\r\n const handleModelBarClick = useCallback(\r\n (dataIndex?: number) => {\r\n if (!isNil(dataIndex)) {\r\n const modelId = data?.byModel[dataIndex].id;\r\n if (!isNil(modelId)) {\r\n setModelId(modelId);\r\n }\r\n }\r\n },\r\n [data?.byModel, setModelId]\r\n );\r\n\r\n const vehicleChartHeight = useMemo(() => {\r\n if (data?.byMaker && data.byMaker.length >= 450) {\r\n return `${data.byMaker.length * 30}`;\r\n }\r\n\r\n return '450px';\r\n }, [data?.byMaker]);\r\n\r\n useEffect(() => {\r\n const source = axios.CancelToken.source();\r\n\r\n const getData = async () => {\r\n try {\r\n const filter: VehicleFilter = {\r\n startDate: filters.startDate.utc().toDate(),\r\n endDate: filters.endDate.utc().toDate(),\r\n organizationIds: !isNil(filters.locationId)\r\n ? [filters.locationId]\r\n : filters.selectedOrganisations.map(({ id }) => id),\r\n makeIds: !isNil(filters.makeId) ? [filters.makeId] : [],\r\n modelIds: !isNil(filters.modelId) ? [filters.modelId] : [],\r\n technicalConditionId: !isNil(filters.technicalConditionId)\r\n ? filters.technicalConditionId\r\n : null,\r\n statusIds: !isNil(filters.statusId) ? [filters.statusId] : [],\r\n inventoryAgeFilters: !isNil(filters.inventoryAgeFilter)\r\n ? [filters.inventoryAgeFilter]\r\n : [],\r\n fuelTypeIds: !isNil(filters.fuelId) ? [filters.fuelId] : [],\r\n tractionTypeIds: !isNil(filters.tractionTypeId) ? [filters.tractionTypeId] : [],\r\n transmissionTypeIds: !isNil(filters.transmissionTypeId)\r\n ? [filters.transmissionTypeId]\r\n : []\r\n };\r\n\r\n if (filter.startDate && filter.endDate && filter.organizationIds.length) {\r\n const result = await context.vehicleService.GetDashboardData(filter, source.token);\r\n\r\n if (result) {\r\n const finalResult: VehicleResult = {\r\n ...result,\r\n byMaker: !isNil(filters.makeId) ? data?.byMaker || [] : result.byMaker,\r\n byModel: !isNil(filters.modelId) ? data?.byModel || [] : result.byModel,\r\n byStatusType: !isNil(filters.statusId)\r\n ? data?.byStatusType || []\r\n : result.byStatusType,\r\n byTechnicalCondition: !isNil(filters.technicalConditionId)\r\n ? data?.byTechnicalCondition || []\r\n : result.byTechnicalCondition,\r\n byInOutAndTechnicalCondition: !isNil(filters.technicalConditionId)\r\n ? data?.byInOutAndTechnicalCondition || []\r\n : result.byInOutAndTechnicalCondition,\r\n byInventoryAge: !isNil(filters.inventoryAgeFilter)\r\n ? data?.byInventoryAge || []\r\n : result.byInventoryAge,\r\n byFuelType: !isNil(filters.fuelId) ? data?.byFuelType || [] : result.byFuelType,\r\n byTransmissionType: !isNil(filters.transmissionTypeId)\r\n ? data?.byTransmissionType || []\r\n : result.byTransmissionType,\r\n byTractionType: !isNil(filters.tractionTypeId)\r\n ? data?.byTractionType || []\r\n : result.byTractionType,\r\n byOrganization: filters.locationId\r\n ? data?.byOrganization || []\r\n : result.byOrganization\r\n };\r\n setData(finalResult);\r\n }\r\n }\r\n } catch (error) {\r\n if (!axios.isCancel(error)) {\r\n throw error;\r\n }\r\n }\r\n };\r\n\r\n getData();\r\n\r\n return () => source.cancel();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [\r\n filters.endDate,\r\n filters.startDate,\r\n filters.selectedOrganisations,\r\n context.vehicleService,\r\n filters.makeId,\r\n filters.modelId,\r\n filters.technicalConditionId,\r\n filters.statusId,\r\n filters.inventoryAgeFilter,\r\n filters.fuelId,\r\n filters.transmissionTypeId,\r\n filters.tractionTypeId,\r\n filters.locationId,\r\n language\r\n ]);\r\n\r\n const handleCallback = (childData: any) => {\r\n setUpdatedItems(childData);\r\n };\r\n const checkIfUpdatedItemsIsLoaded = () => {\r\n if (!data?.byOrganization.length) {\r\n return false;\r\n }\r\n if (!updatedItems.length) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const geTechnicalConditionFormatTable = () => {\r\n const formatTable = [];\r\n formatTable.push({\r\n title: '',\r\n render: (rowData: any) => rowData.displayName\r\n });\r\n formatTable.push({\r\n title: context.translatorService.Tranlate('DASHBOARD_INTERIOR', 'Interior'),\r\n render: (rowData: any) => numberFormat(rowData.byInConditionValue, 0, undefined, '')\r\n });\r\n formatTable.push({\r\n title: context.translatorService.Tranlate('DASHBOARD_EXTERIOR', 'Exterior'),\r\n render: (rowData: any) => numberFormat(rowData.byOutCondition, 0, undefined, '')\r\n });\r\n formatTable.push({\r\n title: context.translatorService.Tranlate('DASHBOARD_MECHANICAL', 'Mecanica'),\r\n render: (rowData: any) => numberFormat(rowData.byTehnicalConditionValue, 0, undefined, '')\r\n });\r\n\r\n return formatTable;\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n {\r\n context.pptService = new PptService(context.translatorService, data);\r\n context.pptService.addFirstPage(filters, 'vehicle');\r\n context.pptService.addHorizontalChart(\r\n data?.byMaker,\r\n context.translatorService.Tranlate('DASHBOARD_MAKE', 'Producator')\r\n );\r\n context.pptService.addTable(constantsData.stockMap, updatedItems, '');\r\n context.pptService.addHorizontalChart(\r\n data?.byModel,\r\n context.translatorService.Tranlate('DASHBOARD_MODEL', 'Model')\r\n );\r\n context.pptService.addTable(\r\n geTechnicalConditionFormatTable(),\r\n data?.byInOutAndTechnicalCondition,\r\n context.translatorService.Tranlate(\r\n 'DASHBOARD_TECHNICAL_INVENTORY_STATE',\r\n 'Stare tehnica stoc'\r\n )\r\n );\r\n context.pptService.addTable(\r\n constantsData.stockTable,\r\n [\r\n {\r\n id: 99,\r\n displayName: context.translatorService.Tranlate(\r\n 'DASHBOARD_LACKING_INFORMATION',\r\n 'Cu informatii lipsa'\r\n ),\r\n value: data?.withMissingInfo\r\n },\r\n {\r\n id: 98,\r\n displayName: context.translatorService.Tranlate(\r\n 'DASHBOARD_INVENTORY_MORE_THAN_90_DAYS',\r\n 'In stoc de peste 90 zile'\r\n ),\r\n value: data?.byInventoryAge.length\r\n ? _.sumBy(\r\n data?.byInventoryAge.filter(({ id }) => id >= 4),\r\n 'value'\r\n )\r\n : 0\r\n },\r\n ...data!.byStatusType\r\n ],\r\n context.translatorService.Tranlate('DASHBOARD_INVENTORY_DETAILS', 'Detalii stoc')\r\n );\r\n const lessThan = context.translatorService.Tranlate(\r\n 'DASHBOARD_LESS_THAN',\r\n 'mai putin de'\r\n );\r\n const days = context.translatorService.Tranlate('DASHBOARD_DAYS', 'zile');\r\n const labels = data?.byInventoryAge\r\n .slice(0, -1)\r\n .map((inventoryAge) => `${lessThan} ${inventoryAge.displayName} ${days}`);\r\n context.pptService.addVerticalChart(\r\n data?.byInventoryAge.slice(0, -1),\r\n `${context.translatorService.Tranlate(\r\n 'DASHBOARD_AVERAGE_INVENTORY_AGE',\r\n 'Vehcime medie stoc'\r\n )}: ${data?.averageInventoryAge} ${context.translatorService.Tranlate(\r\n 'DASHBOARD_DAYS',\r\n 'zile'\r\n )}`,\r\n labels\r\n );\r\n context.pptService.addCircleChart(\r\n data?.byFuelType,\r\n context.translatorService.Tranlate('DASHBOARD_FUEL', 'Combustibil')\r\n );\r\n context.pptService.addCircleChart(\r\n data?.byTransmissionType,\r\n context.translatorService.Tranlate('DASHBOARD_TRANSMISSION', 'Transmisie')\r\n );\r\n context.pptService.addCircleChart(\r\n data?.byTractionType,\r\n context.translatorService.Tranlate('DASHBOARD_TRACTION', 'Tractiune')\r\n );\r\n context.pptService.exportPpt();\r\n }}\r\n >\r\n Export\r\n \r\n \r\n {data ? (\r\n <>\r\n
\r\n

{`${context.translatorService.Tranlate(\r\n 'DASHBOARD_INVENTORY_STRUCTURE',\r\n 'Structura stoc la data de'\r\n )} ${moment().format(dateFormat)}`}

\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default VehicleDashboard;\r\n","import { isNil } from 'lodash';\r\nimport React, { useContext, useMemo } from 'react';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\nimport { DashboardItem } from '../../../interfaces/Dashboard/DashboardItem';\r\n\r\ninterface Props {\r\n title: string;\r\n items: DashboardItem[];\r\n handleDonutClick(dataIndex?: number): void;\r\n}\r\n\r\nconst AcquistionDonutChart: React.FC = ({ title, items, handleDonutClick }) => {\r\n const context = useContext(ApplicationContext);\r\n const series = useMemo(() => {\r\n return items.map((i) => i.value);\r\n }, [items]);\r\n\r\n const translateDisplayName = (displayName: string) : string => {\r\n if (displayName == 'PJ') {\r\n return context.translatorService.Tranlate(\r\n 'PJ_LABEL',\r\n 'PJ'\r\n );\r\n }\r\n if (displayName == 'PF') {\r\n return context.translatorService.Tranlate(\r\n 'PF_LABEL',\r\n 'PF'\r\n );\r\n }\r\n\r\n if (displayName == 'Achizitie Renault Selection') {\r\n return context.translatorService.Tranlate(\r\n 'ACQUISITION_OF_RENAULT_SELECTION',\r\n 'Achizitie Renault Selection'\r\n );\r\n }\r\n\r\n if (displayName == 'Achizitie Libera') {\r\n return context.translatorService.Tranlate(\r\n 'ACQUISITION_NON_RENAULT_SELECTION',\r\n 'Achizitie Libera'\r\n );\r\n }\r\n\r\n return displayName;\r\n }\r\n const options = useMemo(() => {\r\n const labels = items.map((i) => translateDisplayName(i.displayName));\r\n return {\r\n chart: {\r\n type: 'donut',\r\n events: {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dataPointSelection: (event: any, chartContext: any, config: any) => {\r\n if (!isNil(config.dataPointIndex)) {\r\n handleDonutClick(config.dataPointIndex);\r\n }\r\n }\r\n }\r\n },\r\n labels,\r\n legend: {\r\n position: 'bottom'\r\n },\r\n responsive: [\r\n {\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n position: 'bottom'\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n }, [handleDonutClick, items, \r\n context.translatorService.Tranlate(\r\n 'PJ_LABEL',\r\n 'PJ'\r\n ),\r\n context.translatorService.Tranlate(\r\n 'PF_LABEL',\r\n 'PF'\r\n ),\r\n context.translatorService.Tranlate(\r\n 'ACQUISITION_OF_RENAULT_SELECTION',\r\n 'Achizitie Renault Selection'\r\n ),\r\n context.translatorService.Tranlate(\r\n 'ACQUISITION_NON_RENAULT_SELECTION',\r\n 'Achizitie Libera'\r\n )\r\n ]);\r\n\r\n return (\r\n
\r\n
{title}
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default AcquistionDonutChart;\r\n","import React, { useContext } from 'react';\r\nimport { Card, Grid } from '@material-ui/core';\r\n\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\nimport { AcquisitionResult } from '../../../interfaces/Dashboard/AcquisitionResult';\r\nimport { numberFormat } from '../../../utils/numberFormat';\r\n\r\ninterface Props {\r\n data: AcquisitionResult;\r\n includeVat: boolean;\r\n}\r\n\r\nconst AcquisitionMainCards: React.FC = ({ data, includeVat }) => {\r\n const context = useContext(ApplicationContext);\r\n\r\n const { purchasesCompleted, purchasesInProgress, purchasesFailed, newVehiclesSoldCount } = data;\r\n\r\n const purchasesCompletedPrice = includeVat\r\n ? purchasesCompleted.amountInclVat\r\n : purchasesCompleted.amount;\r\n\r\n const purchasesInProgressPrice = includeVat\r\n ? purchasesInProgress.amountInclVat\r\n : purchasesInProgress.amount;\r\n\r\n const purchasesFailedPrice = includeVat ? purchasesFailed.amountInclVat : purchasesFailed.amount;\r\n\r\n const averagePurchasePrice =\r\n purchasesCompleted.count == 0 ? 0 : purchasesCompletedPrice / purchasesCompleted.count;\r\n\r\n return (\r\n <>\r\n \r\n \r\n
\r\n
\r\n {context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_FINALISED',\r\n 'Finalizate cu succes'\r\n )}\r\n
\r\n

{purchasesCompleted.count}

\r\n

{`${numberFormat(purchasesCompletedPrice)} EUR`}

\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_IN_PROGRESS',\r\n 'In curs de achizitie'\r\n )}\r\n
\r\n

{purchasesInProgress.count}

\r\n

{`${numberFormat(purchasesInProgressPrice)} EUR`}

\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_FAILED',\r\n 'Achizitii esuate'\r\n )}\r\n
\r\n

{purchasesFailed.count}

\r\n

{`${numberFormat(purchasesFailedPrice)} EUR`}

\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_AVERAGE_PRICE',\r\n 'Pret mediu achizitie'\r\n )}\r\n
\r\n

{`${numberFormat(averagePurchasePrice)} EUR`}

\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n {context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_NEW_VEHICLES_SOLD',\r\n 'Vehicule noi vandute'\r\n )}\r\n
\r\n

{newVehiclesSoldCount}

\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default AcquisitionMainCards;\r\n","import { Moment } from 'moment';\r\nimport { FiltersSelectItem } from './FiltersSelectItem';\r\n\r\nexport interface AcquisitionFiltersState {\r\n startDate: Moment;\r\n endDate: Moment;\r\n selectedOrganisations: FiltersSelectItem[];\r\n includeVat: boolean;\r\n locationId?: number;\r\n offerTypeId?: number;\r\n clientTypeId?: number;\r\n makeId?: number;\r\n}\r\n\r\nexport enum AcquisitionMainFilterStateKeys {\r\n START_DATE = 'startDate',\r\n END_DATE = 'endDate',\r\n SELECTED_ORGANIZATIONS = 'selectedOrganisations',\r\n INCLUDE_VAT = 'includeVat'\r\n}\r\n\r\nexport enum AcquisitionFilterStateKeys {\r\n LOCATION_ID = 'locationId',\r\n CLIENT_TYPE_ID = 'clientTypeId',\r\n OFFER_TYPE_ID = 'offerTypeId',\r\n MAKE_ID = 'makeId'\r\n}\r\n","import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\r\nimport { Button, Card, Chip, Grid } from '@material-ui/core';\r\nimport {\r\n AcquisitionFiltersState,\r\n AcquisitionFilterStateKeys\r\n} from '../../../interfaces/Dashboard/AcquisitionFiltersState';\r\nimport isNil from 'lodash/isNil';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\nimport { AcquisitionResult } from '../../../interfaces/Dashboard/AcquisitionResult';\r\nimport { DashboardFilter } from '../../../interfaces/Dashboard/DashboardFilter';\r\ninterface Props {\r\n filters: AcquisitionFiltersState;\r\n data?: AcquisitionResult;\r\n setFiltersValueByName(name: string, value: any): void;\r\n resetFilters(): void;\r\n}\r\n\r\nconst AcquisitionDashboardAppliedFilters: React.FC = ({\r\n filters,\r\n data,\r\n setFiltersValueByName,\r\n resetFilters\r\n}) => {\r\n const [orgName, setOrgName] = useState();\r\n const context = useContext(ApplicationContext);\r\n\r\n const appliedFilters = useMemo(() => {\r\n if (!data || !filters) {\r\n return;\r\n }\r\n const result: DashboardFilter[] = [];\r\n Object.values(AcquisitionFilterStateKeys).forEach((value) => {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n const id = filters[value];\r\n if (!isNil(id)) {\r\n result.push({ id: id, propertyName: value });\r\n }\r\n });\r\n\r\n for (const item of result) {\r\n switch (item.propertyName) {\r\n case AcquisitionFilterStateKeys.MAKE_ID:\r\n item.displayName = data.purchasedVehiclesByMaker.find(\r\n ({ id }) => id === item.id\r\n )?.displayName;\r\n break;\r\n case AcquisitionFilterStateKeys.LOCATION_ID:\r\n item.displayName = orgName;\r\n break;\r\n case AcquisitionFilterStateKeys.CLIENT_TYPE_ID:\r\n item.displayName = data.purchasedVehiclesByClientType.find(\r\n ({ id }) => id === item.id\r\n )?.displayName;\r\n break;\r\n case AcquisitionFilterStateKeys.OFFER_TYPE_ID:\r\n item.displayName = data.purchasedVehiclesByOfferType.find(\r\n ({ id }) => id === item.id\r\n )?.displayName;\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n }, [data, filters, orgName]);\r\n\r\n useEffect(() => {\r\n const getOrgName = async () => {\r\n if (!isNil(filters.locationId)) {\r\n const organization = await context.organizationService.GetOrganization(filters.locationId);\r\n\r\n if (organization) {\r\n setOrgName(organization.displayName);\r\n }\r\n } else {\r\n setOrgName(undefined);\r\n }\r\n };\r\n\r\n getOrgName();\r\n }, [context.organizationService, filters.locationId]);\r\n\r\n const handleDelete = useCallback(\r\n (propertyName: string) => {\r\n setFiltersValueByName(propertyName, undefined);\r\n },\r\n [setFiltersValueByName]\r\n );\r\n\r\n if (!appliedFilters?.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n {context.translatorService.Tranlate(\r\n 'DASHBOARD_APPLIED_FILTERS',\r\n 'Filtre aplicate1'\r\n )}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {appliedFilters.map((item: DashboardFilter, index) => {\r\n return (\r\n handleDelete(item.propertyName)}\r\n />\r\n );\r\n })}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AcquisitionDashboardAppliedFilters;\r\n","import React, { useContext, useEffect, useState } from 'react';\r\nimport { Card, Grid } from '@material-ui/core';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\nimport { DashboardAcquisitionDetails } from '../../../interfaces/Dashboard/DashboardAcquisitionDetails';\r\nimport { AttachmentTypeCode } from '../../../helpers/Constants';\r\n\r\ninterface DashboardAcquisitionExtendedDetails extends DashboardAcquisitionDetails {\r\n imageURL?: string;\r\n base64Value?: any;\r\n}\r\ninterface Props {\r\n items: DashboardAcquisitionExtendedDetails[];\r\n includeVat: boolean;\r\n parentCallback: (values: any[]) => any;\r\n}\r\n\r\nconst RecentAcquisitions: React.FC = ({ items, includeVat, parentCallback }) => {\r\n const context = useContext(ApplicationContext);\r\n const caseService = context.caseService;\r\n const [updatedItems, setUpdatedItems] = useState(items);\r\n\r\n const convertBlobToBase64 = async (blob: any) => {\r\n // blob data\r\n return await blobToBase64(blob);\r\n };\r\n\r\n const blobToBase64 = (blob: any) =>\r\n new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(blob);\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = (error) => reject(error);\r\n });\r\n\r\n useEffect(() => {\r\n const getAttachments = async () => {\r\n const itemsWithImages: DashboardAcquisitionExtendedDetails[] = [];\r\n for (let i = 0; i < items.length; i++) {\r\n const attachments = await caseService.GetCaseAttachments(items[i].caseId, [\r\n AttachmentTypeCode.MAIN_VEHICLE_PHOTO\r\n ]);\r\n const blob = await caseService.GetCaseAttachment(attachments[0].fileName);\r\n items[i].imageURL = URL.createObjectURL(blob);\r\n items[i].base64Value = await convertBlobToBase64(blob);\r\n itemsWithImages.push({ ...items[i] });\r\n }\r\n\r\n return itemsWithImages;\r\n };\r\n\r\n getAttachments().then((updatedItems) => {\r\n setUpdatedItems(updatedItems);\r\n parentCallback(updatedItems);\r\n });\r\n }, [items, caseService]);\r\n\r\n return (\r\n <>\r\n

\r\n {context.translatorService.Tranlate('DASHBOARD_ACQUISITION_RECENT', 'Achizitii recente')}\r\n

\r\n
\r\n \r\n {updatedItems.map((item) => (\r\n \r\n \r\n \r\n
\r\n \r\n {item.makeName} {item.modelName}\r\n {' '}\r\n {item.equipmentVersion} /{item.makeYear}/\r\n {item.fuelType}/{item.transmissionType}\r\n
\r\n {context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_PRICE',\r\n 'Pret achizitie'\r\n )}\r\n : {Math.round(includeVat ? item.purchasePriceInclVat : item.purchasePrice)} Euro\r\n
\r\n
\r\n {context.translatorService.Tranlate('DASHBOARD_BUYER_NAME', 'Cumparator')}:{' '}\r\n {item.buyerName}\r\n
\r\n
\r\n {context.translatorService.Tranlate('DASHBOARD_ORGANIZATION', 'Organizatie')}:{' '}\r\n {item.organizationName}\r\n
\r\n
\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n \r\n );\r\n};\r\nexport default RecentAcquisitions;\r\n","import React, { useContext, useMemo } from 'react';\r\nimport MaterialTable from '@material-table/core';\r\nimport { getLocalization, MaterialTableIcons } from '../../_shared/TableSettings';\r\nimport { Paper } from '@material-ui/core';\r\nimport { AcquisitionBuyerStats } from '../../../interfaces/Dashboard/AcquisitionBuyerStats';\r\nimport { numberFormat } from '../../../utils/numberFormat';\r\n\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\n\r\ninterface Props {\r\n title: string;\r\n topBuyers: AcquisitionBuyerStats[];\r\n includeVat: boolean;\r\n isTentative?: boolean;\r\n}\r\n\r\nconst TopBuyers: React.FC = ({ topBuyers, includeVat, title, isTentative }) => {\r\n const context = useContext(ApplicationContext);\r\n\r\n const columns = useMemo(() => {\r\n const mainColumns: any = [\r\n {\r\n title: context.translatorService.Tranlate('DASHBOARD_ORGANIZATION', 'Organizatie'),\r\n field: 'organizationName'\r\n },\r\n {\r\n title: context.translatorService.Tranlate('DASHBOARD_BUYER_NAME', 'Cumparator'),\r\n field: 'buyerName'\r\n }\r\n ];\r\n\r\n if (isTentative) {\r\n mainColumns.push({\r\n title: context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_IN_PROGRESS_TABLE_HEADER',\r\n 'Achizitii in desfasurare'\r\n ),\r\n field: 'inProgressPurchasesCount'\r\n });\r\n mainColumns.push({\r\n title: context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_ESTIMATED_VALUE',\r\n 'Pret mediu estimat'\r\n ),\r\n render: (rowData: AcquisitionBuyerStats) => {\r\n if (!includeVat) {\r\n return rowData.inProgressPurchasesEstimatedAveragePrice\r\n ? numberFormat(rowData.inProgressPurchasesEstimatedAveragePrice, 0, undefined, ' EUR')\r\n : 0;\r\n } else {\r\n return rowData.inProgressPurchasesEstimatedAveragePriceInclVat\r\n ? numberFormat(\r\n rowData.inProgressPurchasesEstimatedAveragePriceInclVat,\r\n 0,\r\n undefined,\r\n ' EUR'\r\n )\r\n : 0;\r\n }\r\n }\r\n });\r\n } else {\r\n mainColumns.push({\r\n title: context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_FINALIZED_TABLE_HEADER',\r\n 'Achizitii Finalizate'\r\n ),\r\n field: 'completedPurchases.count'\r\n });\r\n mainColumns.push({\r\n title: context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_TOTAL_PAID',\r\n 'Total Achitat'\r\n ),\r\n render: (rowData: AcquisitionBuyerStats) =>\r\n includeVat\r\n ? numberFormat(rowData.completedPurchases.amountInclVat, 0, undefined, ' EUR')\r\n : numberFormat(rowData.completedPurchases.amount, 0, undefined, ' EUR')\r\n });\r\n mainColumns.push({\r\n title: context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_DAMAGE_AND_OTHER',\r\n 'Daune + Alte costuri'\r\n ),\r\n render: (rowData: AcquisitionBuyerStats) =>\r\n includeVat\r\n ? numberFormat(rowData.damageAndOtherCostsInclVat, 0, undefined, ' EUR')\r\n : numberFormat(rowData.damageAndOtherCosts, 0, undefined, ' EUR')\r\n });\r\n mainColumns.push({\r\n title: context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_AVERAGE_PRICE',\r\n 'Pret Mediu Achizitie'\r\n ),\r\n render: (rowData: AcquisitionBuyerStats) => {\r\n const price = includeVat\r\n ? rowData.completedPurchases.amountInclVat\r\n : rowData.completedPurchases.amount;\r\n\r\n const averagePrice = price / rowData.completedPurchases.count;\r\n\r\n return numberFormat(averagePrice, 0, undefined, ' EUR');\r\n }\r\n });\r\n }\r\n\r\n return mainColumns;\r\n }, [includeVat, isTentative]);\r\n\r\n return (\r\n <>\r\n

{title}

\r\n
\r\n ,\r\n Pagination: () => null\r\n }}\r\n />\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default TopBuyers;\r\n","import { AcquisitionFiltersState } from '../../../interfaces/Dashboard/AcquisitionFiltersState';\r\n\r\nexport const SET_VALUE_BY_NAME = '[FILTERS] SET_VALUE_BY_NAME';\r\nexport const SET_CLIENT_TYPE_ID = '[FILTERS] SET_CLIENT_TYPE_ID';\r\nexport const SET_OFFER_TYPE_ID = '[FILTERS] SET_OFFER_TYPE_ID';\r\nexport const SET_MAKE_ID = '[FILTERS] SET_MAKE_ID';\r\nexport const RESET_FILTERS = '[FILTERS] RESET_FILTERS';\r\n\r\nexport const acquisitionDashboardReducer = (state: AcquisitionFiltersState, action: any) => {\r\n switch (action.type) {\r\n case SET_CLIENT_TYPE_ID:\r\n return {\r\n ...state,\r\n clientTypeId: action.clientTypeId !== state.clientTypeId ? action.clientTypeId : undefined\r\n };\r\n case SET_OFFER_TYPE_ID:\r\n return {\r\n ...state,\r\n offerTypeId: action.offerTypeId !== state.offerTypeId ? action.offerTypeId : undefined\r\n };\r\n case SET_MAKE_ID:\r\n return { ...state, makeId: action.makeId !== state.makeId ? action.makeId : undefined };\r\n case SET_VALUE_BY_NAME:\r\n return { ...state, [action.name]: action.value };\r\n case RESET_FILTERS:\r\n return {\r\n ...state,\r\n clientTypeId: undefined,\r\n offerTypeId: undefined,\r\n makeId: undefined\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { Card, Grid, Paper, Button } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport React, { useCallback, useContext, useEffect, useReducer, useState } from 'react';\r\nimport axios from 'axios';\r\nimport isNil from 'lodash/isNil';\r\n\r\nimport AcquisitionDonutChart from './AcquisitionDonutChart';\r\nimport AcquisitionMainCards from './AcquisitionMainCards';\r\nimport AcquisitionDashboardAppliedFilters from './AcquisitionDashboardAppliedFilters';\r\nimport RecentAcquisitions from './RecentAcquisitions';\r\nimport TopBuyers from './TopBuyers';\r\nimport DashboardFilters from '../DashboardFilters';\r\nimport {\r\n acquisitionDashboardReducer,\r\n RESET_FILTERS,\r\n SET_CLIENT_TYPE_ID,\r\n SET_MAKE_ID,\r\n SET_OFFER_TYPE_ID,\r\n SET_VALUE_BY_NAME\r\n} from './acquisitionDashboardReducer';\r\nimport { AcquisitionFilter } from '../../../interfaces/Dashboard/AcquisitionFilter';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\nimport { AcquisitionResult } from '../../../interfaces/Dashboard/AcquisitionResult';\r\nimport Loader from '../../Loader';\r\nimport { PptService } from '../../../services/PptService';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport { numberFormat } from '../../../utils/numberFormat';\r\nimport { AttachmentTypeCode } from '../../../helpers/Constants';\r\n\r\nconst AcquistionDashboard: React.FC = () => {\r\n const [filters, dispatch] = useReducer(acquisitionDashboardReducer, {\r\n startDate: moment().add(-3, 'month'),\r\n endDate: moment(),\r\n selectedOrganisations: [],\r\n includeVat: true,\r\n locationId: undefined,\r\n clientTypeId: undefined,\r\n offerTypeId: undefined,\r\n makeId: undefined\r\n });\r\n\r\n const [data, setData] = useState();\r\n\r\n const [updatedItems, setUpdatedItems] = useState([]);\r\n\r\n const context = useContext(ApplicationContext);\r\n\r\n const constantsData = MUITranslations.GetDashboardTranslations(context.translatorService);\r\n\r\n const setFiltersValueByName = useCallback((name: string, value: any) => {\r\n dispatch({ type: SET_VALUE_BY_NAME, name, value });\r\n }, []);\r\n\r\n const setClientTypeId = useCallback((clientTypeId?: number) => {\r\n dispatch({ type: SET_CLIENT_TYPE_ID, clientTypeId });\r\n }, []);\r\n\r\n const setOfferTypeId = useCallback((offerTypeId?: number) => {\r\n dispatch({ type: SET_OFFER_TYPE_ID, offerTypeId });\r\n }, []);\r\n\r\n const setMakeId = useCallback((makeId?: number) => {\r\n dispatch({ type: SET_MAKE_ID, makeId });\r\n }, []);\r\n\r\n const resetFilters = useCallback(() => {\r\n dispatch({ type: RESET_FILTERS });\r\n }, []);\r\n\r\n const handleMakeDonutClick = useCallback(\r\n (dataIndex?: number) => {\r\n if (!isNil(dataIndex)) {\r\n const makeId = data?.purchasedVehiclesByMaker[dataIndex].id;\r\n if (!isNil(makeId)) {\r\n setMakeId(makeId);\r\n }\r\n }\r\n },\r\n [data?.purchasedVehiclesByMaker, setMakeId]\r\n );\r\n\r\n const handleClientTypeDonutClick = useCallback(\r\n (dataIndex?: number) => {\r\n if (!isNil(dataIndex)) {\r\n const clientTypeId = data?.purchasedVehiclesByClientType[dataIndex].id;\r\n if (!isNil(clientTypeId)) {\r\n setClientTypeId(clientTypeId);\r\n }\r\n }\r\n },\r\n [data?.purchasedVehiclesByClientType, setClientTypeId]\r\n );\r\n\r\n const handleOfferTypeDonutClick = useCallback(\r\n (dataIndex?: number) => {\r\n if (!isNil(dataIndex)) {\r\n const offerTypeId = data?.purchasedVehiclesByOfferType[dataIndex].id;\r\n if (!isNil(offerTypeId)) {\r\n setOfferTypeId(offerTypeId);\r\n }\r\n }\r\n },\r\n [data?.purchasedVehiclesByOfferType, setOfferTypeId]\r\n );\r\n\r\n const getTopBuyersFormatTable = (\r\n isTentative: boolean,\r\n firstPart: [{ title: string; field?: string; render?(rowData: any): string | 0 }]\r\n ) => {\r\n const formatTable = [...firstPart];\r\n if (isTentative) {\r\n formatTable.push({\r\n title: context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_ESTIMATED_VALUE',\r\n 'Pret mediu estimat'\r\n ),\r\n render: (rowData: any) => {\r\n if (!filters.includeVat) {\r\n return rowData.inProgressPurchasesEstimatedAveragePrice\r\n ? numberFormat(rowData.inProgressPurchasesEstimatedAveragePrice, 0, undefined, ' EUR')\r\n : 0;\r\n } else {\r\n return rowData.inProgressPurchasesEstimatedAveragePriceInclVat\r\n ? numberFormat(\r\n rowData.inProgressPurchasesEstimatedAveragePriceInclVat,\r\n 0,\r\n undefined,\r\n ' EUR'\r\n )\r\n : 0;\r\n }\r\n }\r\n });\r\n } else {\r\n formatTable.push({\r\n title: context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_FINALIZED_TABLE_HEADER',\r\n 'Achizitii Finalizate'\r\n ),\r\n render: (rowData: any) => rowData.completedPurchases.count\r\n });\r\n formatTable.push({\r\n title: context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_TOTAL_PAID',\r\n 'Total Achitat'\r\n ),\r\n render: (rowData: any) =>\r\n filters.includeVat\r\n ? numberFormat(rowData.completedPurchases.amountInclVat, 0, undefined, ' EUR')\r\n : numberFormat(rowData.completedPurchases.amount, 0, undefined, ' EUR')\r\n });\r\n formatTable.push({\r\n title: context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_DAMAGE_AND_OTHER',\r\n 'Daune + Alte costuri'\r\n ),\r\n render: (rowData: any) =>\r\n filters.includeVat\r\n ? numberFormat(rowData.damageAndOtherCostsInclVat, 0, undefined, ' EUR')\r\n : numberFormat(rowData.damageAndOtherCosts, 0, undefined, ' EUR')\r\n });\r\n formatTable.push({\r\n title: context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_AVERAGE_PRICE',\r\n 'Pret Mediu Achizitie'\r\n ),\r\n render: (rowData: any) => {\r\n const price = filters.includeVat\r\n ? rowData.completedPurchases.amountInclVat\r\n : rowData.completedPurchases.amount;\r\n\r\n const averagePrice = price / rowData.completedPurchases.count;\r\n\r\n return numberFormat(averagePrice, 0, undefined, ' EUR');\r\n }\r\n });\r\n }\r\n return formatTable;\r\n };\r\n\r\n const handleCallback = (childData: any) => {\r\n setUpdatedItems(childData);\r\n };\r\n\r\n useEffect(() => {\r\n const source = axios.CancelToken.source();\r\n\r\n const getData = async () => {\r\n try {\r\n const filter: AcquisitionFilter = {\r\n startDate: moment(new Date(filters.startDate.utc().format()).setHours(0, 0, 0))\r\n .utc()\r\n .toDate(),\r\n endDate: moment(new Date(filters.endDate.utc().format()).setHours(23, 59, 59))\r\n .utc()\r\n .toDate(),\r\n organizationIds: !isNil(filters.locationId)\r\n ? [filters.locationId]\r\n : filters.selectedOrganisations.map(({ id }) => id),\r\n makeIds: !isNil(filters.makeId) ? [filters.makeId] : [],\r\n personTypeIds: !isNil(filters.clientTypeId) ? [filters.clientTypeId] : [],\r\n offerTypeIds: !isNil(filters.offerTypeId) ? [filters.offerTypeId] : []\r\n };\r\n\r\n if (filter.startDate && filter.endDate && filter.organizationIds.length) {\r\n const result = await context.vehicleService.GetDashboardAquisitionData(\r\n filter,\r\n source.token\r\n );\r\n\r\n if (result) {\r\n const finalResult: AcquisitionResult = {\r\n ...result,\r\n purchasedVehiclesByClientType: !isNil(filters.clientTypeId)\r\n ? data?.purchasedVehiclesByClientType || []\r\n : result.purchasedVehiclesByClientType,\r\n purchasedVehiclesByOfferType: !isNil(filters.offerTypeId)\r\n ? data?.purchasedVehiclesByOfferType || []\r\n : result.purchasedVehiclesByOfferType,\r\n purchasedVehiclesByMaker: !isNil(filters.makeId)\r\n ? data?.purchasedVehiclesByMaker || []\r\n : result.purchasedVehiclesByMaker\r\n };\r\n setData(finalResult);\r\n }\r\n }\r\n } catch (error) {\r\n if (!axios.isCancel(error)) {\r\n throw error;\r\n }\r\n }\r\n };\r\n\r\n getData();\r\n\r\n return () => source.cancel();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [\r\n filters.endDate,\r\n filters.startDate,\r\n filters.selectedOrganisations,\r\n context.vehicleService,\r\n filters.makeId,\r\n filters.locationId,\r\n filters.clientTypeId,\r\n filters.offerTypeId\r\n ]);\r\n\r\n const checkIfUpdatedItemsIsLoaded = () => {\r\n if (!data?.recentAcquisitions.length) {\r\n return false;\r\n }\r\n if (!updatedItems.length) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n {\r\n context.pptService = new PptService(context.translatorService, data);\r\n context.pptService.addFirstPage(filters, 'acquisitions');\r\n context.pptService.addCircleChart(\r\n data?.purchasedVehiclesByClientType,\r\n context.translatorService.Tranlate('DASHBOARD_CLIENT_TYPE', 'TIP CLIENT')\r\n );\r\n context.pptService.addCircleChart(\r\n data?.purchasedVehiclesByOfferType,\r\n context.translatorService.Tranlate('DASHBOARD_OFFER_TYPE', 'TIP Oferta')\r\n );\r\n context.pptService.addCircleChart(\r\n data?.purchasedVehiclesByMaker,\r\n context.translatorService.Tranlate('CAR_DETAILS_BRAND', 'Marca')\r\n );\r\n context.pptService.recentAcquisitions(updatedItems);\r\n context.pptService.addTable(\r\n getTopBuyersFormatTable(false, constantsData.topBuyers),\r\n data?.topBuyers,\r\n context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_TOP_BUYERS',\r\n 'Cumparatori (Top 10)'\r\n )\r\n );\r\n context.pptService.addTable(\r\n getTopBuyersFormatTable(true, constantsData.topTentaiveBuyers),\r\n data?.topTentativeBuyers,\r\n context.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_TENTATIVE_BUYERS',\r\n 'Tentative Buyers (Top 10)'\r\n )\r\n );\r\n context.pptService.exportPpt();\r\n }}\r\n >\r\n Export\r\n \r\n \r\n {data ? (\r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default AcquistionDashboard;\r\n","import React, { useMemo, useContext } from 'react';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\nimport { SalesOfferAndEmail } from '../../../interfaces/Dashboard/SalesOfferAndEmail';\r\n\r\ninterface Props {\r\n title: string;\r\n items: SalesOfferAndEmail[];\r\n}\r\n\r\nconst SalesOfferEmailBarChart: React.FC = ({ title, items }) => {\r\n const context = useContext(ApplicationContext);\r\n const series = useMemo(() => {\r\n const offerGeneratedCountArray: number[] = [];\r\n const emailSentCountArray: number[] = [];\r\n items.forEach((item) => {\r\n offerGeneratedCountArray.push(item.offerGeneratedCount);\r\n emailSentCountArray.push(item.emailSentCount);\r\n });\r\n return [\r\n {\r\n name: context.translatorService.Tranlate('DASHBOARD_GENERATED_OFFERS', 'Oferte generate'),\r\n data: offerGeneratedCountArray\r\n },\r\n {\r\n name: context.translatorService.Tranlate(\r\n 'DASHBOARD_GENERATED_OFFERS_EMAILS',\r\n 'Oferte/Email transmise'\r\n ),\r\n data: emailSentCountArray\r\n }\r\n ];\r\n }, [context.translatorService, items]);\r\n\r\n const options = useMemo(() => {\r\n const categories = items.map((i) => i.date);\r\n return {\r\n chart: {\r\n type: 'bar',\r\n height: 500,\r\n toolbar: {\r\n show: false\r\n }\r\n },\r\n legend: {\r\n show: false\r\n },\r\n plotOptions: {\r\n bar: {\r\n borderRadius: 4\r\n }\r\n },\r\n dataLabels: {\r\n enabled: true\r\n },\r\n xaxis: {\r\n categories\r\n },\r\n yaxis: {\r\n labels: {\r\n formatter: (value: any) => {\r\n return value.toFixed(0);\r\n }\r\n }\r\n }\r\n };\r\n }, [items]);\r\n\r\n return (\r\n
\r\n
{title}
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default SalesOfferEmailBarChart;\r\n","import React, { useContext } from 'react';\r\nimport { Box, Card, Grid, IconButton } from '@material-ui/core';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { SalesChannels } from '../../../interfaces/Dashboard/SalesChannels';\r\nimport { SalesTopSeller } from '../../../interfaces/Dashboard/SalesTopSeller';\r\nimport olxLogo from '../../../assets/images/OLX.png';\r\nimport autovitLogo from '../../../assets/images/Autovit.jpg';\r\nimport renaultLogo from '../../../assets/images/Renault.png';\r\n\r\ninterface SalesChannelProps {\r\n channelId: number;\r\n totalCount: number;\r\n activeCount: number;\r\n context: AppContext;\r\n}\r\n\r\nconst SalesChannel: React.FC = ({\r\n channelId,\r\n totalCount,\r\n activeCount,\r\n context\r\n}) => (\r\n \r\n \r\n
\r\n \r\n \r\n {channelId == 1 && (\r\n \r\n \r\n \r\n )}\r\n {channelId == 2 && (\r\n \r\n \r\n \r\n )}\r\n {channelId == 3 && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n
\r\n
\r\n
{context.translatorService.Tranlate('DASHBOARD_TOTAL_ADS', 'Total anunturi')}
\r\n

{totalCount}

\r\n
\r\n
\r\n
{context.translatorService.Tranlate('DASHBOARD_ACTIVE_ADS', 'Active')}
\r\n

{activeCount}

\r\n
\r\n
\r\n
\r\n
\r\n);\r\ninterface SalesHeaderProps {\r\n channels: SalesChannels[];\r\n topSellers: SalesTopSeller[];\r\n onClickSeller(id: string): void;\r\n}\r\nconst SalesHeader: React.FC = ({ channels, topSellers, onClickSeller }) => {\r\n const context = useContext(ApplicationContext);\r\n return (\r\n \r\n {topSellers.length > 0 && (\r\n \r\n \r\n

\r\n {context.translatorService.Tranlate('DASHBOARD_TOP_SALE_PERSONS', 'Top vanzatori')}\r\n

\r\n {topSellers?.map((seller, index) => {\r\n return (\r\n {\r\n onClickSeller(seller.id);\r\n }}\r\n key={seller.id}\r\n container\r\n spacing={2}\r\n className=\"border-top border-bottom\"\r\n >\r\n \r\n

{index + 1}

\r\n
\r\n \r\n
{seller.buyerName}
\r\n
{seller.organizationName}
\r\n
\r\n
\r\n );\r\n })}\r\n \r\n
\r\n )}\r\n {channels?.map((channel) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default SalesHeader;\r\n","import { isNil } from 'lodash';\r\nimport React, { useContext, useMemo } from 'react';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\nimport { DashboardItem } from '../../../interfaces/Dashboard/DashboardItem';\r\n\r\ninterface Props {\r\n title: string;\r\n items: DashboardItem[];\r\n handleDonutClick(dataIndex?: number): void;\r\n}\r\n\r\nconst AcquistionDonutChart: React.FC = ({ title, items, handleDonutClick }) => {\r\n const context = useContext(ApplicationContext);\r\n\r\n const series = useMemo(() => {\r\n return items.map((i) => i.value);\r\n }, [items]);\r\n\r\n const translateDisplayName = (displayName: string) : string => {\r\n if (displayName == 'PJ') {\r\n return context.translatorService.Tranlate(\r\n 'PJ_LABEL',\r\n 'PJ'\r\n );\r\n }\r\n if (displayName == 'PF') {\r\n return context.translatorService.Tranlate(\r\n 'PF_LABEL',\r\n 'PF'\r\n );\r\n }\r\n\r\n if (displayName == 'Achizitie Renault Selection') {\r\n return context.translatorService.Tranlate(\r\n 'ACQUISITION_OF_RENAULT_SELECTION',\r\n 'Achizitie Renault Selection'\r\n );\r\n }\r\n\r\n if (displayName == 'Achizitie Libera') {\r\n return context.translatorService.Tranlate(\r\n 'ACQUISITION_NON_RENAULT_SELECTION',\r\n 'Achizitie Libera'\r\n );\r\n }\r\n\r\n return displayName;\r\n }\r\n const options = useMemo(() => {\r\n const labels = items.map((i) => translateDisplayName(i.displayName));\r\n return {\r\n chart: {\r\n type: 'donut',\r\n events: {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dataPointSelection: (event: any, chartContext: any, config: any) => {\r\n if (!isNil(config.dataPointIndex)) {\r\n handleDonutClick(config.dataPointIndex);\r\n }\r\n }\r\n }\r\n },\r\n labels,\r\n legend: {\r\n position: 'bottom'\r\n },\r\n responsive: [\r\n {\r\n breakpoint: 480,\r\n options: {\r\n chart: {\r\n width: 200\r\n },\r\n legend: {\r\n position: 'bottom'\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n }, [handleDonutClick, items, , \r\n context.translatorService.Tranlate(\r\n 'PJ_LABEL',\r\n 'PJ'\r\n ),\r\n context.translatorService.Tranlate(\r\n 'PF_LABEL',\r\n 'PF'\r\n ),\r\n context.translatorService.Tranlate(\r\n 'ACQUISITION_OF_RENAULT_SELECTION',\r\n 'Achizitie Renault Selection'\r\n ),\r\n context.translatorService.Tranlate(\r\n 'ACQUISITION_NON_RENAULT_SELECTION',\r\n 'Achizitie Libera'\r\n )]);\r\n\r\n return (\r\n
\r\n
{title}
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default AcquistionDonutChart;\r\n","import React, { useContext, useMemo } from 'react';\r\nimport ReactApexChart from 'react-apexcharts';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\nimport { SalesAdvertAndVehicleList } from '../../../interfaces/Dashboard/SalesAdvertAndVehicleList';\r\n\r\ninterface Props {\r\n title: string;\r\n items: SalesAdvertAndVehicleList[];\r\n}\r\n\r\nconst VehicleAddSalesChart: React.FC = ({ title, items }) => {\r\n const context = useContext(ApplicationContext);\r\n const series = useMemo(() => {\r\n const advertsCountArray: number[] = [];\r\n const soldVehiclesCountArray: number[] = [];\r\n items.forEach((item) => {\r\n advertsCountArray.push(item.advertCount);\r\n soldVehiclesCountArray.push(item.soldVehicleCount);\r\n });\r\n return [\r\n {\r\n name: context.translatorService.Tranlate(\r\n 'PUBLISHED_ANNOUNCEMENTS',\r\n 'Anunturi publicate'\r\n ),\r\n data: advertsCountArray\r\n },\r\n {\r\n name: context.translatorService.Tranlate(\r\n 'CARS_SOLD',\r\n 'Masini vandute',\r\n ),\r\n data: soldVehiclesCountArray\r\n }\r\n ];\r\n }, [items]);\r\n\r\n const options = useMemo(() => {\r\n const categories = items.map((i) => i.date);\r\n return {\r\n chart: {\r\n type: 'line',\r\n toolbar: {\r\n show: false\r\n }\r\n },\r\n xaxis: {\r\n categories\r\n },\r\n yaxis: {\r\n labels: {\r\n formatter: (value: any) => {\r\n return value.toFixed(0);\r\n }\r\n }\r\n }\r\n };\r\n }, [items, \r\n context.translatorService.Tranlate(\r\n 'PUBLISHED_ANNOUNCEMENTS',\r\n 'Anunturi publicate'\r\n ),\r\n context.translatorService.Tranlate(\r\n 'CARS_SOLD',\r\n 'Masini vandute',\r\n )]);\r\n\r\n return (\r\n
\r\n
{title}
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default VehicleAddSalesChart;\r\n","import React from 'react';\r\n\r\ninterface Props {\r\n title: string;\r\n value: string;\r\n adsValue: string;\r\n}\r\n\r\nconst SalesSummaryCard: React.FC = ({ title, value, adsValue }) => (\r\n
\r\n
{title}
\r\n

{value}

\r\n

{adsValue}

\r\n
\r\n);\r\n\r\nexport default SalesSummaryCard;\r\n","import React, { useContext, useEffect, useMemo, useState } from 'react';\r\nimport { Card, Grid, Paper } from '@material-ui/core';\r\n\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\nimport MaterialTable from '@material-table/core';\r\nimport { getLocalization, MaterialTableIcons } from '../../_shared/TableSettings';\r\nimport { SalesVehicle } from '../../../interfaces/Dashboard/SalesVehicle';\r\nimport { numberFormat } from '../../../utils/numberFormat';\r\n\r\ninterface SalesAggregateTableProps {\r\n vehicles: SalesVehicle[];\r\n}\r\n\r\nconst SalesAggregateTable: React.FC = ({ vehicles }) => {\r\n const context = useContext(ApplicationContext);\r\n const [selected, setSelected] = useState(null);\r\n\r\n const carType = context.translatorService.Tranlate('DASHBOARD_CAR_TYPE', 'Marca');\r\n const carModel = context.translatorService.Tranlate('DASHBOARD_MODEL', 'Model');\r\n const quantity = context.translatorService.Tranlate('DASHBOARD_QUANTITY', 'Nr. Unitati vandute');\r\n const averageAge = context.translatorService.Tranlate(\r\n 'DASHBOARD_AVERAGE_VEHICLE_AGE',\r\n 'Varsta medie'\r\n );\r\n const total = context.translatorService.Tranlate('DASHBOARD_TOTAL', 'Total achizitie');\r\n const fixesAndOtherCosts = context.translatorService.Tranlate(\r\n 'DASHBOARD_FIXES_AND_OTHER',\r\n 'Reparatii + alte costuri'\r\n );\r\n const salePrice = context.translatorService.Tranlate(\r\n 'DASHBOARD_SALE_PRICE',\r\n 'Pret Total vanzare'\r\n );\r\n const profit = context.translatorService.Tranlate('DASHBOARD_PROFIT', 'Profit %');\r\n const totalProfit = context.translatorService.Tranlate(\r\n 'DASHBOARD_TOTAL_PROFIT',\r\n 'Profit (valoare absoluta)'\r\n );\r\n\r\n const columns = useMemo(() => {\r\n return [\r\n { title: carType, field: 'makeName' },\r\n { title: carModel, field: 'modelName' },\r\n { title: quantity, field: 'numberOfUnitSold' },\r\n {\r\n title: averageAge,\r\n field: 'avgOfYear',\r\n render: (rowData: SalesVehicle) => numberFormat(rowData.avgOfYear, 1)\r\n },\r\n {\r\n title: total,\r\n field: 'purchaseValue',\r\n render: (rowData: SalesVehicle) => numberFormat(rowData.purchaseValue, 0, undefined, ' EUR')\r\n },\r\n {\r\n title: fixesAndOtherCosts,\r\n field: 'damageValue',\r\n render: (rowData: SalesVehicle) => numberFormat(rowData.damageValue, 0, undefined, ' EUR')\r\n },\r\n {\r\n title: salePrice,\r\n field: 'soldValue',\r\n render: (rowData: SalesVehicle) => numberFormat(rowData.soldValue, 0, undefined, ' EUR')\r\n },\r\n {\r\n title: profit,\r\n field: 'profitPercent',\r\n render: (rowData: SalesVehicle) => numberFormat(rowData.profitPercent)\r\n },\r\n {\r\n title: totalProfit,\r\n field: 'profitValue',\r\n render: (rowData: SalesVehicle) => numberFormat(rowData.profitValue, 0, undefined, ' EUR')\r\n }\r\n ];\r\n }, [\r\n carType,\r\n carModel,\r\n quantity,\r\n averageAge,\r\n total,\r\n fixesAndOtherCosts,\r\n salePrice,\r\n profit,\r\n totalProfit\r\n ]);\r\n\r\n const carInfo = (data: SalesVehicle) => {\r\n return (\r\n \r\n \r\n
\r\n
\r\n {data?.makeName} {data?.modelName}\r\n
\r\n {`${context.translatorService.Tranlate(\r\n 'DASHBOARD_SALES_TABLE_QUANTITY',\r\n 'Numar de unitati'\r\n )}: ${data?.numberOfUnitSold}`}\r\n
\r\n {`${averageAge}: ${numberFormat(data?.avgOfYear, 1)}`}\r\n
\r\n
\r\n {data?.groupedByFuelType.map((row, index) => {\r\n return (\r\n
\r\n {row.name}: {Math.round(row.percentValue)}% ({row.count})\r\n
\r\n );\r\n })}\r\n
\r\n
\r\n {data?.groupedByTransmissionType.map((row, index) => {\r\n return (\r\n
\r\n {row.name}: {Math.round(row.percentValue)}% ({row.count})\r\n
\r\n );\r\n })}\r\n
\r\n {`${context.translatorService.Tranlate(\r\n 'DASHBOARD_AVG_SALE_VALUE',\r\n 'Pret mediu de vanzare'\r\n )}: ${numberFormat(data?.avgSoldValue)} Euro`}\r\n
\r\n {`${context.translatorService.Tranlate(\r\n 'DASHBOARD_AVG_DAMAGE_VALUE',\r\n 'Costuri medii'\r\n )}: ${numberFormat(data?.avgDamageValue)} Euro`}\r\n
\r\n
\r\n

\r\n {context.translatorService.Tranlate('DASHBOARD_PROFIT_VALUE', 'Profit')}{' '}\r\n {Math.round(data?.profitPercent)}%\r\n

\r\n
\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n useEffect(() => {\r\n setSelected(null);\r\n }, [vehicles]);\r\n\r\n return (\r\n <>\r\n \r\n
\r\n {\r\n setSelected(selectedRow as SalesVehicle);\r\n }}\r\n options={{\r\n search: false,\r\n maxBodyHeight: '49vh',\r\n headerStyle: { position: 'sticky', top: 0 },\r\n pageSize: vehicles.length,\r\n rowStyle: (rowData) => ({\r\n backgroundColor:\r\n selected?.vehicleId === rowData.vehicleId ||\r\n (!selected && rowData.vehicleId === vehicles[0].vehicleId)\r\n ? '#267DC3'\r\n : '#FFF',\r\n color:\r\n selected?.vehicleId === rowData.vehicleId ||\r\n (!selected && rowData.vehicleId === vehicles[0].vehicleId)\r\n ? '#FFF'\r\n : '#000'\r\n }),\r\n actionsCellStyle: { backgroundColor: 'red' },\r\n tableLayout: 'fixed'\r\n }}\r\n components={{\r\n Container: (props) => ,\r\n Pagination: () => null\r\n }}\r\n />\r\n
\r\n
\r\n {!!selected ? carInfo(selected) : carInfo(vehicles[0])}\r\n \r\n );\r\n};\r\n\r\nexport default SalesAggregateTable;\r\n","import { SalesFiltersState } from '../../../interfaces/Dashboard/SalesFiltersState';\r\n\r\nexport const SET_VAL_BY_NAME = '[FILTERS] SET_VAL_BY_NAME';\r\nexport const SET_PERSON_TYPE_ID = '[FILTERS] SET_PERSON_TYPE_ID';\r\nexport const SET_SALE_PERSON_ID = '[FILTERS] SET_SALE_PERSON_ID';\r\nexport const RESET_SALES_FILTERS = '[FILTERS] RESET_SALES_FILTERS';\r\n\r\nexport const salesDashboardReducer = (state: SalesFiltersState, action: any) => {\r\n switch (action.type) {\r\n case SET_PERSON_TYPE_ID:\r\n return {\r\n ...state,\r\n clientTypeId: action.clientTypeId !== state.clientTypeId ? action.clientTypeId : undefined\r\n };\r\n case SET_SALE_PERSON_ID:\r\n return {\r\n ...state,\r\n salePersonId: action.salePersonId !== state.salePersonId ? action.salePersonId : undefined\r\n };\r\n case SET_VAL_BY_NAME:\r\n return { ...state, [action.name]: action.value };\r\n case RESET_SALES_FILTERS:\r\n return {\r\n ...state,\r\n clientTypeId: undefined,\r\n locationId: undefined,\r\n salePersonId: undefined,\r\n advertiserId: undefined\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n","import { Moment } from 'moment';\r\nimport { FiltersSelectItem } from './FiltersSelectItem';\r\n\r\nexport interface SalesFiltersState {\r\n startDate: Moment;\r\n endDate: Moment;\r\n selectedOrganisations: FiltersSelectItem[];\r\n clientTypeId?: number;\r\n locationId?: number;\r\n salePersonId?: string;\r\n}\r\n\r\nexport enum SalesMainFilterStateKeys {\r\n START_DATE = 'startDate',\r\n END_DATE = 'endDate',\r\n SELECTED_ORGANIZATIONS = 'selectedOrganisations'\r\n}\r\n\r\nexport enum SalesFilterStateKeys {\r\n LOCATION_ID = 'locationId',\r\n CLIENT_TYPE_ID = 'clientTypeId',\r\n SALE_PERSON_ID = 'salePersonId'\r\n}\r\n","import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';\r\nimport { Button, Card, Chip, Grid } from '@material-ui/core';\r\nimport isNil from 'lodash/isNil';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\nimport { DashboardFilter } from '../../../interfaces/Dashboard/DashboardFilter';\r\nimport {\r\n SalesFiltersState,\r\n SalesFilterStateKeys\r\n} from '../../../interfaces/Dashboard/SalesFiltersState';\r\nimport { SalesResult } from '../../../interfaces/Dashboard/SalesResult';\r\ninterface Props {\r\n filters: SalesFiltersState;\r\n data?: SalesResult;\r\n setFiltersValueByName(name: string, value: any): void;\r\n resetFilters(): void;\r\n}\r\n\r\nconst SalesDashboardAppliedFilters: React.FC = ({\r\n filters,\r\n data,\r\n setFiltersValueByName,\r\n resetFilters\r\n}) => {\r\n const [orgName, setOrgName] = useState();\r\n const context = useContext(ApplicationContext);\r\n\r\n const appliedFilters = useMemo(() => {\r\n if (!data || !filters) {\r\n return;\r\n }\r\n const result: any[] = [];\r\n Object.values(SalesFilterStateKeys).forEach((value) => {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n const id = filters[value];\r\n if (!isNil(id)) {\r\n result.push({ id: id, propertyName: value });\r\n }\r\n });\r\n for (const item of result) {\r\n switch (item.propertyName) {\r\n case SalesFilterStateKeys.SALE_PERSON_ID:\r\n item.displayName = data.topSellersBasedOnClosedFolders.find(\r\n ({ id }) => id === item.id\r\n )?.buyerName;\r\n break;\r\n case SalesFilterStateKeys.LOCATION_ID:\r\n item.displayName = orgName;\r\n break;\r\n case SalesFilterStateKeys.CLIENT_TYPE_ID:\r\n item.displayName = data.vehiclesGroupedByClientType.find(\r\n ({ id }) => id === item.id\r\n )?.displayName;\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n }, [data, filters, orgName]);\r\n\r\n useEffect(() => {\r\n const getOrgName = async () => {\r\n if (!isNil(filters.locationId)) {\r\n const organization = await context.organizationService.GetOrganization(filters.locationId);\r\n\r\n if (organization) {\r\n setOrgName(organization.displayName);\r\n }\r\n } else {\r\n setOrgName(undefined);\r\n }\r\n };\r\n\r\n getOrgName();\r\n }, [context.organizationService, filters.locationId]);\r\n\r\n const handleDelete = useCallback(\r\n (propertyName: string) => {\r\n setFiltersValueByName(propertyName, undefined);\r\n },\r\n [setFiltersValueByName]\r\n );\r\n\r\n if (!appliedFilters?.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n {context.translatorService.Tranlate(\r\n 'DASHBOARD_APPLIED_FILTERS',\r\n 'Filtre aplicate1'\r\n )}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {appliedFilters.map((item: DashboardFilter, index) => {\r\n return (\r\n handleDelete(item.propertyName)}\r\n />\r\n );\r\n })}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default SalesDashboardAppliedFilters;\r\n","import React, { useReducer, useCallback, useContext, useState, useEffect } from 'react';\r\nimport moment from 'moment';\r\nimport axios from 'axios';\r\nimport isNil from 'lodash/isNil';\r\nimport { Card, Grid, Paper, Button } from '@material-ui/core';\r\n\r\nimport SalesOfferEmailBarChart from './SalesOfferEmailBarChart';\r\nimport SalesHeader from './SalesHeader';\r\nimport AcquistionDonutChart from './SalesDonutChart';\r\nimport VehicleAdSalesChart from './VehicleAddSalesChart';\r\nimport SalesSummaryCard from './SalesSummaryCard';\r\nimport SalesAggregateTable from './SalesAggregateTable';\r\nimport DashboardFilters from '../DashboardFilters';\r\nimport { ApplicationContext } from '../../../context/Contexts';\r\nimport { SalesResult } from '../../../interfaces/Dashboard/SalesResult';\r\nimport { SalesFilter } from '../../../interfaces/Dashboard/SalesFilter';\r\nimport {\r\n salesDashboardReducer,\r\n SET_VAL_BY_NAME,\r\n SET_PERSON_TYPE_ID,\r\n SET_SALE_PERSON_ID,\r\n RESET_SALES_FILTERS\r\n} from './salesDashboardReducer';\r\nimport Loader from '../../Loader';\r\nimport SalesDashboardAppliedFilters from './SalesDashboardAppliedFilters';\r\nimport { numberFormat } from '../../../utils/numberFormat';\r\nimport { PptService } from '../../../services/PptService';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\n\r\nconst SalesDashboard: React.FC = () => {\r\n const context = useContext(ApplicationContext);\r\n const [filters, dispatch] = useReducer(salesDashboardReducer, {\r\n startDate: moment().add(-3, 'month'),\r\n endDate: moment(),\r\n selectedOrganisations: [],\r\n clientTypeId: undefined,\r\n locationId: undefined,\r\n salePersonId: undefined\r\n });\r\n\r\n const constantsData = MUITranslations.GetDashboardTranslations(context.translatorService);\r\n\r\n const [data, setData] = useState();\r\n const setFiltersValueByName = useCallback((name: string, value: any) => {\r\n dispatch({ type: SET_VAL_BY_NAME, name, value });\r\n }, []);\r\n\r\n const setPersonTypeId = useCallback((clientTypeId?: number) => {\r\n dispatch({ type: SET_PERSON_TYPE_ID, clientTypeId });\r\n }, []);\r\n\r\n const setSalePersonId = useCallback((salePersonId?: string) => {\r\n dispatch({ type: SET_SALE_PERSON_ID, salePersonId });\r\n }, []);\r\n\r\n const resetFilters = useCallback(() => {\r\n dispatch({ type: RESET_SALES_FILTERS });\r\n }, []);\r\n\r\n const getSalesFormatTable = () => {\r\n const averageAge = context.translatorService.Tranlate(\r\n 'DASHBOARD_AVERAGE_VEHICLE_AGE',\r\n 'Varsta medie'\r\n );\r\n const total = context.translatorService.Tranlate('DASHBOARD_TOTAL', 'Total achizitie');\r\n const fixesAndOtherCosts = context.translatorService.Tranlate(\r\n 'DASHBOARD_FIXES_AND_OTHER',\r\n 'Reparatii + alte costuri'\r\n );\r\n const salePrice = context.translatorService.Tranlate(\r\n 'DASHBOARD_SALE_PRICE',\r\n 'Pret Total vanzare'\r\n );\r\n const profit = context.translatorService.Tranlate('DASHBOARD_PROFIT', 'Profit %');\r\n const totalProfit = context.translatorService.Tranlate(\r\n 'DASHBOARD_TOTAL_PROFIT',\r\n 'Profit (valoare absoluta)'\r\n );\r\n return [\r\n {\r\n title: averageAge,\r\n render: (rowData: any) => numberFormat(rowData.avgOfYear, 1)\r\n },\r\n {\r\n title: total,\r\n render: (rowData: any) => numberFormat(rowData.purchaseValue, 0, undefined, ' EUR')\r\n },\r\n {\r\n title: fixesAndOtherCosts,\r\n render: (rowData: any) => numberFormat(rowData.damageValue, 0, undefined, ' EUR')\r\n },\r\n {\r\n title: salePrice,\r\n render: (rowData: any) => numberFormat(rowData.soldValue, 0, undefined, ' EUR')\r\n },\r\n {\r\n title: profit,\r\n render: (rowData: any) => numberFormat(rowData.profitPercent)\r\n },\r\n {\r\n title: totalProfit,\r\n render: (rowData: any) => numberFormat(rowData.profitValue, 0, undefined, ' EUR')\r\n }\r\n ];\r\n };\r\n\r\n useEffect(() => {\r\n const source = axios.CancelToken.source();\r\n\r\n const getData = async () => {\r\n try {\r\n const filter: SalesFilter = {\r\n startDate: moment(new Date(filters.startDate.utc().format()).setHours(0, 0, 0))\r\n .utc()\r\n .toDate(),\r\n endDate: moment(new Date(filters.endDate.utc().format()).setHours(23, 59, 59))\r\n .utc()\r\n .toDate(),\r\n organizationIds: !isNil(filters.locationId)\r\n ? [filters.locationId]\r\n : filters.selectedOrganisations.map(({ id }) => id),\r\n personTypeIds: !isNil(filters.clientTypeId) ? [filters.clientTypeId] : [],\r\n salePersonIds: filters.salePersonId ? [filters.salePersonId] : []\r\n };\r\n\r\n if (filter.startDate && filter.endDate && filter.organizationIds.length) {\r\n const result = await context.vehicleService.GetDashboardSalesData(filter, source.token);\r\n if (result) {\r\n setData(result);\r\n }\r\n }\r\n } catch (error) {\r\n if (!axios.isCancel(error)) {\r\n throw error;\r\n }\r\n }\r\n };\r\n\r\n getData();\r\n\r\n return () => source.cancel();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [\r\n filters.endDate,\r\n filters.startDate,\r\n filters.selectedOrganisations,\r\n context.vehicleService,\r\n filters.locationId,\r\n filters.clientTypeId,\r\n filters.salePersonId\r\n ]);\r\n\r\n const handlePersonTypeDonutClick = useCallback(\r\n (dataIndex?: number) => {\r\n if (!isNil(dataIndex)) {\r\n const clientTypeId = data?.vehiclesGroupedByClientType[dataIndex].id;\r\n if (!isNil(clientTypeId)) {\r\n setPersonTypeId(clientTypeId);\r\n }\r\n }\r\n },\r\n [data?.vehiclesGroupedByClientType, setPersonTypeId]\r\n );\r\n\r\n return (\r\n
\r\n \r\n \r\n {\r\n context.pptService = new PptService(context.translatorService, data);\r\n context.pptService.addFirstPage(filters, 'sales');\r\n context.pptService.addVerticalChart2(\r\n data?.groupedOfferAndSentEmail,\r\n context.translatorService.Tranlate(\r\n 'DASHBOARD_GENERATED_OFFERS_TITLE',\r\n 'Oferte Generate/Email'\r\n ),\r\n constantsData.groupedOfferAndSentEmail\r\n );\r\n context.pptService.addCircleChart(\r\n data?.vehiclesGroupedByClientType,\r\n context.translatorService.Tranlate('DASHBOARD_CLIENT_TYPE', 'Tip client')\r\n );\r\n context.pptService.addScatterChar(\r\n data?.advertListAndSoldVehicleListGrouped,\r\n context.translatorService.Tranlate('DASHBOARD_SALES_CHART_TITLE', 'Anunturi/Vanzari'),\r\n constantsData.advertListAndSoldVehicleListGrouped,\r\n 'Anunturi publicate',\r\n 'Masini vandute'\r\n );\r\n context.pptService.salesProfit();\r\n context.pptService.addTable(\r\n [...constantsData.salesTable, ...getSalesFormatTable()],\r\n data?.vehiclesGroupedByMakerAndModel,\r\n context.translatorService.Tranlate('DASHBOARD_SALES_TABLE_TITLE', 'Vanzari')\r\n );\r\n context.pptService.lastSalePage(data!.vehiclesGroupedByMakerAndModel[0]);\r\n context.pptService.exportPpt();\r\n }}\r\n >\r\n Export\r\n \r\n \r\n {data ? (\r\n \r\n \r\n {(data.salesChannels.length > 0 || data.topSellersBasedOnClosedFolders.length > 0) && (\r\n \r\n \r\n \r\n )}\r\n {data.groupedOfferAndSentEmail.length > 0 && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {data.vehiclesGroupedByClientType.length > 0 && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {data.advertListAndSoldVehicleListGrouped.length > 0 && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n

\r\n {context.translatorService.Tranlate(\r\n 'DASHBOARD_SALES_WARRANTIES',\r\n 'Garantii vandute'\r\n )}\r\n

\r\n
\r\n
\r\n

{data.guaranteeCount}

\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {data.vehiclesGroupedByMakerAndModel?.length > 0 && (\r\n \r\n )}\r\n
\r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default SalesDashboard;\r\n","import React, { useState, useContext } from 'react';\r\n\r\nimport { Tab, Tabs } from '@material-ui/core';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport VehicleDashboard from './vehicles/VehicleDashboard';\r\nimport AquisitionDashboard from './acquisitions/AcquisitionDashboard';\r\nimport SalesDashboard from './sales/SalesDashboard';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\n\r\nenum DashboardTab {\r\n VEHICLES = 0,\r\n AQUISITIONS = 1,\r\n SALES = 2\r\n}\r\n\r\nconst Dashboards: React.FC = () => {\r\n const context = useContext(ApplicationContext);\r\n const [selectedTab, setSelectedTab] = useState(DashboardTab.VEHICLES);\r\n\r\n return (\r\n
\r\n setSelectedTab(newTab)}\r\n >\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Dashboards;\r\n","import * as React from 'react';\r\nimport { ApplicationState, AppState, CaseSettingsState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Order, OrderFilters, OrderStatusHistory } from '../../interfaces/Order';\r\nimport { IOrderService } from '../../services/Interfaces/IOrderService';\r\nimport {\r\n Box,\r\n Button,\r\n Card,\r\n Dialog,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton,\r\n TextField\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { Organization } from '../../interfaces/Organization';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport OrderDetails from './OrderDetails';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport moment from 'moment';\r\nimport 'moment/locale/en-gb';\r\nimport 'moment/locale/ro';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { OrderStatusCode, OwnStockCodeEnum, ReferentialCode } from '../../helpers/Constants';\r\nimport * as R from 'ramda';\r\nimport _ from 'lodash';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport { TariffPercentResponse } from '../../interfaces/Case';\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\ntype OrdersProps = { \r\n appState: AppState; \r\n caseSettingsState: CaseSettingsState;\r\n} & ProviderContext & RouteComponentProps;\r\n\r\ninterface IOrdersState {\r\n orderList: Order[];\r\n suppliers: Organization[];\r\n selectedSuppliers: Organization[];\r\n clients: Organization[];\r\n selectedClients: Organization[];\r\n madeByUsersList: AppUser[];\r\n selectedMadeByUsersList: AppUser[];\r\n locations: Organization[];\r\n selectedLocations: Organization[];\r\n orderStatusList: IReferential[];\r\n selectedOrderStatus: IReferential[];\r\n isLoading: boolean;\r\n isSupplier: boolean;\r\n isDialogOpen: boolean;\r\n selectedDateFrom: Date;\r\n selectedDateTo: Date;\r\n orderIds: number[];\r\n selectedOrder: Order | null;\r\n count: number;\r\n page: number;\r\n pageSize: number;\r\n plateNumberSearchText: string;\r\n descriptionSearchText: string;\r\n supplierOrderNumberSearchText: string;\r\n hideOrderCurrencyColumn: boolean;\r\n}\r\n\r\nclass Orders extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private orderService!: IOrderService;\r\n private appReferentialService!: IReferentialService;\r\n private appUserService!: IAppUserService;\r\n static contextType = ApplicationContext;\r\n private organizationService!: IOrganizationService;\r\n\r\n state = {\r\n orderList: [],\r\n clients: [],\r\n suppliers: [],\r\n selectedClients: [],\r\n selectedSuppliers: [],\r\n madeByUsersList: [],\r\n selectedMadeByUsersList: [],\r\n locations: [],\r\n selectedLocations: [],\r\n orderStatusList: [],\r\n selectedOrderStatus: [],\r\n isLoading: true,\r\n isDialogOpen: false,\r\n selectedDateFrom: new Date(new Date().setMonth(new Date().getMonth() - 1)),\r\n selectedDateTo: new Date(),\r\n orderIds: [],\r\n selectedOrder: null,\r\n count: 1,\r\n page: 0,\r\n pageSize: 10,\r\n isSupplier: false,\r\n plateNumberSearchText: '',\r\n descriptionSearchText: '',\r\n supplierOrderNumberSearchText: '',\r\n hideOrderCurrencyColumn: false\r\n } as IOrdersState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrders();\r\n }\r\n );\r\n }\r\n\r\n loadOrders = async () => {\r\n const organizationId = this.props.appState.appUser?.organizationId;\r\n const filters = {\r\n clientIds: this.state.selectedClients.map((item) => item.id),\r\n supplierIds: this.state.selectedSuppliers.map((item) => item.id),\r\n locationIds: this.state.selectedLocations.map((item) => item.id),\r\n statusIds: this.state.selectedOrderStatus.map((item) => item.id),\r\n madeByList: this.state.selectedMadeByUsersList.map((item) => item.id),\r\n dateFrom: new Date(this.state.selectedDateFrom.setHours(0, 0, 0, 0)).toISOString(),\r\n dateTo: new Date(this.state.selectedDateTo.setHours(23, 59, 59, 999)).toISOString(),\r\n page: this.state.page + 1,\r\n pageSize: this.state.pageSize,\r\n plateNumberSearchText: this.state.plateNumberSearchText.replace(/\\s+/g, ''),\r\n descriptionSearchText: this.state.descriptionSearchText,\r\n supplierOrderNumberSearchText: this.state.supplierOrderNumberSearchText\r\n } as OrderFilters;\r\n\r\n const orderList = await this.orderService.GetOrders(filters);\r\n\r\n const orderDetailsList = orderList.orders;\r\n\r\n const refOrderStatus = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OrderStatus\r\n );\r\n\r\n const [users, clients, suppliers, orderStatus] = await Promise.all([\r\n this.appUserService.GetUsersInfo(\r\n Array.from(new Set(orderDetailsList.map((item) => item.createdBy)))\r\n ),\r\n this.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(orderDetailsList.map((item) => item.clientId)))\r\n ),\r\n this.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(orderDetailsList.map((item) => item.supplierId)))\r\n ),\r\n this.appReferentialService.Get(refOrderStatus!.baseUrl)\r\n ]);\r\n\r\n let organization: Organization | null = null;\r\n if (!R.isNil(this.props.appState!.appUser!.organizationId)) {\r\n organization = await this.organizationService.GetOrganizationInfo(\r\n this.props.appState!.appUser!.organizationId\r\n );\r\n }\r\n\r\n orderDetailsList.forEach((od) => {\r\n const user = users.find((item) => item.id === od.createdBy);\r\n const client = clients.find((item) => item.id === od.clientId);\r\n const supplier = suppliers.find((item) => item.id == od.supplierId);\r\n\r\n od.createdByUser = R.isNil(user) ? null : user;\r\n od.client = R.isNil(client) ? null : client;\r\n od.supplier = R.isNil(supplier) ? null : supplier;\r\n });\r\n const checkIfIsSupplierAccount = _.find(suppliers, function (object) {\r\n return object.id == organizationId;\r\n });\r\n this.setState(\r\n {\r\n orderList: orderDetailsList,\r\n orderStatusList: orderStatus,\r\n isLoading: false,\r\n page: orderList.page - 1,\r\n count: orderList.total,\r\n pageSize: this.state.pageSize,\r\n isSupplier: checkIfIsSupplierAccount ? true : false,\r\n hideOrderCurrencyColumn: organization ? organization.hideOrderCurrencyColumn : false\r\n },\r\n async () => {\r\n await this.reloadFilters();\r\n }\r\n );\r\n };\r\n\r\n reloadFilters = async () => {\r\n const filters = await this.orderService.GetOrderFilters({\r\n clientIds: [],\r\n supplierIds: [],\r\n locationIds: [],\r\n statusIds: [],\r\n madeByList: [],\r\n dateFrom: new Date(this.state.selectedDateFrom.setHours(0, 0, 0, 0)).toISOString(),\r\n dateTo: new Date(this.state.selectedDateTo.setHours(23, 59, 59, 999)).toISOString(),\r\n page: this.state.page + 1,\r\n pageSize: this.state.pageSize,\r\n plateNumberSearchText: this.state.plateNumberSearchText,\r\n descriptionSearchText: this.state.descriptionSearchText,\r\n supplierOrderNumberSearchText: this.state.supplierOrderNumberSearchText\r\n } as any as OrderFilters);\r\n\r\n const refOrderStatus = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OrderStatus\r\n );\r\n\r\n const [users, orgEntities, suppliers, orderStatuses] = await Promise.all([\r\n this.appUserService.GetUsersInfo(filters.createdByList),\r\n filters.clientIds.length == 0\r\n ? []\r\n : this.organizationService.GetUserOrganizationsByIds(filters.clientIds),\r\n filters.supplierIds.length == 0\r\n ? []\r\n : this.organizationService.GetUserOrganizationsByIds(filters.supplierIds),\r\n this.appReferentialService.Get(refOrderStatus!.baseUrl)\r\n ]);\r\n\r\n const orderListStatusIds = filters.orderStatuses.map(({ id }) => id);\r\n const orderStatus = orderStatuses.filter((item) => orderListStatusIds.includes(item.id));\r\n\r\n this.setState({\r\n clients: orgEntities,\r\n madeByUsersList: users,\r\n orderStatusList: orderStatus,\r\n suppliers: suppliers\r\n });\r\n };\r\n\r\n reloadOrders = async (page: number, rowsPerPage: number) => {\r\n this.setState({ isLoading: true, selectedOrder: null });\r\n\r\n const filters = {\r\n clientIds: this.state.selectedClients.map((item) => item.id),\r\n supplierIds: this.state.selectedSuppliers.map((item) => item.id),\r\n locationIds: this.state.selectedLocations.map((item) => item.id),\r\n statusIds: this.state.selectedOrderStatus.map((item) => item.id),\r\n madeByList: this.state.selectedMadeByUsersList.map((item) => item.id),\r\n dateFrom: new Date(this.state.selectedDateFrom.setHours(0, 0, 0, 0)).toISOString(),\r\n dateTo: new Date(this.state.selectedDateTo.setHours(23, 59, 59, 999)).toISOString(),\r\n page: page + 1,\r\n pageSize: rowsPerPage,\r\n plateNumberSearchText: this.state.plateNumberSearchText.replace(/\\s+/g, ''),\r\n descriptionSearchText: this.state.descriptionSearchText,\r\n supplierOrderNumberSearchText: this.state.supplierOrderNumberSearchText\r\n } as OrderFilters;\r\n\r\n const orderList = await this.orderService.GetOrders(filters);\r\n\r\n const orderDetailsList = orderList.orders;\r\n\r\n orderDetailsList.forEach((od) => {\r\n const client = this.state.clients.find((item) => item.id === od.clientId);\r\n const user = this.state.madeByUsersList.find((item) => item.id === od.createdBy);\r\n const supplier = this.state.suppliers.find((item) => item.id == od.supplierId);\r\n\r\n od.createdByUser = R.isNil(user) ? null : user;\r\n od.client = R.isNil(client) ? null : client;\r\n od.supplier = R.isNil(supplier) ? null : supplier;\r\n });\r\n\r\n this.setState({\r\n orderList: orderDetailsList,\r\n isLoading: false,\r\n page: orderList.page - 1,\r\n pageSize: rowsPerPage,\r\n count: orderList.total\r\n });\r\n };\r\n\r\n onRowClick = async (e: any, id: number) => {\r\n const orderParts = await this.orderService.GetOrderParts(id);\r\n const order = this.state.orderList.find((item) => item.id === id);\r\n order!.orderParts = orderParts;\r\n this.props.caseSettingsState.case = null;\r\n\r\n this.setState({\r\n isDialogOpen: true,\r\n selectedOrder: order!\r\n });\r\n };\r\n\r\n getColumns = () => {\r\n let columns = [];\r\n if (this.state.isSupplier) {\r\n columns = [\r\n {\r\n name: 'id',\r\n label: 'ID',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.onRowClick(e, tableMeta.rowData[0])}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'orderStatusHistories[0].date',\r\n label: this.translatorService.Tranlate('ORDER_DATE', 'Data Plasare Comanda'),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n const order = this.state.orderList.find((item) => item.id === tableMeta.rowData[0]);\r\n const orderStatusHistory = order!.orderStatusHistories[0];\r\n return (\r\n
\r\n {moment\r\n .utc(orderStatusHistory!.date)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n
\r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseVehicle.plateNumber',\r\n label: this.translatorService.Tranlate(\r\n 'ORDER_VEHICLES_VEHICLE_PLATE_NUMBER',\r\n 'Nr. de inmatriculare'\r\n ),\r\n options: {\r\n sort: false,\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseVehicle.vin',\r\n label: 'Vin',\r\n options: {\r\n sort: false,\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'client.displayName',\r\n label: this.translatorService.Tranlate('ORDERS_CLIENT_LABEL', 'Client'),\r\n options: {\r\n sort: false,\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'amount',\r\n label: this.translatorService.Tranlate('ORDERS_VALUE_LABEL', 'Valoare'),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n setCellProps: () => ({ style: { whiteSpace: 'nowrap' } }),\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return Utils.countryNumberFormat(value.toString(), this.props.appState.appUser?.organization?.country ?? null);\r\n }\r\n }\r\n },\r\n {\r\n name: 'currencyCode',\r\n label: this.translatorService.Tranlate('ORDERS_CURRENCY_LABEL', 'Moneda'),\r\n options: {\r\n sort: false,\r\n filter: false\r\n }\r\n },\r\n {\r\n name: 'createdByUser.userName',\r\n label: this.translatorService.Tranlate('ORDERS_MADE_BY_LABEL', 'Efectuat De'),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const order = this.state.orderList.find((item) => item.id === tableMeta.rowData[0]);\r\n return (\r\n \r\n \r\n
{value}
\r\n
\r\n \r\n
\r\n {moment\r\n .utc(order!.date)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'orderStatus.displayName',\r\n label: this.translatorService.Tranlate('ORDERS_STATUS_LABEL', 'Stare'),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const order = this.state.orderList.find((item) => item.id === tableMeta.rowData[0]);\r\n const orderStatusHistory = order!.orderStatusHistories;\r\n return orderStatusHistory.map((orderStatusHistory: OrderStatusHistory, index) => {\r\n return
{orderStatusHistory.orderStatus?.displayName}
;\r\n });\r\n }\r\n }\r\n },\r\n {\r\n name: 'supplierOrderNumber',\r\n label: this.translatorService.Tranlate('ORDERS_ID_FURNIZOR_LABEL', 'Nr. Comanda'),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const order = this.state.orderList.find((item) => item.id === tableMeta.rowData[0]);\r\n const orderStatusHistory = order!.orderStatusHistories;\r\n return orderStatusHistory.map((orderStatusHistory: OrderStatusHistory, index) => {\r\n return (\r\n
\r\n {orderStatusHistory.orderStatus?.code == OrderStatusCode.FZR_COMANDA_CONFIRMATA\r\n ? order?.supplierOrderNumber\r\n : '-'}\r\n
\r\n );\r\n });\r\n }\r\n }\r\n }\r\n ];\r\n } else {\r\n columns = [\r\n {\r\n name: 'id',\r\n label: 'ID',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.onRowClick(e, tableMeta.rowData[0])}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'orderStatusHistories[0].date',\r\n label: this.translatorService.Tranlate('ORDER_DATE', 'Data Plasare Comanda'),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n const order = this.state.orderList.find((item) => item.id === tableMeta.rowData[0]);\r\n const orderStatusHistory = order!.orderStatusHistories[0];\r\n return (\r\n
\r\n {moment\r\n .utc(orderStatusHistory!.date)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n
\r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseVehicle.plateNumber',\r\n label: this.translatorService.Tranlate(\r\n 'ORDER_VEHICLES_VEHICLE_PLATE_NUMBER',\r\n 'Nr. de inmatriculare'\r\n ),\r\n options: {\r\n sort: false,\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'caseVehicle.vin',\r\n label: 'Vin',\r\n options: {\r\n sort: false,\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'supplier.name',\r\n label: this.translatorService.Tranlate('ORDER_PART_DETAILS_SUPPLIER_LABEL', 'Furnizor'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: IReferential, tableMeta: MUIDataTableMeta) => {\r\n const order = this.state.orderList.find((item) => item.id === tableMeta.rowData[0]);\r\n if (R.isNil(order)) {\r\n return '';\r\n }\r\n \r\n return !R.isNil(order.supplier) ? (order.supplier!.name.toUpperCase() == OwnStockCodeEnum.OWN_STOCK.toString() ? this.translatorService.Tranlate('CALCULATION_DETAILS_OWN_STOCK_HEADER', 'Stoc Propriu') : order.supplier!.name) : '';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'amount',\r\n label: this.translatorService.Tranlate('ORDERS_VALUE_LABEL', 'Valoare'),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n setCellProps: () => ({ style: { whiteSpace: 'nowrap' } }),\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n const order = this.state.orderList.find((item) => item.id === tableMeta.rowData[0]);\r\n if (order == null) {\r\n return '';\r\n }\r\n if (this.state.hideOrderCurrencyColumn) {\r\n return Utils.countryNumberFormat(value.toString(), this.props.appState.appUser?.organization?.country ?? null) + ' (' + order.currencyCode + ')';\r\n }\r\n return Utils.countryNumberFormat(value.toString(), this.props.appState.appUser?.organization?.country ?? null);\r\n }\r\n }\r\n },\r\n {\r\n name: 'currencyCode',\r\n label: this.translatorService.Tranlate('ORDERS_CURRENCY_LABEL', 'Moneda'),\r\n options: {\r\n sort: false,\r\n display: !this.state.hideOrderCurrencyColumn,\r\n filter: false\r\n }\r\n },\r\n {\r\n name: 'caseEvent.interventionType',\r\n label: this.translatorService.Tranlate('CASE_EVENT_INTERVENTION_TYPE_LABEL', 'Tip Interventie'),\r\n options: {\r\n display: this.state.hideOrderCurrencyColumn,\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (interventionType: any, tableMeta: MUIDataTableMeta) => {\r\n return interventionType ? interventionType.displayName : \"\";\r\n }\r\n }\r\n },\r\n {\r\n name: 'createdByUser.userName',\r\n label: this.translatorService.Tranlate('ORDERS_MADE_BY_LABEL', 'Efectuat De'),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const order = this.state.orderList.find((item) => item.id === tableMeta.rowData[0]);\r\n return (\r\n \r\n \r\n
{value}
\r\n
\r\n \r\n
\r\n {moment\r\n .utc(order!.date)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'orderStatus.displayName',\r\n label: this.translatorService.Tranlate('ORDERS_STATUS_LABEL', 'Stare'),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const order = this.state.orderList.find((item) => item.id === tableMeta.rowData[0]);\r\n const orderStatusHistory = order!.orderStatusHistories;\r\n return orderStatusHistory.map((orderStatusHistory: OrderStatusHistory, index) => {\r\n return
{orderStatusHistory.orderStatus?.displayName}
;\r\n });\r\n }\r\n }\r\n },\r\n {\r\n name: 'supplierOrderNumber',\r\n label: this.translatorService.Tranlate('ORDERS_ID_FURNIZOR_LABEL', 'Nr. Comanda'),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const order = this.state.orderList.find((item) => item.id === tableMeta.rowData[0]);\r\n const orderStatusHistory = order!.orderStatusHistories;\r\n return orderStatusHistory.map((orderStatusHistory: OrderStatusHistory, index) => {\r\n return (\r\n
\r\n {orderStatusHistory.orderStatus?.code == OrderStatusCode.FZR_COMANDA_CONFIRMATA\r\n ? order?.supplierOrderNumber\r\n : '-'}\r\n
\r\n );\r\n });\r\n }\r\n }\r\n }\r\n ];\r\n }\r\n\r\n return columns;\r\n };\r\n\r\n handleDateChangeFrom = async (date: MaterialUiPickersDate | null, value?: string | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState(\r\n {\r\n selectedDateFrom: date!.toDate(),\r\n isLoading: false\r\n },\r\n async () => {\r\n await this.loadOrders();\r\n }\r\n );\r\n };\r\n\r\n handleDateChangeTo = async (date: MaterialUiPickersDate | null, value?: string | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n selectedDateTo: date!.toDate(),\r\n isLoading: false\r\n },\r\n async () => {\r\n await this.loadOrders();\r\n }\r\n );\r\n };\r\n\r\n handleClientsChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedClients: newValue,\r\n isLoading: true\r\n },\r\n async () => await this.reloadOrders(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleSuppliersChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedSuppliers: newValue,\r\n isLoading: true\r\n },\r\n async () => await this.reloadOrders(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleMadeByUsersChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedMadeByUsersList: newValue,\r\n isLoading: true\r\n },\r\n async () => await this.reloadOrders(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleLocationsChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedLocations: newValue,\r\n isLoading: true\r\n },\r\n async () => await this.reloadOrders(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleStatusesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedOrderStatus: newValue,\r\n isLoading: true\r\n },\r\n async () => await this.reloadOrders(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handlePlateNumberChange = (newValue: string) => {\r\n this.setState({\r\n plateNumberSearchText: newValue\r\n });\r\n };\r\n\r\n handleDescriptionChange = (newValue: string) => {\r\n this.setState({\r\n descriptionSearchText: newValue\r\n });\r\n };\r\n\r\n handleSupplierOrderNumberChange = (newValue: string) => {\r\n this.setState({\r\n supplierOrderNumberSearchText: newValue\r\n });\r\n };\r\n\r\n renderFilters = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n this.handleMadeByUsersChange(newValue)}\r\n getOptionLabel={(option: AppUser) => option.userName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n this.handlePlateNumberChange(e.target.value)}\r\n onBlur={(e: any) => this.reloadOrders(this.state.page, this.state.pageSize)}\r\n />\r\n
\r\n
\r\n this.handleSupplierOrderNumberChange(e.target.value)}\r\n onBlur={(e: any) => this.reloadOrders(this.state.page, this.state.pageSize)}\r\n />\r\n
\r\n {/* this.handleLocationsChange(newValue)}\r\n getOptionLabel={(option: Organization) => option.displayName || \"\"}\r\n renderInput={params => (\r\n \r\n )}\r\n /> */}\r\n
\r\n \r\n {this.state.isSupplier ? (\r\n this.handleClientsChange(newValue)}\r\n getOptionLabel={(option: Organization) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n ) : (\r\n this.handleSuppliersChange(newValue)}\r\n getOptionLabel={(option: Organization) => option.name.toUpperCase() == OwnStockCodeEnum.OWN_STOCK.toString() ? this.translatorService.Tranlate('CALCULATION_DETAILS_OWN_STOCK_HEADER', 'Stoc Propriu') : option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n )}\r\n this.handleStatusesChange(newValue)}\r\n getOptionLabel={(option: any) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n this.handleDescriptionChange(e.target.value)}\r\n onBlur={(e: any) => this.reloadOrders(this.state.page, this.state.pageSize)}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState(\r\n {\r\n isDialogOpen: false,\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrders();\r\n }\r\n );\r\n };\r\n\r\n onOrderChange = (order: Order) => {\r\n this.setState({\r\n selectedOrder: \r\n {\r\n ...this.state.selectedOrder!,\r\n amount: order.amount,\r\n amountTVA: order.amountTVA,\r\n amountWithoutTVA: order.amountWithoutTVA,\r\n orderParts: [...order.orderParts!],\r\n orderStatus: order.orderStatus,\r\n orderStatusId: order.orderStatusId\r\n }\r\n });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.orderService = (this.context as AppContext).orderService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n const options = {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 0,\r\n serverSide: true,\r\n count: this.state.count,\r\n rowsPerPage: this.state.pageSize,\r\n page: this.state.page,\r\n onTableChange: async (action: any, tableState: any) => {\r\n switch (action) {\r\n case 'changePage':\r\n await this.reloadOrders(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'changeRowsPerPage':\r\n await this.reloadOrders(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'sort':\r\n // this.sort(tableState.page, tableState.sortOrder);\r\n break;\r\n default:\r\n //console.log('action not handled.');\r\n }\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('ORDERS_TAB_TITLE', 'Comenzi')}\r\n \r\n
\r\n
\r\n \r\n
\r\n {!this.state.isLoading ?
{this.renderFilters()}
: null}\r\n\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('ORDERS_DIALOG_TITLE', 'Detalii comanda')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.selectedOrder === null ? null : (\r\n {console.log('automatePlaceOrderChange')}}\r\n />\r\n )}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n caseSettingsState: state.caseSettings\r\n }),\r\n null\r\n)(withSnackbar(Orders as any));\r\n","import React, { useMemo, useRef, useState } from 'react';\r\nimport {\r\n Button,\r\n IconButton,\r\n Modal,\r\n Paper,\r\n TextField,\r\n Dialog,\r\n DialogContent,\r\n DialogActions,\r\n DialogContentText\r\n} from '@material-ui/core';\r\nimport MaterialTable from 'material-table';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport moment, { Moment } from 'moment';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport * as R from 'ramda';\r\n\r\nimport { getLocalization, MaterialTableIcons } from '../_shared/TableSettings';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { SimpleVehicle } from '../../interfaces/Vehicle';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport CSVReader from 'react-csv-reader';\r\n\r\nconst dateFormat = 'DD.MM.YYYY';\r\nconst dateFomratToSend = 'YYYY-MM-DD';\r\nconst vatOptions = [19, 0];\r\n\r\ninterface Props {\r\n isOpen: boolean;\r\n handleClose: () => void;\r\n translatorService: ITranslatorService;\r\n vehicleService: IVehicleService;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n enqueueSnackbar(param1: any, param2: any): void;\r\n}\r\n\r\ninterface ImportVehicle {\r\n id: string;\r\n plateNumber: string;\r\n firstRegistrationDate: Moment;\r\n kilometersNr: number;\r\n vin: string;\r\n purchasePrice: number;\r\n}\r\n\r\nclass LocalizedUtils extends MomentUtils {}\r\n\r\nconst VehicleImportModal: React.FC = ({\r\n isOpen,\r\n handleClose,\r\n translatorService,\r\n vehicleService,\r\n enqueueSnackbar\r\n}) => {\r\n const [vehicles, setVehicles] = useState([]);\r\n const [purchaseVatRate, setPurchaseVatRate] = useState(vatOptions[0]);\r\n const [dialogVisible, setDialogVisible] = useState(false);\r\n\r\n const columns = useMemo(() => {\r\n return [\r\n {\r\n field: 'plateNumber',\r\n title: translatorService.Tranlate('VEHICLES_VEHICLE_PLATE_NUMBER', 'Numar inmatriculare'),\r\n editComponent: (props: any) => (\r\n props.onChange(e.target.value)}\r\n />\r\n )\r\n },\r\n {\r\n field: 'firstRegistrationDate',\r\n title: translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_FIRST_REGISTRATION_DATE',\r\n 'Data primei inmatriculari'\r\n ),\r\n render: (props: ImportVehicle) => {\r\n return
{props.firstRegistrationDate?.format(dateFormat)}
;\r\n },\r\n editComponent: (props: any) => (\r\n \r\n {\r\n props.onChange(value);\r\n }}\r\n />\r\n \r\n )\r\n },\r\n {\r\n field: 'kilometersNr',\r\n title: translatorService.Tranlate('VEHICLES_VEHICLE_NR_OF_KM', 'KM'),\r\n editComponent: (props: any) => (\r\n props.onChange(e.target.value)}\r\n />\r\n )\r\n },\r\n {\r\n field: 'vin',\r\n title: translatorService.Tranlate('VEHICLES_VEHICLE_VIN', 'VIN'),\r\n editComponent: (props: any) => (\r\n props.onChange(e.target.value)}\r\n />\r\n )\r\n },\r\n {\r\n field: 'purchasePrice',\r\n title: translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_PURCHASE_EUR_PRICE',\r\n 'Pret Achizitie EUR cu TVA'\r\n ),\r\n editComponent: (props: any) => (\r\n props.onChange(e.target.value)}\r\n />\r\n )\r\n }\r\n ];\r\n }, [translatorService]);\r\n\r\n const handleImport = async () => {\r\n setDialogVisible(false);\r\n const simpleVehicles: SimpleVehicle[] = vehicles.map((vehicle) => {\r\n return {\r\n vin: vehicle.vin,\r\n kilometersNr: vehicle.kilometersNr,\r\n plateNumber: vehicle.plateNumber,\r\n firstRegistrationDate: vehicle.firstRegistrationDate.format(dateFomratToSend),\r\n purchasePrice: vehicle.purchasePrice,\r\n purchaseVatRate: purchaseVatRate ?? vatOptions[0]\r\n };\r\n });\r\n\r\n try {\r\n const result = await vehicleService.SaveImportedVehicles(simpleVehicles);\r\n\r\n enqueueSnackbar(\r\n
\r\n

\r\n {translatorService.Tranlate('VEHICLES_VEHICLE_IMPORTED', 'Vehicule importate: ')}{' '}\r\n {result.importedVehicleVins.length\r\n ? result.importedVehicleVins.join(', ')\r\n : translatorService.Tranlate('VEHICLE_SEARCH_FORM_VEHICLE_NO', 'Nu')}\r\n

\r\n

\r\n {translatorService.Tranlate('VEHICLES_VEHICLE_COPIED', 'Vehicule copiate: ')}{' '}\r\n {result.copiedVehicleVins.length\r\n ? result.copiedVehicleVins.join(', ')\r\n : translatorService.Tranlate('VEHICLE_SEARCH_FORM_VEHICLE_NO', 'Nu')}\r\n

\r\n

\r\n {translatorService.Tranlate('VEHICLES_VEHICLE_DUPLICATED', 'Vehicule duplicate: ')}{' '}\r\n {result.duplicatedVehicleVins.length\r\n ? result.duplicatedVehicleVins.join(', ')\r\n : translatorService.Tranlate('VEHICLE_SEARCH_FORM_VEHICLE_NO', 'Nu')}\r\n

\r\n
,\r\n {\r\n variant: 'info',\r\n autoHideDuration: 6000\r\n }\r\n );\r\n\r\n setVehicles([]);\r\n } catch {\r\n enqueueSnackbar('There was an unexpected error while importing the vehicles', {\r\n variant: 'error',\r\n autoHideDuration: 6000\r\n });\r\n }\r\n };\r\n\r\n const handleAutoImport = (value: any) => {\r\n const trimmedValue = value.trim();\r\n\r\n if (!trimmedValue) {\r\n return;\r\n }\r\n\r\n let results = trimmedValue.split(' ');\r\n\r\n const invalidValues: string[] = [];\r\n\r\n try {\r\n const temp = [];\r\n for (let i = 1; i < results.length + 1; i++) {\r\n if (i < 5) continue;\r\n if (i % 5 == 0) {\r\n temp.push(\r\n `${results[i - 5]},${results[i - 4]},${results[i - 3]},${results[i - 2]},${\r\n results[i - 1]\r\n }`\r\n );\r\n }\r\n }\r\n results = temp;\r\n\r\n const importedVehicles: ImportVehicle[] = [];\r\n\r\n results.forEach((element: string) => {\r\n if (element) {\r\n const newVehicleArr = element.split(',');\r\n\r\n const date = moment(newVehicleArr[1], dateFormat, true);\r\n\r\n if (!date.isValid()) {\r\n invalidValues.push(newVehicleArr[1]);\r\n }\r\n\r\n if (!R.test(/^(?=.*[0-9])(?=.*[A-z])[0-9A-z-]{17}$/, newVehicleArr[3])) {\r\n invalidValues.push(newVehicleArr[3]);\r\n }\r\n\r\n const km = parseInt(newVehicleArr[2], 10);\r\n\r\n if (isNaN(km)) {\r\n invalidValues.push(newVehicleArr[2]);\r\n }\r\n\r\n const purchasePrice = parseInt(newVehicleArr[4], 10);\r\n\r\n if (!invalidValues.length) {\r\n importedVehicles.push({\r\n id: uuidv4(),\r\n plateNumber: newVehicleArr[0],\r\n firstRegistrationDate: date,\r\n kilometersNr: km,\r\n vin: newVehicleArr[3],\r\n purchasePrice\r\n });\r\n }\r\n }\r\n });\r\n\r\n if (!invalidValues.length) {\r\n setVehicles([...vehicles, ...importedVehicles]);\r\n } else {\r\n throw 'error';\r\n }\r\n } catch {\r\n enqueueSnackbar(`There are some invalid values: ${invalidValues.join(', ')}`, {\r\n variant: 'error',\r\n autoHideDuration: 10000\r\n });\r\n }\r\n };\r\n\r\n const checkIfDataIsValid = (data: ImportVehicle): boolean => {\r\n if (\r\n data &&\r\n data.id &&\r\n data.firstRegistrationDate &&\r\n data.kilometersNr &&\r\n data.plateNumber &&\r\n data.vin &&\r\n R.test(/^(?=.*[0-9])(?=.*[A-z])[0-9A-z-]{17}$/, data.vin) &&\r\n data.purchasePrice\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const handleRowAdd = (newData: ImportVehicle) => {\r\n return new Promise((resolve, reject) => {\r\n if (!newData.firstRegistrationDate) {\r\n newData.firstRegistrationDate = moment();\r\n }\r\n\r\n if (!newData.id) {\r\n newData.id = uuidv4();\r\n }\r\n\r\n if (checkIfDataIsValid(newData)) {\r\n setVehicles([newData, ...vehicles]);\r\n resolve(newData);\r\n }\r\n\r\n reject();\r\n });\r\n };\r\n\r\n const handleRowUpdate = (newData: ImportVehicle) => {\r\n return new Promise((resolve, reject) => {\r\n if (checkIfDataIsValid(newData)) {\r\n const newVehicles = [...vehicles];\r\n const vehicleIndex = newVehicles.findIndex(({ id }) => id === newData.id);\r\n if (vehicleIndex >= 0) {\r\n newData.firstRegistrationDate = moment(newData.firstRegistrationDate);\r\n newVehicles[vehicleIndex] = newData;\r\n setVehicles(newVehicles);\r\n resolve(newData);\r\n }\r\n }\r\n\r\n reject();\r\n });\r\n };\r\n\r\n const handleRowDelete = (oldData: ImportVehicle) => {\r\n return new Promise((resolve, reject) => {\r\n if (oldData.id) {\r\n setVehicles(vehicles.filter(({ id }) => id !== oldData.id));\r\n resolve(1);\r\n }\r\n\r\n reject();\r\n });\r\n };\r\n\r\n const handleCloseConfirmationDialog = () => {\r\n setDialogVisible(false);\r\n };\r\n\r\n const handleOpenConfirmationDialog = () => {\r\n setDialogVisible(true);\r\n };\r\n\r\n const handleCloseModal = () => {\r\n setVehicles([]);\r\n setPurchaseVatRate(vatOptions[0]);\r\n handleClose();\r\n };\r\n\r\n const handleAutoImportFromCsv = (value: any) => {\r\n const trimmedValue = value.trim();\r\n\r\n if (!trimmedValue) {\r\n return;\r\n }\r\n\r\n let results = trimmedValue.split(' ');\r\n\r\n const invalidValues: string[] = [];\r\n\r\n try {\r\n const temp = [];\r\n for (let i = 1; i < results.length + 1; i++) {\r\n if (i < 5) continue;\r\n if (i % 5 == 0) {\r\n temp.push(\r\n `${results[i - 5]},${results[i - 4]},${results[i - 3]},${results[i - 2]},${\r\n results[i - 1]\r\n }`\r\n );\r\n }\r\n }\r\n results = temp;\r\n\r\n const importedVehicles: ImportVehicle[] = [];\r\n\r\n results.forEach((element: string) => {\r\n if (element) {\r\n const newVehicleArr = element.split(',');\r\n\r\n const date = moment(newVehicleArr[1], dateFormat, true);\r\n\r\n if (!date.isValid()) {\r\n invalidValues.push(newVehicleArr[1]);\r\n }\r\n\r\n if (!R.test(/^(?=.*[0-9])(?=.*[A-z])[0-9A-z-]{17}$/, newVehicleArr[3])) {\r\n invalidValues.push(newVehicleArr[3]);\r\n }\r\n\r\n const km = parseInt(newVehicleArr[2], 10);\r\n\r\n if (isNaN(km)) {\r\n invalidValues.push(newVehicleArr[2]);\r\n }\r\n\r\n const purchasePrice = parseInt(newVehicleArr[4], 10);\r\n\r\n if (!invalidValues.length) {\r\n importedVehicles.push({\r\n id: uuidv4(),\r\n plateNumber: newVehicleArr[0],\r\n firstRegistrationDate: date,\r\n kilometersNr: km,\r\n vin: newVehicleArr[3],\r\n purchasePrice\r\n });\r\n }\r\n }\r\n });\r\n\r\n if (!invalidValues.length) {\r\n setVehicles([...vehicles, ...importedVehicles]);\r\n } else {\r\n setVehicles([...vehicles, ...importedVehicles]);\r\n throw 'error';\r\n }\r\n } catch {\r\n enqueueSnackbar(`There are some invalid values: ${invalidValues.join(', ')}`, {\r\n variant: 'error',\r\n autoHideDuration: 10000\r\n });\r\n }\r\n };\r\n\r\n const importCars = (data: any) => {\r\n let importedValues = '';\r\n for (let i = 0; i < data.length; i++) {\r\n importedValues += data[i].join(' ') + ' ';\r\n }\r\n console.log('Value', importedValues);\r\n handleAutoImportFromCsv(importedValues);\r\n const e = (document.getElementById('CSVReader') as HTMLInputElement);\r\n console.log(e);\r\n if (e) {\r\n e.value = '';\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n {`${translatorService.Tranlate(\r\n 'VEHICLE_AUTO_IMPORT_CONFIRMATION_MESSAGE',\r\n 'Sunteti sigur ca doriti salvarea cu TVA'\r\n )} ${purchaseVatRate}%?`}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n

\r\n {translatorService.Tranlate(\r\n 'VEHICLE_VEHICLE_AUTO_IMPORT_FORMAT',\r\n 'Format acceptat: '\r\n )}\r\n
\r\n BN71ARD 27.02.2021 20000 5NPDH4AE8FH607111 25000\r\n
\r\n CJ22FRM 21.01.2020 60325 1GCCS13E388107108 13200\r\n

\r\n \r\n
\r\n {translatorService.Tranlate('VEHICLES_VEHICLE_IMPORT_VEHICLES_CSV', 'Importa')}\r\n
\r\n {\r\n console.log('CSV Data', data);\r\n importCars(data);\r\n }}\r\n />\r\n \r\n ) =>\r\n handleAutoImport(e.target.value)\r\n }\r\n />\r\n `${option}`}\r\n onChange={(e: any, newValue: any | null) => setPurchaseVatRate(newValue)}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n ,\r\n Pagination: () => null\r\n // Toolbar: () => null\r\n }}\r\n editable={{\r\n onRowAdd: (newData) => handleRowAdd(newData),\r\n onRowUpdate: (newData) => handleRowUpdate(newData),\r\n onRowDelete: (oldData) => handleRowDelete(oldData)\r\n }}\r\n />\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default VehicleImportModal;\r\n","import React, { useState } from 'react';\r\nimport { Button } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\n\r\ninterface Props {\r\n translatorService: ITranslatorService;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n enqueueSnackbar(param1: any, param2: any): void;\r\n vehicleService: IVehicleService;\r\n}\r\n\r\nconst ImportVehiclesRenaultButton: React.FC = ({\r\n translatorService,\r\n enqueueSnackbar,\r\n vehicleService\r\n}) => {\r\n const [fileInputKey, setFileInputKey] = useState(0);\r\n\r\n const handleImportOriginalParts = async (event: React.ChangeEvent) => {\r\n event.preventDefault();\r\n\r\n const files = event.target.files;\r\n\r\n if (!files || files.length === 0) {\r\n return;\r\n }\r\n\r\n const file = event.target.files![0];\r\n\r\n try {\r\n const result = await vehicleService.SaveImportedXlsxVehicles(file);\r\n\r\n enqueueSnackbar(\r\n
\r\n

\r\n {translatorService.Tranlate('VEHICLES_VEHICLE_IMPORTED', 'Vehicule importate: ')}{' '}\r\n {result.importedVehicleVins.length\r\n ? result.importedVehicleVins.join(', ')\r\n : translatorService.Tranlate('VEHICLE_SEARCH_FORM_VEHICLE_NO', 'Nu')}\r\n

\r\n

\r\n {translatorService.Tranlate('VEHICLES_VEHICLE_DUPLICATED', 'Vehicule duplicate: ')}{' '}\r\n {result.duplicatedVehicleVins.length\r\n ? result.duplicatedVehicleVins.join(', ')\r\n : translatorService.Tranlate('VEHICLE_SEARCH_FORM_VEHICLE_NO', 'Nu')}\r\n

\r\n
,\r\n {\r\n variant: 'info',\r\n autoHideDuration: 6000\r\n }\r\n );\r\n setFileInputKey((prevKey) => prevKey + 1);\r\n } catch {\r\n enqueueSnackbar('There was an unexpected error while importing the vehicles', {\r\n variant: 'error',\r\n autoHideDuration: 6000\r\n });\r\n setFileInputKey((prevKey) => prevKey + 1);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n document.getElementById('importXlsxFile')?.click()}\r\n >\r\n {translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_IMPORT_VEHICLES_XLSX_FILE',\r\n 'Importa Vehicule Renault'\r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ImportVehiclesRenaultButton;\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n VehicleState\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Button, Grid } from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport {\r\n ParametreCode,\r\n ReferentialCode,\r\n OfferTypeCode,\r\n CurrencyCode,\r\n Constants,\r\n CaseStatusCodeEnum,\r\n GuaranteeTypeEnum,\r\n VehicleStatusCodeEnum,\r\n RenaultGoldList\r\n} from '../../helpers/Constants';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport NumberFormat from 'react-number-format';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { VehicleOffer } from '../../interfaces/Vehicle';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport { IReportsService } from '../../services/Interfaces/IReportsService';\r\nimport * as R from 'ramda';\r\nimport { CaseTypeCode } from '../../helpers/Constants';\r\nimport _ from 'lodash';\r\nimport { CurrencyEnum } from '../../enums/CurrencyEnum';\r\nimport { CaseAttachment, CaseRequest, ChangeCaseStatusRequest } from '../../interfaces/Case';\r\nimport { Autocomplete } from '@material-ui/lab';\r\n\r\ninterface ICaseDetailsCaseTabSaleOfferFormDialogState {\r\n isLoading: boolean;\r\n hasRights: boolean;\r\n executing: boolean;\r\n isUserHidden: boolean;\r\n vehicleOfferData: VehicleOffer;\r\n guaranteeTypes: IReferential[];\r\n offerTypes: IReferential[];\r\n offers: VehicleOffer[];\r\n offerType: IReferential | null;\r\n contractOffer?: VehicleOffer;\r\n contractPrice?: number;\r\n contractModalOpened: boolean;\r\n displaySecondCurrency: boolean;\r\n saleChannels: IReferential[];\r\n}\r\n\r\nexport interface ExternalCaseDetailsCaseTabSaleOfferFormDialogProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n isSaleOfferType: boolean;\r\n closeDialog: () => any;\r\n}\r\n\r\ntype ICaseDetailsCaseTabSaleOfferFormDialogProps =\r\n ExternalCaseDetailsCaseTabSaleOfferFormDialogProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n } & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass CaseDetailsCaseTabSaleOfferFormDialog extends React.PureComponent<\r\n ICaseDetailsCaseTabSaleOfferFormDialogProps,\r\n ICaseDetailsCaseTabSaleOfferFormDialogState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n private appUserService!: IAppUserService;\r\n private reportService!: IReportsService;\r\n private checkIfCurrencyIsEurOrRon: boolean =\r\n this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value == CurrencyCode.EUR ||\r\n this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value == CurrencyCode.RON;\r\n static contextType = ApplicationContext;\r\n state = {\r\n isLoading: true,\r\n hasRights: false,\r\n executing: false,\r\n isUserHidden: false,\r\n guaranteeTypes: [] as IReferential[],\r\n offerTypes: [],\r\n offers: [],\r\n offerType: null,\r\n contractModalOpened: false,\r\n currencyRates: [],\r\n displaySecondCurrency: this.checkIfCurrencyIsEurOrRon,\r\n vehicleOfferData: {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n vehicleId: this.props.caseSettingsState.case!.vehicleId,\r\n comments: '',\r\n damageValue: 0,\r\n newVin: '',\r\n offerValue: 0,\r\n offerValueWithVAT: 0,\r\n priceValue: 0,\r\n tradeInValue: 0,\r\n vatValue: 0,\r\n withNewVehicle: this.props.isSaleOfferType,\r\n currency: this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value,\r\n currencyRate: Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value == CurrencyCode.RON\r\n ? CurrencyCode.EUR\r\n : this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value\r\n ),\r\n secondCurrency: this.checkIfCurrencyIsEurOrRon\r\n ? this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value == CurrencyCode.EUR\r\n ? CurrencyCode.RON\r\n : CurrencyCode.EUR\r\n : null,\r\n secondOfferValue: this.checkIfCurrencyIsEurOrRon ? 0 : null,\r\n secondOfferVatAmount: this.checkIfCurrencyIsEurOrRon ? 0 : null,\r\n secondOfferValueWithVAT: this.checkIfCurrencyIsEurOrRon ? 0 : null\r\n } as VehicleOffer,\r\n saleChannels: [] as IReferential[]\r\n } as ICaseDetailsCaseTabSaleOfferFormDialogState;\r\n\r\n public componentDidMount() {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n if (R.isNil(caseSettings) || R.isNil(this.props.caseSettingsState.case)) {\r\n return;\r\n }\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCaseSaleOfferForm();\r\n if (!this.props.appState.currencyRates.length) {\r\n await this.getCurrencyRates();\r\n }\r\n }\r\n );\r\n }\r\n\r\n getCurrencyRates = async () => {\r\n const rates = await this.vehicleService.GetCurrencyRates();\r\n this.props.appState.currencyRates = rates;\r\n console.log('currencyRates', this.props.appState.currencyRates);\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n currencyRate: Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value == CurrencyCode.RON\r\n ? CurrencyCode.EUR\r\n : this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value\r\n )\r\n }\r\n });\r\n };\r\n\r\n getCurrentCurrency = (): string => {\r\n return this.props.caseSettingsState.case!.caseParameters.find(\r\n (p) => p.parameter!.code === ParametreCode.CURRENCY\r\n )!.value;\r\n };\r\n\r\n getVATValue = (price: number, vat: number): number => {\r\n return Number.parseFloat((price * (vat / 100)).toFixed(2));\r\n };\r\n\r\n getPriceWithVAT = (price: number, vat: number) => {\r\n const vatValue = this.getVATValue(price, vat);\r\n return Number.parseFloat((price + vatValue).toFixed(2));\r\n };\r\n\r\n getReverseVatValue = (price: number, vat: number): number => {\r\n return Number.parseFloat(((price / (1 + vat / 100) - price) * -1).toFixed(2));\r\n };\r\n\r\n getPriceWithoutVAT = (price: number, vat: number) => {\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n\r\n const vehicleHasNoVAT =\r\n offerTypeCode === CaseTypeCode.SALE && this.props.vehicleState.vehicle?.purchaseVatRate === 0;\r\n\r\n const purchasePrice = (this.props.vehicleState?.vehicle?.purchasePrice as number) || 0;\r\n\r\n const vatValue = !vehicleHasNoVAT\r\n ? this.getReverseVatValue(price, vat)\r\n : Utils.getMarginVat(price, +purchasePrice, vat);\r\n\r\n return Number.parseFloat((price - vatValue).toFixed(2));\r\n };\r\n\r\n getOfferPriceWithoutVAT = (offerPrice: number): number => {\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n const vehicleHasNoVAT =\r\n offerTypeCode === CaseTypeCode.SALE && this.props.vehicleState.vehicle?.purchaseVatRate === 0;\r\n\r\n const purchasePrice = (this.props.vehicleState?.vehicle?.purchasePrice as number) || 0;\r\n\r\n const caseParameters = this.props.caseSettingsState.case!.caseParameters;\r\n const vatParameter = caseParameters.filter(\r\n (parameter) => parameter.parameter!.code === ParametreCode.TVA\r\n );\r\n const vat = parseFloat(vatParameter[0]!.value);\r\n\r\n const vatValue = !vehicleHasNoVAT\r\n ? this.getReverseVatValue(offerPrice, vat)\r\n : Utils.getMarginVat(offerPrice, +purchasePrice, vat);\r\n\r\n return Number.parseFloat((offerPrice - vatValue).toFixed(2));\r\n };\r\n\r\n getVATFromOfferPrice = () => {\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n\r\n const vehicleHasNoVAT =\r\n offerTypeCode === CaseTypeCode.SALE && this.props.vehicleState.vehicle?.purchaseVatRate === 0;\r\n\r\n const purchasePrice = (this.props.vehicleState?.vehicle?.purchasePrice as number) || 0;\r\n\r\n const offerPrice = this.state.vehicleOfferData.offerValueWithVAT;\r\n const caseParameters = this.props.caseSettingsState.case!.caseParameters;\r\n const vatParameter = caseParameters.filter(\r\n (parameter) => parameter.parameter!.code === ParametreCode.TVA\r\n );\r\n\r\n const vat = parseFloat(vatParameter[0]!.value);\r\n\r\n if (!vehicleHasNoVAT) {\r\n const offerPriceWithoutVAT = offerPrice / (1 + vat / 100);\r\n\r\n return Number.parseFloat((offerPriceWithoutVAT * (vat / 100)).toFixed(2));\r\n }\r\n\r\n return Utils.getMarginVat(offerPrice, purchasePrice, vat);\r\n };\r\n\r\n setStatePriceAndVAT = () => {\r\n const caseParameters = this.props.caseSettingsState.case!.caseParameters;\r\n const vatParameter = caseParameters.filter(\r\n (parameter) => parameter.parameter!.code === ParametreCode.TVA\r\n );\r\n\r\n const vatValue = +vatParameter[0]?.value || 0;\r\n\r\n const tradeInValue = 0;\r\n\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n offerType: this.state.offerType,\r\n offerTypeId: this.state.offerType!.id,\r\n tradeInValue,\r\n damageValue: 0,\r\n offerValue: 0,\r\n offerValueWithVAT: this.getPriceWithVAT(0, vatValue),\r\n priceValue: 0,\r\n vatValue: parseFloat(vatParameter[0]!.value)\r\n }\r\n });\r\n };\r\n\r\n setSecondValueBasedOnCaseCurrency(value: number, currencyRate: number): number | null {\r\n let resultValue = null;\r\n if (\r\n this.state.vehicleOfferData.currency == CurrencyCode.EUR ||\r\n this.state.vehicleOfferData.currency == CurrencyCode.RON\r\n ) {\r\n resultValue = 0;\r\n const previousCurrencyCode = this.state.vehicleOfferData.currency;\r\n const futureCurrencyCode =\r\n this.state.vehicleOfferData.currency == CurrencyCode.EUR\r\n ? CurrencyCode.RON\r\n : CurrencyCode.EUR;\r\n if (!R.isNil(value) && previousCurrencyCode) {\r\n let previousCurrencyRate = Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n previousCurrencyCode\r\n );\r\n\r\n let futureCurrencyRate = Utils.GetCurrencyRate(\r\n this.props.appState.currencyRates,\r\n futureCurrencyCode\r\n );\r\n\r\n if (this.state.vehicleOfferData.currency == CurrencyEnum.EUR) {\r\n previousCurrencyRate = currencyRate;\r\n } else if (this.state.vehicleOfferData.currency == CurrencyCode.RON) {\r\n futureCurrencyRate = currencyRate;\r\n }\r\n\r\n resultValue = value * (previousCurrencyRate / futureCurrencyRate);\r\n return Number.parseFloat(resultValue.toFixed(2));\r\n }\r\n }\r\n\r\n return resultValue;\r\n }\r\n\r\n setSecondVatFromOfferPrice(offerValueWithVAT: number): number {\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n const vehicleHasNoVAT =\r\n offerTypeCode === CaseTypeCode.SALE && this.props.vehicleState.vehicle?.purchaseVatRate === 0;\r\n const purchasePrice = (this.props.vehicleState?.vehicle?.purchasePrice as number) || 0;\r\n const caseParameters = this.props.caseSettingsState.case!.caseParameters;\r\n const vatParameter = caseParameters.filter(\r\n (parameter) => parameter.parameter!.code === ParametreCode.TVA\r\n );\r\n const vat = parseFloat(vatParameter[0]!.value);\r\n if (!vehicleHasNoVAT) {\r\n const offerPriceWithoutVAT = offerValueWithVAT / (1 + vat / 100);\r\n return Number.parseFloat((offerPriceWithoutVAT * (vat / 100)).toFixed(2));\r\n }\r\n return Utils.getMarginVat(offerValueWithVAT, purchasePrice, vat);\r\n }\r\n\r\n loadCaseSaleOfferForm = async () => {\r\n const caseSettings = this.props.caseSettingsState.caseSettings;\r\n if (R.isNil(caseSettings) || R.isNil(this.props.caseSettingsState.case)) {\r\n return;\r\n }\r\n\r\n const guaranteeTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.GuaranteeType\r\n );\r\n const offerTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OfferTye\r\n );\r\n const saleChannelRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.SaleChannel\r\n );\r\n\r\n const offerTypeList = await this.appReferentialService.Get(offerTypeRef!.baseUrl);\r\n\r\n const offerType = offerTypeList.find(\r\n (item) =>\r\n (item.code === OfferTypeCode.SELL && this.props.isSaleOfferType) ||\r\n (item.code === OfferTypeCode.BUY && !this.props.isSaleOfferType)\r\n )!;\r\n\r\n const [guaranteeTypeList, saleChannelList] = await Promise.all([\r\n this.appReferentialService.Get(guaranteeTypeRef!.baseUrl),\r\n this.appReferentialService.Get(saleChannelRef!.baseUrl)\r\n ]);\r\n\r\n this.setState(\r\n {\r\n isLoading: false,\r\n hasRights: true,\r\n isUserHidden: false,\r\n guaranteeTypes: guaranteeTypeList.filter((item) => item.isActive),\r\n offerTypes: offerTypeList,\r\n offers: [],\r\n offerType: offerType,\r\n saleChannels: saleChannelList.filter((item) => item.isActive)\r\n },\r\n this.setStatePriceAndVAT\r\n );\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n\r\n NumberFormatCustomCurrencyRate = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={4}\r\n />\r\n );\r\n };\r\n\r\n submitData = async (e: any) => {\r\n try {\r\n this.setState({ executing: true });\r\n const data: VehicleOffer = {\r\n ...this.state.vehicleOfferData,\r\n offerVatAmount:\r\n this.state.vehicleOfferData.offerValueWithVAT - this.state.vehicleOfferData.offerValue,\r\n secondCurrency: this.state.displaySecondCurrency\r\n ? this.state.vehicleOfferData.secondCurrency\r\n : null,\r\n secondOfferValue: this.state.displaySecondCurrency\r\n ? this.state.vehicleOfferData.secondOfferValue\r\n : null,\r\n secondOfferValueWithVAT: this.state.displaySecondCurrency\r\n ? this.state.vehicleOfferData.secondOfferValueWithVAT\r\n : null\r\n };\r\n\r\n await this.vehicleService.SaveVehicleOfferWithoutCaseId(data);\r\n\r\n const caseStatusRequest = {\r\n caseId: this.props.caseSettingsState.case!.id,\r\n statusId: CaseStatusCodeEnum.OF_VANZ\r\n } as ChangeCaseStatusRequest;\r\n await this.caseService.ChangeCaseStatus(caseStatusRequest);\r\n\r\n const caseRequest = {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case!.id,\r\n text: this.state.vehicleOfferData.offerValueWithVAT + ' EUR',\r\n subject: '',\r\n to: '',\r\n userIdTo: '',\r\n organizationId: null,\r\n attachments: [] as CaseAttachment[],\r\n caseSectionStepFormId: this.props.workflowForm.id\r\n } as CaseRequest;\r\n\r\n await this.caseService.AddCaseRequest(caseRequest);\r\n\r\n await this.submitFormForClosedCase(this.props.caseSettingsState.case!.id);\r\n\r\n this.props.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({\r\n executing: false\r\n });\r\n }\r\n };\r\n\r\n submitFormForClosedCase = async (caseId: number) => {\r\n const caseStatusRequest = {\r\n caseId: caseId,\r\n statusId: CaseStatusCodeEnum.Closed\r\n } as ChangeCaseStatusRequest;\r\n let newStatus = await this.caseService.ChangeCaseStatus(caseStatusRequest);\r\n\r\n if (newStatus === null) {\r\n newStatus = this.props.caseSettingsState.case!.caseStatus;\r\n }\r\n const vehicleId = this.props.caseSettingsState.case?.vehicleId;\r\n\r\n if (newStatus.caseStatus?.code === 'CLOSED') {\r\n if (vehicleId) {\r\n await this.vehicleService.ChangeVehicleStatus({\r\n vehicleId,\r\n statusId: VehicleStatusCodeEnum.Sold,\r\n comment: ''\r\n });\r\n }\r\n if (vehicleId) {\r\n await this.vehicleService.DeleteAllAdvertWhenCaseStatusBecameClosed(caseId, vehicleId);\r\n }\r\n }\r\n };\r\n\r\n handleIsActiveNewVehicle = (e: any) => {\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n withNewVehicle: e.currentTarget.checked,\r\n newVin: e.currentTarget.checked ? this.state.vehicleOfferData.newVin : ''\r\n }\r\n });\r\n };\r\n\r\n handleGuaranteeTypeChange = (newValue: IReferential | null) => {\r\n if (!R.isNil(newValue!.displayName)) {\r\n if (RenaultGoldList.includes(newValue!.code!.toString())) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'RENEW_GOLD_INFO_MESSAGE',\r\n 'Aceasta garantie include si Garantia de producator !'\r\n ),\r\n {\r\n variant: 'info',\r\n autoHideDuration: 5000\r\n }\r\n );\r\n }\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n guaranteeType: newValue,\r\n guaranteeTypeId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n }\r\n };\r\n\r\n handleSaleChannelChange = (newValue: IReferential | null) => {\r\n if (!R.isNil(newValue!.displayName)) {\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n saleChannel: newValue,\r\n saleChannelId: newValue === null ? null : newValue.id\r\n }\r\n });\r\n }\r\n };\r\n\r\n renderClientDataForm = (caseHasVAT: boolean) => {\r\n const saleOfferPriceOfferedWithoutVatLabel = caseHasVAT\r\n ? this.translatorService.Tranlate(\r\n 'SALE_OFFER_PRICE_OFFERED_DIALOG_WITHOUT_VAT',\r\n 'Pret vanzare fara TVA'\r\n )\r\n : this.translatorService.Tranlate('SALE_OFFER_PRICE_OFFERED_DIALOG', 'Pret vanzare');\r\n\r\n const saleOfferPriceOfferedWithVatLabel = caseHasVAT\r\n ? this.translatorService.Tranlate(\r\n 'SALE_OFFER_PRICE_OFFERED_DIALOG_WITH_VAT',\r\n 'Pret vanzare cu TVA'\r\n )\r\n : this.translatorService.Tranlate('SALE_OFFER_PRICE_OFFERED_DIALOG', 'Pret vanzare');\r\n\r\n return (\r\n {\r\n this.submitData(e);\r\n }}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n {caseHasVAT && (\r\n \r\n \r\n \r\n )}\r\n \r\n\r\n \r\n \r\n {\r\n const offerValue = this.getOfferPriceWithoutVAT(e.target.value);\r\n const secondOfferValueWithVAT = this.setSecondValueBasedOnCaseCurrency(\r\n e.target.value,\r\n this.state.vehicleOfferData.currencyRate\r\n );\r\n const secondOfferValue = secondOfferValueWithVAT\r\n ? this.getOfferPriceWithoutVAT(secondOfferValueWithVAT)\r\n : 0;\r\n const secondOfferVatAmount = secondOfferValueWithVAT\r\n ? this.setSecondVatFromOfferPrice(secondOfferValueWithVAT)\r\n : 0;\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n offerValueWithVAT: e.target.value,\r\n offerValue: offerValue,\r\n secondOfferValueWithVAT: secondOfferValueWithVAT\r\n ? secondOfferValueWithVAT\r\n : 0,\r\n secondOfferValue: secondOfferValue,\r\n secondOfferVatAmount: secondOfferVatAmount\r\n }\r\n });\r\n }}\r\n validators={['required', 'minNumber:1']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu'),\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={\r\n this.state.displaySecondCurrency\r\n ? saleOfferPriceOfferedWithVatLabel +\r\n ' | ' +\r\n this.state.vehicleOfferData.offerValueWithVAT +\r\n ' ' +\r\n this.state.vehicleOfferData.currency +\r\n ' (' +\r\n this.state.vehicleOfferData.secondOfferValueWithVAT +\r\n ' ' +\r\n this.state.vehicleOfferData.secondCurrency +\r\n ')'\r\n : saleOfferPriceOfferedWithVatLabel\r\n }\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom,\r\n style: { fontWeight: 500 }\r\n }}\r\n />\r\n \r\n \r\n {\r\n const value = e.target.value;\r\n const secondOfferValueWithVAT = this.setSecondValueBasedOnCaseCurrency(\r\n this.state.vehicleOfferData.offerValueWithVAT,\r\n parseFloat(value)\r\n );\r\n const secondOfferValue = secondOfferValueWithVAT\r\n ? this.getOfferPriceWithoutVAT(secondOfferValueWithVAT)\r\n : 0;\r\n this.setState({\r\n vehicleOfferData: {\r\n ...this.state.vehicleOfferData,\r\n currencyRate: parseFloat(value),\r\n secondOfferValueWithVAT: secondOfferValueWithVAT\r\n ? secondOfferValueWithVAT\r\n : 0,\r\n secondOfferValue: secondOfferValue ? secondOfferValue : 0,\r\n secondOfferVatAmount: secondOfferValueWithVAT\r\n ? this.setSecondVatFromOfferPrice(secondOfferValueWithVAT)\r\n : 0\r\n }\r\n });\r\n }}\r\n validators={['required', 'minNumber:1']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu'),\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('SALE_OFFER_PRICE_FXRATE', 'Curs valutar')}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustomCurrencyRate,\r\n style: { fontWeight: 500 }\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n this.handleGuaranteeTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n this.handleSaleChannelChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )} \r\n />\r\n \r\n \r\n
\r\n\r\n \r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.reportService = (this.context as AppContext).reportsService;\r\n\r\n const offerTypeCode = this.props.caseSettingsState?.case?.caseType?.code;\r\n\r\n const caseHasNoVAT =\r\n offerTypeCode === CaseTypeCode.AQUISITION && this.state.vehicleOfferData.vatValue === 0;\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
{this.renderClientDataForm(!caseHasNoVAT)}
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsCaseTabSaleOfferFormDialogProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(CaseDetailsCaseTabSaleOfferFormDialog as any));\r\n","import React, { useEffect, useState } from 'react';\r\nimport {\r\n Button,\r\n IconButton,\r\n Modal,\r\n Grid,\r\n} from '@material-ui/core';\r\nimport * as R from 'ramda';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport moment, { Moment } from 'moment';\r\nimport { CarDetailsSettings } from '../../helpers/Constants';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { Utils } from '../../helpers/Utils';\r\n\r\nconst initialVehicle = {\r\n plateNumber: '',\r\n firstRegistrationDate: null,\r\n kilometersNr: 0,\r\n vin: '',\r\n accountingValue: 0,\r\n rcrEmployeeEmail: '',\r\n rcrEmployeePhone: '',\r\n rcrEmployeeFirstName: '',\r\n rcrEmployeeLastName: ''\r\n}\r\ninterface Props {\r\n isOpen: boolean;\r\n handleClose: () => void;\r\n translatorService: ITranslatorService;\r\n vehicleService: IVehicleService;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n enqueueSnackbar(param1: any, param2: any): void;\r\n language:string;\r\n dateFormat:string;\r\n}\r\n\r\n\r\nexport interface ImportVehicle {\r\n plateNumber: string;\r\n firstRegistrationDate: Moment | null;\r\n kilometersNr: number;\r\n vin: string;\r\n accountingValue: number;\r\n rcrEmployeeEmail: string;\r\n rcrEmployeePhone: string;\r\n rcrEmployeeFirstName: string;\r\n rcrEmployeeLastName: string\r\n}\r\n\r\nclass LocalizedUtils extends MomentUtils { }\r\n\r\nconst VehicleImportOneCarModal: React.FC = ({\r\n isOpen,\r\n handleClose,\r\n translatorService,\r\n vehicleService,\r\n enqueueSnackbar,\r\n language,\r\n dateFormat\r\n}) => {\r\n\r\n const [vehicleData, setVehicleData] = useState(initialVehicle)\r\n const [datePickerFirstRegistrationError, setDatePickerFirstRegistrationError] = useState('')\r\n const [plateNumberError, setPlateNumberError] = useState(false);\r\n\r\n const addVehicle = async () => {\r\n try {\r\n const result = await vehicleService.SaveManualdVehicles({vehicles:[vehicleData]});\r\n if (result.importedVehicleVins.length > 0){\r\n enqueueSnackbar(translatorService.Tranlate('VEHICLE_ADD_VEHICLE_SUCCES', 'Vehicului a fost adaugat cu succes'), {\r\n variant: 'success',\r\n autoHideDuration: 6000\r\n });\r\n }else{\r\n enqueueSnackbar(translatorService.Tranlate('VEHICLE_ADD_VEHICLE_ALREADY_EXISTS', 'Vehicului exista deja'), {\r\n variant: 'info',\r\n autoHideDuration: 6000\r\n });\r\n }\r\n\r\n setVehicleData({ ...initialVehicle })\r\n handleClose()\r\n } catch {\r\n enqueueSnackbar(translatorService.Tranlate('VEHICLE_ADD_VEHICLE_ERROR', 'There was an unexpected error while importing the vehicles'), {\r\n variant: 'error',\r\n autoHideDuration: 6000\r\n });\r\n handleClose()\r\n }\r\n };\r\n\r\n useEffect(()=>{\r\n ValidatorForm.addValidationRule('isValidNumberOfKm', (value) => {\r\n if (value >= CarDetailsSettings.numberOfKm) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n },[])\r\n\r\n const checkIfDataIsValid = (): boolean => {\r\n if (\r\n vehicleData &&\r\n vehicleData.firstRegistrationDate &&\r\n vehicleData.accountingValue &&\r\n vehicleData.rcrEmployeeEmail &&\r\n vehicleData.rcrEmployeeLastName && \r\n vehicleData.rcrEmployeeFirstName &&\r\n vehicleData.rcrEmployeePhone &&\r\n vehicleData.kilometersNr &&\r\n vehicleData.plateNumber &&\r\n vehicleData.vin &&\r\n R.test(/^(?=.*[0-9])(?=.*[A-z])[0-9A-z-]{17}$/, vehicleData.vin)\r\n ) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n const handleCloseModal = () => {\r\n setVehicleData({ ...initialVehicle })\r\n handleClose();\r\n };\r\n\r\n const onChange = (attributeName: keyof ImportVehicle, newValue: any) => {\r\n setVehicleData((prevState) => ({\r\n ...prevState,\r\n [attributeName]: newValue\r\n }));\r\n\r\n const isPlateNumberValid = Utils.validatePlateNumber(newValue);\r\n if (!isPlateNumberValid) {\r\n setPlateNumberError(true); \r\n } else {\r\n setPlateNumberError(false);\r\n }\r\n };\r\n\r\n const handleFirstRegistrationDateChange = (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n let error = '';\r\n const selectedDate = date ? date.format('YYYY-MM-DD') : undefined;\r\n\r\n if (!selectedDate) {\r\n error = translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu');\r\n } else {\r\n const currentDate = moment().format('YYYY-MM-DD');\r\n if (currentDate && selectedDate > currentDate) {\r\n error = translatorService.Tranlate(\r\n 'CAR_DETAILS_YEAR_OF_FIRST_REGISTRATION_ERROR',\r\n 'Data primei inmatriculari trebuie sa fie mai mica decat data curenta'\r\n );\r\n }\r\n }\r\n\r\n onChange('firstRegistrationDate', date || '')\r\n setDatePickerFirstRegistrationError(error);\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n
\r\n
\r\n {translatorService.Tranlate('VEHICLES_VEHICLE_IMPORT_MANUAL', 'Importa Vehicul Manual')}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n ) => {\r\n onChange('plateNumber', e.target.value.toUpperCase().replace(/[^a-zA-Z0-9]/g, ''));\r\n }}\r\n error={plateNumberError} \r\n helperText={plateNumberError ? translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_SEND_TO_CARFIX_INVALID_PLATE_NUMBER',\r\n 'Numar de inmatriculare incorect'\r\n ): \"\"}\r\n validators={['required']}\r\n errorMessages={[\r\n translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={translatorService.Tranlate(\r\n 'CAR_DETAILS_PLATE_NUMBER',\r\n 'Numar inmatriculare'\r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) => onChange('kilometersNr', parseInt(e.target.value))}\r\n validators={['required', 'isValidNumberOfKm']}\r\n errorMessages={[\r\n translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu'),\r\n translatorService.Tranlate(\r\n 'CAR_DETAILS_NUMBER_OF_KILOMETERS_ERROR',\r\n 'Numarul de kilometri nu trebuie sa fie mai mare de 1000000'\r\n )\r\n ]}\r\n label={translatorService.Tranlate(\r\n 'CAR_DETAILS_NUMBER_OF_KILOMETERS',\r\n 'Numar kilometri'\r\n )}\r\n />\r\n \r\n \r\n ) => onChange('vin', e.target.value)}\r\n validators={[\r\n 'required',\r\n 'matchRegexp:^(?=.*[0-9])(?=.*[abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ])[0-9abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ-]{17}$'\r\n ]}\r\n errorMessages={[\r\n translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n ),\r\n translatorService.Tranlate('VIN_INVALID', 'Numarul VIN nu este valid')\r\n ]}\r\n label={translatorService.Tranlate('CAR_DETAILS_CHASIS_CODE', 'Serie sasiu')}\r\n />\r\n \r\n \r\n ) => onChange('accountingValue', parseInt(e.target.value))}\r\n validators={['required']}\r\n errorMessages={[\r\n translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu'),\r\n ]}\r\n label={translatorService.Tranlate(\r\n 'CAR_DETAILS_ACCOUNTING_VALUE',\r\n 'Valoarea contabila'\r\n )}\r\n />\r\n \r\n \r\n ) => onChange('rcrEmployeeLastName', e.target.value)}\r\n validators={['required']}\r\n errorMessages={[\r\n translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={translatorService.Tranlate(\r\n 'CAR_DETAILS_EMPLOYEE_LAST_NAME',\r\n 'Nume'\r\n )}\r\n />\r\n \r\n \r\n ) => onChange('rcrEmployeeFirstName', e.target.value)}\r\n validators={['required']}\r\n errorMessages={[\r\n translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={translatorService.Tranlate(\r\n 'CAR_DETAILS_EMPLOYEE_FIRST_NAME',\r\n 'Prenume'\r\n )}\r\n />\r\n \r\n \r\n ) => onChange('rcrEmployeeEmail', e.target.value)}\r\n validators={[\r\n 'required',\r\n 'isEmail'\r\n ]}\r\n errorMessages={[\r\n translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu'),\r\n translatorService.Tranlate('EMAIL_INVALID', 'Email-ul nu este valid')\r\n ]}\r\n label={translatorService.Tranlate(\r\n 'CAR_DETAILS_EMPLOYEE_EMAIL',\r\n 'Email'\r\n )}\r\n />\r\n \r\n \r\n ) => onChange('rcrEmployeePhone', e.target.value)}\r\n validators={['required']}\r\n errorMessages={[\r\n translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={translatorService.Tranlate(\r\n 'CAR_DETAILS_EMPLOYEE_PHONE',\r\n 'Phone'\r\n )}\r\n />\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default VehicleImportOneCarModal;\r\n","import * as React from 'react';\r\nimport { ApplicationState, AppState, CaseSettingsState, VehicleState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Card, Grid, Tab, Tabs, AppBar, TextField, Button } from '@material-ui/core';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { Organization } from '../../interfaces/Organization';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n VehicleExtensionList,\r\n VehicleFilters,\r\n SimpleVehicleCarfix\r\n} from '../../interfaces/Vehicle';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport moment from 'moment';\r\nimport VehicleImportModal from './VehicleImportModal';\r\nimport ImportVehiclesRenaultButton from './ImportVehiclesRenaultButton';\r\nimport Loader from '../Loader';\r\nimport noop from 'lodash/noop';\r\nimport FileCopyOutlined from '@material-ui/icons/FileCopyOutlined';\r\nimport { IconButton } from '@material-ui/core';\r\nimport {\r\n Tooltip,\r\n CardContent,\r\n Dialog,\r\n DialogTitle,\r\n Typography,\r\n DialogContent,\r\n Radio,\r\n Divider\r\n} from '@material-ui/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport CaseDetailsCaseTabSaleOfferFormDialog from '../cases/CaseDetailsCaseTabSaleOfferFormDialog';\r\nimport { Workflow, WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { Case, CaseByVehicleIdSearchResult } from '../../interfaces/Case';\r\nimport { FormCode } from '../../helpers/forms/FormCode';\r\nimport { CaseSettings } from '../../interfaces/CaseSettings';\r\nimport * as R from 'ramda';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { CaseStatusCode, ReferentialCode, VehicleStatusCodeEnum } from '../../helpers/Constants';\r\nimport _ from 'lodash';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { FormControlLabel, InputAdornment, Switch } from '@material-ui/core';\r\nimport VehicleImportOneCarModal from './VehicleImportOneCarModal';\r\nimport { Utils } from '../../helpers/Utils';\r\n\r\n\r\ntype VehiclesProps = {\r\n appState: AppState;\r\n caseSettingsState: CaseSettingsState;\r\n vehicleState: VehicleState;\r\n} & ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface IVehiclesState {\r\n vehiclesList: VehicleExtensionList;\r\n organizationEntities: Organization[];\r\n selectedOrgEntities: Organization[];\r\n location: string;\r\n makeEntities: IReferential[];\r\n selectedMakeEntities: IReferential[];\r\n modelEntities: IReferential[];\r\n selectedModelEntities: IReferential[];\r\n fuelEntities: IReferential[];\r\n selectedFuelEntities: IReferential[];\r\n transmissionEntities: IReferential[];\r\n selectedTransmissionEntities: IReferential[];\r\n tractionEntities: IReferential[];\r\n selectedTractionEntities: IReferential[];\r\n statusEntities: IReferential[];\r\n selectedStatusEntities: IReferential[];\r\n selectedTab: number;\r\n isLoading: boolean;\r\n isLoadingVehicles: boolean;\r\n count: number;\r\n page: number;\r\n pageSize: number;\r\n vehicleImportDialogOpenend: boolean;\r\n vehicleImportOneCarDialogOpenend: boolean;\r\n isCarSoldDialogOpen: boolean;\r\n salesWokflowForm: WorkflowSectionStepForm | null;\r\n paramList: IReferential[];\r\n isLoadingDialog: boolean;\r\n vin: string;\r\n}\r\n\r\nclass Vehicles extends React.PureComponent {\r\n private cbContext!: AppContext;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n vehiclesList: {} as VehicleExtensionList,\r\n organizationEntities: [],\r\n selectedOrgEntities: [],\r\n location: '',\r\n makeEntities: [],\r\n selectedMakeEntities: [],\r\n modelEntities: [],\r\n selectedModelEntities: [],\r\n fuelEntities: [],\r\n selectedFuelEntities: [],\r\n transmissionEntities: [],\r\n selectedTransmissionEntities: [],\r\n tractionEntities: [],\r\n selectedTractionEntities: [],\r\n statusEntities: [],\r\n selectedStatusEntities: [],\r\n selectedTab: 0,\r\n isLoading: false,\r\n isLoadingVehicles: false,\r\n count: 1,\r\n page: 0,\r\n pageSize: 10,\r\n vehicleImportDialogOpenend: false,\r\n vehicleImportOneCarDialogOpenend: false,\r\n isCarSoldDialogOpen: false,\r\n vehiclesCaseList: [],\r\n salesWokflowForm: null,\r\n paramList: [],\r\n isLoadingDialog: false,\r\n vin: ''\r\n } as IVehiclesState;\r\n\r\n public async componentDidMount() {\r\n const vehiclesFilters = {\r\n makeIds: [],\r\n modelIds: [],\r\n fuelTypeIds: [],\r\n transmissionIds: [],\r\n tractionIds: [],\r\n statusIds: [],\r\n organizationIds: [],\r\n page: this.state.page + 1,\r\n pageSize: this.state.pageSize,\r\n location: '',\r\n text: '',\r\n vehicleHistory: false,\r\n vin: ''\r\n } as VehicleFilters;\r\n\r\n this.setState({\r\n isLoading: true\r\n });\r\n\r\n const [vehicles] = await Promise.all([\r\n this.cbContext.vehicleService.GetVehicles(vehiclesFilters)\r\n ]);\r\n\r\n const [organizations] = await Promise.all([\r\n this.cbContext.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(vehicles.vehicles.map(({ vehicle }) => vehicle.organizationId)))\r\n )\r\n ]);\r\n const interfacePromises = [] as any[];\r\n vehicles.vehicles.forEach(({ vehicle }) => {\r\n if (vehicle.currentStatus.statusId == VehicleStatusCodeEnum.ForSale) {\r\n interfacePromises.push(this.cbContext.caseService.GetLastCaseByVehicleId(vehicle.id));\r\n }\r\n });\r\n\r\n const result = await Promise.all(interfacePromises);\r\n const cases: CaseByVehicleIdSearchResult[] = [];\r\n result.forEach((item) => {\r\n cases.push(item);\r\n });\r\n const refParam = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CompanyParameter\r\n );\r\n const [paramList] = await Promise.all([\r\n this.cbContext.referentialService.Get(refParam!.baseUrl)\r\n ]);\r\n\r\n vehicles.vehicles.forEach(({ vehicle }) => {\r\n const org = organizations.find((item) => item.id === vehicle.organizationId);\r\n vehicle.organization = isNullOrUndefined(org) ? null : org;\r\n const vehicleCase = _.find(cases, function (item) {\r\n return item && item.vehicleId == vehicle.id;\r\n });\r\n vehicle.case = isNullOrUndefined(vehicleCase) ? null : vehicleCase;\r\n if (vehicle.case) {\r\n vehicle.case.caseParameters.forEach((item) => {\r\n const param = paramList.find((p) => item.parameterId === p.id);\r\n item.parameter = R.isNil(param) ? null : param;\r\n });\r\n }\r\n });\r\n\r\n console.log('vehicles', vehicles);\r\n this.setState(\r\n {\r\n paramList: paramList,\r\n vehiclesList: vehicles,\r\n organizationEntities: organizations,\r\n count: vehicles.total,\r\n page: vehicles.page - 1\r\n },\r\n async () => {\r\n await this.reloadFilters();\r\n }\r\n );\r\n }\r\n\r\n isInternal = (): boolean | null => {\r\n if (this.state.selectedTab === 0) {\r\n return null;\r\n }\r\n if (this.state.selectedTab === 1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n loadVehicles = async (page: number, rowsPerPage: number) => {\r\n this.setState({\r\n isLoadingVehicles: true\r\n });\r\n\r\n const vehiclesFilters = {\r\n makeIds: this.state.selectedMakeEntities.map((item) => item.id),\r\n modelIds: this.state.selectedModelEntities.map((item) => item.id),\r\n fuelTypeIds: this.state.selectedFuelEntities.map((item) => item.id),\r\n transmissionIds: this.state.selectedTransmissionEntities.map((item) => item.id),\r\n tractionIds: this.state.selectedTractionEntities.map((item) => item.id),\r\n statusIds: this.state.selectedStatusEntities.map((item) => item.id),\r\n organizationIds: this.state.selectedOrgEntities.map((item) => item.id),\r\n page: page + 1,\r\n pageSize: rowsPerPage,\r\n location: this.state.location,\r\n text: '',\r\n vehicleHistory: false,\r\n vin: this.state.vin\r\n } as VehicleFilters;\r\n\r\n const vehicleList = await this.cbContext.vehicleService.GetVehicles(vehiclesFilters);\r\n const [organizations] = await Promise.all([\r\n this.cbContext.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(vehicleList.vehicles.map(({ vehicle }) => vehicle.organizationId)))\r\n )\r\n ]);\r\n const interfacePromises = [] as any[];\r\n vehicleList.vehicles.forEach(({ vehicle }) => {\r\n if (vehicle.currentStatus.statusId == VehicleStatusCodeEnum.ForSale) {\r\n interfacePromises.push(this.cbContext.caseService.GetLastCaseByVehicleId(vehicle.id));\r\n }\r\n });\r\n\r\n const result = await Promise.all(interfacePromises);\r\n const cases: CaseByVehicleIdSearchResult[] = [];\r\n result.forEach((item) => {\r\n cases.push(item);\r\n });\r\n\r\n vehicleList.vehicles.forEach(({ vehicle }) => {\r\n const org = organizations.find((item) => item.id === vehicle.organizationId);\r\n vehicle.organization = isNullOrUndefined(org) ? null : org;\r\n const vehicleCase = _.find(cases, function (item) {\r\n return item && item.vehicleId == vehicle.id;\r\n });\r\n vehicle.case = isNullOrUndefined(vehicleCase) ? null : vehicleCase;\r\n if (vehicle.case) {\r\n vehicle.case.caseParameters.forEach((item) => {\r\n const param = this.state.paramList.find((p) => item.parameterId === p.id);\r\n item.parameter = R.isNil(param) ? null : param;\r\n });\r\n }\r\n });\r\n\r\n console.log('vehicleList', vehicleList);\r\n\r\n this.setState({\r\n vehiclesList: vehicleList,\r\n organizationEntities: organizations,\r\n page: vehicleList.page - 1,\r\n pageSize: rowsPerPage,\r\n count: vehicleList.total,\r\n isLoadingVehicles: false\r\n });\r\n };\r\n\r\n reloadFilters = async () => {\r\n const vehicleHistory = false;\r\n const filters = await this.cbContext.vehicleService.GetVehiclesFilters(vehicleHistory);\r\n\r\n const [organizations] = await Promise.all([\r\n this.cbContext.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(filters.organizationIds))\r\n )\r\n ]);\r\n\r\n this.setState({\r\n organizationEntities: organizations,\r\n makeEntities: filters.makeList,\r\n modelEntities: filters.modelList,\r\n fuelEntities: filters.fuelTypes,\r\n transmissionEntities: filters.transmissionTypes,\r\n tractionEntities: filters.tractionTypes,\r\n statusEntities: filters.vehicleStatuses,\r\n isLoading: false\r\n });\r\n };\r\n\r\n onClick = (id: number) => {\r\n this.props.history.push('/vehicle/' + id + '/history');\r\n };\r\n\r\n closeCarSoldDialogOnSaveButton = async () => {\r\n this.props.caseSettingsState.case = null;\r\n this.props.caseSettingsState.caseSettings = null;\r\n this.props.vehicleState.vehicle = null;\r\n this.setState(\r\n {\r\n isCarSoldDialogOpen: false,\r\n salesWokflowForm: null\r\n },\r\n async () => await this.loadVehicles(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState({\r\n isCarSoldDialogOpen: false,\r\n salesWokflowForm: null\r\n });\r\n this.props.caseSettingsState.case = null;\r\n this.props.caseSettingsState.caseSettings = null;\r\n this.props.vehicleState.vehicle = null;\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'vehicle.id',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_ID', 'ID'),\r\n options: {\r\n sort: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'vehicle.organization.displayName',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_ORGANIZATION',\r\n 'Organizatie'\r\n )\r\n },\r\n {\r\n name: 'vehicle.vin',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_VIN', 'VIN')\r\n },\r\n {\r\n name: 'vehicle.make.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MAKE', 'Marca'),\r\n options: {\r\n display: 'excluded',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'vehicle.model.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MODEL', 'Model'),\r\n options: {\r\n display: 'excluded',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'vehicle.version',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_VERSION',\r\n 'Marca Model Versiune'\r\n ),\r\n options: {\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const vehicleExtension = this.state.vehiclesList.vehicles.find(\r\n ({ vehicle }) => vehicle.id === tableMeta.rowData[0]\r\n );\r\n\r\n return (\r\n
\r\n \r\n {vehicleExtension?.vehicle?.make?.displayName}{' '}\r\n \r\n \r\n {vehicleExtension?.vehicle?.model?.displayName}{' '}\r\n \r\n {value} \r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'vehicle.firstRegistrationDate',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_FIRST_REGISTRATION_DATE',\r\n 'Data primei inmatriculari'\r\n ),\r\n options: {\r\n customBodyRender: (value: any) => {\r\n return (\r\n \r\n \r\n
\r\n {moment\r\n .utc(value)\r\n .local()\r\n .format(this.props.appState.dateFormat)}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'addedInStockDate',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_ADDED_IN_STOCK_DATE',\r\n 'Data intrare stoc'\r\n ),\r\n options: {\r\n customBodyRender: (value: any) => {\r\n return (\r\n \r\n \r\n
\r\n {value\r\n ? moment\r\n .utc(value)\r\n .local()\r\n .format(this.props.appState.dateFormat)\r\n : null}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'vehicle.makeDate',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_YEAR_OF_FABRICATION',\r\n 'An'\r\n ),\r\n options: {\r\n customBodyRender: (value: any) => {\r\n return (\r\n \r\n \r\n
{value ? new Date(value).getFullYear() : null}
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'vehicle.kilometersNr',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_NR_OF_KM', 'KM')\r\n },\r\n {\r\n name: 'vehicle.currentStatus.status.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_STATUS', 'Status')\r\n },\r\n {\r\n name: 'vehicle',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_PURCHASE_EUR_PRICE',\r\n 'Pret Achizitie EUR cu TVA'\r\n ),\r\n options: {\r\n customBodyRender: (value: any) => {\r\n return value.purchaseVatRate === 0 ? (\r\n <>\r\n {value.purchasePrice}\r\n
\r\n {this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_WITHOUT_VAT',\r\n 'Achizitionat cu TVA=0'\r\n )}\r\n
\r\n \r\n ) : (\r\n value.purchasePrice\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: '',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'ORGANIZATION_FORM_EDIT_ACTIONS_TAB',\r\n 'Actiuni'\r\n ),\r\n options: {\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n const vehicleExtension = this.state.vehiclesList.vehicles.find(\r\n ({ vehicle }) => vehicle.id === tableMeta.rowData[0]\r\n );\r\n\r\n const buttonsToBeRendered = [];\r\n\r\n if (vehicleExtension?.vehicle.currentStatus.statusId == VehicleStatusCodeEnum.ForSale) {\r\n buttonsToBeRendered.push(\r\n
\r\n {\r\n console.log(vehicleExtension?.vehicle.case);\r\n if (vehicleExtension) {\r\n this.setState({\r\n isLoadingDialog: true,\r\n isCarSoldDialogOpen: true\r\n });\r\n const [workflow] = await Promise.all([\r\n this.cbContext.workflowService.GetWorkflowSettingsForVehiclesTab(\r\n vehicleExtension.vehicle.case!.workflowId\r\n )\r\n ]);\r\n const salesForm = this.getForms(workflow, FormCode.CASE_SALE_OFFER);\r\n this.props.caseSettingsState.caseSettings = {\r\n workflow: { ...workflow }\r\n } as CaseSettings;\r\n this.props.caseSettingsState.case = vehicleExtension.vehicle\r\n .case as any as Case;\r\n this.props.vehicleState.vehicle = vehicleExtension.vehicle;\r\n this.setState({\r\n salesWokflowForm: salesForm,\r\n isLoadingDialog: false\r\n });\r\n }\r\n }}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_LIST_SALES_CAR',\r\n 'Masina Vanduta'\r\n )}\r\n \r\n
\r\n );\r\n }\r\n if (vehicleExtension?.vehicle.isImported && this.props.appState?.appUser?.userRole?.code === 'MAVO_ADMIN') {\r\n buttonsToBeRendered.push(\r\n
\r\n {\r\n const body = {\r\n ConnectId: vehicleExtension?.vehicle.id,\r\n PlateNumber: vehicleExtension?.vehicle.plateNumber,\r\n Vin: vehicleExtension?.vehicle.vin,\r\n RcrEmployeeMail: vehicleExtension?.vehicle.rcrEmployeeEmail,\r\n RcrEmployeePhone: vehicleExtension?.vehicle.rcrEmployeePhone\r\n } as SimpleVehicleCarfix;\r\n\r\n const isPlateNumberValid = Utils.validatePlateNumber(body.PlateNumber);\r\n\r\n if(!isPlateNumberValid){\r\n this.props.enqueueSnackbar(\r\n this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_SEND_TO_CARFIX_INVALID_PLATE_NUMBER',\r\n 'Numar de inmatriculare incorect'\r\n ),\r\n {\r\n variant: 'error',\r\n autoHideDuration: 3000\r\n }\r\n );\r\n\r\n return;\r\n }\r\n\r\n try {\r\n const response = await this.cbContext.vehicleService.SendVehicleToCarfix(\r\n body\r\n );\r\n\r\n if (response.success) {\r\n this.props.enqueueSnackbar(\r\n this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_SEND_TO_CARFIX_SUCCESS',\r\n 'Vehicle successfully sent to Carfix'\r\n ),\r\n {\r\n variant: 'success',\r\n autoHideDuration: 6000\r\n }\r\n );\r\n } else {\r\n this.props.enqueueSnackbar(\r\n this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_SEND_TO_CARFIX_ERROR',\r\n 'There was an unexpected error while sending the vehicle to Carfix'\r\n ),\r\n {\r\n variant: 'error',\r\n autoHideDuration: 6000\r\n }\r\n );\r\n }\r\n } catch (error) {\r\n this.props.enqueueSnackbar(\r\n this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_SEND_TO_CARFIX_UNEXPECTED_ERROR',\r\n 'There was an unexpected error while sending the vehicle'\r\n ),\r\n {\r\n variant: 'error',\r\n autoHideDuration: 6000\r\n }\r\n );\r\n }\r\n }}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_LIST_SEND_TO_CARFIX_BUTTON',\r\n 'Send to Carfix'\r\n )}\r\n \r\n
\r\n );\r\n }\r\n\r\n return buttonsToBeRendered.length > 0 ? buttonsToBeRendered : '';\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n getForms = (workflow: Workflow, code: string): WorkflowSectionStepForm | null => {\r\n let form = null;\r\n const sections = workflow\r\n .workflowSections!.filter((item) => item.isActive)\r\n .sort(this.sortFunction);\r\n // console.log('sections', sections);\r\n for (const section of sections) {\r\n const steps = section.workflowSectionSteps\r\n .filter((item) => item.isActive)\r\n .sort(this.sortFunction);\r\n // console.log('steps', steps);\r\n for (const step of steps) {\r\n const forms = step.workflowSectionStepForms\r\n .filter((item) => item.isActive)\r\n .sort(this.sortFunction);\r\n // console.log('forms', forms);\r\n const formIndex = forms.findIndex((item) => item.form.code === code);\r\n if (formIndex !== -1) {\r\n form = forms[formIndex];\r\n }\r\n }\r\n }\r\n return form;\r\n };\r\n\r\n sortFunction = (a: any, b: any) => {\r\n return a.order - b.order;\r\n };\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState(\r\n {\r\n selectedTab: newValue,\r\n page: 0\r\n },\r\n async () => await this.loadVehicles(0, this.state.pageSize)\r\n );\r\n };\r\n handleOrgEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedOrgEntities: newValue\r\n },\r\n async () => await this.loadVehicles(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleMakeEntitiesChange = (newValue: any[]) => {\r\n const selectedModels = [...this.state.selectedModelEntities];\r\n const selectedMakeIds = newValue.map(({ id }) => id);\r\n\r\n const models = selectedModels.filter(({ dependencyId }) =>\r\n selectedMakeIds.includes(dependencyId)\r\n );\r\n\r\n this.setState(\r\n {\r\n selectedMakeEntities: newValue,\r\n selectedModelEntities: models\r\n },\r\n async () => await this.loadVehicles(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleModelEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedModelEntities: newValue\r\n },\r\n async () => await this.loadVehicles(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleFuelEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedFuelEntities: newValue\r\n },\r\n async () => await this.loadVehicles(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleTransmissionEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedTransmissionEntities: newValue\r\n },\r\n async () => await this.loadVehicles(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleTractionEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedTractionEntities: newValue\r\n },\r\n async () => await this.loadVehicles(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleStatusEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedStatusEntities: newValue\r\n },\r\n async () => await this.loadVehicles(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleImportDialogOpen = (attributeName: 'vehicleImportOneCarDialogOpenend' | 'vehicleImportDialogOpenend') => {\r\n this.setState(prevState => ({\r\n ...prevState,\r\n [attributeName]: true\r\n }))\r\n };\r\n\r\n handleImportDialogClose = (attributeName: 'vehicleImportOneCarDialogOpenend' | 'vehicleImportDialogOpenend') => {\r\n this.setState(prevState => ({\r\n ...prevState,\r\n [attributeName]: false\r\n }))\r\n };\r\n\r\n renderVehicleImport() {\r\n return (\r\n
\r\n {/*
\r\n this.handleImportDialogOpen('vehicleImportDialogOpenend')}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_IMPORT_VEHICLES',\r\n 'Importa Vehicule'\r\n )}\r\n \r\n
*/}\r\n {this.props.appState.appUser?.userRole?.code === 'MAVO_ADMIN' ?
\r\n this.handleImportDialogOpen('vehicleImportOneCarDialogOpenend')}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_IMPORT_MANUAL',\r\n 'Importa Vehicul Manual'\r\n )}\r\n \r\n
: ''}\r\n
\r\n this.handleImportDialogClose('vehicleImportDialogOpenend')}\r\n translatorService={this.cbContext.translatorService}\r\n vehicleService={this.cbContext.vehicleService}\r\n enqueueSnackbar={this.props.enqueueSnackbar}\r\n />\r\n
\r\n
\r\n this.handleImportDialogClose('vehicleImportOneCarDialogOpenend')}\r\n translatorService={this.cbContext.translatorService}\r\n vehicleService={this.cbContext.vehicleService}\r\n enqueueSnackbar={this.props.enqueueSnackbar}\r\n language={this.props.appState.language}\r\n dateFormat={this.props.appState.dateFormat}\r\n />\r\n
\r\n
\r\n );\r\n }\r\n\r\n renderFilters = () => {\r\n const selectedMakes = this.state.selectedMakeEntities;\r\n let models = this.state.modelEntities;\r\n\r\n if (selectedMakes.length) {\r\n const makeIds = selectedMakes.map(({ id }) => id);\r\n models = this.state.modelEntities.filter(({ dependencyId }) => {\r\n return makeIds.includes(dependencyId!);\r\n });\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n this.handleOrgEntitiesChange(newValue)}\r\n getOptionLabel={(option: Organization) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n {\r\n this.setState({\r\n location: e.target.value\r\n });\r\n }}\r\n onBlur={() => this.loadVehicles(this.state.page, this.state.pageSize)}\r\n validators={['required']}\r\n label={this.cbContext.translatorService.Tranlate(\r\n 'ORDERS_LOCATION_LABEL',\r\n 'Locatie'\r\n )}\r\n />\r\n\r\n this.handleMakeEntitiesChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleModelEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n {\r\n this.setState({\r\n vin: e.target.value\r\n });\r\n }}\r\n onBlur={() => this.loadVehicles(this.state.page, this.state.pageSize)}\r\n validators={['required']}\r\n label={this.cbContext.translatorService.Tranlate('CALCULATION_DETAILS_VIN', 'Vin')}\r\n />\r\n \r\n\r\n \r\n this.handleFuelEntitiesChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleTransmissionEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleTractionEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleStatusEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n {this.state.isCarSoldDialogOpen ? (\r\n \r\n \r\n \r\n \r\n \r\n {this.cbContext.translatorService.Tranlate(\r\n 'CASE_OTHER_SERVICE_FORM_SELLING_OFFER_DIALOG',\r\n 'Pret Vanzare'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {this.state.salesWokflowForm && !this.state.isLoadingDialog ? (\r\n \r\n ) : (\r\n ''\r\n )}\r\n
\r\n \r\n ) : (\r\n ''\r\n )}\r\n
\r\n );\r\n };\r\n\r\n onCellClick = (\r\n colData: any,\r\n cellMeta: { colIndex: number; rowIndex: number; dataIndex: number }\r\n ) => {\r\n if (cellMeta.colIndex === 12) {\r\n return;\r\n }\r\n this.onClick(this.state.vehiclesList.vehicles[cellMeta.dataIndex].vehicle.id);\r\n };\r\n\r\n tableOptions = () => {\r\n return {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.cbContext.translatorService),\r\n elevation: 0,\r\n serverSide: true,\r\n count: this.state.count,\r\n rowsPerPage: this.state.pageSize,\r\n page: this.state.page,\r\n onCellClick: this.onCellClick,\r\n onTableChange: async (action: any, tableState: any) => {\r\n switch (action) {\r\n case 'changePage':\r\n await this.loadVehicles(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'changeRowsPerPage':\r\n await this.loadVehicles(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'sort':\r\n break;\r\n default:\r\n }\r\n }\r\n };\r\n };\r\n\r\n public render() {\r\n this.cbContext = this.context as AppContext;\r\n\r\n if (this.state.isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n
\r\n {this.renderVehicleImport()}\r\n {this.props.appState?.appUser?.userRole?.code === 'MAVO_ADMIN' ?\r\n \r\n : null}\r\n
\r\n {this.renderFilters()}\r\n {this.state.isLoadingVehicles ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n caseSettingsState: state.caseSettings,\r\n vehicleState: state.vehicle\r\n }),\r\n null\r\n)(withSnackbar(Vehicles as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n VehicleState\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { Case } from '../../interfaces/Case';\r\nimport moment from 'moment';\r\nimport { Vehicle } from '../../interfaces/Vehicle';\r\nimport { Link } from 'react-router-dom';\r\nimport * as R from 'ramda';\r\n\r\ninterface IVehicleCaseFormState {\r\n isLoading: boolean;\r\n hasRights: boolean;\r\n executing: boolean;\r\n isUserHidden: boolean;\r\n vehicle: Vehicle | null;\r\n vehicleCaseList: Case[];\r\n}\r\n\r\nexport interface ExternalVehicleCaseFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n vehicleDetails: Vehicle;\r\n}\r\n\r\ntype IVehicleCaseFormProps = ExternalVehicleCaseFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n} & AppState &\r\n typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass VehicleCaseForm extends React.PureComponent {\r\n private cbContext!: AppContext;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: true,\r\n hasRights: false,\r\n executing: false,\r\n isUserHidden: false,\r\n vehicle: null,\r\n vehicleCaseList: []\r\n } as IVehicleCaseFormState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadVehicleCaseForm();\r\n }\r\n );\r\n }\r\n\r\n loadVehicleCaseForm = async () => {\r\n const vehicleId = this.props.vehicleState.vehicle!.id;\r\n const [vehicleCase, workflows, vehicle] = await Promise.all([\r\n this.cbContext.caseService.SearchByVehicle(vehicleId),\r\n this.cbContext.workflowService.GetUserWorkflows(),\r\n this.cbContext.vehicleService.GetVehicle(vehicleId)\r\n ]);\r\n\r\n const vehicleCaseDetailsList = vehicleCase;\r\n\r\n const [usersAssignedList, users] = await Promise.all([\r\n this.cbContext.appUserService.GetUsersInfo(\r\n Array.from(new Set(vehicleCase.map((item) => item.caseStatus.assignedToId)))\r\n ),\r\n this.cbContext.appUserService.GetUsersInfo(\r\n Array.from(new Set(vehicleCase.map((item) => item.createdBy)))\r\n )\r\n ]);\r\n\r\n vehicleCaseDetailsList.forEach((cd) => {\r\n const workflow = workflows.find((item) => item.id === cd.caseWorkflow.workflowId);\r\n const userAssignedTo = usersAssignedList.find(\r\n (item) => item.id === cd.caseStatus.assignedToId\r\n );\r\n const createdBy = users.find((item) => item.id === cd.createdBy);\r\n\r\n cd.caseWorkflow.workflowDisplayName = R.isNil(workflow) ? '' : workflow.displayName;\r\n cd.caseStatus.assignedTo = R.isNil(userAssignedTo) ? null : userAssignedTo;\r\n cd.createdByUser = R.isNil(createdBy) ? null : createdBy;\r\n });\r\n\r\n this.setState({\r\n isLoading: false,\r\n vehicle: vehicle,\r\n vehicleCaseList: vehicleCaseDetailsList\r\n });\r\n };\r\n\r\n public render() {\r\n this.cbContext = this.context as AppContext;\r\n\r\n return (\r\n
\r\n {this.state.vehicleCaseList.map((item, index) => {\r\n const casesUrl = `/cases/${item.id}`;\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n {item.id}:\r\n
\r\n
\r\n {item.caseWorkflow.workflowDisplayName}\r\n
\r\n
\r\n
\r\n
\r\n {this.cbContext.translatorService.Tranlate(\r\n 'VEHICLE_CASE_CREATED_BY_LABEL',\r\n 'Creat de'\r\n )}\r\n :\r\n
\r\n
\r\n {item.createdByUser!.userName + ' '}{' '}\r\n {moment\r\n .utc(item.dateCreation)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n
\r\n
\r\n
\r\n
\r\n {this.cbContext.translatorService.Tranlate(\r\n 'VEHICLE_CASE_ASSIGNED_TO_LABEL',\r\n 'Asignat la'\r\n )}\r\n :\r\n
\r\n
\r\n {item.caseStatus.assignedTo!.userName + ' '}{' '}\r\n {moment\r\n .utc(item.caseStatus.date)\r\n .local()\r\n .format(this.props.appState.longDateFormat)}\r\n
\r\n
\r\n
\r\n
\r\n {this.cbContext.translatorService.Tranlate('VEHICLE_CASE_STATE_LABEL', 'Stare')}\r\n :\r\n
\r\n
\r\n {this.state.vehicle!.currentStatus\r\n ? this.state.vehicle!.currentStatus.status!.displayName\r\n : ''}\r\n
\r\n
\r\n
\r\n \r\n );\r\n })}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState, ownProps: ExternalVehicleCaseFormProps) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicelState: state.vehicle\r\n }),\r\n CaseSettingsActionCreators\r\n)(withSnackbar(VehicleCaseForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n VehicleState\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport {\r\n Vehicle,\r\n VehicleStatusHistory,\r\n VehicleStatusHistoryExtended\r\n} from '../../interfaces/Vehicle';\r\nimport * as R from 'ramda';\r\nimport { VehicleUpdateHistory } from '../../interfaces/VehicleUpdateHistory';\r\n\r\ninterface IVehicleHistoryTimelineState {\r\n isLoading: boolean;\r\n hasRights: boolean;\r\n executing: boolean;\r\n isUserHidden: boolean;\r\n vehicleStatusHistory: VehicleStatusHistoryExtended[];\r\n}\r\n\r\nexport interface ExternalVehicleHistoryTimelineProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n vehicleDetails: Vehicle;\r\n}\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\ntype IVehicleHistoryTimelineProps = ExternalVehicleHistoryTimelineProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n} & AppState &\r\n typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass VehicleHistoryTimeline extends React.PureComponent<\r\n IVehicleHistoryTimelineProps,\r\n IVehicleHistoryTimelineState\r\n> {\r\n private vehicleService!: IVehicleService;\r\n private appUserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: true,\r\n hasRights: false,\r\n executing: false,\r\n isUserHidden: false,\r\n vehicleStatusHistory: []\r\n } as IVehicleHistoryTimelineState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadVehicleHistoryTimeline();\r\n }\r\n );\r\n }\r\n\r\n loadVehicleHistoryTimeline = async () => {\r\n const vehicleId = this.props.vehicleState.vehicle!.id;\r\n const [vehicleStatusHistory, vehicleFieldsUpdateHistory] = await Promise.all([\r\n this.vehicleService.GetVehicleStatuses(vehicleId),\r\n this.vehicleService.GetVehicleFieldsHistory(vehicleId)\r\n ]);\r\n\r\n const vehicleStatusHistoryDetailedList: VehicleStatusHistoryExtended[] = vehicleStatusHistory;\r\n\r\n const [users] = await Promise.all([\r\n this.appUserService.GetUsersInfo(\r\n Array.from(\r\n new Set([\r\n ...vehicleStatusHistory.map((item) => item.userId),\r\n ...vehicleFieldsUpdateHistory.map((item) => item.userId)\r\n ])\r\n )\r\n )\r\n ]);\r\n\r\n vehicleStatusHistoryDetailedList.forEach((cd) => {\r\n const vehicleUpdateHistory = vehicleFieldsUpdateHistory.filter(\r\n (item) => item.vehicleStatusHistoryId === cd.id\r\n );\r\n if (vehicleUpdateHistory.length) {\r\n vehicleUpdateHistory.forEach((item) => {\r\n item.user = users.find((u) => u.id === item.userId);\r\n });\r\n }\r\n const createdBy = users.find((item) => item.id === cd.userId);\r\n cd.user = R.isNil(createdBy) ? null : createdBy;\r\n cd.vehicleUpdateHistory = vehicleUpdateHistory || undefined;\r\n });\r\n\r\n this.setState({\r\n isLoading: false,\r\n vehicleStatusHistory: vehicleStatusHistoryDetailedList\r\n });\r\n };\r\n\r\n showVehicleStatusHistoryTimeline = () => {\r\n return this.state.vehicleStatusHistory.map((status, index) => (\r\n
\r\n
\r\n
\r\n

{status.status!.displayName}

\r\n

{status.comment}

\r\n

\r\n {moment.utc(status.date).local().format(this.props.appState.longDateFormat)}{' '}\r\n {' (' + status.user!.email + ')'}\r\n

\r\n {status.vehicleUpdateHistory ? (\r\n
\r\n
\r\n {this.renderFieldsUpdateHistory(status.vehicleUpdateHistory)}\r\n
\r\n
\r\n ) : undefined}\r\n
\r\n
\r\n ));\r\n };\r\n\r\n renderFieldsUpdateHistory(vehicleUpdateHistory: VehicleUpdateHistory[]) {\r\n return vehicleUpdateHistory.map((vehicleUpdate) => {\r\n return vehicleUpdate.vehicleUpdateHistoryFields.map((item, index) => (\r\n
\r\n
\r\n
\r\n

\r\n {moment.utc(vehicleUpdate.date).local().format(this.props.appState.longDateFormat) +\r\n ' (' +\r\n vehicleUpdate.user?.userName +\r\n ')'}{' '}\r\n

\r\n

\r\n {item.vehicleFieldNameLocalized}: \r\n

\r\n {item.oldValueLocalized && item.oldValueLocalized.length < 60 ? (\r\n
\r\n {item.oldValueLocalized}\r\n  {'->'} \r\n {item.newValueLocalized}\r\n
\r\n ) : (\r\n
\r\n
\r\n {item.oldValueLocalized}\r\n
\r\n
 {'->'} 
\r\n
\r\n {item.newValueLocalized}\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n ));\r\n });\r\n }\r\n\r\n public render() {\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n return (\r\n
\r\n
\r\n {this.showVehicleStatusHistoryTimeline()}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalVehicleHistoryTimelineProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicelState: state.vehicle\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(VehicleHistoryTimeline as any));\r\n","import {\r\n Box,\r\n Button,\r\n Dialog,\r\n DialogContent,\r\n DialogTitle,\r\n Grid,\r\n IconButton,\r\n Typography\r\n} from '@material-ui/core';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { CaseAttachment, CaseAttachments } from '../../interfaces/Case';\r\nimport VisibilityIcon from '@material-ui/icons/Visibility';\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-ignore\r\nimport FileViewer from 'react-file-viewer';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport FileSaver from 'file-saver';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\n\r\ninterface Props {\r\n vehicleId: number;\r\n vehicleService: IVehicleService;\r\n caseService: ICaseService;\r\n organizationService: IOrganizationService;\r\n translatorService: ITranslatorService;\r\n}\r\n\r\ninterface PreviewFile {\r\n url: string;\r\n extension: string;\r\n}\r\n\r\nexport const imageExtensions = ['png', 'jpeg', 'jpg', 'bmp'];\r\n\r\nconst VehicleAttachments: React.FC = ({\r\n vehicleService,\r\n caseService,\r\n vehicleId,\r\n translatorService,\r\n organizationService\r\n}) => {\r\n const [caseAttachments, setCaseAttachments] = useState([]);\r\n const [previewFile, setPreviewFile] = useState();\r\n const [isDialogOpen, setIsDialogOpen] = useState(false);\r\n\r\n const setVehicleAttachmens = async () => {\r\n const caseAttachments = await vehicleService.GetCaseAttachmentsForVehicle(vehicleId);\r\n\r\n for (const caseAttachment of caseAttachments) {\r\n if (!caseAttachment.organizationOwnerName) {\r\n caseAttachment.picturesExpanded = false;\r\n caseAttachment.documentsExpanded = false;\r\n const org = await organizationService.GetOrganization(caseAttachment.organizationOwnerId);\r\n if (org) {\r\n caseAttachment.organizationOwnerName = org.name;\r\n }\r\n }\r\n for (const attachment of caseAttachment.attachments)\r\n if (!attachment.url) {\r\n const blob = await getImage(attachment.fileName);\r\n attachment.url = URL.createObjectURL(blob);\r\n }\r\n }\r\n\r\n setCaseAttachments(caseAttachments);\r\n };\r\n\r\n const handlePreviewAttachment = async (originalFileName: string, fileName: string) => {\r\n const fileBlob = await getImage(fileName);\r\n const url = URL.createObjectURL(fileBlob);\r\n const extension = originalFileName.split('.').pop();\r\n\r\n if (!extension) {\r\n return;\r\n }\r\n\r\n setPreviewFile({\r\n url,\r\n extension\r\n });\r\n\r\n setIsDialogOpen(true);\r\n };\r\n\r\n const downloadFile = async (fileName: string, origFileName: string) => {\r\n const fileBlob = await getImage(fileName);\r\n FileSaver.saveAs(fileBlob, origFileName);\r\n };\r\n\r\n const renderPreviewAttachment = () => {\r\n return previewFile ? (\r\n \r\n ) : null;\r\n };\r\n\r\n const getImage = async (fileName: string) => {\r\n const fileBlob = await caseService.GetCaseAttachment(fileName);\r\n return fileBlob;\r\n };\r\n\r\n const expandPictures = (caseId: number) => {\r\n const newAttachments = [...caseAttachments];\r\n\r\n const index = newAttachments.findIndex((c) => c.caseId === caseId);\r\n if (index >= 0) {\r\n newAttachments[index].picturesExpanded = !newAttachments[index].picturesExpanded;\r\n }\r\n\r\n setCaseAttachments(newAttachments);\r\n };\r\n\r\n const expandDocuments = (caseId: number) => {\r\n const newAttachments = [...caseAttachments];\r\n\r\n const index = newAttachments.findIndex((c) => c.caseId === caseId);\r\n if (index >= 0) {\r\n newAttachments[index].documentsExpanded = !newAttachments[index].documentsExpanded;\r\n }\r\n\r\n setCaseAttachments(newAttachments);\r\n };\r\n\r\n useEffect(() => {\r\n setVehicleAttachmens();\r\n }, [vehicleId]);\r\n\r\n if (!caseAttachments.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {caseAttachments.map(\r\n (\r\n {\r\n attachments,\r\n caseId,\r\n organizationOwnerName,\r\n caseTypeDisplayName,\r\n picturesExpanded,\r\n documentsExpanded\r\n },\r\n index\r\n ) => {\r\n const pictureAttachments: CaseAttachment[] = [];\r\n const documentAttachments: CaseAttachment[] = [];\r\n\r\n for (const attachment of attachments) {\r\n const ext = attachment.fileName.split('.').pop();\r\n if (ext && imageExtensions.includes(ext)) {\r\n pictureAttachments.push(attachment);\r\n } else {\r\n documentAttachments.push(attachment);\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n \r\n {`${translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_ATTACHMENTS_CASE',\r\n 'Atasamente dosar'\r\n )} ${caseId} ${caseTypeDisplayName} ${organizationOwnerName}`}\r\n \r\n
\r\n\r\n {pictureAttachments.length ? (\r\n expandPictures(caseId)}\r\n >\r\n \r\n {picturesExpanded ? : }\r\n \r\n \r\n {translatorService.Tranlate('VEHICLES_VEHICLE_PICTURES', 'Fotografii')}\r\n \r\n
\r\n ) : null}\r\n {picturesExpanded && (\r\n \r\n {pictureAttachments.map((attachment) => {\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n {attachment.attachmentType?.displayName}\r\n
\r\n
\r\n \r\n
\r\n \r\n downloadFile(attachment.fileName, attachment.originalFileName)\r\n }\r\n >\r\n {attachment.originalFileName}\r\n {' '}\r\n
\r\n
\r\n \r\n
\r\n \r\n handlePreviewAttachment(\r\n attachment.originalFileName,\r\n attachment.fileName\r\n )\r\n }\r\n >\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n {\r\n
\r\n
\r\n \r\n
\r\n
\r\n }\r\n
\r\n
\r\n
\r\n \r\n );\r\n })}\r\n \r\n )}\r\n {documentAttachments.length ? (\r\n expandDocuments(caseId)}\r\n >\r\n \r\n {documentsExpanded ? : }\r\n \r\n \r\n {translatorService.Tranlate('VEHICLES_VEHICLE_DOCUMENTS', 'Documente')}\r\n \r\n
\r\n ) : null}\r\n {documentsExpanded && (\r\n \r\n {documentAttachments.map((attachment) => {\r\n return (\r\n \r\n
\r\n \r\n \r\n {attachment.attachmentType?.displayName}\r\n
\r\n \r\n
\r\n \r\n downloadFile(attachment.fileName, attachment.originalFileName)\r\n }\r\n >\r\n {attachment.originalFileName}\r\n {' '}\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n })}\r\n \r\n )}\r\n
\r\n );\r\n }\r\n )}\r\n \r\n setIsDialogOpen(false)}\r\n aria-labelledby=\"customized-dialog-title\"\r\n open={isDialogOpen}\r\n maxWidth=\"md\"\r\n fullWidth={true}\r\n fullScreen={false}\r\n classes={{ paper: 'dialogPaper' }}\r\n scroll=\"body\"\r\n >\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate('CASE_PREVIEW_DOC', 'Previzualizare document')}\r\n \r\n \r\n \r\n setIsDialogOpen(false)} size={'small'}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderPreviewAttachment()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default VehicleAttachments;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n VehicleActionCreators,\r\n VehicleState\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Button,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n Card,\r\n AppBar,\r\n Tabs,\r\n Tab\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { ReferentialCode, VehicleStatusCodeEnum } from '../../helpers/Constants';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { Vehicle, ChangeVehicleStatusRequest } from '../../interfaces/Vehicle';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport CaseDetailsCaseTabCarDetailsExtendedContainer from '../cases/vehicleDetails/CaseDetailsCaseTabCarDetailsExtendedContainer';\r\nimport VehicleCase from './VehicleCase';\r\nimport VehicleHistoryTimeline from './VehicleHistoryTimeline';\r\nimport * as R from 'ramda';\r\nimport { allowedVehicleStatuses } from '../../helpers/Constants';\r\nimport VehicleAttachments from './VehicleAttachments';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { CaseService } from '../../services/CaseService';\r\nimport { OrganizationService } from '../../services/OrganizationService';\r\n\r\ninterface IDetailsOfCarFormState {\r\n isLoading: boolean;\r\n hasRights: boolean;\r\n executing: boolean;\r\n isUserHidden: boolean;\r\n vehicle: Vehicle | null;\r\n selectedTab: number;\r\n statuses: IReferential[];\r\n statusOptions: IReferential[];\r\n selectedStatus: IReferential | null;\r\n selectedDisplayedStatus: string;\r\n isChangeVehicleStatusDialogOpen: boolean;\r\n}\r\n\r\nexport interface ExternalDetailsOfCarFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n vehicleDetails: Vehicle;\r\n}\r\n\r\ntype IDetailsOfCarFormProps = ExternalDetailsOfCarFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n} & typeof CaseSettingsActionCreators &\r\n typeof VehicleActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string, type?:string }>;\r\n\r\nclass DetailsOfCarForm extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n private caseService!: ICaseService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: true,\r\n hasRights: false,\r\n executing: false,\r\n isUserHidden: false,\r\n selectedTab: 0,\r\n statuses: [] as IReferential[],\r\n statusOptions: [],\r\n selectedStatus: null,\r\n isChangeVehicleStatusDialogOpen: false,\r\n vehicle: null,\r\n selectedDisplayedStatus: ''\r\n } as IDetailsOfCarFormState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadDetailsOfCarForm();\r\n }\r\n );\r\n }\r\n\r\n loadDetailsOfCarForm = async () => {\r\n const vehicleId = Number.parseInt(this.props.match.params.id);\r\n if (Number.isNaN(vehicleId)) {\r\n return;\r\n }\r\n\r\n await this.props.setVehicle(this.props.match.params.id as any);\r\n const vehicle = this.props.vehicleState.vehicle;\r\n const statusesTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.VehicleStatus\r\n );\r\n\r\n const statuses = await this.appReferentialService.Get(statusesTypeRef!.baseUrl);\r\n\r\n const currentStatus = !R.isNil(vehicle?.currentStatus)\r\n ? vehicle?.currentStatus.status || null\r\n : null;\r\n\r\n this.setState({\r\n isLoading: false,\r\n vehicle: vehicle,\r\n statuses: statuses,\r\n statusOptions: this.getStatusOptions(currentStatus, statuses),\r\n selectedStatus: currentStatus,\r\n selectedDisplayedStatus: !R.isNil(vehicle?.currentStatus?.status)\r\n ? vehicle?.currentStatus?.status?.displayName || ''\r\n : ''\r\n });\r\n };\r\n\r\n getStatusOptions = (status: IReferential | null, statuses: IReferential[]) => {\r\n let statusOptions = statuses;\r\n const currentStatusEnum = (status?.id as unknown as VehicleStatusCodeEnum) || null;\r\n\r\n if (currentStatusEnum && allowedVehicleStatuses.has(currentStatusEnum)) {\r\n const allowedStatuses = allowedVehicleStatuses.get(currentStatusEnum) || [];\r\n statusOptions = statuses.filter((status) => {\r\n const s = status.id as unknown as VehicleStatusCodeEnum;\r\n return allowedStatuses.includes(s);\r\n });\r\n }\r\n\r\n return statusOptions;\r\n };\r\n\r\n changeVehicleStatusSubmit = async () => {\r\n try {\r\n const newStatus = await this.vehicleService.ChangeVehicleStatus({\r\n vehicleId: this.props.vehicleState.vehicle?.id,\r\n statusId: this.state.selectedStatus?.id,\r\n comment: ''\r\n } as ChangeVehicleStatusRequest);\r\n\r\n newStatus.status = this.state.selectedStatus;\r\n this.props.changeVehicleStatus(newStatus);\r\n\r\n this.setState({\r\n selectedDisplayedStatus: this.state.selectedStatus?.displayName || '',\r\n statusOptions: this.getStatusOptions(this.state.selectedStatus, this.state.statuses)\r\n });\r\n\r\n this.closeDialog();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleAutocompleteVehicleStatusChange = (value: any | null) => {\r\n this.setState({\r\n selectedStatus: value\r\n });\r\n };\r\n\r\n renderChangeVehicleStatusForm = () => {\r\n return (\r\n {\r\n this.changeVehicleStatusSubmit();\r\n }}\r\n >\r\n
\r\n \r\n this.handleAutocompleteVehicleStatusChange(newValue)\r\n }\r\n getOptionLabel={(option: any) => option.displayName}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n \r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n \r\n );\r\n };\r\n\r\n changeVehicleStatusClick = () => {\r\n this.setState({ isChangeVehicleStatusDialogOpen: true });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState({ isChangeVehicleStatusDialogOpen: false });\r\n };\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState({\r\n selectedTab: newValue\r\n });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n
\r\n {this.state.selectedDisplayedStatus ? (\r\n this.changeVehicleStatusClick()}\r\n color=\"inherit\"\r\n className=\"text-white bg-success mr-2\"\r\n >\r\n {this.state.selectedDisplayedStatus}\r\n \r\n ) : undefined}\r\n
\r\n
\r\n {this.state.vehicle ? this.state.vehicle?.make?.displayName || '' : ''}\r\n  \r\n {this.state.vehicle ? this.state.vehicle?.model?.displayName || '' : ''}\r\n  \r\n {this.state.vehicle ? this.state.vehicle?.version || '' : ''}\r\n  \r\n {this.state.vehicle?.purchaseVatRate === 0 &&\r\n `(${this.translatorService.Tranlate(\r\n 'DETAILS_OF_CAR_NO_VAT',\r\n 'Vehicul achizitionat cu TVA 0'\r\n )})`}\r\n
\r\n
\r\n {\r\n this.props.history.push('/vehicles');\r\n }}\r\n >\r\n {this.translatorService.Tranlate(\r\n 'DETAILS_OF_CAR_CARS_STOCK_BUTTON',\r\n 'Stoc masini'\r\n )}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n // \"\"\r\n \r\n \r\n {this.state.vehicle?.id ? (\r\n \r\n ) : null}\r\n \r\n ) : null}\r\n
\r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'ORDER_DETAILS_DIALOG_TITLE',\r\n 'Modificare stare comanda'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderChangeVehicleStatusForm()}\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState, ownProps: ExternalDetailsOfCarFormProps) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle\r\n }),\r\n { ...CaseSettingsActionCreators, ...VehicleActionCreators }\r\n)(withSnackbar(DetailsOfCarForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { TextField, Tabs, Tab, AppBar, Button, Chip } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { OrganizationInterface } from '../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport MaterialTable, { Column, Icons } from 'material-table';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { forwardRef } from 'react';\r\nimport { isTemplateElement } from '@babel/types';\r\nimport moment from 'moment';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ninterface IOrganizationInterfacesState {\r\n interfaces: OrganizationInterface[];\r\n isLoading: boolean;\r\n organizationId: number;\r\n}\r\n\r\ntype OrganizationInterfacesProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass OrganizationInterfaces extends React.PureComponent<\r\n OrganizationInterfacesProps,\r\n IOrganizationInterfacesState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n interfaces: [],\r\n isLoading: true,\r\n organizationId: 0\r\n } as IOrganizationInterfacesState;\r\n\r\n componentDidMount = () => {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n () => {\r\n this.loadData();\r\n }\r\n );\r\n };\r\n\r\n loadData = async () => {\r\n const hoId = this.props.appState.appUser?.organizationId;\r\n\r\n if (!hoId) {\r\n return;\r\n }\r\n\r\n try {\r\n const data = await this.organizationService.GetInterfacesWithClientAccess(hoId);\r\n\r\n this.setState({\r\n interfaces: data,\r\n isLoading: false,\r\n organizationId: hoId\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleConnect = async (interfaceId: number, orgId: number) => {\r\n const url = await this.organizationService.GetInterfaceAuthorizeUrl(orgId, interfaceId);\r\n\r\n if (url) {\r\n window.open(url, '_blank');\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n return [\r\n {\r\n field: 'code',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_CODE_HEADER', 'Code'),\r\n searchable: true,\r\n editable: 'never'\r\n } as Column,\r\n {\r\n field: 'userName',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_UER_HEADER', 'Utilizator'),\r\n searchable: true,\r\n render: (props: OrganizationInterface) => {\r\n if (props.supportsOAuth2) {\r\n return '-';\r\n }\r\n\r\n return props.userName;\r\n },\r\n editComponent: (props: any) => {\r\n if (props.rowData.supportsOAuth2) {\r\n return <>;\r\n }\r\n return (\r\n props.onChange(e.target.value)}\r\n />\r\n );\r\n }\r\n },\r\n {\r\n field: 'password',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_PASSWORD_HEADER', 'Parola'),\r\n render: (props: OrganizationInterface) => {\r\n if (props.supportsOAuth2) {\r\n return '-';\r\n }\r\n return '***';\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n editComponent: (props: any) => {\r\n if (props.rowData.supportsOAuth2) {\r\n return <>;\r\n }\r\n return (\r\n props.onChange(e.target.value)}\r\n />\r\n );\r\n }\r\n },\r\n {\r\n field: 'customerId',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_INTERFACE_CLIENTID_HEADER',\r\n 'Id Client'\r\n ),\r\n render: (props: OrganizationInterface) => {\r\n if (!props.supportsOAuth2) {\r\n return '-';\r\n }\r\n return '***';\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n editComponent: (props: any) => {\r\n if (!props.rowData.supportsOAuth2) {\r\n return <>;\r\n }\r\n return (\r\n props.onChange(e.target.value)}\r\n />\r\n );\r\n }\r\n },\r\n {\r\n field: 'clientSecret',\r\n title: this.translatorService.Tranlate(\r\n 'ORGANIZATION_INTERFACE_CLIENTSECRET_HEADER',\r\n 'Secret Client'\r\n ),\r\n render: (props: OrganizationInterface) => {\r\n if (!props.supportsOAuth2) {\r\n return '-';\r\n }\r\n return '***';\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n editComponent: (props: any) => {\r\n if (!props.rowData.supportsOAuth2) {\r\n return <>;\r\n }\r\n return (\r\n props.onChange(e.target.value)}\r\n />\r\n );\r\n }\r\n },\r\n {\r\n field: 'refreshTokenValidUntil',\r\n title: this.translatorService.Tranlate('ORGANIZATION_INTERFACE_STATUS_HEADER', 'Status'),\r\n editable: 'never',\r\n render: (rowData: OrganizationInterface) => {\r\n if (!rowData.supportsOAuth2) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (!rowData.refreshTokenValidUntil) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (\r\n rowData.refreshTokenValidUntil &&\r\n moment.utc(rowData.refreshTokenValidUntil).isAfter(moment.utc())\r\n ) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n editComponent: (props: any) => {\r\n if (!props.rowData.supportsOAuth2) {\r\n return <>;\r\n }\r\n return (\r\n props.onChange(e.target.value)}\r\n />\r\n );\r\n }\r\n } as Column,\r\n {\r\n field: ' ',\r\n title: ' ',\r\n render: (rowData: OrganizationInterface) => {\r\n if (rowData.supportsOAuth2) {\r\n return (\r\n this.handleConnect(rowData.id, rowData.organizationId)}\r\n >\r\n {this.translatorService.Tranlate(\r\n 'ORGANIZATION_INTERFACE_CONNECT_HEADER',\r\n 'Conecteaza'\r\n )}\r\n \r\n );\r\n }\r\n },\r\n editComponent: () => {\r\n return <>;\r\n }\r\n }\r\n ];\r\n };\r\n\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n deleteTooltip: this.translatorService.Tranlate('DELETE', 'Sterge'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza'),\r\n deleteText: this.translatorService.Tranlate(\r\n 'DELETE_TEXT',\r\n 'Sigur doriti sa stergeti aceasta inregistrare?'\r\n )\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n\r\n onRowUpdate = (newData: OrganizationInterface, oldData?: OrganizationInterface): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (oldData) {\r\n try {\r\n await this.organizationService.SetInterfaceCredentials({\r\n orgId: this.state.organizationId,\r\n interfaceId: newData.id,\r\n userName: !newData.supportsOAuth2 ? newData.userName : undefined,\r\n password: !newData.supportsOAuth2 ? newData.password : undefined,\r\n clientId: newData.supportsOAuth2 ? newData.customerId : undefined,\r\n clientSecret: newData.supportsOAuth2 ? newData.clientSecret : undefined\r\n });\r\n await this.loadData();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n resolve();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n return (\r\n this.onRowUpdate(newData, oldData)\r\n }}\r\n />\r\n );\r\n };\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {!this.state.isLoading ? this.renderTable() : null}\r\n \r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: OrganizationInterfacesProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(OrganizationInterfaces as any));\r\n","import * as React from 'react';\r\nimport { ApplicationState, AppState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Card, Grid, Tab, Tabs, AppBar, TextField } from '@material-ui/core';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { Organization } from '../../interfaces/Organization';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { VehicleExtensionList, VehicleFilters } from '../../interfaces/Vehicle';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport moment from 'moment';\r\nimport Loader from '../Loader';\r\nimport noop from 'lodash/noop';\r\n\r\ntype VehiclesHistoryProps = { appState: AppState } & ProviderContext & RouteComponentProps;\r\n\r\ninterface IVehiclesHistoryState {\r\n vehiclesList: VehicleExtensionList;\r\n organizationEntities: Organization[];\r\n selectedOrgEntities: Organization[];\r\n location: string;\r\n makeEntities: IReferential[];\r\n selectedMakeEntities: IReferential[];\r\n modelEntities: IReferential[];\r\n selectedModelEntities: IReferential[];\r\n fuelEntities: IReferential[];\r\n selectedFuelEntities: IReferential[];\r\n transmissionEntities: IReferential[];\r\n selectedTransmissionEntities: IReferential[];\r\n tractionEntities: IReferential[];\r\n selectedTractionEntities: IReferential[];\r\n statusEntities: IReferential[];\r\n selectedStatusEntities: IReferential[];\r\n selectedTab: number;\r\n isLoading: boolean;\r\n isLoadingVehicles: boolean;\r\n count: number;\r\n page: number;\r\n pageSize: number;\r\n vehicleImportDialogOpenend: boolean;\r\n vin: string;\r\n}\r\n\r\nclass VehiclesHistory extends React.PureComponent {\r\n private cbContext!: AppContext;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n vehiclesList: {} as VehicleExtensionList,\r\n organizationEntities: [],\r\n selectedOrgEntities: [],\r\n location: '',\r\n makeEntities: [],\r\n selectedMakeEntities: [],\r\n modelEntities: [],\r\n selectedModelEntities: [],\r\n fuelEntities: [],\r\n selectedFuelEntities: [],\r\n transmissionEntities: [],\r\n selectedTransmissionEntities: [],\r\n tractionEntities: [],\r\n selectedTractionEntities: [],\r\n statusEntities: [],\r\n selectedStatusEntities: [],\r\n selectedTab: 0,\r\n isLoading: false,\r\n isLoadingVehicles: false,\r\n count: 1,\r\n page: 0,\r\n pageSize: 10,\r\n vehicleImportDialogOpenend: false,\r\n vin: ''\r\n } as IVehiclesHistoryState;\r\n\r\n public async componentDidMount() {\r\n const vehiclesFilters = {\r\n makeIds: [],\r\n modelIds: [],\r\n fuelTypeIds: [],\r\n transmissionIds: [],\r\n tractionIds: [],\r\n statusIds: [],\r\n organizationIds: [],\r\n page: this.state.page + 1,\r\n pageSize: this.state.pageSize,\r\n location: '',\r\n text: '',\r\n vehicleHistory: true,\r\n vin: ''\r\n } as VehicleFilters;\r\n\r\n this.setState({\r\n isLoading: true\r\n });\r\n\r\n const [vehicles] = await Promise.all([\r\n this.cbContext.vehicleService.GetVehicles(vehiclesFilters)\r\n ]);\r\n\r\n const [organizations] = await Promise.all([\r\n this.cbContext.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(vehicles.vehicles.map(({ vehicle }) => vehicle.organizationId)))\r\n )\r\n ]);\r\n\r\n vehicles.vehicles.forEach(({ vehicle }) => {\r\n const org = organizations.find((item) => item.id === vehicle.organizationId);\r\n vehicle.organization = isNullOrUndefined(org) ? null : org;\r\n });\r\n\r\n this.setState(\r\n {\r\n vehiclesList: vehicles,\r\n organizationEntities: organizations,\r\n count: vehicles.total,\r\n page: vehicles.page - 1\r\n },\r\n async () => {\r\n await this.reloadFilters();\r\n }\r\n );\r\n }\r\n\r\n isInternal = (): boolean | null => {\r\n if (this.state.selectedTab === 0) {\r\n return null;\r\n }\r\n if (this.state.selectedTab === 1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n loadVehicles = async (page: number, rowsPerPage: number) => {\r\n this.setState({\r\n isLoadingVehicles: true\r\n });\r\n\r\n const vehiclesFilters = {\r\n makeIds: this.state.selectedMakeEntities.map((item) => item.id),\r\n modelIds: this.state.selectedModelEntities.map((item) => item.id),\r\n fuelTypeIds: this.state.selectedFuelEntities.map((item) => item.id),\r\n transmissionIds: this.state.selectedTransmissionEntities.map((item) => item.id),\r\n tractionIds: this.state.selectedTractionEntities.map((item) => item.id),\r\n statusIds: this.state.selectedStatusEntities.map((item) => item.id),\r\n organizationIds: this.state.selectedOrgEntities.map((item) => item.id),\r\n page: page + 1,\r\n pageSize: rowsPerPage,\r\n location: this.state.location,\r\n text: '',\r\n vehicleHistory: true,\r\n vin: this.state.vin\r\n } as VehicleFilters;\r\n\r\n const vehicleList = await this.cbContext.vehicleService.GetVehicles(vehiclesFilters);\r\n const [organizations] = await Promise.all([\r\n this.cbContext.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(vehicleList.vehicles.map(({ vehicle }) => vehicle.organizationId)))\r\n )\r\n ]);\r\n\r\n vehicleList.vehicles.forEach(({ vehicle }) => {\r\n const org = organizations.find((item) => item.id === vehicle.organizationId);\r\n vehicle.organization = isNullOrUndefined(org) ? null : org;\r\n });\r\n\r\n this.setState({\r\n vehiclesList: vehicleList,\r\n organizationEntities: organizations,\r\n page: vehicleList.page - 1,\r\n pageSize: rowsPerPage,\r\n count: vehicleList.total,\r\n isLoadingVehicles: false\r\n });\r\n };\r\n\r\n reloadFilters = async () => {\r\n const vehicleHistory = true;\r\n const filters = await this.cbContext.vehicleService.GetVehiclesFilters(vehicleHistory);\r\n\r\n const [organizations] = await Promise.all([\r\n this.cbContext.organizationService.GetUserOrganizationsByIds(\r\n Array.from(new Set(filters.organizationIds))\r\n )\r\n ]);\r\n\r\n this.setState({\r\n organizationEntities: organizations,\r\n makeEntities: filters.makeList,\r\n modelEntities: filters.modelList,\r\n fuelEntities: filters.fuelTypes,\r\n transmissionEntities: filters.transmissionTypes,\r\n tractionEntities: filters.tractionTypes,\r\n statusEntities: filters.vehicleStatuses,\r\n isLoading: false\r\n });\r\n };\r\n\r\n onClick = (id: number) => {\r\n this.props.history.push('/vehicle/' + id);\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'vehicle.id',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_ID', 'ID'),\r\n options: {\r\n sort: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'vehicle.organization.displayName',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_ORGANIZATION',\r\n 'Organizatie'\r\n )\r\n },\r\n {\r\n name: 'vehicle.vin',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_VIN', 'VIN')\r\n },\r\n {\r\n name: 'vehicle.make.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MAKE', 'Marca'),\r\n options: {\r\n display: 'excluded',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'vehicle.model.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MODEL', 'Model'),\r\n options: {\r\n display: 'excluded',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'vehicle.version',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_VERSION',\r\n 'Marca Model Versiune'\r\n ),\r\n options: {\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const vehicleExtension = this.state.vehiclesList.vehicles.find(\r\n ({ vehicle }) => vehicle.id === tableMeta.rowData[0]\r\n );\r\n\r\n return (\r\n
\r\n \r\n {vehicleExtension?.vehicle?.make?.displayName}{' '}\r\n \r\n \r\n {vehicleExtension?.vehicle?.model?.displayName}{' '}\r\n \r\n {value} \r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'vehicle.firstRegistrationDate',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_FIRST_REGISTRATION_DATE',\r\n 'Data primei inmatriculari'\r\n ),\r\n options: {\r\n customBodyRender: (value: any) => {\r\n return (\r\n \r\n \r\n
\r\n {moment\r\n .utc(value)\r\n .local()\r\n .format(this.props.appState.dateFormat)}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'addedInStockDate',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_ADDED_IN_STOCK_DATE',\r\n 'Data intrare stoc'\r\n ),\r\n options: {\r\n customBodyRender: (value: any) => {\r\n return (\r\n \r\n \r\n
\r\n {value\r\n ? moment\r\n .utc(value)\r\n .local()\r\n .format(this.props.appState.dateFormat)\r\n : null}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'vehicle.makeDate',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_YEAR_OF_FABRICATION',\r\n 'An'\r\n ),\r\n options: {\r\n customBodyRender: (value: any) => {\r\n return (\r\n \r\n \r\n
{value ? new Date(value).getFullYear() : null}
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'vehicle.kilometersNr',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_NR_OF_KM', 'KM')\r\n },\r\n {\r\n name: 'vehicle.horsePower',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_HP', 'CP')\r\n },\r\n {\r\n name: 'vehicle.engineSize',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_ENGINE_SIZE', 'CM3')\r\n },\r\n {\r\n name: 'vehicle.currentStatus.status.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_STATUS', 'Status')\r\n },\r\n {\r\n name: 'vehicle',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_PURCHASE_EUR_PRICE',\r\n 'Pret Achizitie EUR cu TVA'\r\n ),\r\n options: {\r\n customBodyRender: (value: any) => {\r\n return value.purchaseVatRate === 0 ? (\r\n <>\r\n {value.purchasePrice}\r\n
\r\n {this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_WITHOUT_VAT',\r\n 'Achizitionat cu TVA=0'\r\n )}\r\n
\r\n \r\n ) : (\r\n value.purchasePrice\r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState(\r\n {\r\n selectedTab: newValue,\r\n page: 0\r\n },\r\n async () => await this.loadVehicles(0, this.state.pageSize)\r\n );\r\n };\r\n handleOrgEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedOrgEntities: newValue\r\n },\r\n async () => await this.loadVehicles(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleMakeEntitiesChange = (newValue: any[]) => {\r\n const selectedModels = [...this.state.selectedModelEntities];\r\n const selectedMakeIds = newValue.map(({ id }) => id);\r\n\r\n const models = selectedModels.filter(({ dependencyId }) =>\r\n selectedMakeIds.includes(dependencyId)\r\n );\r\n\r\n this.setState(\r\n {\r\n selectedMakeEntities: newValue,\r\n selectedModelEntities: models\r\n },\r\n async () => await this.loadVehicles(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleModelEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedModelEntities: newValue\r\n },\r\n async () => await this.loadVehicles(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleFuelEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedFuelEntities: newValue\r\n },\r\n async () => await this.loadVehicles(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleTransmissionEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedTransmissionEntities: newValue\r\n },\r\n async () => await this.loadVehicles(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleTractionEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedTractionEntities: newValue\r\n },\r\n async () => await this.loadVehicles(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleStatusEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedStatusEntities: newValue\r\n },\r\n async () => await this.loadVehicles(this.state.page, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleImportDialogOpen = () => {\r\n this.setState({\r\n vehicleImportDialogOpenend: true\r\n });\r\n };\r\n\r\n handleImportDialogClose = () => {\r\n this.setState({\r\n vehicleImportDialogOpenend: false\r\n });\r\n };\r\n\r\n renderFilters = () => {\r\n const selectedMakes = this.state.selectedMakeEntities;\r\n let models = this.state.modelEntities;\r\n\r\n if (selectedMakes.length) {\r\n const makeIds = selectedMakes.map(({ id }) => id);\r\n models = this.state.modelEntities.filter(({ dependencyId }) => {\r\n return makeIds.includes(dependencyId!);\r\n });\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n this.handleOrgEntitiesChange(newValue)}\r\n getOptionLabel={(option: Organization) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n {\r\n this.setState({\r\n location: e.target.value\r\n });\r\n }}\r\n onBlur={() => this.loadVehicles(this.state.page, this.state.pageSize)}\r\n validators={['required']}\r\n label={this.cbContext.translatorService.Tranlate(\r\n 'ORDERS_LOCATION_LABEL',\r\n 'Locatie'\r\n )}\r\n />\r\n\r\n this.handleMakeEntitiesChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleModelEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n {\r\n this.setState({\r\n vin: e.target.value\r\n });\r\n }}\r\n onBlur={() => this.loadVehicles(this.state.page, this.state.pageSize)}\r\n validators={['required']}\r\n label={this.cbContext.translatorService.Tranlate('CALCULATION_DETAILS_VIN', 'Vin')}\r\n />\r\n \r\n\r\n \r\n this.handleFuelEntitiesChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleTransmissionEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleTractionEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleStatusEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n onCellClick = (\r\n colData: any,\r\n cellMeta: { colIndex: number; rowIndex: number; dataIndex: number }\r\n ) => {\r\n this.onClick(this.state.vehiclesList.vehicles[cellMeta.dataIndex].vehicle.id);\r\n };\r\n\r\n tableOptions = () => {\r\n return {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.cbContext.translatorService),\r\n elevation: 0,\r\n serverSide: true,\r\n count: this.state.count,\r\n rowsPerPage: this.state.pageSize,\r\n page: this.state.page,\r\n onCellClick: this.onCellClick,\r\n onTableChange: async (action: any, tableState: any) => {\r\n switch (action) {\r\n case 'changePage':\r\n await this.loadVehicles(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'changeRowsPerPage':\r\n await this.loadVehicles(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'sort':\r\n break;\r\n default:\r\n }\r\n }\r\n };\r\n };\r\n\r\n public render() {\r\n this.cbContext = this.context as AppContext;\r\n\r\n if (this.state.isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n {this.renderFilters()}\r\n {this.state.isLoadingVehicles ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(VehiclesHistory as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport {\r\n Tooltip,\r\n Box,\r\n Button,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableMeta,\r\n MUIDataTableColumnOptions\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ICaseService } from '../../../services/Interfaces/ICaseService';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport moment from 'moment';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport EditOutlinedIcon from '@material-ui/icons/EditOutlined';\r\nimport { CarClassRentPrice } from '../../../interfaces/Case';\r\nimport NumberFormat from 'react-number-format';\r\n\r\ninterface ICarClassRentalPriceState {\r\n newCarClassRentPrice: CarClassRentPrice;\r\n carClasses: IReferential[];\r\n carClassRentPrices: CarClassRentPrice[];\r\n isLoading: boolean;\r\n isDialogOpen: boolean;\r\n newCarClassRentPriceId: number | null;\r\n}\r\n\r\ntype ICarClassRentalPriceProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass CarClassRentalPrice extends React.PureComponent<\r\n ICarClassRentalPriceProps,\r\n ICarClassRentalPriceState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n\r\n static contextType = ApplicationContext;\r\n private newCarClassRentPrice = {\r\n id: 0,\r\n carClassId: 0,\r\n price: null\r\n } as unknown as CarClassRentPrice;\r\n\r\n state = {\r\n carClassRentPrices: [],\r\n isLoading: false,\r\n selectedFilter: 0,\r\n isDialogOpen: false,\r\n newCarClassRentPrice: this.newCarClassRentPrice,\r\n carClasses: [],\r\n newCarClassRentPriceId: null\r\n } as ICarClassRentalPriceState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCarClassRentPrices();\r\n }\r\n );\r\n }\r\n\r\n loadCarClassRentPrices = async () => {\r\n const carClassPrices = await this.caseService.GetCarClassRentPrices();\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CarClass\r\n );\r\n const carClasses = (await this.appReferentialService.Get(ref!.baseUrl)).filter((item) => item.isActive === true);\r\n\r\n this.setState({\r\n carClassRentPrices: carClassPrices,\r\n isLoading: false,\r\n carClasses: carClasses,\r\n newCarClassRentPrice: { ...this.newCarClassRentPrice }\r\n });\r\n };\r\n\r\n\r\n \r\n\r\n private handlePriceChange = (value: string) => {\r\n this.setState({\r\n newCarClassRentPrice: {\r\n ...this.state.newCarClassRentPrice,\r\n price: parseFloat(value)\r\n }\r\n });\r\n };\r\n\r\n private handleCarClassChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n newCarClassRentPrice: {\r\n ...this.state.newCarClassRentPrice,\r\n carClass: newValue,\r\n carClassId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n public saveCarClassRentalPrice = async () => {\r\n if (this.state.newCarClassRentPriceId === null) {\r\n try {\r\n\r\n await this.caseService.AddCarClassRentPrice(this.state.newCarClassRentPrice);\r\n\r\n await this.loadCarClassRentPrices();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n } else {\r\n try {\r\n\r\n await this.caseService.UpdateCarClassRentPrice(this.state.newCarClassRentPrice);\r\n\r\n await this.loadCarClassRentPrices();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n \r\n \r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n \r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n this.handlePriceChange(e.target.value)}\r\n label={this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_PRICE_LABEL',\r\n 'Pret'\r\n )}\r\n validators={['required', 'minNumber:1']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom,\r\n style: { fontWeight: 500 }\r\n }}\r\n />\r\n\r\n \r\n this.handleCarClassChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'carClass',\r\n label: this.translatorService.Tranlate(\r\n 'CAR_CLASS',\r\n 'Clasa masina'\r\n ),\r\n options: {\r\n sort: true,\r\n customSort: (a: IReferential, b: IReferential) => {\r\n return a.name!.localeCompare(b.name!);\r\n },\r\n customBodyRender: (value: IReferential) => {\r\n return value.name;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'price',\r\n label: this.translatorService.Tranlate(\r\n 'CASE_CALCULATION_ALTERNATIVE_CALCULATION_DETAILS_PRICE_LABEL',\r\n 'Pret'\r\n ),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n if (value) {\r\n return value.toFixed(2);\r\n } \r\n return '';\r\n }\r\n }\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate('USERS_DATE_MODIFICATION_HEADER', 'Data Modificare'),\r\n options: {\r\n filter: false,\r\n sortDirection: 'desc',\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n <>\r\n this.newCarClassPopup(tableMeta.rowData[0])}\r\n >\r\n \r\n \r\n this.deleteCarClassRentPrice(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n }];\r\n\r\n return columns;\r\n };\r\n\r\n deleteCarClassRentPrice = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.caseService.RemoveCarClassRentPrice(id);\r\n await this.loadCarClassRentPrices();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n\r\n newCarClassPopup = async (carClassRentalPriceId: number | null) => {\r\n\r\n let newCarClassRentPrice: CarClassRentPrice;\r\n if (carClassRentalPriceId == null) {\r\n newCarClassRentPrice = { ...this.state.newCarClassRentPrice } as CarClassRentPrice;\r\n } else {\r\n newCarClassRentPrice = this.state.carClassRentPrices.find((item) => item.id === carClassRentalPriceId)!;\r\n }\r\n this.setState({\r\n isDialogOpen: true,\r\n newCarClassRentPrice: newCarClassRentPrice,\r\n newCarClassRentPriceId: carClassRentalPriceId\r\n\r\n });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState(\r\n { \r\n isDialogOpen: false, \r\n newCarClassRentPrice: this.newCarClassRentPrice \r\n }\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n // responsive: \"stacked\",\r\n customToolbar: () => {\r\n return (\r\n \r\n this.newCarClassPopup(null)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {!this.state.newCarClassRentPriceId ? \r\n this.translatorService.Tranlate(\r\n 'CAR_CLASS_RENT_PRICE_NEW_MODAL_TITLE',\r\n 'Adauga preturi inchiriere/zi'\r\n ) : this.translatorService.Tranlate(\r\n 'CAR_CLASS_RENT_PRICE_UPDATE_MODAL_TITLE',\r\n 'Actualizeaza preturi inchiriere/zi'\r\n )} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(CarClassRentalPrice as any));\r\n","import * as React from 'react';\r\nimport { ApplicationState, AppState, CaseSettingsActionCreators, CaseSettingsState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { Button, Card, Grid} from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { MuiPickersUtilsProvider, DatePicker } from '@material-ui/pickers';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport * as R from 'ramda';\r\nimport Loader from '../Loader';\r\nimport _ from 'lodash';\r\nimport { ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { BillingFilters } from '../../interfaces/Case';\r\nimport FileSaver from 'file-saver';\r\nimport { LanguageCode, RoleClaimsEnum } from '../../helpers/Constants';\r\nimport { ScaleLoader } from 'react-spinners';\r\n\r\n\r\ntype BillingProps = {\r\n appState: AppState;\r\n caseSettingsState: CaseSettingsState;\r\n } & ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface IBillingState {\r\n isLoading: boolean;\r\n filterStartDate: Date | null;\r\n filterEndDate: Date | null;\r\n isGtm: boolean;\r\n startDateError: string;\r\n endDateError: string;\r\n}\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\nclass Billing extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: false,\r\n filterStartDate: null,\r\n filterEndDate: null,\r\n startDateError: '',\r\n endDateError: ''\r\n } as IBillingState;\r\n\r\n public async componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: false\r\n }\r\n );\r\n }\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n exportInfo = async () => {\r\n if (this.state.startDateError || this.state.endDateError) {\r\n return;\r\n }\r\n const language = this.props.appState.language == LanguageCode.RO ? LanguageCode.RO : this.props.appState.language == LanguageCode.CZ ? LanguageCode.CZ : LanguageCode.EN;\r\n \r\n try {\r\n this.setState({ isLoading: true });\r\n const formatedStartDate = this.state.filterStartDate ? moment(this.state.filterStartDate).format(\"DD.MM.YYYY\") : null;\r\n const formatedEndDate = this.state.filterEndDate ? moment(this.state.filterEndDate).format(\"DD.MM.YYYY\") : null;\r\n const requestPayload = {\r\n startDate: this.state.filterStartDate ? new Date(this.state.filterStartDate.setHours(0, 0, 0, 0)) : null,\r\n endDate: this.state.filterEndDate ? new Date(this.state.filterEndDate.setHours(23, 59, 59, 999)) : null,\r\n isGtm: this.hasRight(RoleClaimsEnum.Admin),\r\n language: language,\r\n countryCode: this.props.appState.appUser?.organization?.country?.code\r\n } as BillingFilters;\r\n \r\n const fileBlob = await this.caseService.GetCaseBillingReport(\r\n requestPayload\r\n );\r\n FileSaver.saveAs(fileBlob, language == LanguageCode.RO ? 'Raport Carfix ' + formatedStartDate + '-' + formatedEndDate + '.xlsx' : 'Carfix Report ' + formatedStartDate + '-' + formatedEndDate + '.xlsx');\r\n \r\n this.setState({ isLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (err: any) {\r\n this.setState({ isLoading: false });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n\r\n validateDates = (startDate: Date | null, endDate: Date | null): void => {\r\n /*\r\n Validate start date\r\n */\r\n let startDateError = '';\r\n if (!startDate) {\r\n startDateError = this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu');\r\n } else {\r\n const currentDate = moment().format('YYYY-MM-DD');\r\n if (endDate && startDate > endDate) {\r\n startDateError = this.translatorService.Tranlate(\r\n 'EXPORT_START_DATE_ERROR',\r\n 'De la trebuie sa fie mai mica decat pana la'\r\n );\r\n }\r\n }\r\n\r\n /*\r\n Validate end date\r\n */\r\n\r\n let endDateError = '';\r\n if (!endDate) {\r\n endDateError = this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu');\r\n }\r\n\r\n this.setState({\r\n startDateError: startDateError,\r\n endDateError: endDateError\r\n });\r\n\r\n };\r\n\r\n\r\n handlefilterStartDateChange = async (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState(\r\n {\r\n filterStartDate: date === null || !date.isValid ? null : date!.toDate(),\r\n startDateError: ''\r\n }\r\n \r\n );\r\n };\r\n\r\n handlefilterEndDateChange = async (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState(\r\n {\r\n filterEndDate: date === null || !date.isValid ? null : date!.toDate(),\r\n endDateError: ''\r\n }\r\n );\r\n };\r\n\r\n renderFilters = () => {\r\n return (\r\n {\r\n this.exportInfo();\r\n }}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {\r\n this.validateDates(this.state.filterStartDate, this.state.filterEndDate);\r\n }}\r\n >\r\n {this.translatorService.Tranlate('EXPORT_DATA', 'Export')}\r\n \r\n
\r\n
\r\n \r\n );\r\n };\r\n\r\n \r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n\r\n return (\r\n \r\n \r\n
\r\n {this.renderFilters()}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n caseSettingsState: state.caseSettings\r\n }),\r\n null\r\n)(withSnackbar(Billing as any));\r\n","import * as React from 'react';\r\nimport {\r\n ApplicationState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n CaseSettingsState\r\n} from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { Button, Card, Grid } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { MuiPickersUtilsProvider, DatePicker } from '@material-ui/pickers';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport * as R from 'ramda';\r\nimport Loader from '../Loader';\r\nimport _, { get } from 'lodash';\r\nimport { ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { DgpciBillingFilters } from '../../interfaces/Case';\r\nimport FileSaver from 'file-saver';\r\nimport { LanguageCode, RoleClaimsEnum } from '../../helpers/Constants';\r\nimport { ScaleLoader } from 'react-spinners';\r\n\r\ntype BillingProps = {\r\n appState: AppState;\r\n caseSettingsState: CaseSettingsState;\r\n} & ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface IBillingState {\r\n isLoading: boolean;\r\n filterStartDate: Date | null;\r\n filterEndDate: Date | null;\r\n isGtm: boolean;\r\n startDateError: string;\r\n endDateError: string;\r\n}\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\nclass DgpciBilling extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: false,\r\n filterStartDate: null,\r\n filterEndDate: null,\r\n startDateError: '',\r\n endDateError: ''\r\n } as IBillingState;\r\n\r\n public async componentDidMount() {\r\n this.setState({\r\n isLoading: false\r\n });\r\n }\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n exportInfo = async () => {\r\n if (this.state.startDateError || this.state.endDateError) {\r\n return;\r\n }\r\n const language =\r\n this.props.appState.language == LanguageCode.RO ? LanguageCode.RO : LanguageCode.EN;\r\n\r\n try {\r\n this.setState({ isLoading: true });\r\n const formatedStartDate = this.state.filterStartDate\r\n ? moment(this.state.filterStartDate).format('DD.MM.YYYY')\r\n : null;\r\n const formatedEndDate = this.state.filterEndDate\r\n ? moment(this.state.filterEndDate).format('DD.MM.YYYY')\r\n : null;\r\n const requestPayload = {\r\n startDate: this.state.filterStartDate\r\n ? new Date(this.state.filterStartDate.setHours(0, 0, 0, 0))\r\n : null,\r\n endDate: this.state.filterEndDate\r\n ? new Date(this.state.filterEndDate.setHours(23, 59, 59, 999))\r\n : null,\r\n isGtm: this.hasRight(RoleClaimsEnum.Admin)\r\n } as DgpciBillingFilters;\r\n\r\n const fileBlob = await this.caseService.GetCaseBillingReportDgpciRequest(requestPayload);\r\n FileSaver.saveAs(\r\n fileBlob,\r\n language == LanguageCode.RO\r\n ? 'Raport DGPCI ' + formatedStartDate + '-' + formatedEndDate + '.xlsx'\r\n : 'DGPCI Report ' + formatedStartDate + '-' + formatedEndDate + '.xlsx'\r\n );\r\n\r\n this.setState({ isLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (err: any) {\r\n this.setState({ isLoading: false });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n validateDates = (startDate: Date | null, endDate: Date | null): void => {\r\n /*\r\n Validate start date\r\n */\r\n let startDateError = '';\r\n if (!startDate) {\r\n startDateError = this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n );\r\n } else {\r\n const currentDate = moment().format('YYYY-MM-DD');\r\n if (endDate && startDate > endDate) {\r\n startDateError = this.translatorService.Tranlate(\r\n 'EXPORT_START_DATE_ERROR',\r\n 'De la trebuie sa fie mai mica decat pana la'\r\n );\r\n }\r\n }\r\n\r\n /*\r\n Validate end date\r\n */\r\n\r\n let endDateError = '';\r\n if (!endDate) {\r\n endDateError = this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n );\r\n }\r\n\r\n this.setState({\r\n startDateError: startDateError,\r\n endDateError: endDateError\r\n });\r\n };\r\n\r\n handlefilterStartDateChange = async (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState({\r\n filterStartDate: date === null || !date.isValid ? null : date!.toDate(),\r\n startDateError: ''\r\n });\r\n };\r\n\r\n handlefilterEndDateChange = async (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState({\r\n filterEndDate: date === null || !date.isValid ? null : date!.toDate(),\r\n endDateError: ''\r\n });\r\n };\r\n\r\n renderFilters = () => {\r\n return (\r\n {\r\n this.exportInfo();\r\n }}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {\r\n this.validateDates(this.state.filterStartDate, this.state.filterEndDate);\r\n }}\r\n >\r\n {this.translatorService.Tranlate('EXPORT_DATA', 'Export')}\r\n \r\n
\r\n
\r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n\r\n return (\r\n \r\n \r\n
{this.renderFilters()}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n caseSettingsState: state.caseSettings\r\n }),\r\n null\r\n)(withSnackbar(DgpciBilling as any));\r\n","import * as React from 'react';\r\nimport { ApplicationState, AppState, CaseSettingsState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { Button, Card, Grid} from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { MuiPickersUtilsProvider, DatePicker } from '@material-ui/pickers';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport _ from 'lodash';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport FileSaver from 'file-saver';\r\nimport { LanguageCode } from '../../helpers/Constants';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { IOrderService } from '../../services/Interfaces/IOrderService';\r\nimport { OrderPartsHistoryFilters } from '../../interfaces/Order';\r\n\r\n\r\ntype OrderPartsHistoryProps = {\r\n appState: AppState;\r\n caseSettingsState: CaseSettingsState;\r\n } & ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface IOrderPartsHistoryState {\r\n isLoading: boolean;\r\n filterStartDate: Date | null;\r\n filterEndDate: Date | null;\r\n startDateError: string;\r\n endDateError: string;\r\n vin: string;\r\n}\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n}\r\n\r\nclass OrderPartsHistory extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private orderService!: IOrderService;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: false,\r\n filterStartDate: null,\r\n filterEndDate: null,\r\n startDateError: '',\r\n endDateError: '',\r\n vin: ''\r\n } as IOrderPartsHistoryState;\r\n\r\n public async componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: false\r\n }\r\n );\r\n }\r\n\r\n exportInfo = async () => {\r\n if (this.state.startDateError || this.state.endDateError) {\r\n return;\r\n }\r\n\r\n const language = this.props.appState.language == LanguageCode.RO ? LanguageCode.RO : LanguageCode.EN;\r\n try {\r\n this.setState({ isLoading: true });\r\n\r\n const formatedStartDate = this.state.filterStartDate ? moment(this.state.filterStartDate).format(\"DD.MM.YYYY\") : null;\r\n const formatedEndDate = this.state.filterEndDate ? moment(this.state.filterEndDate).format(\"DD.MM.YYYY\") : null;\r\n const requestPayload = {\r\n startDate: this.state.filterStartDate ? new Date(this.state.filterStartDate.setHours(0, 0, 0, 0)) : null,\r\n endDate: this.state.filterEndDate ? new Date(this.state.filterEndDate.setHours(23, 59, 59, 999)) : null,\r\n vin: this.state.vin,\r\n language: language\r\n } as OrderPartsHistoryFilters;\r\n \r\n const fileBlob = await this.orderService.GetOrderPartsHistory(\r\n requestPayload\r\n );\r\n FileSaver.saveAs(fileBlob, language == LanguageCode.RO ? 'Istoric Piese Auto_' + this.state.vin + '_' + formatedStartDate + '-' + formatedEndDate + '.xlsx' : 'Auto Parts History_' + this.state.vin + '_' + formatedStartDate + '-' + formatedEndDate + '.xlsx');\r\n \r\n this.setState({ isLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (err: any) {\r\n this.setState({ isLoading: false });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n\r\n validateDates = (startDate: Date | null, endDate: Date | null): void => {\r\n /*\r\n Validate start date\r\n */\r\n let startDateError = '';\r\n if (!startDate) {\r\n startDateError = this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu');\r\n } else {\r\n if (endDate && startDate > endDate) {\r\n startDateError = this.translatorService.Tranlate(\r\n 'EXPORT_START_DATE_ERROR',\r\n 'De la trebuie sa fie mai mica decat pana la'\r\n );\r\n }\r\n }\r\n\r\n /*\r\n Validate end date\r\n */\r\n let endDateError = '';\r\n if (!endDate) {\r\n endDateError = this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu');\r\n }\r\n\r\n this.setState({\r\n startDateError: startDateError,\r\n endDateError: endDateError\r\n });\r\n\r\n };\r\n\r\n\r\n handlefilterStartDateChange = async (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState(\r\n {\r\n filterStartDate: date === null || !date.isValid ? null : date!.toDate(),\r\n startDateError: ''\r\n }\r\n \r\n );\r\n };\r\n\r\n handlefilterEndDateChange = async (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState(\r\n {\r\n filterEndDate: date === null || !date.isValid ? null : date!.toDate(),\r\n endDateError: ''\r\n }\r\n );\r\n };\r\n\r\n renderFilters = () => {\r\n return (\r\n {\r\n this.exportInfo();\r\n }}\r\n >\r\n
\r\n \r\n \r\n {\r\n this.setState({\r\n vin: e.target.value\r\n });\r\n }}\r\n validators={['required', 'matchRegexp:^(?=.*[0-9])(?=.*[abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ])[0-9abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ-]{17}$']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n ),\r\n this.translatorService.Tranlate('INVALID_CAR_VIN_IDENTIFICATOR', \"Te rugăm să te asiguri că seria de șasiu introdusă are 17 caractere alfanumerice și nu conține spații sau literele 'O' sau 'I'!\")\r\n ]} \r\n label={this.translatorService.Tranlate('CALCULATION_DETAILS_VIN', 'Vin')}\r\n required={true}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {\r\n this.validateDates(this.state.filterStartDate, this.state.filterEndDate);\r\n }}\r\n >\r\n {this.translatorService.Tranlate('EXPORT_DATA', 'Export')}\r\n \r\n
\r\n
\r\n \r\n );\r\n };\r\n\r\n \r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.orderService = (this.context as AppContext).orderService;\r\n\r\n return (\r\n \r\n \r\n
\r\n {this.renderFilters()}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n caseSettingsState: state.caseSettings\r\n }),\r\n null\r\n)(withSnackbar(OrderPartsHistory as any));\r\n","import React, { Fragment, ChangeEvent } from 'react';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Box, Switch, Card, TextField } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { ITranslation, IReferential, IReferentialConfig } from '../../../interfaces/IReferential';\r\nimport Autocomplete, { RenderInputParams } from '@material-ui/lab/Autocomplete';\r\nimport MaterialTable, { Icons, EditComponentProps, Column } from 'material-table';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { forwardRef } from 'react';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { Language } from '../../../interfaces/Organization';\r\nimport * as R from 'ramda';\r\nimport { MavoLanguageTranslationEnum, ReferentialCode } from '../../../helpers/Constants';\r\nimport _ from 'lodash';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ntype VersionListProps = { appState: AppState } & ProviderContext;\r\n\r\ninterface IVersionListState {\r\n makeList: IReferential[];\r\n modelList: IReferential[];\r\n initialModelList: IReferential[];\r\n referentials: IReferential[];\r\n filteredReferentials: IReferential[];\r\n isLoading: boolean;\r\n selectedReferential: IReferentialConfig | null;\r\n selectedMake: IReferential | null;\r\n selectedModel: IReferential | null;\r\n languages: Language[];\r\n}\r\n\r\nclass VersionList extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n referentials: [],\r\n isLoading: false,\r\n selectedReferential: null,\r\n languages: [] as Language[],\r\n makeList: [],\r\n modelList: [],\r\n dependentReferentialConfig: null,\r\n selectedMake: null,\r\n selectedModel: null,\r\n filteredReferentials: [],\r\n initialMakeList: [],\r\n initialModelList: [],\r\n } as IVersionListState;\r\n\r\n componentDidMount = () => {\r\n const referential = Referentials.referential.find(x => x.code === ReferentialCode.Version) as IReferentialConfig;\r\n this.setState({\r\n isLoading: true,\r\n languages: this.activeLanguages().filter((lang) => lang.code === MavoLanguageTranslationEnum.RO),\r\n },\r\n async () => {\r\n this.loadReferentialsList(referential);\r\n });\r\n };\r\n\r\n loadReferentialsList = async (value: IReferentialConfig | null) => {\r\n let referentialList: IReferential[] = [];\r\n let makeList: IReferential[] = [];\r\n let modelList: IReferential[] = [];\r\n if (value !== null && value.getUrl !== '') {\r\n try {\r\n referentialList = await this.appReferentialService.GetFromDB(value.getUrl);\r\n makeList = (await this.loadDependentReferentials(ReferentialCode.VehicleMake)).dependentReferentialList;\r\n modelList = (await this.loadDependentReferentials(ReferentialCode.Model)).dependentReferentialList;\r\n referentialList.forEach((refItem) => {\r\n this.state.languages.forEach((lang) => {\r\n const translation = refItem.translations.find((item) => item.language === lang.code);\r\n if (R.isNil(translation)) {\r\n refItem.translations.push({\r\n id: 0,\r\n name: '',\r\n language: lang.code,\r\n referentialTypeId: refItem.id\r\n } as ITranslation);\r\n }\r\n });\r\n });\r\n\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n const selectedMake = this.state.selectedMake ?? makeList[0];\r\n const selectedModelList = modelList.filter((ref) => ref.dependencyId === selectedMake.id);\r\n const selectedModel = this.state.selectedModel ?? selectedModelList[0];\r\n \r\n this.setState({\r\n referentials: referentialList,\r\n isLoading: false,\r\n selectedReferential: value!,\r\n makeList: makeList, \r\n initialModelList: modelList,\r\n selectedMake: selectedMake,\r\n selectedModel: selectedModel,\r\n modelList: selectedModelList,\r\n filteredReferentials: referentialList.filter(\r\n (ref) => ref.modelId === selectedModel?.id)\r\n });\r\n };\r\n\r\n handleMakeChange = (newValue: IReferential | null) => {\r\n if (R.isNil(newValue)) {\r\n this.setState({\r\n ...this.state,\r\n selectedMake: newValue,\r\n filteredReferentials: this.state.referentials,\r\n selectedModel: null\r\n });\r\n return;\r\n }\r\n\r\n const modelList = this.state.initialModelList.filter((ref) => ref.dependencyId === newValue.id);\r\n this.setState({\r\n ...this.state,\r\n selectedMake: newValue,\r\n modelList: modelList,\r\n selectedModel: modelList.length ? modelList[0] : null,\r\n filteredReferentials: modelList.length ? this.state.referentials.filter(\r\n (ref) => ref.modelId === modelList[0].id) : []\r\n });\r\n };\r\n\r\n handleModelChange = (newValue: IReferential | null) => {\r\n if (R.isNil(newValue)) {\r\n this.setState({\r\n ...this.state,\r\n selectedModel: newValue,\r\n filteredReferentials: this.state.referentials\r\n });\r\n return;\r\n }\r\n\r\n const filteredReferentials = this.state.referentials.filter((ref) => ref.modelId === newValue.id);\r\n this.setState({\r\n ...this.state,\r\n selectedModel: newValue,\r\n filteredReferentials: filteredReferentials\r\n });\r\n }\r\n\r\n loadDependentReferentials = async (dependency: string) => {\r\n const dependencyConfig = Referentials.referential.find(\r\n (r) => r.code === dependency\r\n ) as IReferentialConfig;\r\n const dependentReferentialList = await this.appReferentialService.GetFromDB(\r\n dependencyConfig.getUrl\r\n );\r\n return { dependentReferentialList, dependencyConfig };\r\n };\r\n\r\n handleIsActiveChange = async (event: ChangeEvent, rowData: any) => {\r\n const id = rowData.id;\r\n const newReferentials = [...this.state.filteredReferentials];\r\n const updatedReferential = newReferentials.find((ref) => ref.id === id);\r\n if (updatedReferential !== undefined) {\r\n updatedReferential.isActive = event.target.checked;\r\n\r\n try {\r\n await this.appReferentialService.Update(\r\n updatedReferential,\r\n this.state.selectedReferential!.updateUrl\r\n );\r\n this.setState({\r\n referentials: newReferentials\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n activeLanguages = () => {\r\n const activeLanguages =\r\n this.props.appState.appUser!.organization!.gtOrganization!.languages!.filter((language) => {\r\n if (language.isActive === true) {\r\n return language;\r\n }\r\n });\r\n activeLanguages.forEach((language) => {\r\n language.displayName =\r\n language.displayName.charAt(0).toUpperCase() + language.displayName.slice(1);\r\n });\r\n return activeLanguages;\r\n };\r\n\r\n handleLocListChange = (event: any, gridProps: any, code: string | null) => {\r\n let newLocList = [] as ITranslation[];\r\n if (gridProps.rowData.translations) {\r\n newLocList = gridProps.rowData.translations.map((loc: any) => {\r\n if (loc.language === code) {\r\n loc.name = event.target.value;\r\n }\r\n return loc;\r\n });\r\n }\r\n\r\n gridProps.onRowDataChange({\r\n ...gridProps.rowData,\r\n translations: newLocList\r\n });\r\n };\r\n\r\n getColumns = () => {\r\n return [\r\n {\r\n field: 'code',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_COD_HEADER', 'Cod'),\r\n searchable: true\r\n // initialEditValue: Guid.create().toString()\r\n } as Column,\r\n {\r\n field: 'translations',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_NAME_HEADER', 'Nume'),\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return rowData.translations.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find((language: any) => {\r\n return language.code === val.language;\r\n });\r\n return language ? (\r\n <>\r\n {' '}\r\n \r\n ) : null;\r\n });\r\n },\r\n customFilterAndSearch: (value, rowData) => {\r\n let matchFilter = false;\r\n rowData.translations.map((val: any) => {\r\n const findMatch = val.name.toLowerCase().indexOf(value.toLowerCase()) != -1;\r\n if (findMatch) {\r\n matchFilter = true;\r\n }\r\n });\r\n return matchFilter;\r\n },\r\n editComponent: (props: any) => {\r\n if (!R.isNil(props.value)) {\r\n return props.value.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find(\r\n (language: any) => language.code === val.language\r\n );\r\n\r\n return language ? (\r\n <>\r\n this.handleLocListChange(e, props, val.language)}\r\n >\r\n \r\n ) : null;\r\n });\r\n } else {\r\n //add\r\n const newLocList = [] as ITranslation[];\r\n for (let i = 0; i < this.state.languages!.length; i++) {\r\n const locListItem = {} as ITranslation;\r\n locListItem.language = this.state.languages[i].code;\r\n locListItem.name = '';\r\n newLocList.push(locListItem);\r\n }\r\n\r\n props.onChange(newLocList);\r\n\r\n return null;\r\n }\r\n }\r\n } as Column,\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_DATE_HEADER', 'Data'),\r\n defaultSort: 'desc',\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .format(this.props.appState.longDateFormat);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column,\r\n {\r\n field: 'isActive',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_ISACTIVE_HEADER', 'Stare'),\r\n render: (rowData: any) => {\r\n return (\r\n this.handleIsActiveChange(e, rowData)}\r\n value={rowData.isActive}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n },\r\n\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.checked)}\r\n />\r\n );\r\n }\r\n }\r\n ];\r\n\r\n };\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza')\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n public renderTypeList = () => {\r\n return (\r\n \r\n \r\n \r\n this.handleMakeChange(newValue)\r\n }\r\n getOptionLabel={(option) => option.name || ''}\r\n renderInput={(params: RenderInputParams) => (\r\n \r\n )}\r\n />\r\n \r\n this.handleModelChange(newValue)\r\n }\r\n getOptionLabel={(option) => option.name || ''}\r\n renderInput={(params: RenderInputParams) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n );\r\n };\r\n\r\n onRowUpdate = (newData: IReferential, oldData?: IReferential): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (!this.validateRef(newData)) {\r\n reject();\r\n return;\r\n }\r\n\r\n if (oldData) {\r\n this.setState((prevState: IVersionListState) => {\r\n const newReferentials = !R.isEmpty(this.state.filteredReferentials)\r\n ? [...this.state.filteredReferentials]\r\n : [...this.state.referentials];\r\n newReferentials[newReferentials.indexOf(oldData)] = newData;\r\n\r\n return { ...prevState, referentials: newReferentials };\r\n });\r\n\r\n try {\r\n await this.appReferentialService.Update(\r\n newData,\r\n this.state.selectedReferential!.updateUrl\r\n );\r\n await this.loadReferentialsList(this.state.selectedReferential);\r\n resolve();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n validateRef = (referential: IReferential): boolean => {\r\n if (referential.code === '' || referential.code === undefined || referential.code === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_CODE_EMPTY', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n const referentials = !R.isEmpty(this.state.filteredReferentials)\r\n ? this.state.filteredReferentials\r\n : this.state.referentials;\r\n let resultRef = referentials.find((item) => item.code === referential.code);\r\n if (referential.id !== undefined) {\r\n resultRef = referentials.find(\r\n (item) => item.code === referential.code && item.id !== referential.id\r\n );\r\n }\r\n if (resultRef !== undefined) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_CODE_UNIQUE', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n if (referential.translations === undefined) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_NAME', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n for (const item of referential.translations) {\r\n if (item.name === '' || item.name === undefined || item.name === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_NAME', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n onRowAdd = (newData: IReferential): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (!this.validateRef(newData)) {\r\n reject();\r\n return;\r\n }\r\n try {\r\n newData.name = newData.translations[0].name;\r\n newData.gtId = this.props.appState.appUser!.gtId!;\r\n if (!R.isNil(this.state.selectedModel)) {\r\n newData.modelId = this.state.selectedModel.id;\r\n }\r\n await this.appReferentialService.Add(newData, this.state.selectedReferential!.addUrl);\r\n await this.loadReferentialsList(this.state.selectedReferential);\r\n resolve();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n if (this.state.selectedReferential === null) {\r\n return;\r\n }\r\n\r\n return (\r\n this.onRowAdd(newData),\r\n onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData)\r\n }}\r\n />\r\n );\r\n };\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTypeList() : null}\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect((state: ApplicationState) => ({ appState: state.app }))(\r\n withSnackbar(VersionList as any)\r\n);\r\n","import React, { Fragment, ChangeEvent } from 'react';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Box, Switch, Card, TextField } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { ITranslation, IReferential, IReferentialConfig } from '../../../interfaces/IReferential';\r\nimport Autocomplete, { RenderInputParams } from '@material-ui/lab/Autocomplete';\r\nimport MaterialTable, { Icons, EditComponentProps, Column } from 'material-table';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { forwardRef } from 'react';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { Language } from '../../../interfaces/Organization';\r\nimport * as R from 'ramda';\r\nimport { MavoLanguageTranslationEnum, ReferentialCode } from '../../../helpers/Constants';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ntype BodyTypeListProps = { appState: AppState } & ProviderContext;\r\n\r\ninterface IBodyTypeListState{\r\n dependentReferencials: IReferential[];\r\n referentials: IReferential[];\r\n filteredReferentials: IReferential[];\r\n isLoading: boolean;\r\n selectedReferential: IReferentialConfig | null;\r\n languages: Language[];\r\n}\r\n\r\nclass BodyTypeList extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n referentials: [],\r\n isLoading: false,\r\n selectedReferential: null,\r\n languages: [] as Language[],\r\n dependentReferencials: [],\r\n filteredReferentials: []\r\n } as IBodyTypeListState;\r\n\r\n componentDidMount = () => {\r\n const referential = Referentials.referential.find(x => x.code === ReferentialCode.BodyTypeRCR) as IReferentialConfig;\r\n this.setState({\r\n isLoading: true,\r\n languages: this.activeLanguages().filter((lang) => lang.code === MavoLanguageTranslationEnum.RO),\r\n },\r\n async () => {\r\n this.loadReferentials(referential);\r\n });\r\n };\r\n\r\n loadReferentials = async (value: IReferentialConfig | null) => {\r\n let referentialList: IReferential[] = [];\r\n if (value !== null && value.getUrl !== '') {\r\n try {\r\n referentialList = await this.appReferentialService.GetFromDB(value.getUrl);\r\n\r\n referentialList.forEach((refItem) => {\r\n this.state.languages.forEach((lang) => {\r\n const translation = refItem.translations.find((item) => item.language === lang.code);\r\n if (R.isNil(translation)) {\r\n refItem.translations.push({\r\n id: 0,\r\n name: '',\r\n language: lang.code,\r\n referentialTypeId: refItem.id\r\n } as ITranslation);\r\n }\r\n });\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n this.setState({\r\n referentials: referentialList,\r\n isLoading: false,\r\n selectedReferential: value!\r\n });\r\n };\r\n\r\n handleIsActiveChange = async (event: ChangeEvent, rowData: any) => {\r\n const id = rowData.id;\r\n const newReferentials = [...this.state.filteredReferentials];\r\n const updatedReferential = newReferentials.find((ref) => ref.id === id);\r\n if (updatedReferential !== undefined) {\r\n updatedReferential.isActive = event.target.checked;\r\n\r\n try {\r\n await this.appReferentialService.Update(\r\n updatedReferential,\r\n this.state.selectedReferential!.updateUrl\r\n );\r\n this.setState({\r\n referentials: newReferentials\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n activeLanguages = () => {\r\n const activeLanguages =\r\n this.props.appState.appUser!.organization!.gtOrganization!.languages!.filter((language) => {\r\n if (language.isActive === true) {\r\n return language;\r\n }\r\n });\r\n activeLanguages.forEach((language) => {\r\n language.displayName =\r\n language.displayName.charAt(0).toUpperCase() + language.displayName.slice(1);\r\n });\r\n return activeLanguages;\r\n };\r\n\r\n handleLocListChange = (event: any, gridProps: any, code: string | null) => {\r\n let newLocList = [] as ITranslation[];\r\n if (gridProps.rowData.translations) {\r\n newLocList = gridProps.rowData.translations.map((loc: any) => {\r\n if (loc.language === code) {\r\n loc.name = event.target.value;\r\n }\r\n return loc;\r\n });\r\n }\r\n\r\n gridProps.onRowDataChange({\r\n ...gridProps.rowData,\r\n translations: newLocList\r\n });\r\n };\r\n\r\n getColumns = () => {\r\n return [\r\n {\r\n field: 'code',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_COD_HEADER', 'Cod'),\r\n searchable: true\r\n // initialEditValue: Guid.create().toString()\r\n } as Column,\r\n {\r\n field: 'translations',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_HEADER', 'Nume'),\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return rowData.translations.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find((language: any) => {\r\n return language.code === val.language;\r\n });\r\n return language ? (\r\n <>\r\n \r\n \r\n ) : null;\r\n });\r\n },\r\n customFilterAndSearch: (value, rowData) => {\r\n let matchFilter = false;\r\n rowData.translations.map((val: any) => {\r\n const findMatch = val.name.toLowerCase().indexOf(value.toLowerCase()) !== -1;\r\n if (findMatch) {\r\n matchFilter = true;\r\n }\r\n });\r\n return matchFilter;\r\n },\r\n editComponent: (props: any) => {\r\n if (!R.isNil(props.value)) {\r\n return props.value.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find(\r\n (language: any) => language.code === val.language\r\n );\r\n \r\n return language ? (\r\n <>\r\n this.handleLocListChange(e, props, val.language)}\r\n />\r\n \r\n ) : null;\r\n });\r\n } else {\r\n // Add new translations\r\n const newLocList = [] as ITranslation[];\r\n for (let i = 0; i < this.state.languages!.length; i++) {\r\n const locListItem = {} as ITranslation;\r\n locListItem.language = this.state.languages[i].code;\r\n locListItem.name = '';\r\n newLocList.push(locListItem);\r\n }\r\n \r\n props.onChange(newLocList);\r\n \r\n return null;\r\n }\r\n }\r\n } as Column,\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_DATE_HEADER', 'Data'),\r\n defaultSort: 'desc',\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .format(this.props.appState.longDateFormat);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column,\r\n {\r\n field: 'isActive',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_ISACTIVE_HEADER', 'Stare'),\r\n render: (rowData: any) => {\r\n return (\r\n this.handleIsActiveChange(e, rowData)}\r\n value={rowData.isActive}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n },\r\n\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.checked)}\r\n />\r\n );\r\n }\r\n }\r\n ];\r\n \r\n };\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza')\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n\r\n onRowUpdate = (newData: IReferential, oldData?: IReferential): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (!this.validateRef(newData)) {\r\n reject();\r\n return;\r\n }\r\n\r\n if (oldData) {\r\n this.setState((prevState: IBodyTypeListState) => {\r\n const newReferentials = !R.isEmpty(this.state.filteredReferentials)\r\n ? [...this.state.filteredReferentials]\r\n : [...this.state.referentials];\r\n newReferentials[newReferentials.indexOf(oldData)] = newData;\r\n\r\n return { ...prevState, referentials: newReferentials };\r\n });\r\n\r\n try {\r\n await this.appReferentialService.Update(\r\n newData,\r\n this.state.selectedReferential!.updateUrl\r\n );\r\n await this.loadReferentials(this.state.selectedReferential);\r\n resolve();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n validateRef = (referential: IReferential): boolean => {\r\n if (referential.code === '' || referential.code === undefined || referential.code === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_CODE_EMPTY', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n const referentials = !R.isEmpty(this.state.filteredReferentials)\r\n ? this.state.filteredReferentials\r\n : this.state.referentials;\r\n let resultRef = referentials.find((item) => item.code === referential.code);\r\n if (referential.id !== undefined) {\r\n resultRef = referentials.find(\r\n (item) => item.code === referential.code && item.id !== referential.id\r\n );\r\n }\r\n if (resultRef !== undefined) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_CODE_UNIQUE', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n if (referential.translations === undefined) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_NAME', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n for (const item of referential.translations) {\r\n if (item.name === '' || item.name === undefined || item.name === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_NAME', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n onRowAdd = (newData: IReferential): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (!this.validateRef(newData)) {\r\n reject();\r\n return;\r\n }\r\n try {\r\n newData.name = newData.translations[0].name;\r\n newData.gtId = this.props.appState.appUser!.gtId!;\r\n await this.appReferentialService.Add(newData, this.state.selectedReferential!.addUrl);\r\n await this.loadReferentials(this.state.selectedReferential);\r\n resolve();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n if (this.state.selectedReferential === null) {\r\n return;\r\n }\r\n\r\n return (\r\n this.onRowAdd(newData),\r\n onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData)\r\n }}\r\n />\r\n );\r\n };\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect((state: ApplicationState) => ({ appState: state.app }))(\r\n withSnackbar(BodyTypeList as any)\r\n);\r\n","import React, { Fragment, ChangeEvent } from 'react';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Box, Switch, Card, TextField } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { ITranslation, IReferential, IReferentialConfig } from '../../../interfaces/IReferential';\r\nimport Autocomplete, { RenderInputParams } from '@material-ui/lab/Autocomplete';\r\nimport MaterialTable, { Icons, EditComponentProps, Column } from 'material-table';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { forwardRef } from 'react';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { Language } from '../../../interfaces/Organization';\r\nimport * as R from 'ramda';\r\nimport { MavoLanguageTranslationEnum, ReferentialCode } from '../../../helpers/Constants';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ntype BodyConditionTypeListProps = { appState: AppState } & ProviderContext;\r\n\r\ninterface IBodyConditionTypeListState{\r\n dependentReferencials: IReferential[];\r\n referentials: IReferential[];\r\n filteredReferentials: IReferential[];\r\n isLoading: boolean;\r\n selectedReferential: IReferentialConfig | null;\r\n languages: Language[];\r\n}\r\n\r\nclass BodyConditionTypeList extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n referentials: [],\r\n isLoading: false,\r\n selectedReferential: null,\r\n languages: [] as Language[],\r\n dependentReferencials: [],\r\n filteredReferentials: []\r\n } as IBodyConditionTypeListState;\r\n\r\n componentDidMount = () => {\r\n const referential = Referentials.referential.find(x => x.code === ReferentialCode.BodyConditionType) as IReferentialConfig;\r\n this.setState({\r\n isLoading: true,\r\n languages: this.activeLanguages().filter((lang) => lang.code === MavoLanguageTranslationEnum.RO),\r\n },\r\n async () => {\r\n this.loadReferentials(referential);\r\n });\r\n };\r\n\r\n loadReferentials = async (value: IReferentialConfig | null) => {\r\n let referentialList: IReferential[] = [];\r\n if (value !== null && value.getUrl !== '') {\r\n try {\r\n referentialList = await this.appReferentialService.GetFromDB(value.getUrl);\r\n\r\n referentialList.forEach((refItem) => {\r\n this.state.languages.forEach((lang) => {\r\n const translation = refItem.translations.find((item) => item.language === lang.code);\r\n if (R.isNil(translation)) {\r\n refItem.translations.push({\r\n id: 0,\r\n name: '',\r\n language: lang.code,\r\n referentialTypeId: refItem.id\r\n } as ITranslation);\r\n }\r\n });\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n this.setState({\r\n referentials: referentialList,\r\n isLoading: false,\r\n selectedReferential: value!\r\n });\r\n };\r\n\r\n handleIsActiveChange = async (event: ChangeEvent, rowData: any) => {\r\n const id = rowData.id;\r\n const newReferentials = [...this.state.filteredReferentials];\r\n const updatedReferential = newReferentials.find((ref) => ref.id === id);\r\n if (updatedReferential !== undefined) {\r\n updatedReferential.isActive = event.target.checked;\r\n\r\n try {\r\n await this.appReferentialService.Update(\r\n updatedReferential,\r\n this.state.selectedReferential!.updateUrl\r\n );\r\n this.setState({\r\n referentials: newReferentials\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n activeLanguages = () => {\r\n const activeLanguages =\r\n this.props.appState.appUser!.organization!.gtOrganization!.languages!.filter((language) => {\r\n if (language.isActive === true) {\r\n return language;\r\n }\r\n });\r\n activeLanguages.forEach((language) => {\r\n language.displayName =\r\n language.displayName.charAt(0).toUpperCase() + language.displayName.slice(1);\r\n });\r\n return activeLanguages;\r\n };\r\n\r\n handleLocListChange = (event: any, gridProps: any, code: string | null) => {\r\n let newLocList = [] as ITranslation[];\r\n if (gridProps.rowData.translations) {\r\n newLocList = gridProps.rowData.translations.map((loc: any) => {\r\n if (loc.language === code) {\r\n loc.name = event.target.value;\r\n }\r\n return loc;\r\n });\r\n }\r\n\r\n gridProps.onRowDataChange({\r\n ...gridProps.rowData,\r\n translations: newLocList\r\n });\r\n };\r\n\r\n getColumns = () => {\r\n return [\r\n {\r\n field: 'code',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_COD_HEADER', 'Cod'),\r\n searchable: true\r\n // initialEditValue: Guid.create().toString()\r\n } as Column,\r\n {\r\n field: 'translations',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_HEADER', 'Nume'),\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return rowData.translations.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find((language: any) => {\r\n return language.code === val.language;\r\n });\r\n return language ? (\r\n <>\r\n \r\n \r\n ) : null;\r\n });\r\n },\r\n customFilterAndSearch: (value, rowData) => {\r\n let matchFilter = false;\r\n rowData.translations.map((val: any) => {\r\n const findMatch = val.name.toLowerCase().indexOf(value.toLowerCase()) !== -1;\r\n if (findMatch) {\r\n matchFilter = true;\r\n }\r\n });\r\n return matchFilter;\r\n },\r\n editComponent: (props: any) => {\r\n if (!R.isNil(props.value)) {\r\n return props.value.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find(\r\n (language: any) => language.code === val.language\r\n );\r\n \r\n return language ? (\r\n <>\r\n this.handleLocListChange(e, props, val.language)}\r\n />\r\n \r\n ) : null;\r\n });\r\n } else {\r\n // Add new translations\r\n const newLocList = [] as ITranslation[];\r\n for (let i = 0; i < this.state.languages!.length; i++) {\r\n const locListItem = {} as ITranslation;\r\n locListItem.language = this.state.languages[i].code;\r\n locListItem.name = '';\r\n newLocList.push(locListItem);\r\n }\r\n \r\n props.onChange(newLocList);\r\n \r\n return null;\r\n }\r\n }\r\n } as Column,\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_DATE_HEADER', 'Data'),\r\n defaultSort: 'desc',\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .format(this.props.appState.longDateFormat);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column,\r\n {\r\n field: 'isActive',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_ISACTIVE_HEADER', 'Stare'),\r\n render: (rowData: any) => {\r\n return (\r\n this.handleIsActiveChange(e, rowData)}\r\n value={rowData.isActive}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n },\r\n\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.checked)}\r\n />\r\n );\r\n }\r\n }\r\n ];\r\n \r\n };\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza')\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n\r\n onRowUpdate = (newData: IReferential, oldData?: IReferential): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (!this.validateRef(newData)) {\r\n reject();\r\n return;\r\n }\r\n\r\n if (oldData) {\r\n this.setState((prevState: IBodyConditionTypeListState) => {\r\n const newReferentials = !R.isEmpty(this.state.filteredReferentials)\r\n ? [...this.state.filteredReferentials]\r\n : [...this.state.referentials];\r\n newReferentials[newReferentials.indexOf(oldData)] = newData;\r\n\r\n return { ...prevState, referentials: newReferentials };\r\n });\r\n\r\n try {\r\n await this.appReferentialService.Update(\r\n newData,\r\n this.state.selectedReferential!.updateUrl\r\n );\r\n await this.loadReferentials(this.state.selectedReferential);\r\n resolve();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n validateRef = (referential: IReferential): boolean => {\r\n if (referential.code === '' || referential.code === undefined || referential.code === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_CODE_EMPTY', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n const referentials = !R.isEmpty(this.state.filteredReferentials)\r\n ? this.state.filteredReferentials\r\n : this.state.referentials;\r\n let resultRef = referentials.find((item) => item.code === referential.code);\r\n if (referential.id !== undefined) {\r\n resultRef = referentials.find(\r\n (item) => item.code === referential.code && item.id !== referential.id\r\n );\r\n }\r\n if (resultRef !== undefined) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_CODE_UNIQUE', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n if (referential.translations === undefined) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_NAME', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n for (const item of referential.translations) {\r\n if (item.name === '' || item.name === undefined || item.name === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_NAME', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n onRowAdd = (newData: IReferential): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (!this.validateRef(newData)) {\r\n reject();\r\n return;\r\n }\r\n try {\r\n newData.name = newData.translations[0].name;\r\n newData.gtId = this.props.appState.appUser!.gtId!;\r\n await this.appReferentialService.Add(newData, this.state.selectedReferential!.addUrl);\r\n await this.loadReferentials(this.state.selectedReferential);\r\n resolve();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n if (this.state.selectedReferential === null) {\r\n return;\r\n }\r\n\r\n return (\r\n this.onRowAdd(newData),\r\n onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData)\r\n }}\r\n />\r\n );\r\n };\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect((state: ApplicationState) => ({ appState: state.app }))(\r\n withSnackbar(BodyConditionTypeList as any)\r\n);\r\n","import React, { Fragment, ChangeEvent } from 'react';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Box, Switch, Card, TextField } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { ITranslation, IReferential, IReferentialConfig } from '../../../interfaces/IReferential';\r\nimport Autocomplete, { RenderInputParams } from '@material-ui/lab/Autocomplete';\r\nimport MaterialTable, { Icons, EditComponentProps, Column } from 'material-table';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { forwardRef } from 'react';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { Language } from '../../../interfaces/Organization';\r\nimport * as R from 'ramda';\r\nimport { MavoLanguageTranslationEnum, ReferentialCode } from '../../../helpers/Constants';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ntype WheelConditionTypeListProps = { appState: AppState } & ProviderContext;\r\n\r\ninterface IWheelConditionTypeListState{\r\n dependentReferencials: IReferential[];\r\n referentials: IReferential[];\r\n filteredReferentials: IReferential[];\r\n isLoading: boolean;\r\n selectedReferential: IReferentialConfig | null;\r\n languages: Language[];\r\n}\r\n\r\nclass WheelConditionTypeList extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n referentials: [],\r\n isLoading: false,\r\n selectedReferential: null,\r\n languages: [] as Language[],\r\n dependentReferencials: [],\r\n filteredReferentials: []\r\n } as IWheelConditionTypeListState;\r\n\r\n componentDidMount = () => {\r\n const referential = Referentials.referential.find(x => x.code === ReferentialCode.BodyConditionType) as IReferentialConfig;\r\n this.setState({\r\n isLoading: true,\r\n languages: this.activeLanguages().filter((lang) => lang.code === MavoLanguageTranslationEnum.RO),\r\n },\r\n async () => {\r\n this.loadReferentials(referential);\r\n });\r\n };\r\n\r\n loadReferentials = async (value: IReferentialConfig | null) => {\r\n let referentialList: IReferential[] = [];\r\n if (value !== null && value.getUrl !== '') {\r\n try {\r\n referentialList = await this.appReferentialService.GetFromDB(value.getUrl);\r\n\r\n referentialList.forEach((refItem) => {\r\n this.state.languages.forEach((lang) => {\r\n const translation = refItem.translations.find((item) => item.language === lang.code);\r\n if (R.isNil(translation)) {\r\n refItem.translations.push({\r\n id: 0,\r\n name: '',\r\n language: lang.code,\r\n referentialTypeId: refItem.id\r\n } as ITranslation);\r\n }\r\n });\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n this.setState({\r\n referentials: referentialList,\r\n isLoading: false,\r\n selectedReferential: value!\r\n });\r\n };\r\n\r\n handleIsActiveChange = async (event: ChangeEvent, rowData: any) => {\r\n const id = rowData.id;\r\n const newReferentials = [...this.state.filteredReferentials];\r\n const updatedReferential = newReferentials.find((ref) => ref.id === id);\r\n if (updatedReferential !== undefined) {\r\n updatedReferential.isActive = event.target.checked;\r\n\r\n try {\r\n await this.appReferentialService.Update(\r\n updatedReferential,\r\n this.state.selectedReferential!.updateUrl\r\n );\r\n this.setState({\r\n referentials: newReferentials\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n activeLanguages = () => {\r\n const activeLanguages =\r\n this.props.appState.appUser!.organization!.gtOrganization!.languages!.filter((language) => {\r\n if (language.isActive === true) {\r\n return language;\r\n }\r\n });\r\n activeLanguages.forEach((language) => {\r\n language.displayName =\r\n language.displayName.charAt(0).toUpperCase() + language.displayName.slice(1);\r\n });\r\n return activeLanguages;\r\n };\r\n\r\n handleLocListChange = (event: any, gridProps: any, code: string | null) => {\r\n let newLocList = [] as ITranslation[];\r\n if (gridProps.rowData.translations) {\r\n newLocList = gridProps.rowData.translations.map((loc: any) => {\r\n if (loc.language === code) {\r\n loc.name = event.target.value;\r\n }\r\n return loc;\r\n });\r\n }\r\n\r\n gridProps.onRowDataChange({\r\n ...gridProps.rowData,\r\n translations: newLocList\r\n });\r\n };\r\n\r\n getColumns = () => {\r\n return [\r\n {\r\n field: 'code',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_COD_HEADER', 'Cod'),\r\n searchable: true\r\n // initialEditValue: Guid.create().toString()\r\n } as Column,\r\n {\r\n field: 'translations',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_HEADER', 'Nume'),\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return rowData.translations.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find((language: any) => {\r\n return language.code === val.language;\r\n });\r\n return language ? (\r\n <>\r\n \r\n \r\n ) : null;\r\n });\r\n },\r\n customFilterAndSearch: (value, rowData) => {\r\n let matchFilter = false;\r\n rowData.translations.map((val: any) => {\r\n const findMatch = val.name.toLowerCase().indexOf(value.toLowerCase()) !== -1;\r\n if (findMatch) {\r\n matchFilter = true;\r\n }\r\n });\r\n return matchFilter;\r\n },\r\n editComponent: (props: any) => {\r\n if (!R.isNil(props.value)) {\r\n return props.value.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find(\r\n (language: any) => language.code === val.language\r\n );\r\n \r\n return language ? (\r\n <>\r\n this.handleLocListChange(e, props, val.language)}\r\n />\r\n \r\n ) : null;\r\n });\r\n } else {\r\n // Add new translations\r\n const newLocList = [] as ITranslation[];\r\n for (let i = 0; i < this.state.languages!.length; i++) {\r\n const locListItem = {} as ITranslation;\r\n locListItem.language = this.state.languages[i].code;\r\n locListItem.name = '';\r\n newLocList.push(locListItem);\r\n }\r\n \r\n props.onChange(newLocList);\r\n \r\n return null;\r\n }\r\n }\r\n } as Column,\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_DATE_HEADER', 'Data'),\r\n defaultSort: 'desc',\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .format(this.props.appState.longDateFormat);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column,\r\n {\r\n field: 'isActive',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_ISACTIVE_HEADER', 'Stare'),\r\n render: (rowData: any) => {\r\n return (\r\n this.handleIsActiveChange(e, rowData)}\r\n value={rowData.isActive}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n },\r\n\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.checked)}\r\n />\r\n );\r\n }\r\n }\r\n ];\r\n \r\n };\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza')\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n\r\n onRowUpdate = (newData: IReferential, oldData?: IReferential): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (!this.validateRef(newData)) {\r\n reject();\r\n return;\r\n }\r\n\r\n if (oldData) {\r\n this.setState((prevState: IWheelConditionTypeListState) => {\r\n const newReferentials = !R.isEmpty(this.state.filteredReferentials)\r\n ? [...this.state.filteredReferentials]\r\n : [...this.state.referentials];\r\n newReferentials[newReferentials.indexOf(oldData)] = newData;\r\n\r\n return { ...prevState, referentials: newReferentials };\r\n });\r\n\r\n try {\r\n await this.appReferentialService.Update(\r\n newData,\r\n this.state.selectedReferential!.updateUrl\r\n );\r\n await this.loadReferentials(this.state.selectedReferential);\r\n resolve();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n validateRef = (referential: IReferential): boolean => {\r\n if (referential.code === '' || referential.code === undefined || referential.code === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_CODE_EMPTY', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n const referentials = !R.isEmpty(this.state.filteredReferentials)\r\n ? this.state.filteredReferentials\r\n : this.state.referentials;\r\n let resultRef = referentials.find((item) => item.code === referential.code);\r\n if (referential.id !== undefined) {\r\n resultRef = referentials.find(\r\n (item) => item.code === referential.code && item.id !== referential.id\r\n );\r\n }\r\n if (resultRef !== undefined) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_CODE_UNIQUE', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n if (referential.translations === undefined) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_NAME', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n for (const item of referential.translations) {\r\n if (item.name === '' || item.name === undefined || item.name === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_NAME', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n onRowAdd = (newData: IReferential): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (!this.validateRef(newData)) {\r\n reject();\r\n return;\r\n }\r\n try {\r\n newData.name = newData.translations[0].name;\r\n newData.gtId = this.props.appState.appUser!.gtId!;\r\n await this.appReferentialService.Add(newData, this.state.selectedReferential!.addUrl);\r\n await this.loadReferentials(this.state.selectedReferential);\r\n resolve();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n if (this.state.selectedReferential === null) {\r\n return;\r\n }\r\n\r\n return (\r\n this.onRowAdd(newData),\r\n onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData)\r\n }}\r\n />\r\n );\r\n };\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect((state: ApplicationState) => ({ appState: state.app }))(\r\n withSnackbar(WheelConditionTypeList as any)\r\n);\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport {\r\n Tooltip,\r\n Box,\r\n Button,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableMeta,\r\n MUIDataTableColumnOptions\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { InvoiceRangeCodeEnum, RefConstants, RoleClaimsEnum } from '../../../helpers/Constants';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport EditOutlinedIcon from '@material-ui/icons/EditOutlined';\r\nimport NumberFormat from 'react-number-format';\r\nimport { IVehicleService } from '../../../services/Interfaces/IVehicleService';\r\nimport { InvoiceRange } from '../../../interfaces/Vehicle';\r\nimport * as R from 'ramda';\r\n\r\ninterface IInvoiceRangeListState {\r\n newInvoiceRange: InvoiceRange;\r\n invoiceRangeTypes: IReferential[];\r\n invoiceRangeStatuses: IReferential[];\r\n invoiceRanges: InvoiceRange[];\r\n isLoading: boolean;\r\n isDialogOpen: boolean;\r\n newInvoiceRangeId: number | null;\r\n}\r\n\r\ntype IInvoiceRangeListProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass InvoiceRangeList extends React.PureComponent<\r\n IInvoiceRangeListProps,\r\n IInvoiceRangeListState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n\r\n static contextType = ApplicationContext;\r\n private newInvoiceRange = {\r\n id: 0,\r\n invoiceRangeTypeId: null,\r\n invoiceRangeType: null,\r\n firstSeries: null,\r\n startingNumber: null,\r\n currentNumber: null,\r\n endingNumber: null,\r\n lastSeries: null,\r\n invoiceRangeStatusId: null,\r\n invoiceRangeStatus: null\r\n } as unknown as InvoiceRange;\r\n\r\n state = {\r\n invoiceRanges: [],\r\n isLoading: false,\r\n selectedFilter: 0,\r\n isDialogOpen: false,\r\n newInvoiceRange: this.newInvoiceRange,\r\n invoiceRangeTypes: [],\r\n invoiceRangeStatuses: [],\r\n newInvoiceRangeId: null\r\n } as IInvoiceRangeListState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadInvoiceRanges();\r\n }\r\n );\r\n }\r\n\r\n loadInvoiceRanges = async () => {\r\n let invoiceRanges = await this.vehicleService.GetInvoiceRanges();\r\n const { invoiceRangeTypeRef, invoiceRangeStatusRef } = RefConstants;\r\n\r\n const [invoiceRangeTypes, invoiceRangeStatuses] = await Promise.all([\r\n this.appReferentialService.Get(invoiceRangeTypeRef!.baseUrl),\r\n this.appReferentialService.Get(invoiceRangeStatusRef!.baseUrl)\r\n ]);\r\n\r\n if (this.hasRight(RoleClaimsEnum.MavoAdministrator)){\r\n invoiceRanges = invoiceRanges.filter((item) => item.invoiceRangeType!.code === InvoiceRangeCodeEnum.AVIZ.toString() || item.invoiceRangeType!.code === InvoiceRangeCodeEnum.FACTURA.toString());\r\n }\r\n\r\n this.setState({\r\n invoiceRanges: invoiceRanges,\r\n isLoading: false,\r\n invoiceRangeTypes: invoiceRangeTypes.filter((item) => item.code === InvoiceRangeCodeEnum.AVIZ.toString() || item.code === InvoiceRangeCodeEnum.FACTURA.toString()),\r\n invoiceRangeStatuses: invoiceRangeStatuses,\r\n newInvoiceRange: { ...this.newInvoiceRange }\r\n });\r\n };\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n private handleInvoiceRangeTypeChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n newInvoiceRange: {\r\n ...this.state.newInvoiceRange,\r\n invoiceRangeType: newValue,\r\n invoiceRangeTypeId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n \r\n private handleInvoiceRangeStatusChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n newInvoiceRange: {\r\n ...this.state.newInvoiceRange,\r\n invoiceRangeStatus: newValue,\r\n invoiceRangeStatusId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n public saveInvoiceRange = async () => {\r\n if (!R.isNil(this.state.newInvoiceRange.startingNumber) && !R.isNil(this.state.newInvoiceRange.endingNumber)) {\r\n if (this.state.newInvoiceRange.endingNumber < this.state.newInvoiceRange.startingNumber) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('INVOICE_RANGE_ENDING_NUMBER_ERROR', 'Numarul de sfarsit trebuie sa fie mai mare decat numarul de inceput!'), {\r\n variant: 'error'\r\n });\r\n return;\r\n }\r\n }\r\n\r\n if (this.state.newInvoiceRangeId === null) {\r\n try {\r\n await this.vehicleService.AddInvoiceRange(this.state.newInvoiceRange);\r\n\r\n await this.loadInvoiceRanges();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n } else {\r\n try {\r\n\r\n await this.vehicleService.UpdateInvoiceRange(this.state.newInvoiceRange);\r\n\r\n await this.loadInvoiceRanges();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n \r\n \r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={0}\r\n />\r\n );\r\n };\r\n \r\n onChange =\r\n (fieldName: string, isNumber: boolean) => (e: any, newValue?: IReferential | null) => {\r\n isNumber\r\n ? this.setState({\r\n newInvoiceRange: {\r\n ...this.state.newInvoiceRange,\r\n [fieldName]: parseFloat(newValue || e.target.value)\r\n }\r\n })\r\n : this.setState({\r\n newInvoiceRange: {\r\n ...this.state.newInvoiceRange,\r\n [fieldName]: newValue || e.target.value\r\n }\r\n });\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n this.handleInvoiceRangeTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n /> \r\n\r\n \r\n this.onChange('firstSeries', false)(e)\r\n }\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('INVOICE_RANGE_FIRST_SERIES', 'Serie 1')}\r\n />\r\n\r\n this.onChange('startingNumber', true)(e)}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('INVOICE_RANGE_STARTING_NUMBER', 'Numar inceput')}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n this.onChange('endingNumber', true)(e)}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('INVOICE_RANGE_ENDING_NUMBER', 'Numar sfarsit')}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n error={!R.isNil(this.state.newInvoiceRange.startingNumber) && !R.isNil(this.state.newInvoiceRange.endingNumber) ? \r\n (this.state.newInvoiceRange.endingNumber < this.state.newInvoiceRange.startingNumber ? true : false) : false}\r\n helperText={\r\n !R.isNil(this.state.newInvoiceRange.startingNumber) && !R.isNil(this.state.newInvoiceRange.endingNumber) ? \r\n (this.state.newInvoiceRange.endingNumber < this.state.newInvoiceRange.startingNumber ? \r\n this.translatorService.Tranlate(\r\n 'INVOICE_RANGE_ENDING_NUMBER_ERROR',\r\n 'Numarul de sfarsit trebuie sa fie mai mare decat numarul de inceput!'\r\n ) : '') : ''\r\n }\r\n />\r\n\r\n this.onChange('lastSeries', false)(e)}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('INVOICE_RANGE_LAST_SERIES', 'Serie 2')}\r\n />\r\n\r\n \r\n this.handleInvoiceRangeStatusChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n /> \r\n\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n label: this.translatorService.Tranlate('INVOICE_RANGE_NR', 'NR'),\r\n },\r\n {\r\n name: 'invoiceRangeType',\r\n label: this.translatorService.Tranlate(\r\n 'INVOICE_RANGE_TYPE',\r\n 'Tip'\r\n ),\r\n options: {\r\n sort: true,\r\n customSort: (a: IReferential, b: IReferential) => {\r\n return a.name!.localeCompare(b.name!);\r\n },\r\n customBodyRender: (value: IReferential) => {\r\n return value.name;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'firstSeries',\r\n label: this.translatorService.Tranlate('INVOICE_RANGE_FIRST_SERIES', 'Serie 1'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'startingNumber',\r\n label: this.translatorService.Tranlate('INVOICE_RANGE_STARTING_NUMBER', 'Numar inceput'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'currentNumber',\r\n label: this.translatorService.Tranlate('INVOICE_RANGE_CURRENT_NUMBER', 'Numar curent'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: number | null, tableMeta: MUIDataTableMeta) => {\r\n return R.isNil(value) ? '' : value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'endingNumber',\r\n label: this.translatorService.Tranlate('INVOICE_RANGE_ENDING_NUMBER', 'Numar sfarsit'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: number, tableMeta: MUIDataTableMeta) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'lastSeries',\r\n label: this.translatorService.Tranlate('INVOICE_RANGE_LAST_SERIES', 'Serie 2'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'invoiceRangeStatus',\r\n label: this.translatorService.Tranlate(\r\n 'INVOICE_RANGE_STATUS',\r\n 'Status'\r\n ),\r\n options: {\r\n sort: true,\r\n customSort: (a: IReferential, b: IReferential) => {\r\n return a.name!.localeCompare(b.name!);\r\n },\r\n customBodyRender: (value: IReferential) => {\r\n return value.name;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n const invoiceRange = this.state.invoiceRanges.find((item) => item.id === tableMeta.rowData[0]);\r\n\r\n return (\r\n <>\r\n this.newInvoiceRatePopup(tableMeta.rowData[0])}\r\n >\r\n \r\n \r\n this.deleteInvoiceRate(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n }];\r\n\r\n return columns;\r\n };\r\n\r\n deleteInvoiceRate = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.vehicleService.RemoveInvoiceRange(id);\r\n\r\n await this.loadInvoiceRanges();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n\r\n newInvoiceRatePopup = async (invoiceRateId: number | null) => {\r\n let newInvoiceRange: InvoiceRange;\r\n if (invoiceRateId == null) {\r\n newInvoiceRange = { ...this.state.newInvoiceRange } as InvoiceRange;\r\n } else {\r\n newInvoiceRange = this.state.invoiceRanges.find((item) => item.id === invoiceRateId)!;\r\n }\r\n this.setState({\r\n isDialogOpen: true,\r\n newInvoiceRange: newInvoiceRange,\r\n newInvoiceRangeId: invoiceRateId\r\n });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState(\r\n { \r\n isDialogOpen: false, \r\n newInvoiceRange: this.newInvoiceRange ,\r\n newInvoiceRangeId: null\r\n }\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n customToolbar: () => {\r\n return (\r\n \r\n this.newInvoiceRatePopup(null)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n {this.state.isDialogOpen ? (\r\n \r\n \r\n \r\n \r\n \r\n {!this.state.newInvoiceRangeId ? \r\n this.translatorService.Tranlate(\r\n 'INVOICE_RANGE_NEW_MODAL_TITLE',\r\n 'Adauga plaja avize/facturi'\r\n ) : this.translatorService.Tranlate(\r\n 'INVOICE_RANGE_UPDATE_MODAL_TITLE',\r\n 'Actualizeaza plaja avize/facturi'\r\n )} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(InvoiceRangeList as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport {\r\n Tooltip,\r\n Box,\r\n Button,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableMeta,\r\n MUIDataTableColumnOptions\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport moment from 'moment';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport EditOutlinedIcon from '@material-ui/icons/EditOutlined';\r\nimport NumberFormat from 'react-number-format';\r\nimport { IVehicleService } from '../../../services/Interfaces/IVehicleService';\r\nimport { Provenance } from '../../../interfaces/Vehicle';\r\n\r\ninterface IProvenanceListState {\r\n newProvenance: Provenance;\r\n provenances: Provenance[];\r\n isLoading: boolean;\r\n isDialogOpen: boolean;\r\n newProvenanceId: number | null;\r\n}\r\n\r\n\r\ntype IProvenanceListProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass ProvenanceList extends React.PureComponent<\r\n IProvenanceListProps,\r\n IProvenanceListState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n\r\n static contextType = ApplicationContext;\r\n private newProvenance = {\r\n id: 0,\r\n type: null,\r\n account: null\r\n } as unknown as Provenance;\r\n\r\n state = {\r\n provenances: [],\r\n isLoading: false,\r\n selectedFilter: 0,\r\n isDialogOpen: false,\r\n newProvenance: this.newProvenance,\r\n newProvenanceId: null\r\n } as IProvenanceListState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadProvenance();\r\n }\r\n );\r\n }\r\n\r\n loadProvenance = async () => {\r\n const provenances = await this.vehicleService.GetProvenances();\r\n\r\n this.setState({\r\n provenances: provenances,\r\n isLoading: false,\r\n newProvenance: { ...this.newProvenance }\r\n });\r\n };\r\n\r\n\r\n public saveProvenance = async () => {\r\n if (this.state.newProvenanceId === null) {\r\n try {\r\n await this.vehicleService.AddProvenance(this.state.newProvenance);\r\n\r\n await this.loadProvenance();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n } else {\r\n try {\r\n\r\n await this.vehicleService.UpdateProvenance(this.state.newProvenance);\r\n\r\n await this.loadProvenance();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n onChange =\r\n (fieldName: string, isNumber: boolean) => (e: any, newValue?: IReferential | null) => {\r\n isNumber\r\n ? this.setState({\r\n newProvenance: {\r\n ...this.state.newProvenance,\r\n [fieldName]: parseFloat(newValue || e.target.value)\r\n }\r\n })\r\n : this.setState({\r\n newProvenance: {\r\n ...this.state.newProvenance,\r\n [fieldName]: newValue || e.target.value\r\n }\r\n });\r\n };\r\n \r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={0}\r\n />\r\n );\r\n };\r\n\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n this.onChange('type', false)(e)\r\n }\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('PROVENANCE_TYPE', 'Tip')}\r\n />\r\n\r\n this.onChange('account', false)(e)}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('PROVENANCE_ACCOUNT', 'Cont Contabil')}\r\n />\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'type',\r\n label: this.translatorService.Tranlate('PROVENANCE_TYPE', 'Tip'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'account',\r\n label: this.translatorService.Tranlate('PROVENANCE_ACCOUNT', 'Cont contabil'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate('USERS_DATE_MODIFICATION_HEADER', 'Data Modificare'),\r\n options: {\r\n filter: false,\r\n sortDirection: 'desc',\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n <>\r\n this.newProvenancePopup(tableMeta.rowData[0])}\r\n >\r\n \r\n \r\n this.deleteProvenance(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n }];\r\n\r\n return columns;\r\n };\r\n\r\n deleteProvenance = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n await this.vehicleService.RemoveProvenance(id);\r\n\r\n await this.loadProvenance();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n\r\n newProvenancePopup = async (provenanceId: number | null) => {\r\n let newProvenance: Provenance;\r\n if (provenanceId == null) {\r\n newProvenance = { ...this.state.newProvenance } as Provenance;\r\n } else {\r\n newProvenance = this.state.provenances.find((item) => item.id === provenanceId)!;\r\n }\r\n this.setState({\r\n isDialogOpen: true,\r\n newProvenance: newProvenance,\r\n newProvenanceId: provenanceId\r\n });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState(\r\n { \r\n isDialogOpen: false, \r\n newProvenance: this.newProvenance,\r\n newProvenanceId: null\r\n }\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n customToolbar: () => {\r\n return (\r\n \r\n this.newProvenancePopup(null)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n\r\n {this.state.isDialogOpen ? (\r\n \r\n \r\n \r\n \r\n \r\n {!this.state.newProvenanceId ? \r\n this.translatorService.Tranlate(\r\n 'PROVENANCE_NEW_MODAL_TITLE',\r\n 'Adauga tip provenienta si cont contabil'\r\n ) : this.translatorService.Tranlate(\r\n 'PROVENANCE_UPDATE_MODAL_TITLE',\r\n 'Actualizeaza tip provenienta si cont contabil'\r\n )} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(ProvenanceList as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport {\r\n Tooltip,\r\n Box,\r\n Button,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableMeta,\r\n MUIDataTableColumnOptions\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { CurrencyCode } from '../../../helpers/Constants';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport moment from 'moment';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport EditOutlinedIcon from '@material-ui/icons/EditOutlined';\r\nimport NumberFormat from 'react-number-format';\r\nimport { IVehicleService } from '../../../services/Interfaces/IVehicleService';\r\nimport { ExchangeRate } from '../../../interfaces/Vehicle';\r\nimport * as R from 'ramda';\r\nimport VisibilityOutlinedIcon from '@material-ui/icons/VisibilityOutlined';\r\nimport _ from 'lodash';\r\nimport { IAppUserService } from '../../../services/Interfaces/IAppUserService';\r\nimport { MuiPickersUtilsProvider, DatePicker } from '@material-ui/pickers';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\n\r\ninterface IExchangeRateListState {\r\n newExchangeRate: ExchangeRate;\r\n currencyList: IReferential[];\r\n exchangeRates: ExchangeRate[];\r\n isLoading: boolean;\r\n isHistoryDialogOpen: boolean;\r\n isDialogOpen: boolean;\r\n newExchangeRateId: number | null;\r\n selectedExchangeRate: ExchangeRate | null;\r\n lastExchangeRate: ExchangeRate | null;\r\n}\r\n\r\ntype IExchangeRateListProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\nclass ExchangeRateList extends React.PureComponent<\r\n IExchangeRateListProps,\r\n IExchangeRateListState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n private appUserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n private newExchangeRate = {\r\n id: 0,\r\n exchangeRatesHistory: [],\r\n exchangeRateHistory: {\r\n id: 0,\r\n currency: CurrencyCode.EUR,\r\n rate: null,\r\n date: null,\r\n startDate: moment(new Date()).startOf('day').format(\"YYYY-MM-DDTHH:mm:ss\") ,\r\n endDate: moment(new Date()).add(7, 'days').endOf('day').format('YYYY-MM-DDTHH:mm:ss'),\r\n exchangeRateId: 0\r\n }\r\n } as unknown as ExchangeRate;\r\n\r\n state = {\r\n currencyList: [],\r\n exchangeRates: [],\r\n isLoading: false,\r\n selectedFilter: 0,\r\n isDialogOpen: false,\r\n newExchangeRate: this.newExchangeRate,\r\n newExchangeRateId: null,\r\n selectedExchangeRate: null,\r\n isHistoryDialogOpen: false,\r\n lastExchangeRate: null\r\n } as IExchangeRateListState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadExchangeRatesList();\r\n }\r\n );\r\n }\r\n\r\n loadExchangeRatesList = async () => {\r\n const exchangeRates = await this.vehicleService.GetExchangeRates();\r\n\r\n const createdByList : string[] = [];\r\n for (let i = 0; i < exchangeRates.length; i++) {\r\n createdByList.push(...(_.uniq(exchangeRates[i].exchangeRatesHistory.map((item) => item!.createdBy))));\r\n }\r\n const users = await this.appUserService.GetUsersInfo(_.uniq(createdByList));\r\n for (let i = 0; i < exchangeRates.length; i++) {\r\n const user = users.find((u) => u.id === exchangeRates[i].modifiedBy);\r\n exchangeRates[i].modifiedByUser = R.isNil(user) ? null : user;\r\n\r\n exchangeRates[i].exchangeRatesHistory.forEach((item) => {\r\n const user = users.find((u) => u.id === item.createdBy);\r\n item.createdByUser = R.isNil(user) ? null : user;\r\n });\r\n }\r\n\r\n const lastExchangeRate = _.sortBy(exchangeRates, 'dateCreation').reverse()[0];\r\n\r\n this.setState({\r\n isLoading: false,\r\n exchangeRates: exchangeRates,\r\n newExchangeRate: { ...this.newExchangeRate},\r\n lastExchangeRate: !R.isNil(lastExchangeRate) ? \r\n {\r\n ...lastExchangeRate,\r\n exchangeRateHistory: {\r\n ...lastExchangeRate.exchangeRateHistory,\r\n startDate: lastExchangeRate.exchangeRateHistory.startDate\r\n }\r\n } : null\r\n });\r\n };\r\n\r\n public saveExchangeRate = async () => {\r\n console.log(this.state.newExchangeRate.exchangeRateHistory);\r\n if (this.state.newExchangeRate.exchangeRateHistory.startDate &&\r\n this.state.newExchangeRate.exchangeRateHistory.endDate &&\r\n this.state.newExchangeRate.exchangeRateHistory.startDate >\r\n this.state.newExchangeRate.exchangeRateHistory.endDate) {\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('EXCHANGE_RATE_START_DATE_ERROR', 'Data de start trebuie sa fie mai mica decat data de stop'), {\r\n variant: 'error'\r\n });\r\n return;\r\n }\r\n\r\n console.log('Start Date', this.state.newExchangeRate.exchangeRateHistory.startDate);\r\n console.log('Previous Start Date', this.state.lastExchangeRate?.exchangeRateHistory.startDate);\r\n if (this.state.lastExchangeRate && this.state.lastExchangeRate.exchangeRateHistory.startDate && \r\n this.state.newExchangeRate.exchangeRateHistory.startDate < this.state.lastExchangeRate.exchangeRateHistory.startDate) {\r\n const previousStartDate = moment(new Date(this.state.lastExchangeRate.exchangeRateHistory.startDate)).format('DD.MM.YYYY');\r\n console.log('previousStartDate', previousStartDate);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('EXCHANGE_RATE_START_DATE_ERROR_INFO', 'Data de start pentru urmatorul curs, nu poate fi mai mica decat data start a cursului precedent!')\r\n + ' ' + this.translatorService.Tranlate('EXCHANGE_RATE_START_DATE_PREVIOUS_LABEL', 'Data start curs precedent: ') + \r\n previousStartDate, {\r\n variant: 'error'\r\n });\r\n return;\r\n }\r\n \r\n if (this.state.newExchangeRateId === null) {\r\n try {\r\n const request = {\r\n exchangeRatesHistory: [\r\n this.state.newExchangeRate.exchangeRateHistory\r\n ]\r\n } as ExchangeRate;\r\n await this.vehicleService.AddExchangeRate(request);\r\n\r\n await this.loadExchangeRatesList();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n } else {\r\n try {\r\n const request = {\r\n id: this.state.newExchangeRateId,\r\n exchangeRatesHistory: [\r\n this.state.newExchangeRate.exchangeRateHistory\r\n ]\r\n } as ExchangeRate;\r\n await this.vehicleService.UpdateExchangeRate(request);\r\n\r\n await this.loadExchangeRatesList();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n \r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={0}\r\n />\r\n );\r\n };\r\n \r\n onChange =\r\n (fieldName: string, isNumber: boolean) => (e: any, newValue?: IReferential | null) => {\r\n isNumber\r\n ? this.setState({\r\n newExchangeRate: {\r\n ...this.state.newExchangeRate,\r\n [fieldName]: parseFloat(newValue || e.target.value)\r\n }\r\n })\r\n : this.setState({\r\n newExchangeRate: {\r\n ...this.state.newExchangeRate,\r\n [fieldName]: newValue || e.target.value\r\n }\r\n });\r\n };\r\n\r\n handleStartDateDateChange = (\r\n date: MaterialUiPickersDate | null,\r\n value?: string | null\r\n ) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n newExchangeRate: {\r\n ...this.state.newExchangeRate,\r\n exchangeRateHistory: {\r\n ...this.state.newExchangeRate.exchangeRateHistory,\r\n startDate: date.startOf('day').format('YYYY-MM-DDTHH:mm:ss')\r\n }\r\n }\r\n });\r\n };\r\n\r\n handleEndDateDateChange = (date: MaterialUiPickersDate | null, value?: string | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n newExchangeRate: {\r\n ...this.state.newExchangeRate,\r\n exchangeRateHistory: {\r\n ...this.state.newExchangeRate.exchangeRateHistory,\r\n endDate: date.endOf('day').format('YYYY-MM-DDTHH:mm:ss') \r\n }\r\n }\r\n });\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n this.state.newExchangeRate.exchangeRateHistory.endDate\r\n ? true\r\n : false\r\n }\r\n helperText={\r\n this.state.newExchangeRate.exchangeRateHistory.startDate &&\r\n this.state.newExchangeRate.exchangeRateHistory.endDate &&\r\n this.state.newExchangeRate.exchangeRateHistory.startDate >\r\n this.state.newExchangeRate.exchangeRateHistory.endDate\r\n ? this.translatorService.Tranlate(\r\n 'EXCHANGE_RATE_START_DATE_ERROR',\r\n 'Data de start trebuie sa fie mai mica decat data de stop'\r\n )\r\n : ''\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {\r\n this.setState({\r\n newExchangeRate: {\r\n ...this.state.newExchangeRate,\r\n exchangeRateHistory: {\r\n ...this.state.newExchangeRate.exchangeRateHistory,\r\n rate: parseFloat(e.target.value)\r\n }\r\n } \r\n });\r\n }}\r\n validators={['required', 'minNumber:1']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu'),\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('EXCHANGE_RATE_VALUE', 'Curs valutar')}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustomCurrencyRate,\r\n style: { fontWeight: 500 }\r\n }}\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'exchangeRateHistory.rate',\r\n label: this.translatorService.Tranlate('EXCHANGE_RATE_VALUE', 'Curs valutar'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: number) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'exchangeRateHistory.currency',\r\n label: this.translatorService.Tranlate('EXCHANGE_RATE_CURRENCY', 'Moneda'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'exchangeRateHistory.startDate',\r\n label: this.translatorService.Tranlate('EXCHANGE_RATE_START_DATE', 'Data start'),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: any) => {\r\n return (\r\n \r\n \r\n
\r\n {value ? moment.utc(value)\r\n .local()\r\n .format(\"DD.MM.YYYY\") : null}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'exchangeRateHistory.endDate',\r\n label: this.translatorService.Tranlate('EXCHANGE_RATE_END_DATE', 'Data stop'),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: any) => {\r\n return (\r\n \r\n \r\n
\r\n {value ? moment(value).format(\"DD.MM.YYYY HH:mm:ss\") : null}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'exchangeRateHistory.currencyRate',\r\n label: this.translatorService.Tranlate('EXCHANGE_BNR_CURRENCY_RATE', 'Curs BNR'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'exchangeRateHistory.currencyDate',\r\n label: this.translatorService.Tranlate('EXCHANGE_BNR_CURRENCY_DATE', 'Data curs BNR'),\r\n options: {\r\n sort: false,\r\n filter: false,\r\n customBodyRender: (value: any) => {\r\n return (\r\n \r\n \r\n
\r\n {value ? moment(value).format(\"DD.MM.YYYY\") : null}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'dateCreation',\r\n label: this.translatorService.Tranlate('USER_ROLE_DATE_CREATION_HEADER', 'Data Creare'),\r\n options: {\r\n sortDirection: 'desc',\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'modifiedByUser.userName',\r\n label: this.translatorService.Tranlate('EXCHANGE_RATE_MODIFIED_BY_HEADER', 'Modificat de'),\r\n options: {\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n <>\r\n this.newExchangeRatePopup(tableMeta.rowData[0])}\r\n >\r\n \r\n \r\n this.viewHistory(e, tableMeta)}\r\n >\r\n \r\n \r\n this.deleteExchangeRate(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n }];\r\n\r\n return columns;\r\n };\r\n\r\n deleteExchangeRate = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.vehicleService.RemoveExchangeRate(id);\r\n\r\n await this.loadExchangeRatesList();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n\r\n NumberFormatCustomCurrencyRate = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={4}\r\n />\r\n );\r\n };\r\n \r\n showExchangeTimeline = (id: number) => {\r\n const exchangeRate = this.state.exchangeRates.find((item) => item.id === id)!;\r\n\r\n return exchangeRate.exchangeRatesHistory.map((exchangeRateHistory, index) => {\r\n return (\r\n
\r\n
\r\n
\r\n

\r\n {moment.utc(exchangeRateHistory.date).local().format(this.props.appState.longDateFormat)}{' '}\r\n {' (' + exchangeRateHistory.createdByUser!.email + ')'}\r\n

\r\n

\r\n {this.translatorService.Tranlate('EXCHANGE_RATE_VALUE', 'Valoare')}: {' '} \r\n {exchangeRateHistory.rate}\r\n

\r\n

\r\n {this.translatorService.Tranlate('EXCHANGE_RATE_START_DATE', 'Data start')}: {' '} \r\n {moment.utc(exchangeRateHistory.startDate).local().format(\"DD.MM.YYYY\")}\r\n

\r\n

\r\n {this.translatorService.Tranlate('EXCHANGE_RATE_END_DATE', 'Data sfarsit')}: {' '} \r\n {moment(exchangeRateHistory.endDate).format(\"DD.MM.YYYY HH:mm:ss\")}\r\n

\r\n
\r\n
\r\n );\r\n });\r\n };\r\n\r\n public renderViewHistory() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('EXCHANGE_RATE_HISTORY_MODAL_TITLE','Istoric curs valutar')} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {this.showExchangeTimeline(this.state.selectedExchangeRate!.id)}\r\n
\r\n
\r\n \r\n );\r\n }\r\n\r\n viewHistory = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n const id = tableMeta.rowData[0];\r\n this.setState({\r\n selectedExchangeRate: this.state.exchangeRates.find((item) => item.id === id)!,\r\n isHistoryDialogOpen: true\r\n })\r\n };\r\n\r\n\r\n newExchangeRatePopup = async (exchangeRateId: number | null) => {\r\n let newExchangeRate: ExchangeRate;\r\n if (exchangeRateId == null) {\r\n newExchangeRate = { ...this.state.newExchangeRate } as ExchangeRate;\r\n } else {\r\n newExchangeRate = this.state.exchangeRates.find((item) => item.id === exchangeRateId)!;\r\n }\r\n this.setState({\r\n isDialogOpen: true,\r\n newExchangeRate: newExchangeRate,\r\n newExchangeRateId: exchangeRateId\r\n });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState(\r\n { \r\n isDialogOpen: false, \r\n newExchangeRate: this.newExchangeRate,\r\n newExchangeRateId: null\r\n }\r\n );\r\n };\r\n\r\n closeHistoryDialog = async () => {\r\n this.setState(\r\n { \r\n isHistoryDialogOpen: false, \r\n selectedExchangeRate: null\r\n }\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n customToolbar: () => {\r\n return (\r\n \r\n this.newExchangeRatePopup(null)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n {this.state.isDialogOpen ? (\r\n \r\n \r\n \r\n \r\n \r\n {!this.state.newExchangeRateId ? \r\n this.translatorService.Tranlate(\r\n 'EXCHANGE_RATE_NEW_MODAL_TITLE',\r\n 'Adauga curs valutar'\r\n ) : this.translatorService.Tranlate(\r\n 'EXCHANGE_RATE_UPDATE_MODAL_TITLE',\r\n 'Actualizeaza curs valutar'\r\n )} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n {this.state.isHistoryDialogOpen ? this.renderViewHistory() : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(ExchangeRateList as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport {\r\n Box\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableMeta,\r\n MUIDataTableColumnOptions\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport NumberFormat from 'react-number-format';\r\nimport { IVehicleService } from '../../../services/Interfaces/IVehicleService';\r\nimport { AlcorErrorLog } from '../../../interfaces/Vehicle';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport moment from 'moment';\r\n\r\ninterface IAlcorErrorLogListState {\r\n alcorErrors: AlcorErrorLog[];\r\n isLoading: boolean;\r\n}\r\n\r\ntype IAlcorErrorLogListProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass AlcorErrorLogList extends React.PureComponent<\r\n IAlcorErrorLogListProps,\r\n IAlcorErrorLogListState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n alcorErrors: [],\r\n isLoading: false,\r\n selectedFilter: 0,\r\n isDialogOpen: false,\r\n } as IAlcorErrorLogListState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadAlcorErrorLogs();\r\n }\r\n );\r\n }\r\n\r\n loadAlcorErrorLogs = async () => {\r\n const alcorErrors = await this.vehicleService.GetAlcorErrorLogs();\r\n\r\n this.setState({\r\n alcorErrors: alcorErrors,\r\n isLoading: false\r\n });\r\n };\r\n\r\n \r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={0}\r\n />\r\n );\r\n };\r\n\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'invoiceRangeType',\r\n label: this.translatorService.Tranlate(\r\n 'INVOICE_RANGE_TYPE',\r\n 'Tip'\r\n ),\r\n options: {\r\n sort: true,\r\n customSort: (a: IReferential, b: IReferential) => {\r\n return a.name!.localeCompare(b.name!);\r\n },\r\n customBodyRender: (value: IReferential) => {\r\n return value.name;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'number',\r\n label: this.translatorService.Tranlate('ALCOR_ERROR_NUMBER', 'Numar'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'message',\r\n label: this.translatorService.Tranlate('ALCOR_ERROR_CAUSE', 'Cauza'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate('USERS_DATE_MODIFICATION_HEADER', 'Data Modificare'),\r\n options: {\r\n filter: false,\r\n sortDirection: 'desc',\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(AlcorErrorLogList as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport {\r\n Tooltip,\r\n Box,\r\n Button,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableMeta,\r\n MUIDataTableColumnOptions\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { RefConstants } from '../../../helpers/Constants';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport moment from 'moment';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport EditOutlinedIcon from '@material-ui/icons/EditOutlined';\r\nimport NumberFormat from 'react-number-format';\r\nimport { IVehicleService } from '../../../services/Interfaces/IVehicleService';\r\nimport { FinancialParameterInfo } from '../../../interfaces/Vehicle';\r\n\r\ninterface IFinancialParameterInfoListState {\r\n newFinancialParameterInfo: FinancialParameterInfo;\r\n financialParameters: IReferential[];\r\n financialParametersInfoList: FinancialParameterInfo[];\r\n isLoading: boolean;\r\n isDialogOpen: boolean;\r\n newFinancialParameterInfoId: number | null;\r\n}\r\n\r\ntype IFinancialParameterInfoListProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass FinancialParameterInfoList extends React.PureComponent<\r\n IFinancialParameterInfoListProps,\r\n IFinancialParameterInfoListState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n\r\n static contextType = ApplicationContext;\r\n private newFinancialParameterInfo = {\r\n id: 0,\r\n value: '',\r\n financialParameterId: null,\r\n financialParameter: null\r\n } as unknown as FinancialParameterInfo;\r\n\r\n state = {\r\n financialParameters: [],\r\n isLoading: false,\r\n selectedFilter: 0,\r\n isDialogOpen: false,\r\n newFinancialParameterInfo: this.newFinancialParameterInfo,\r\n financialParametersInfoList: [],\r\n newFinancialParameterInfoId: null\r\n } as IFinancialParameterInfoListState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadFinancialParameterInfoList();\r\n }\r\n );\r\n }\r\n\r\n loadFinancialParameterInfoList = async () => {\r\n const financialParametersInfoList = await this.vehicleService.GetFinancialParameterInfoList();\r\n const { financialParameterRef } = RefConstants;\r\n\r\n const financialParameters = await this.appReferentialService.Get(financialParameterRef!.baseUrl);\r\n\r\n\r\n this.setState({\r\n financialParameters: financialParameters,\r\n isLoading: false,\r\n financialParametersInfoList: financialParametersInfoList,\r\n newFinancialParameterInfo: { ...this.newFinancialParameterInfo }\r\n });\r\n };\r\n\r\n private handleFinancialParameterChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n newFinancialParameterInfo: {\r\n ...this.state.newFinancialParameterInfo,\r\n financialParameter: newValue,\r\n financialParameterId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n public saveFinancialParameterInfo = async () => {\r\n if (this.state.newFinancialParameterInfoId === null) {\r\n try {\r\n await this.vehicleService.AddFinancialParameterInfo(this.state.newFinancialParameterInfo);\r\n\r\n await this.loadFinancialParameterInfoList();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n } else {\r\n try {\r\n\r\n await this.vehicleService.UpdateFinancialParameterInfo(this.state.newFinancialParameterInfo);\r\n\r\n await this.loadFinancialParameterInfoList();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n \r\n \r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={0}\r\n />\r\n );\r\n };\r\n \r\n onChange =\r\n (fieldName: string, isNumber: boolean) => (e: any, newValue?: IReferential | null) => {\r\n isNumber\r\n ? this.setState({\r\n newFinancialParameterInfo: {\r\n ...this.state.newFinancialParameterInfo,\r\n [fieldName]: parseFloat(newValue || e.target.value)\r\n }\r\n })\r\n : this.setState({\r\n newFinancialParameterInfo: {\r\n ...this.state.newFinancialParameterInfo,\r\n [fieldName]: newValue || e.target.value\r\n }\r\n });\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n this.handleFinancialParameterChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n /> \r\n\r\n \r\n this.onChange('value', false)(e)\r\n }\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('FINANCIAL_PARAMETER_INFO_VALUE', 'Valoare')}\r\n />\r\n\r\n \r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'financialParameter',\r\n label: this.translatorService.Tranlate(\r\n 'FINANCIAL_PARAMETER_INFO_FINANCIAL_PARAMETER',\r\n 'Parametru financiar'\r\n ),\r\n options: {\r\n sort: true,\r\n customSort: (a: IReferential, b: IReferential) => {\r\n return a.displayName!.localeCompare(b.displayName!);\r\n },\r\n customBodyRender: (value: IReferential) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'value',\r\n label: this.translatorService.Tranlate('FINANCIAL_PARAMETER_INFO_VALUE', 'Valoare'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate('USERS_DATE_MODIFICATION_HEADER', 'Data Modificare'),\r\n options: {\r\n filter: false,\r\n sortDirection: 'desc',\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n const financialParameterInfo = this.state.financialParametersInfoList.find((item) => item.id === tableMeta.rowData[0]);\r\n\r\n return (\r\n <>\r\n this.newFinancialParameterInfoPopup(tableMeta.rowData[0])}\r\n >\r\n \r\n \r\n this.deleteFinancialParameterInfo(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n }];\r\n\r\n return columns;\r\n };\r\n\r\n deleteFinancialParameterInfo = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.vehicleService.RemoveFinancialParameterInfo(id);\r\n\r\n await this.loadFinancialParameterInfoList();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n\r\n newFinancialParameterInfoPopup = async (financialParameterInfoId: number | null) => {\r\n let newFinancialParameterInfo: FinancialParameterInfo;\r\n if (financialParameterInfoId == null) {\r\n newFinancialParameterInfo = { ...this.state.newFinancialParameterInfo } as FinancialParameterInfo;\r\n } else {\r\n newFinancialParameterInfo = this.state.financialParametersInfoList.find((item) => item.id === financialParameterInfoId)!;\r\n }\r\n this.setState({\r\n isDialogOpen: true,\r\n newFinancialParameterInfo: newFinancialParameterInfo,\r\n newFinancialParameterInfoId: financialParameterInfoId\r\n });\r\n };\r\n\r\n closeDialog = () => {\r\n this.setState(\r\n { \r\n isDialogOpen: false, \r\n newFinancialParameterInfo: this.newFinancialParameterInfo,\r\n newFinancialParameterInfoId: null\r\n }\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n customToolbar: () => {\r\n return (\r\n \r\n this.newFinancialParameterInfoPopup(null)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n {this.state.isDialogOpen ? (\r\n \r\n \r\n \r\n \r\n \r\n {!this.state.newFinancialParameterInfoId ? \r\n this.translatorService.Tranlate(\r\n 'FINANCIAL_PARAMETER_INFO_NEW_MODAL_TITLE',\r\n 'Adauga parametru financiar'\r\n ) : this.translatorService.Tranlate(\r\n 'FINANCIAL_PARAMETER_INFO_UPDATE_MODAL_TITLE',\r\n 'Actualizeaza parametru financiar'\r\n )} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(FinancialParameterInfoList as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport {\r\n Box,\r\n Button,\r\n Grid,\r\n CardContent,\r\n Card\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport NumberFormat from 'react-number-format';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { DropzoneArea } from 'material-ui-dropzone';\r\nimport { SellerData } from '../../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport { Autocomplete } from '@material-ui/lab';\r\n\r\ninterface ISellerDataListState {\r\n sellerData: SellerData;\r\n sellerDataList: SellerData[];\r\n isLoading: boolean;\r\n isDialogLoading: boolean;\r\n isDialogOpen: boolean;\r\n countryList: IReferential[];\r\n regionList: IReferential[];\r\n cityList: IReferential[];\r\n}\r\n\r\ntype ISellerDataListProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass SellerDataList extends React.PureComponent<\r\n ISellerDataListProps,\r\n ISellerDataListState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n static contextType = ApplicationContext;\r\n private sellerData = {\r\n id: 0,\r\n name: '',\r\n country: null,\r\n countryId: null,\r\n region: null,\r\n regionId: null,\r\n city: null,\r\n cityId: null,\r\n address: '',\r\n address2: '',\r\n address3: '',\r\n companyNumber: '',\r\n registryNumber: '',\r\n bank: '',\r\n bankAccount: '',\r\n postalCode: ''\r\n } as SellerData;\r\n\r\n state = {\r\n sellerData: {\r\n id: 0,\r\n name: '',\r\n country: null,\r\n countryId: null,\r\n region: null,\r\n regionId: null,\r\n city: null,\r\n cityId: null,\r\n address: '',\r\n address2: '',\r\n address3: '',\r\n companyNumber: '',\r\n registryNumber: '',\r\n bank: '',\r\n bankAccount: '',\r\n postalCode: ''\r\n } as SellerData,\r\n sellerDataList: [],\r\n isLoading: false,\r\n selectedFilter: 0,\r\n isDialogOpen: false,\r\n isDialogLoading: false,\r\n countryList: [],\r\n regionList: [],\r\n cityList: []\r\n } as ISellerDataListState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadSellerDataList();\r\n }\r\n );\r\n }\r\n\r\n loadSellerDataList = async () => {\r\n const countryRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.Country\r\n );\r\n const regionRef = Referentials.referential.find((item) => item.code === ReferentialCode.Region);\r\n const cityRef = Referentials.referential.find((item) => item.code === ReferentialCode.City);\r\n\r\n const [sellerDataList, countryList, regionList, cityList] = await Promise.all([\r\n this.organizationService.GetSellerDataList(),\r\n this.appReferentialService.Get(countryRef!.baseUrl),\r\n this.appReferentialService.Get(regionRef!.baseUrl),\r\n this.appReferentialService.Get(cityRef!.baseUrl)\r\n ]);\r\n\r\n const sellerData = sellerDataList.length > 0 ? sellerDataList[0] : this.sellerData;\r\n const image = sellerData.id === 0 ? null : await this.organizationService.GetSellerLogo(sellerData.id);\r\n\r\n this.setState({\r\n sellerDataList: sellerDataList,\r\n sellerData: image == null ? sellerData : { ...sellerData, image: new File([image], 'logo')},\r\n isLoading: false,\r\n countryList: countryList,\r\n regionList: regionList,\r\n cityList: cityList\r\n });\r\n };\r\n\r\n\r\n public saveSellerData = async () => {\r\n let sellerId = this.state.sellerData.id;\r\n try {\r\n if (this.state.sellerData.id === 0) {\r\n const sellerData = await this.organizationService.AddSellerData(this.state.sellerData);\r\n sellerId = sellerData.id;\r\n } else {\r\n await this.organizationService.UpdateSellerData(this.state.sellerData);\r\n }\r\n\r\n await this.saveImage(sellerId, this.state.sellerData.image);\r\n\r\n await this.loadSellerDataList();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n \r\n \r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n \r\n\r\n private handleTextChange = (event: React.ChangeEvent) => {\r\n let value: any;\r\n if (event.target.type === 'text') {\r\n value = event.currentTarget.value;\r\n }\r\n this.setState({\r\n sellerData: {\r\n ...this.state.sellerData,\r\n [event.target.id]: value\r\n }\r\n });\r\n };\r\n\r\n handleUploadAttachment = async (files: File[]) => {\r\n if (files.length === 0) {\r\n return;\r\n }\r\n\r\n const img = new Image();\r\n img.src = window.URL.createObjectURL(files[0]);\r\n img.onload = async () => {\r\n this.setState({\r\n sellerData: {\r\n ...this.state.sellerData,\r\n image: files![0]\r\n }\r\n }); \r\n return;\r\n };\r\n };\r\n\r\n\r\n \r\n saveImage = async (sellerId: number, image: File) => {\r\n if (sellerId === 0) {\r\n return;\r\n }\r\n\r\n if (image === null) {\r\n return;\r\n }\r\n\r\n try {\r\n await this.organizationService.AddSellerLogo(sellerId, image);\r\n\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n private handleCountryChange = (newValue: IReferential | null) => {\r\n const countryId = newValue !== null ? newValue!.id : null;\r\n this.setState({\r\n sellerData: {\r\n ...this.state.sellerData,\r\n country: newValue,\r\n countryId: countryId,\r\n region: null,\r\n regionId: null,\r\n city: null,\r\n cityId: null\r\n }\r\n });\r\n };\r\n \r\n private handleRegionChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n sellerData: {\r\n ...this.state.sellerData,\r\n region: newValue,\r\n regionId: newValue !== null ? newValue!.id : null,\r\n city: null,\r\n cityId: null\r\n }\r\n });\r\n };\r\n \r\n private handleCityChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n sellerData: {\r\n ...this.state.sellerData,\r\n city: newValue,\r\n cityId: newValue !== null ? newValue!.id : null\r\n }\r\n });\r\n };\r\n\r\n private getRegionsOptions(): IReferential[] {\r\n const filteredRegions = this.state.regionList.filter(\r\n (region) => (this.state.sellerData.countryId && region.dependencyId) && region.dependencyId === this.state.sellerData.countryId\r\n );\r\n\r\n return filteredRegions || [];\r\n }\r\n\r\n private getCitiesOptions(): IReferential[] {\r\n const filteredCities = this.state.cityList.filter(\r\n (city) => (this.state.sellerData.regionId && city.dependencyId) && city.dependencyId === this.state.sellerData.regionId\r\n );\r\n\r\n return filteredCities || [];\r\n }\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.handleCountryChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n\r\n \r\n \r\n this.handleRegionChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n this.handleCityChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.setState({\r\n sellerData: {\r\n ...this.state.sellerData,\r\n ownCapital: parseFloat(e.target.value)\r\n } \r\n });\r\n }}\r\n validators={['required', 'minNumber:1']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu'),\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'SELLER_DATA_OWN_CAPITAL',\r\n 'Capital social'\r\n ) + ' (lei)'}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {isNullOrUndefined(this.state.sellerData.image) ? (\r\n ''\r\n ) : (\r\n \"\"\r\n )}\r\n
\r\n this.handleUploadAttachment(files)}\r\n previewText=\"\"\r\n showAlerts={false}\r\n acceptedFiles={['image/*']}\r\n />\r\n
\r\n \r\n
\r\n
\r\n\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n \r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderAddForm() : null}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(SellerDataList as any));\r\n","import { AppContext } from '../../context/Contexts';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { MavoVehicle, MavoVehicleStatusHistory, Vehicle, VehicleStatusHistory } from '../../interfaces/Vehicle';\r\nimport { AppThunkAction } from '.././';\r\nimport * as ActionTypes from './ActionTypes';\r\n\r\ninterface SetMavoVehicleAction {\r\n type: typeof ActionTypes.MAVO_VEHICLE_SET_VEHICLE;\r\n mavoVehicle: MavoVehicle | null;\r\n}\r\ninterface SetMavoVehicleStatusAction {\r\n type: typeof ActionTypes.MAVO_VEHICLE_SET_VEHICLE_STATUS;\r\n status: MavoVehicleStatusHistory;\r\n}\r\n\r\nexport type MavoVehicleAction = SetMavoVehicleAction | SetMavoVehicleStatusAction;\r\n\r\nexport const MavoVehicleActionCreators = {\r\n setMavoVehicle:\r\n (vehicleId: number): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n const vehicleService = (context as AppContext).vehicleService;\r\n const vehicle = await vehicleService.GetMavoVehicle(vehicleId);\r\n\r\n dispatch({ type: ActionTypes.MAVO_VEHICLE_SET_VEHICLE, mavoVehicle: vehicle as unknown as MavoVehicle });\r\n },\r\n\r\n setMavoVehicleObject:\r\n (vehicle: MavoVehicle | null): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({ type: ActionTypes.MAVO_VEHICLE_SET_VEHICLE, mavoVehicle: vehicle as unknown as MavoVehicle });\r\n },\r\n\r\n changeMavoVehicleStatus:\r\n (statusHis: MavoVehicleStatusHistory): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({ type: ActionTypes.MAVO_VEHICLE_SET_VEHICLE_STATUS, status: statusHis });\r\n }\r\n};\r\n","import React, { PureComponent } from 'react';\r\nimport { Button, Dialog, DialogContent, DialogTitle, FormControlLabel, Grid, IconButton, Radio, RadioGroup, Typography } from \"@material-ui/core\";\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { MavoVehicleOrder } from '../../interfaces/Vehicle';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { AppState } from '../../store';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { MavoPersonTypeEnum } from '../../helpers/Constants';\r\nimport NumberFormat from 'react-number-format';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport _ from 'lodash';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { CNP } from 'romanian-personal-identity-code-validator';\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\ninterface Props extends ProviderContext {\r\n appState: AppState;\r\n isDialogOpenOrder: boolean;\r\n closeDialogOrder: () => void;\r\n orderForm: MavoVehicleOrder;\r\n handleChangeOrder: (fieldName: string, isNumber: boolean) => (e: any, newValue?: IReferential | null) => void;\r\n handleUserChange: (user: AppUser | null) => void;\r\n handleOrderDateChange: (date: MaterialUiPickersDate | null,value?: string | null) => void;\r\n vehicleId: number | undefined;\r\n countryList: IReferential[];\r\n regionList: IReferential[];\r\n cityList: IReferential[];\r\n handleCountryChange: (newValue: IReferential | null) => void;\r\n handleRegionChange: (newValue: IReferential | null) => void;\r\n handleCityChange: (newValue: IReferential | null) => void;\r\n}\r\n\r\ninterface State {\r\n users: AppUser[];\r\n executing: boolean;\r\n orderDateError: string;\r\n isLoading: boolean;\r\n isLoadingUsers: boolean;\r\n}\r\n\r\nclass MavoVehicleOrderDialog extends PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n private vehicleService!: IVehicleService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n }\r\n\r\n state = {\r\n users: [] as AppUser[],\r\n executing: false,\r\n orderDateError: '',\r\n isLoading: false,\r\n isLoadingUsers: false\r\n }\r\n \r\n public async componentDidMount() {\r\n ValidatorForm.addValidationRule('isValidCNP', (value) => {\r\n if (!value) {\r\n return true;\r\n }\r\n\r\n const cnp = new CNP(value);\r\n\r\n if (!cnp.isValid()) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n this.setState({ isLoadingUsers: true });\r\n const users = await this.appUserService.GetMavoUserAppUsers();\r\n this.setState({ users: users.users, isLoadingUsers: false });\r\n }\r\n \r\n handleSaveOrder = async () => {\r\n if (this.props.orderForm.orderDate == null) {\r\n return;\r\n }\r\n\r\n const request = this.props.orderForm.personTypeId == MavoPersonTypeEnum.PF ? {\r\n mavoVehicleId: this.props.orderForm.mavoVehicleId,\r\n personTypeId: this.props.orderForm.personTypeId,\r\n name: this.props.orderForm.firstName + ' ' + this.props.orderForm.lastName,\r\n cnp: this.props.orderForm.cnp,\r\n adress: this.props.orderForm.adress,\r\n orderDate: this.props.orderForm.orderDate,\r\n price: this.props.orderForm.price,\r\n countryId: this.props.orderForm.countryId,\r\n regionId: this.props.orderForm.regionId,\r\n cityId: this.props.orderForm.cityId\r\n } as MavoVehicleOrder : \r\n {\r\n mavoVehicleId: this.props.orderForm.mavoVehicleId,\r\n personTypeId: this.props.orderForm.personTypeId,\r\n price: this.props.orderForm.price,\r\n orderDate: this.props.orderForm.orderDate,\r\n userId: this.props.orderForm.userId,\r\n user: this.props.orderForm.user\r\n } as MavoVehicleOrder;\r\n\r\n try {\r\n this.setState({ executing: true, isLoading: true });\r\n const response = await this.vehicleService.AddMavoVehicleOrder(request);\r\n if (response.orderDate) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ORDER_SUCCESS', 'Comanda a fost salvata cu succes'), { variant: 'success' });\r\n } else {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ORDER_ERROR', 'Comanda nu a putut fi salvata'), { variant: 'error' });\r\n }\r\n this.setState({ executing: false, isLoading: false });\r\n this.props.closeDialogOrder();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ORDER_ERROR', 'Comanda nu a putut fi salvata'), { variant: 'error' });\r\n this.setState({ executing: false, isLoading: false });\r\n }\r\n }\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={0}\r\n />\r\n );\r\n };\r\n\r\n \r\n validateDates = (orderDate: string | null): void => {\r\n /*\r\n Validate end date\r\n */\r\n let orderDateError = '';\r\n if (!orderDate) {\r\n orderDateError = this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu');\r\n }\r\n\r\n this.setState({\r\n orderDateError: orderDateError\r\n });\r\n\r\n };\r\n\r\n NumberDecimalFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n\r\n private getRegionsOptions(): IReferential[] {\r\n const filteredRegions = this.props.regionList.filter(\r\n (region) => (this.props.orderForm.countryId && region.dependencyId) && region.dependencyId === this.props.orderForm.countryId\r\n );\r\n\r\n return filteredRegions || [];\r\n }\r\n\r\n private getCitiesOptions(): IReferential[] {\r\n const filteredCities = this.props.cityList.filter(\r\n (city) => (this.props.orderForm.regionId && city.dependencyId) && city.dependencyId === this.props.orderForm.regionId\r\n );\r\n\r\n return filteredCities || [];\r\n }\r\n\r\n public renderOrderForm = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n this.props.handleChangeOrder('price', true)(e)\r\n }\r\n placeholder={this.translatorService.Tranlate(\r\n 'CASE_OTHER_SERVICE_FORM_SELLING_OFFER_DIALOG',\r\n 'Pret vanzare'\r\n )}\r\n validators={['required', 'minNumber:1']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n ),\r\n this.translatorService.Tranlate('PRICE_INVALID', 'Pretul nu este valid')\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'CASE_OTHER_SERVICE_FORM_SELLING_OFFER_DIALOG',\r\n 'Pret vanzare'\r\n )}\r\n InputProps={{\r\n inputComponent: this.NumberDecimalFormatCustom\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n this.props.handleChangeOrder('personTypeId', true)(e)\r\n }\r\n className=\"m-2 pr-3\"\r\n >\r\n }\r\n value={MavoPersonTypeEnum.PF}\r\n label={this.translatorService.Tranlate('PERSON_TYPE_NATURAL', 'Persoana fizica')}\r\n />\r\n }\r\n value={MavoPersonTypeEnum.PJ}\r\n label={this.translatorService.Tranlate('PERSON_TYPE_LEGAL', 'Persoana juridica')}\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n this.props.handleOrderDateChange(e);\r\n if (e === null || !e.isValid) {\r\n return;\r\n }\r\n this.setState({\r\n orderDateError: ''\r\n });\r\n }}\r\n autoOk={true}\r\n minDate={new Date()}\r\n required={true}\r\n error={this.state.orderDateError ? true : false}\r\n helperText={\r\n this.state.orderDateError\r\n }\r\n />\r\n \r\n \r\n {this.props.orderForm.personTypeId && this.props.orderForm.personTypeId === MavoPersonTypeEnum.PJ ? (\r\n \r\n this.props.handleUserChange(newValue)}\r\n getOptionLabel={(option: AppUser) => (option.userName || '') + ' (' + (option.organization!.name || '') + ')'}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n this.props.handleChangeOrder('lastName', false)(e)\r\n } \r\n placeholder={this.translatorService.Tranlate(\r\n 'EDIT_USER_LAST_NAME_FIELD',\r\n 'Nume'\r\n )}\r\n validators={['required']}\r\n errorMessages={\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'EDIT_USER_LAST_NAME_FIELD',\r\n 'Nume'\r\n )}\r\n />\r\n \r\n \r\n \r\n this.props.handleChangeOrder('firstName', false)(e)\r\n } \r\n placeholder={this.translatorService.Tranlate(\r\n 'USERS_FIRST_NAME_HEADER',\r\n 'Prenume'\r\n )}\r\n validators={['required']}\r\n errorMessages={\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'USERS_FIRST_NAME_HEADER',\r\n 'Prenume'\r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n this.props.handleCountryChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n disabled={true}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n this.props.handleRegionChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n this.props.handleCityChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n this.props.handleChangeOrder('adress', false)(e)\r\n } \r\n placeholder={this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_ADDRESS_LABEL',\r\n 'Adresa'\r\n )}\r\n validators={['required']}\r\n errorMessages={\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'EDIT_ORGANIZATION_ADDRESS_LABEL',\r\n 'Adresa'\r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n this.props.handleChangeOrder('cnp', false)(e)\r\n } \r\n placeholder={this.translatorService.Tranlate(\r\n 'FRM_EVENT_DATA_CNP',\r\n 'CNP'\r\n )}\r\n validators={['isValidCNP', 'required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('CLIENT_DATA_FORM_VALIDATOR_CNP', 'CNP invalid'),\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'FRM_EVENT_DATA_CNP',\r\n 'CNP'\r\n )}\r\n />\r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n };\r\n\r\n renderOrderContent = () => {\r\n return (\r\n \r\n {this.renderOrderForm()}\r\n
\r\n \r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate('MAVO_VEHICLE_IMPORT_CLOSE_BTN', 'Renunta')}\r\n \r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_PLACE_ORDER',\r\n 'Lansare comanda'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoadingUsers ? this.renderOrderContent() : null}\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withSnackbar(MavoVehicleOrderDialog);","import React from 'react';\r\nimport { Button, Dialog, DialogContent, DialogTitle, Grid, IconButton, Typography } from \"@material-ui/core\";\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { MavoVehicleAuction } from '../../interfaces/Vehicle';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { AppState } from '../../store';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport _ from 'lodash';\r\nimport NumberFormat from 'react-number-format';\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\ninterface MavoVehicleAuctionDialogProps extends ProviderContext {\r\n appState: AppState;\r\n isDialogOpenAuction: boolean;\r\n closeDialogAuction: () => void;\r\n auctionForm: MavoVehicleAuction;\r\n handleChangeAuction: (fieldName: string, isNumber: boolean) => (e: any, newValue?: IReferential | null) => void;\r\n handleStartDateChange: (date: MaterialUiPickersDate | null,value?: string | null) => void;\r\n handleEndDateChange: (date: MaterialUiPickersDate | null,value?: string | null) => void;\r\n vehicleId: number | undefined;\r\n}\r\n\r\ninterface IMavoVehicleAuctionDialogtate {\r\n executing: boolean;\r\n isLoading: boolean;\r\n}\r\n\r\nclass MavoVehicleAuctionDialog extends React.Component<\r\n MavoVehicleAuctionDialogProps,\r\n IMavoVehicleAuctionDialogtate\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n constructor(props: MavoVehicleAuctionDialogProps) {\r\n super(props);\r\n this.state = {\r\n executing: false,\r\n isLoading: false\r\n };\r\n }\r\n \r\n\r\n handleSaveAuction = async () => {\r\n if (this.props.auctionForm.endDate == null) {\r\n return;\r\n }\r\n\r\n if (this.checkIfEndDateIsBeforeStartDate()) {\r\n return;\r\n }\r\n\r\n const request = _.cloneDeep({\r\n ...this.props.auctionForm,\r\n endDate: this.props.auctionForm.endDate + ' 4 PM'\r\n });\r\n\r\n request.currentPrice = 0;\r\n try {\r\n this.setState({ executing: true, isLoading: true });\r\n const response = await this.vehicleService.AddMavoVehicleAuction(request);\r\n if (response.success == true) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('AUCTION_SUCCESS', 'Licitatia a fost adaugata cu succes'), { variant: 'success' });\r\n } else {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('AUCTION_ERROR', 'A aparut o eroare la adaugarea licitatiei'), { variant: 'error' });\r\n }\r\n this.setState({ executing: false, isLoading: false });\r\n\r\n this.props.closeDialogAuction();\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('AUCTION_ERROR', 'A aparut o eroare la adaugarea licitatiei'), { variant: 'error' });\r\n this.setState({ executing: false, isLoading: false});\r\n }\r\n\r\n }\r\n\r\n checkIfEndDateIsBeforeStartDate = () => {\r\n if (this.props.auctionForm?.endDate && this.props.auctionForm?.startDate) {\r\n return moment(this.props.auctionForm?.endDate).isBefore(moment(this.props.auctionForm?.startDate));\r\n }\r\n return false;\r\n }\r\n\r\n NumberDecimalFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n\r\n public renderAuctionForm = () => {\r\n const maxNumberOfCharactersObservations = 300;\r\n return (\r\n
\r\n \r\n \r\n {\r\n this.props.handleChangeAuction('startPrice', true)(e);\r\n }}\r\n placeholder={this.translatorService.Tranlate(\r\n 'MAVO_AUCTION_PRICE',\r\n 'Pret licitatie (EUR)'\r\n )}\r\n validators={['required', 'minNumber:1']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n ),\r\n this.translatorService.Tranlate('PRICE_INVALID', 'Pretul nu este valid')\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'MAVO_AUCTION_PRICE',\r\n 'Pret licitatie (EUR)'\r\n )}\r\n InputProps={{\r\n inputComponent: this.NumberDecimalFormatCustom\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.props.handleChangeAuction('minDifference', true)(e)\r\n }\r\n placeholder={this.translatorService.Tranlate(\r\n 'MAVO_AUCTION_PRICE_BID_DIFF',\r\n 'Diferenta minima intre pret si valoare licitata (EUR)'\r\n )}\r\n validators={['required', 'minNumber:1']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n ),\r\n this.translatorService.Tranlate('MAVO_AUCTION_INVALID_PRICE_BID_DIFF', 'Diferenta minima nu este valida')\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'MAVO_AUCTION_PRICE_BID_DIFF',\r\n 'Diferenta minima intre pret si valoare licitata (EUR)'\r\n )}\r\n InputProps={{\r\n inputComponent: this.NumberDecimalFormatCustom\r\n }}\r\n />\r\n \r\n \r\n \r\n this.props.handleChangeAuction('details', false)(e)\r\n } \r\n label={this.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_AUCTION_DETAILS',\r\n 'Detalii'\r\n )}\r\n validators={[`maxStringLength: ${maxNumberOfCharactersObservations}`]}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharactersObservations\r\n ]}\r\n multiline\r\n variant=\"outlined\"\r\n rows={6}\r\n />\r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n public renderAuctionContent() {\r\n return (\r\n \r\n {this.renderAuctionForm()}\r\n
\r\n \r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate('MAVO_VEHICLE_IMPORT_CLOSE_BTN', 'Renunta')}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_DISPOSITION_IN_THE_AUCTION',\r\n 'Dispunere in licitatie'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAuctionContent()}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withSnackbar(MavoVehicleAuctionDialog);\r\n","import * as React from 'react';\r\nimport { ApplicationState, AppState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Card,\r\n Grid,\r\n Tab,\r\n Tabs,\r\n AppBar,\r\n TextField,\r\n Button,\r\n Checkbox,\r\n FormControlLabel,\r\n Dialog,\r\n DialogTitle,\r\n IconButton,\r\n DialogContent,\r\n Paper,\r\n DialogActions,\r\n Modal,\r\n DialogContentText,\r\n Box,\r\n CircularProgress\r\n} from '@material-ui/core';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n ImportMavoVehiclesRequestDto,\r\n ImportVehicleAttachment,\r\n MavoVehicle,\r\n MavoVehicleFilters,\r\n MavoVehicleImportedDto,\r\n MavoVehicleList,\r\n Provenance,\r\n MavoVehicleAuction,\r\n MavoVehicleOrder\r\n} from '../../interfaces/Vehicle';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Loader from '../Loader';\r\nimport noop from 'lodash/noop';\r\nimport _ from 'lodash';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport MaterialTable from 'material-table';\r\nimport { getLocalization, MaterialTableIcons } from '../_shared/TableSettings';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { CountryCodeEnum, disabledNewMavoVehicleStatuses, MavoPersonTypeEnum, MavoVehicleProvenanceType, MavoVehicleStatusCodeEnum, ReferentialCode } from '../../helpers/Constants';\r\nimport { MavoVehicleActionCreators } from '../../store/actions/MavoVehicle';\r\nimport { MavoVehicleState } from '../../store/reducers/MavoVehicle';\r\nimport MavoVehicleOrderDialog from './MavoVehicleOrderDialog';\r\nimport MavoVehicleAuctionDialog from './MavoVehicleAuctionDialog';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport FileSaver from 'file-saver';\r\nimport {MuiThemeProvider, createMuiTheme } from '@material-ui/core';\r\nimport Referentials from '../../helpers/Referentials.json';\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\ntype MavoVehiclesProps = {\r\n appState: AppState;\r\n mavoVehicleState: MavoVehicleState;\r\n} &\r\n typeof MavoVehicleActionCreators &\r\n ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface IMavoVehiclesState {\r\n vehiclesList: MavoVehicleList;\r\n makeEntities: IReferential[];\r\n selectedMakeEntities: IReferential[];\r\n modelEntities: IReferential[];\r\n selectedModelEntities: IReferential[];\r\n statusEntities: IReferential[];\r\n selectedStatusEntities: IReferential[];\r\n provenanceEntities: Provenance[];\r\n selectedProvenanceEntities: Provenance[];\r\n selectedStartDate: Date | null;\r\n selectedEndDate: Date | null;\r\n selectedTab: number;\r\n isLoading: boolean;\r\n isLoadingVehicles: boolean;\r\n count: number;\r\n page: number;\r\n pageSize: number;\r\n vehicleImportDialogOpenend: boolean;\r\n isLoadingDialog: boolean;\r\n vin: string;\r\n isDialogOpen: boolean;\r\n isDialogOpenAuction: boolean,\r\n isDialogOpenOrder: boolean,\r\n isLoadingImportVehicles: boolean;\r\n attachments: ImportVehicleAttachment[];\r\n importedVehicles: MavoVehicleImportedDto[];\r\n isOpen: boolean;\r\n dialogVisible: boolean;\r\n selectedVehicle: MavoVehicle | null;\r\n auctionForm: MavoVehicleAuction;\r\n orderForm: MavoVehicleOrder;\r\n executing: boolean;\r\n isLoadingExport: boolean;\r\n isDeleteLoading: boolean;\r\n countryList: IReferential[];\r\n regionList: IReferential[];\r\n cityList: IReferential[];\r\n}\r\n\r\nclass MavoVehicles extends React.PureComponent {\r\n private cbContext!: AppContext;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n vehiclesList: {} as MavoVehicleList,\r\n makeEntities: [],\r\n selectedMakeEntities: [],\r\n modelEntities: [],\r\n selectedModelEntities: [],\r\n statusEntities: [],\r\n selectedStatusEntities: [],\r\n provenanceEntities: [],\r\n selectedProvenanceEntities: [],\r\n selectedTab: 0,\r\n isLoading: false,\r\n isLoadingVehicles: false,\r\n count: 1,\r\n page: 0,\r\n pageSize: 10,\r\n vehicleImportDialogOpenend: false,\r\n isCarSoldDialogOpen: false,\r\n vehiclesCaseList: [],\r\n salesWokflowForm: null,\r\n paramList: [],\r\n isLoadingDialog: false,\r\n vin: '',\r\n selectedStartDate: null,\r\n selectedEndDate: null,\r\n isDialogOpen: false,\r\n isDialogOpenAuction: false,\r\n isDialogOpenOrder: false,\r\n isLoadingImportVehicles: false,\r\n attachments: [] as ImportVehicleAttachment[],\r\n importedVehicles: [] as MavoVehicleImportedDto[],\r\n isOpen: false,\r\n dialogVisible: false,\r\n selectedVehicle: null,\r\n auctionForm: {\r\n id: 0,\r\n currentPrice: 0,\r\n } as MavoVehicleAuction,\r\n orderForm: {\r\n personTypeId: MavoPersonTypeEnum.PF,\r\n countryId: null,\r\n country: null,\r\n regionId: null,\r\n region: null,\r\n cityId: null,\r\n city: null\r\n } as MavoVehicleOrder,\r\n executing: false,\r\n isLoadingExport: false,\r\n isDeleteLoading: false,\r\n countryList: [],\r\n regionList: [],\r\n cityList: []\r\n } as IMavoVehiclesState;\r\n\r\n public async componentDidMount() {\r\n const countryRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.Country\r\n );\r\n const regionRef = Referentials.referential.find((item) => item.code === ReferentialCode.Region);\r\n const cityRef = Referentials.referential.find((item) => item.code === ReferentialCode.City);\r\n \r\n const mavoVehiclesFilters = {\r\n makeIds: [],\r\n modelIds: [],\r\n statusIds: [],\r\n provenanceIds: [],\r\n dateFilterStartDate: null,\r\n dateFilterEndDate: null,\r\n page: this.state.page + 1,\r\n pageSize: this.state.pageSize,\r\n vin: ''\r\n } as MavoVehicleFilters;\r\n\r\n this.setState({\r\n isLoading: true\r\n });\r\n\r\n const [vehicles, countryList, regionList, cityList] = await Promise.all([\r\n this.cbContext.vehicleService.GetMavoVehicles(mavoVehiclesFilters),\r\n this.cbContext.referentialService.Get(countryRef!.baseUrl),\r\n this.cbContext.referentialService.Get(regionRef!.baseUrl),\r\n this.cbContext.referentialService.Get(cityRef!.baseUrl),\r\n ]);\r\n\r\n this.setState(\r\n {\r\n vehiclesList: vehicles,\r\n count: vehicles.total,\r\n page: vehicles.page - 1,\r\n countryList: countryList,\r\n regionList: regionList,\r\n cityList: cityList\r\n },\r\n async () => {\r\n await this.reloadFilters();\r\n }\r\n );\r\n }\r\n\r\n isInternal = (): boolean | null => {\r\n if (this.state.selectedTab === 0) {\r\n return null;\r\n }\r\n if (this.state.selectedTab === 1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n loadVehicles = async (page: number, rowsPerPage: number) => {\r\n this.setState({\r\n isLoadingVehicles: true,\r\n selectedVehicle: null\r\n });\r\n\r\n const mavoVehiclesFilters = {\r\n makeIds: this.state.selectedMakeEntities.map((item) => item.id),\r\n modelIds: this.state.selectedModelEntities.map((item) => item.id),\r\n statusIds: this.state.selectedStatusEntities.map((item) => item.id),\r\n provenanceIds: this.state.selectedProvenanceEntities.map((item) => item.id),\r\n dateFilterStartDate: this.state.selectedStartDate\r\n ? new Date(this.state.selectedStartDate.setHours(0, 0, 0, 0))\r\n : null,\r\n dateFilterEndDate: this.state.selectedEndDate\r\n ? new Date(this.state.selectedEndDate.setHours(23, 59, 59, 999))\r\n : null,\r\n page: page + 1,\r\n pageSize: rowsPerPage,\r\n vin: this.state.vin\r\n } as MavoVehicleFilters;\r\n\r\n const vehicleList = await this.cbContext.vehicleService.GetMavoVehicles(mavoVehiclesFilters);\r\n this.setState({\r\n vehiclesList: vehicleList,\r\n page: vehicleList.page - 1,\r\n pageSize: rowsPerPage,\r\n count: vehicleList.total,\r\n isLoadingVehicles: false\r\n });\r\n };\r\n\r\n reloadFilters = async () => {\r\n const filters = await this.cbContext.vehicleService.GetMavoVehiclesFilters();\r\n this.setState({\r\n makeEntities: filters.makeList,\r\n modelEntities: filters.modelList,\r\n statusEntities: filters.vehicleStatuses,\r\n provenanceEntities: filters.provenanceList,\r\n isLoading: false\r\n });\r\n };\r\n\r\n\r\n makeSelectedVehicle = (isSelected: boolean, id: number) => {\r\n const vehicles = _.cloneDeep(this.state.vehiclesList.vehicles);\r\n const vehicle = vehicles.find((item) => item.id === id);\r\n if (vehicle) {\r\n vehicle.isSelected = isSelected;\r\n }\r\n\r\n if (isSelected) {\r\n vehicles.forEach((item) => {\r\n if (item.id !== id) {\r\n item.isSelected = false;\r\n } \r\n });\r\n }\r\n this.setState({\r\n vehiclesList: {\r\n ...this.state.vehiclesList,\r\n vehicles: vehicles\r\n },\r\n selectedVehicle: isSelected ? (vehicle ? vehicle : null): null\r\n });\r\n }\r\n\r\n getMuiTheme = () => createMuiTheme({\r\n overrides: {\r\n MuiTableCell: {\r\n head: {\r\n paddingLeft: \"2px\",\r\n paddingRight: \"2px\",\r\n paddingTop: \"2px\",\r\n paddingBottom: \"2px\"\r\n },\r\n },\r\n MUIDataTableBodyCell: {\r\n stackedCommon: {\r\n paddingLeft: \"2px\",\r\n paddingRight: \"2px\",\r\n paddingTop: \"0px\",\r\n paddingBottom: \"0px\",\r\n height: \"40px !important\"\r\n }\r\n },\r\n MuiCheckbox: {\r\n root: {\r\n padding: \"0px\", // Adjust the padding to make the checkbox smaller\r\n },\r\n colorSecondary: {\r\n '&.Mui-checked': {\r\n color: \"#3d4977 !important\",\r\n '&:hover': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.03) !important'\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.03) !important'\r\n }\r\n }\r\n }\r\n } as any\r\n });\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'id',\r\n label: ' ',\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const vehicle = this.state.vehiclesList.vehicles.find((item) => item.id === tableMeta.rowData[0]);\r\n return (\r\n \r\n \r\n
\r\n {\r\n //vehicle!.isSelected = e.target.checked;\r\n this.makeSelectedVehicle(e.target.checked, vehicle!.id);\r\n }}\r\n >\r\n }\r\n label=''\r\n />\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'vin',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_VIN_CODE', 'VIN'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'make.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MAKE', 'Marca'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'model.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MODEL', 'Model'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'fabricationYear',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_FABRICATION_YEAR', 'AnFab'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'ttcEvaluationEurPrice',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_EVALUATION_PRICE', 'Pret evaluare'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'fuelType.displayName',\r\n label: this.cbContext.translatorService.Tranlate('CAR_DETAILS_FUEL_TYPE', 'Combustibil'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'nirNumber',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_NIR_NUMBER', 'Nr NIR'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'nirDate',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_NIR_DATE',\r\n 'Data NIR'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any) => {\r\n return (\r\n \r\n \r\n
\r\n {value\r\n ? moment\r\n .utc(value)\r\n .local()\r\n .format(this.props.appState.dateFormat)\r\n : null}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'dateCreation',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_IMPORTED_DATE', 'Data import'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any) => {\r\n return (\r\n \r\n \r\n
\r\n {value\r\n ? moment\r\n .utc(value)\r\n .local()\r\n .format(this.props.appState.dateFormat)\r\n : null}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'currentStatus.status.displayName',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_STATE', 'Stare'),\r\n options: {\r\n sort: false\r\n }\r\n }, \r\n {\r\n name: 'provenance.type',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MENU_NOMENCLATURES_TAB_PROVENANCE',\r\n 'Provenienta'\r\n ),\r\n options: {\r\n sort: false\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n sortFunction = (a: any, b: any) => {\r\n return a.order - b.order;\r\n };\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState(\r\n {\r\n selectedTab: newValue,\r\n page: 0\r\n },\r\n async () => await this.loadVehicles(0, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleMakeEntitiesChange = (newValue: any[]) => {\r\n const selectedModels = [...this.state.selectedModelEntities];\r\n const selectedMakeIds = newValue.map(({ id }) => id);\r\n\r\n const models = selectedModels.filter(({ dependencyId }) =>\r\n selectedMakeIds.includes(dependencyId)\r\n );\r\n\r\n this.setState(\r\n {\r\n selectedMakeEntities: newValue,\r\n selectedModelEntities: models\r\n }\r\n );\r\n };\r\n\r\n handleModelEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedModelEntities: newValue\r\n }\r\n );\r\n };\r\n\r\n handleStatusEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedStatusEntities: newValue\r\n }\r\n );\r\n };\r\n\r\n handleProvenanceEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedProvenanceEntities: newValue\r\n }\r\n );\r\n };\r\n\r\n handleStartDateChange = async (date: MaterialUiPickersDate | null, value?: string | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState(\r\n {\r\n selectedStartDate: date!.toDate(),\r\n isLoading: false\r\n }\r\n );\r\n };\r\n\r\n handleEndDateChange = async (date: MaterialUiPickersDate | null, value?: string | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n selectedEndDate: date!.toDate(),\r\n isLoading: false\r\n }\r\n );\r\n };\r\n\r\n handleImportDialogOpen = () => {\r\n this.setState({\r\n isDialogOpen: true\r\n });\r\n };\r\n\r\n handleImportDialogClose = () => {\r\n this.setState({\r\n isDialogOpen: false\r\n }, async () => {\r\n await this.loadVehicles(this.state.page, this.state.pageSize);\r\n });\r\n };\r\n\r\n // Check if vehicle is valid for specific actions: Order, Auction\r\n isVehicleValid = (vehicle: MavoVehicle, action: string): boolean => {\r\n if (!vehicle.provenance) {\r\n return false;\r\n }\r\n if (vehicle.provenance!.type !== MavoVehicleProvenanceType.RCI && (!vehicle.nirDate || !vehicle.nirNumber)) {\r\n return false;\r\n }\r\n \r\n if (vehicle.provenance!.type === MavoVehicleProvenanceType.RCI && vehicle.nirNumber) {\r\n return false;\r\n }\r\n \r\n if (disabledNewMavoVehicleStatuses.includes(String(vehicle.currentStatus.status!.code))) {\r\n return false;\r\n }\r\n \r\n if (action === 'auction' && vehicle.isReserved) {\r\n return false;\r\n }\r\n \r\n return true;\r\n }\r\n\r\n handleDialogOpen = (action: string) => {\r\n if (!this.state.selectedVehicle) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('PLEASE_SELECT_VEHICLE', 'Va rugam sa selectati un vehicul!'), {\r\n variant: 'warning'\r\n });\r\n\r\n return false;\r\n }\r\n\r\n if (!this.isVehicleValid(this.state.selectedVehicle, action)) {\r\n switch (action) {\r\n case 'auction':\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('VEHICLE_NOT_VALID_FOR_AUCTION', 'Vehiculul nu este valid pentru licitatie!'), {\r\n variant: 'warning',\r\n autoHideDuration: 5000,\r\n style: { whiteSpace: 'pre-line' }\r\n });\r\n break;\r\n case 'order':\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('VEHICLE_NOT_VALID_FOR_ORDER', 'Vehiculul nu este valid pentru comanda!'), {\r\n variant: 'warning',\r\n autoHideDuration: 5000,\r\n style: { whiteSpace: 'pre-line' }\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return false;\r\n }\r\n \r\n return true;\r\n }\r\n\r\n handleStockDialog = () => {\r\n if (this.state.selectedVehicle) {\r\n this.props.setMavoVehicleObject(null);\r\n this.props.history.push('/mavoVehicleStock/' + this.state.selectedVehicle.id);\r\n\r\n } else {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('PLEASE_SELECT_VEHICLE', 'Va rugam sa selectati un vehicul!'), {\r\n variant: 'warning'\r\n });\r\n }\r\n };\r\n\r\n handleDeleteDialog = () => {\r\n if (!this.state.selectedVehicle) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('PLEASE_SELECT_VEHICLE', 'Va rugam sa selectati un vehicul!'), {\r\n variant: 'warning'\r\n });\r\n\r\n return;\r\n }\r\n\r\n this.setState({\r\n isOpen: true,\r\n dialogVisible: true\r\n });\r\n }\r\n\r\n handleDeleteVehicle = async () => {\r\n if (!this.state.selectedVehicle) {\r\n return;\r\n }\r\n\r\n try {\r\n const mavoVehicleId = this.state.selectedVehicle!.id;\r\n //Indisponibil\r\n if (this.state.selectedVehicle.currentStatus.status!.code != MavoVehicleStatusCodeEnum.INDISPONIBIL) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG_DELETE_MAVO_VEHICLE', 'Se pot sterge doar masini in stare indisponibila!'), {\r\n variant: 'warning'\r\n });\r\n\r\n this.handleCloseConfirmationDialog();\r\n\r\n return;\r\n }\r\n\r\n this.setState({ isDeleteLoading: true });\r\n\r\n await this.cbContext.vehicleService.DeleteMavoVehicle(mavoVehicleId);\r\n\r\n const vehicles = [...this.state.vehiclesList.vehicles];\r\n const index = vehicles.findIndex((item) => item.id === mavoVehicleId);\r\n vehicles.splice(index, 1);\r\n\r\n this.setState({\r\n vehiclesList: {\r\n ...this.state.vehiclesList,\r\n vehicles: vehicles\r\n }\r\n }, () => {\r\n this.handleCloseConfirmationDialog();\r\n });\r\n\r\n this.setState({ isDeleteLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.setState({ isDeleteLoading: false });\r\n \r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n \r\n handleExportMavoVehicles = async () => {\r\n try {\r\n this.setState({\r\n isLoadingExport: true\r\n });\r\n\r\n const mavoVehiclesFilters = {\r\n makeIds: this.state.selectedMakeEntities.map((item) => item.id),\r\n modelIds: this.state.selectedModelEntities.map((item) => item.id),\r\n statusIds: this.state.selectedStatusEntities.map((item) => item.id),\r\n provenanceIds: this.state.selectedProvenanceEntities.map((item) => item.id),\r\n dateFilterStartDate: this.state.selectedStartDate\r\n ? new Date(this.state.selectedStartDate.setHours(0, 0, 0, 0))\r\n : null,\r\n dateFilterEndDate: this.state.selectedEndDate\r\n ? new Date(this.state.selectedEndDate.setHours(23, 59, 59, 999))\r\n : null,\r\n vin: this.state.vin\r\n } as MavoVehicleFilters;\r\n\r\n const fileBlob = await this.cbContext.vehicleService.ExportMavoVehicles(mavoVehiclesFilters);\r\n FileSaver.saveAs(fileBlob, 'Evidenta vehicule' + '.xlsx');\r\n\r\n this.setState({\r\n isLoadingExport: false\r\n });\r\n \r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (err: any) {\r\n this.setState({\r\n isLoadingExport: false\r\n });\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n \r\n\r\n renderMavoVehicleButtons() {\r\n return (\r\n
\r\n
\r\n \r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_IMPORT_VEHICLES',\r\n 'Import vehicule'\r\n )}\r\n \r\n
\r\n
\r\n {\r\n this.props.setMavoVehicleObject(null);\r\n this.props.history.push('/mavoVehicle/new');\r\n }}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_ADD_NEW',\r\n 'Noua inregistrare'\r\n )}\r\n \r\n
\r\n
\r\n {this.handleStockDialog()}}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_MODIFIED_STOCK_DATA',\r\n 'Editare/Vizualizare date stoc'\r\n )}\r\n \r\n
\r\n
\r\n {this.handleDeleteDialog()}}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_DELETE_VEHICLE',\r\n 'Stergere inregistrare'\r\n )}\r\n \r\n
\r\n
\r\n {\r\n this.handleDialogOpen('auction') && this.setState({\r\n isDialogOpenAuction: true,\r\n auctionForm: {\r\n ...this.state.auctionForm,\r\n startDate: moment(new Date()).format(\"YYYY-MM-DD\"),\r\n mavoVehicleId: this.state.selectedVehicle!.id\r\n }\r\n });\r\n }}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_DISPOSITION_IN_THE_AUCTION',\r\n 'Dispunere in licitatie'\r\n )}\r\n \r\n
\r\n
\r\n {\r\n const countryRo = this.state.countryList.find((item) => item.code === CountryCodeEnum.RO.toString());\r\n this.handleDialogOpen('order') && this.setState({ isDialogOpenOrder: true, orderForm: {\r\n ...this.state.orderForm,\r\n personTypeId: MavoPersonTypeEnum.PF,\r\n mavoVehicleId: this.state.selectedVehicle!.id,\r\n countryId: countryRo ? countryRo.id : null,\r\n country: countryRo ? countryRo : null\r\n }});\r\n }}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_PLACE_ORDER',\r\n 'Lansare comanda'\r\n )}\r\n \r\n
\r\n
\r\n \r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_EXPORT_DATA',\r\n 'Export Date'\r\n )}\r\n \r\n
\r\n
\r\n\r\n );\r\n }\r\n\r\n renderSearchButtons() {\r\n return (\r\n
\r\n
\r\n this.loadVehicles(this.state.page, this.state.pageSize)}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_SEARCH',\r\n 'Cauta'\r\n )}\r\n \r\n
\r\n
\r\n this.resetFilters()}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_RESET',\r\n 'Reset'\r\n )}\r\n \r\n
\r\n
\r\n\r\n );\r\n }\r\n\r\n resetFilters = async () => {\r\n this.setState({\r\n selectedMakeEntities: [],\r\n selectedModelEntities: [],\r\n selectedStatusEntities: [],\r\n selectedProvenanceEntities: [],\r\n selectedStartDate: null,\r\n selectedEndDate: null,\r\n vin: ''\r\n }, async () => {\r\n await this.loadVehicles(this.state.page, this.state.pageSize);\r\n });\r\n };\r\n\r\n renderFilters = () => {\r\n const selectedMakes = this.state.selectedMakeEntities;\r\n let models = this.state.modelEntities;\r\n\r\n if (selectedMakes.length) {\r\n const makeIds = selectedMakes.map(({ id }) => id);\r\n models = this.state.modelEntities.filter(({ dependencyId }) => {\r\n return makeIds.includes(dependencyId!);\r\n });\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n this.handleMakeEntitiesChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleStatusEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n
\r\n {\r\n this.setState({\r\n vin: e.target.value\r\n });\r\n }}\r\n validators={['required']}\r\n label={this.cbContext.translatorService.Tranlate('CALCULATION_DETAILS_VIN', 'Vin')}\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n this.handleModelEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleProvenanceEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: Provenance) => option.type || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState(\r\n { \r\n isDialogOpen: false,\r\n attachments: [],\r\n importedVehicles: []\r\n },\r\n () => {\r\n this.loadVehicles(this.state.page, this.state.pageSize);\r\n }\r\n );\r\n };\r\n\r\n closeDialogAuction = () => {\r\n this.setState(\r\n { \r\n isDialogOpenAuction: false,\r\n auctionForm: { \r\n id: 0\r\n } as MavoVehicleAuction\r\n },\r\n async () => {\r\n await this.loadVehicles(this.state.page, this.state.pageSize)\r\n }\r\n );\r\n };\r\n\r\n closeDialogOrder = async () => {\r\n this.setState(\r\n {\r\n isDialogOpenOrder: false,\r\n orderForm: {\r\n id: 0\r\n } as MavoVehicleOrder \r\n },\r\n async () => {\r\n await this.loadVehicles(this.state.page, this.state.pageSize)\r\n }\r\n );\r\n };\r\n\r\n onRowDoubleClick = (\r\n dataIndex: number,\r\n rowIndex: number,\r\n columnIndex: number\r\n ) => {\r\n if (columnIndex == 1) {\r\n return;\r\n }\r\n const vehicle = this.state.vehiclesList.vehicles[dataIndex];\r\n this.props.history.push('/mavoVehicle/' + vehicle.id);\r\n };\r\n\r\n tableOptions = () => {\r\n return {\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.cbContext.translatorService),\r\n elevation: 0,\r\n serverSide: true,\r\n count: this.state.count,\r\n rowsPerPage: this.state.pageSize,\r\n page: this.state.page,\r\n onCellClick: (colData: any, cellMeta: any) => {\r\n if (cellMeta && cellMeta.colIndex !== null && cellMeta.rowIndex !== null) {\r\n // Set up a double-click event listener on the cell\r\n if (cellMeta.event.detail === 2) {\r\n this.onRowDoubleClick(cellMeta.dataIndex, cellMeta.rowIndex, cellMeta.colIndex);\r\n }\r\n }\r\n },\r\n onTableChange: async (action: any, tableState: any) => {\r\n switch (action) {\r\n case 'changePage':\r\n await this.loadVehicles(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'changeRowsPerPage':\r\n await this.loadVehicles(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'sort':\r\n break;\r\n default:\r\n }\r\n }\r\n };\r\n };\r\n\r\n importedTableOptions = () => {\r\n return {\r\n sort: true,\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.cbContext.translatorService),\r\n elevation: 0,\r\n count: this.state.count,\r\n rowsPerPage: this.state.pageSize,\r\n page: this.state.page\r\n };\r\n };\r\n\r\n handleUploadAttachment = async (e: React.ChangeEvent) => {\r\n try {\r\n const attachments = [...this.state.attachments];\r\n\r\n attachments.push({\r\n id: 0,\r\n file: e.target.files![0],\r\n fileName: e.target.files![0].name,\r\n uploadDate: new Date(),\r\n originalFileName: e.target.files![0].name\r\n });\r\n\r\n e.target.value = '';\r\n\r\n this.setState({\r\n attachments: attachments\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleDeleteAttachment = async (id: number, fileName: string) => {\r\n try {\r\n const attachments = [...this.state.attachments];\r\n const index = attachments.findIndex((item) => item.id === id);\r\n attachments.splice(index, 1);\r\n\r\n this.setState({\r\n attachments: attachments\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n canUpload = (): boolean => {\r\n const files = this.state.attachments;\r\n\r\n if (files.length >= 1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n handleImport = async () => {\r\n if (this.state.attachments.length === 0) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG_FILE_NOT_SELECTED', 'Va rugam sa selectati un fisier!'), {\r\n variant: 'error'\r\n });\r\n return;\r\n }\r\n this.setState({\r\n isLoadingImportVehicles: true,\r\n executing: true\r\n });\r\n\r\n\r\n const request = {\r\n attachments: this.state.attachments\r\n } as ImportMavoVehiclesRequestDto;\r\n\r\n try {\r\n const result = await this.cbContext.vehicleService.SaveImportedMavoVehicles(request);\r\n this.props.enqueueSnackbar(\r\n
\r\n

\r\n {this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_DATA_PROCESSED', 'Date tratate: ')}{' '}\r\n {result.totalVehiclesNum}\r\n

\r\n

\r\n {this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_TREATED_SUCCESSFULLY', 'Tratate cu succes: ')}{' '}\r\n {result.importedVehiclesNum}\r\n

\r\n
,\r\n {\r\n variant: 'info',\r\n autoHideDuration: 6000\r\n }\r\n );\r\n this.setState({\r\n importedVehicles: result.mavoVehicles,\r\n isLoadingImportVehicles: false,\r\n executing: false\r\n });\r\n\r\n } catch {\r\n this.props.enqueueSnackbar('There was an unexpected error while importing the vehicles', {\r\n variant: 'error',\r\n autoHideDuration: 6000\r\n });\r\n this.setState({\r\n isLoadingImportVehicles: false,\r\n executing: false\r\n });\r\n }\r\n };\r\n\r\n\r\n getImportedColumns = () => {\r\n return [\r\n {\r\n field: 'vin',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_VIN',\r\n 'Vin'\r\n ),\r\n },\r\n {\r\n field: 'voEnterDate',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_VO_ENTER_DATE',\r\n 'Data intrare la VO'\r\n )\r\n },\r\n {\r\n field: 'makeName',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_MAKE',\r\n 'Marca'\r\n )\r\n },\r\n {\r\n field: 'modelName',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'VEHICLES_VEHICLE_MODEL',\r\n 'Model'\r\n )\r\n },\r\n {\r\n field: 'versionName',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_VERSION',\r\n 'Versiune'\r\n )\r\n },\r\n {\r\n field: 'colorName',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_COLOR',\r\n 'Culoare'\r\n )\r\n },\r\n {\r\n field: 'fabricationYear',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_FABRICATION_YEAR_FULL',\r\n 'An de fabricatie'\r\n )\r\n },\r\n {\r\n field: 'kilometersNr',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_KM',\r\n 'Km'\r\n )\r\n },\r\n {\r\n field: 'cylinderCapacity',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_CYLINDER_CAPACITY',\r\n 'Capacitate cilindrica'\r\n )\r\n },\r\n {\r\n field: 'horsePower',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'CAR_DETAILS_HORSE_POWER',\r\n 'Putere (CP)'\r\n )\r\n },\r\n {\r\n field: 'supplier',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_SUPPLIER',\r\n 'Furnizor'\r\n )\r\n },\r\n {\r\n field: 'provenanceType',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'MENU_NOMENCLATURES_TAB_PROVENANCE',\r\n 'Provenienta'\r\n )\r\n },\r\n {\r\n field: 'location',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_LOCATION',\r\n 'Locatie'\r\n )\r\n },\r\n {\r\n field: 'htPurchaseRonPrice',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_HT_PURCHASE_RON_PRICE',\r\n 'Pret cumparare HT'\r\n )\r\n },\r\n {\r\n field: 'ttcEvaluationEurPrice',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_EVALUATION_TTC_PRICE',\r\n 'Pret evaluare TTC'\r\n )\r\n },\r\n {\r\n field: 'reservations',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_RESERVATIONS',\r\n 'Rezervari'\r\n )\r\n },\r\n {\r\n field: 'nirNumber',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_NIR_NUMBER',\r\n 'Nr NIR'\r\n )\r\n },\r\n {\r\n field: 'observations',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_OBSERVATIONS',\r\n 'Observatii'\r\n )\r\n },\r\n {\r\n field: 'importMessage',\r\n title: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_IMPORT_MESSAGE',\r\n 'Rezultat import'\r\n )\r\n }\r\n ];\r\n }\r\n renderImportedResultBox = () => {\r\n return this.state.importedVehicles.length > 0 ? (\r\n \r\n }}\r\n />\r\n ) : '';\r\n }\r\n\r\n renderAttachmentBox = () => {\r\n return (\r\n \r\n \r\n {this.state.attachments.length !== 0\r\n ? this.state.attachments.map((attach, index) => {\r\n return (\r\n
\r\n
\r\n {\r\n console.log('download');\r\n }}\r\n >\r\n {attach.originalFileName}\r\n \r\n
\r\n
\r\n {\r\n this.handleDeleteAttachment(attach.id, attach.fileName);\r\n }}\r\n disabled={false}\r\n >\r\n \r\n \r\n
\r\n
\r\n );\r\n })\r\n : null}\r\n
\r\n \r\n \r\n {\r\n return this.handleUploadAttachment(e);\r\n }}\r\n type=\"file\"\r\n disabled={!this.canUpload()}\r\n />\r\n \r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_UPLOAD_FILE_BTN_LABEL',\r\n 'Uploadeaza fisier'\r\n )}\r\n \r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n public renderImportContent() {\r\n return (\r\n \r\n {this.renderAttachmentBox()}\r\n
\r\n \r\n
\r\n {this.renderImportedResultBox()}\r\n
\r\n \r\n {this.cbContext.translatorService.Tranlate('MAVO_VEHICLE_IMPORT_CLOSE_BTN', 'Renunta')}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n handleCloseConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n\r\n handleOpenConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: true,\r\n dialogVisible: true\r\n });\r\n };\r\n\r\n handleCloseModal = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n\r\n handleChangeAuction = (fieldName: string, isNumber: boolean) => (e: any, newValue?: IReferential | null) => {\r\n isNumber\r\n ? this.setState({\r\n auctionForm: {\r\n ...this.state.auctionForm,\r\n [fieldName]: parseFloat(newValue || e.target.value)\r\n }\r\n })\r\n : this.setState({\r\n auctionForm: {\r\n ...this.state.auctionForm,\r\n [fieldName]: newValue || e.target.value\r\n }\r\n });\r\n }\r\n\r\n handleChangeOrder = (fieldName: string, isNumber: boolean) => (e: any, newValue?: IReferential | null) => {\r\n isNumber\r\n ? this.setState({\r\n orderForm: {\r\n ...this.state.orderForm,\r\n [fieldName]: parseFloat(newValue || e.target.value)\r\n }\r\n })\r\n : this.setState({\r\n orderForm: {\r\n ...this.state.orderForm,\r\n [fieldName]: newValue || e.target.value\r\n }\r\n });\r\n }\r\n\r\n handleCountryChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n orderForm: {\r\n ...this.state.orderForm,\r\n country: newValue,\r\n countryId: newValue !== null ? newValue!.id : null,\r\n region: null,\r\n regionId: null,\r\n city: null,\r\n cityId: null,\r\n }\r\n });\r\n };\r\n\r\n handleRegionChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n orderForm: {\r\n ...this.state.orderForm,\r\n region: newValue,\r\n regionId: newValue !== null ? newValue!.id : null,\r\n city: null,\r\n cityId: null\r\n }\r\n });\r\n };\r\n\r\n handleCityChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n orderForm: {\r\n ...this.state.orderForm,\r\n city: newValue,\r\n cityId: newValue !== null ? newValue!.id : null,\r\n }\r\n });\r\n };\r\n \r\n handleUserChange = (newValue: AppUser | null) => {\r\n this.setState({\r\n orderForm: {\r\n ...this.state.orderForm,\r\n user: newValue,\r\n userId: newValue ? newValue!.id : null\r\n }\r\n });\r\n };\r\n \r\n handleOrderDateChange = (\r\n date: MaterialUiPickersDate | null,\r\n value?: string | null\r\n ) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n const selectedDate = date ? date.format('YYYY-MM-DD') : undefined;\r\n\r\n this.setState({\r\n orderForm: {\r\n ...this.state.orderForm,\r\n orderDate: selectedDate || ''\r\n }\r\n });\r\n };\r\n\r\n handleAuctionStartDateChange = (\r\n date: MaterialUiPickersDate | null,\r\n value?: string | null\r\n ) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n const selectedDate = date ? date.format('YYYY-MM-DD') : undefined;\r\n\r\n this.setState({\r\n auctionForm: {\r\n ...this.state.auctionForm,\r\n startDate: selectedDate || ''\r\n }\r\n });\r\n };\r\n\r\n handleAuctionEndDateChange = (\r\n date: MaterialUiPickersDate | null,\r\n value?: string | null\r\n ) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n const selectedDate = date ? date.format('YYYY-MM-DD') : undefined;\r\n\r\n this.setState({\r\n auctionForm: {\r\n ...this.state.auctionForm,\r\n endDate: selectedDate || ''\r\n }\r\n });\r\n };\r\n \r\n public render() {\r\n this.cbContext = this.context as AppContext;\r\n\r\n if (this.state.isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n {this.renderMavoVehicleButtons()}\r\n
\r\n \r\n
\r\n {this.renderFilters()}\r\n {this.renderSearchButtons()}\r\n {this.state.isLoadingVehicles ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n {this.state.isDialogOpen ? (\r\n \r\n \r\n \r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_IMPORT_VEHICLES',\r\n 'Import vehicule'\r\n )} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderImportContent()}\r\n \r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n {this.state.isDialogOpenAuction ? (\r\n \r\n ) : (\r\n ''\r\n )}\r\n {this.state.isDialogOpenOrder ? (\r\n \r\n ) : (\r\n ''\r\n )} \r\n\r\n {this.state.selectedVehicle ? (\r\n \r\n \r\n \r\n \r\n {`${this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLE_DELETE_CONFIRMATION_MESSAGE',\r\n 'Ati selectat vehiculul '\r\n )} `}\r\n {this.state.selectedVehicle.vin!}\r\n {`${this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLE_DELETE_CONFIRMATION_MESSAGE_1',\r\n ' pentru stergere. Autorizati stergerea sa din baza de date?'\r\n )} `} \r\n \r\n \r\n \r\n {\r\n this.handleDeleteVehicle();\r\n }}\r\n disabled={this.state.isDeleteLoading}\r\n >\r\n {this.state.isDeleteLoading && (\r\n \r\n )}\r\n {this.cbContext.translatorService.Tranlate('VEHICLE_SEARCH_FORM_VEHICLE_YES', 'Da')}\r\n \r\n \r\n \r\n \r\n \r\n ): ''}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n mavoVehicleState: state.mavoVehicle\r\n }),\r\n{ ...MavoVehicleActionCreators }\r\n)(withSnackbar(MavoVehicles as any));","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withSnackbar } from 'notistack';\r\nimport {\r\n Button,\r\n Grid\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport _ from 'lodash';\r\nimport { IMavoGeneralInformationContainerProps } from '../cases/vehicleDetails/IMavoGeneralInformationContainerProps';\r\nimport { IMavoGeneralInformationContainerState } from '../cases/vehicleDetails/IMavoGeneralInformationContainerState';\r\nimport { ApplicationState, CaseSettingsActionCreators, VehicleActionCreators } from '../../store';\r\nimport { MavoVehicleActionCreators } from '../../store/actions/MavoVehicle';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { MavoVehicle, MavoVehicleAttachment, Provenance} from '../../interfaces/Vehicle';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport moment from 'moment';\r\nimport * as R from 'ramda';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { CarDetailsSettings, MavoVehicleProvenanceType, MavoVehicleStatusCodeEnum, RefConstants, disabledMavoVehicleStatuses, disabledNewMavoVehicleStatuses, mavoVehicleStatuses, mavoVehiclesForNirEnabled } from '../../helpers/Constants';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport NumberFormat from 'react-number-format';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { MavoVehicleDetailsProps } from '../cases/vehicleDetails/MavoVehicleDetailsProps';\r\n\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\nclass MavoGeneralInformationContainer extends React.PureComponent<\r\n IMavoGeneralInformationContainerProps,\r\n IMavoGeneralInformationContainerState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: false,\r\n executing: false,\r\n isValuationOpen: false,\r\n selectedVehicle: null,\r\n brandTypes: [] as IReferential[],\r\n modelTypes: [] as IReferential[],\r\n bodyTypes: [] as IReferential[],\r\n versionTypes: [] as IReferential[],\r\n fuelTypes: [] as IReferential[],\r\n transmissionTypes: [] as IReferential[],\r\n colorTypes: [] as IReferential[],\r\n provenanceTypes: [] as Provenance[],\r\n vehicleAttachmentTypes: [] as IReferential[],\r\n datePickerFirstRegistrationError: '',\r\n isOpen: false,\r\n dialogVisible: false\r\n } as IMavoGeneralInformationContainerState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n\r\n ValidatorForm.addValidationRule('isValidNumberOfKm', (value) => {\r\n if (value >= CarDetailsSettings.numberOfKm) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n }\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={0}\r\n />\r\n );\r\n };\r\n\r\n addMavoVehicleAttachments = async (mavoVehicleAttachments: MavoVehicleAttachment[], mavoVehicleId: number) => {\r\n if (mavoVehicleAttachments.length === 0) {\r\n return;\r\n }\r\n\r\n try {\r\n if (this.state.vehicleAttachmentTypes.length !== 0) {\r\n for (const attachemntType of this.state.vehicleAttachmentTypes) {\r\n const mavoVehicleAttachmentsGrouped = mavoVehicleAttachments.filter((x) => x.attachmentTypeId === attachemntType.id)\r\n .map((x) => { return { ...x, mavoVehicleId: mavoVehicleId } });\r\n if (mavoVehicleAttachmentsGrouped.length === 0) {\r\n continue;\r\n }\r\n const newFiles = await this.vehicleService.AddMavoVehicleAttachments(mavoVehicleAttachmentsGrouped);\r\n }\r\n }\r\n } catch (ex) {\r\n console.log(ex);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } \r\n\r\n }\r\n\r\n submitMavoVehicleData = async () => {\r\n try {\r\n this.setState({ executing: true, isLoading: true });\r\n if (this.props.mavoVehicleState.mavoVehicle.id === 0) {\r\n const vehicle = await this.vehicleService.GetMavoVehicleByVin(this.props.mavoVehicleState.mavoVehicle.vin);\r\n if (!R.isNil(vehicle)) {\r\n this.setState({ executing: false, isLoading: false });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('MAVO_VEHICLE_EXISTS', \"Vehiculul cu acest vin este deja inregistrat!\"), \r\n { \r\n variant: 'warning' \r\n });\r\n return;\r\n } \r\n }\r\n\r\n let newVehicle = { ...this.props.mavoVehicleState.mavoVehicle } as MavoVehicle;\r\n const mavoVehicleAttachments = _.cloneDeep(this.props.mavoVehicleState.mavoVehicle.mavoVehicleAttachments);\r\n if (this.props.mavoVehicleState.mavoVehicle.id === 0) {\r\n newVehicle = await this.vehicleService.AddMavoVehicle(\r\n newVehicle\r\n );\r\n await this.addMavoVehicleAttachments(mavoVehicleAttachments, newVehicle.id);\r\n\r\n this.props.setMavoVehicleObject(newVehicle);\r\n this.props.history.push('/mavoVehicle/' + newVehicle.id);\r\n } else {\r\n newVehicle = await this.vehicleService.AddMavoVehicle({\r\n ...newVehicle,\r\n vehicleOptions: []\r\n });\r\n this.props.setMavoVehicleObject(newVehicle);\r\n }\r\n\r\n this.setState({ executing: false, isLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } \r\n };\r\n\r\n handleBrandTypeChange = async (e: any, newValue: IReferential | null) => {\r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n make: newValue,\r\n makeId: Utils.GetIdOrNull(newValue),\r\n model: null,\r\n modelId: null,\r\n bodyTypeRCR: null,\r\n bodyTypeRCRId: null\r\n });\r\n };\r\n\r\n handleModelTypeChange = async (e: any, newValue: IReferential | null) => {\r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n model: newValue,\r\n modelId: Utils.GetIdOrNull(newValue),\r\n bodyTypeRCR: null,\r\n bodyTypeRCRId: null\r\n });\r\n };\r\n\r\n onChange =\r\n (fieldName: string, fieldNameId?: string) => (e: any, newValue?: IReferential | null) => {\r\n !R.isNil(fieldNameId)\r\n ? \r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n [fieldName]: newValue || e.target.value,\r\n [fieldNameId]: Utils.GetIdOrNull(newValue)\r\n })\r\n : \r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n [fieldName]: newValue || e.target.value\r\n })\r\n };\r\n\r\n onChangeProvenance =\r\n (fieldName: string, fieldNameId?: string) => (e: any, newValue?: Provenance | null) => {\r\n !R.isNil(fieldNameId)\r\n ? this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n [fieldName]: newValue || e.target.value,\r\n [fieldNameId]: Utils.GetProvenanceIdOrNull(newValue)\r\n })\r\n :\r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n [fieldName]: newValue || e.target.value\r\n })\r\n };\r\n\r\n validateFirstRegistrationDate = (selectedDate?: string): string => {\r\n let error = '';\r\n\r\n if (!selectedDate) {\r\n error = this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu');\r\n } else {\r\n const currentDate = moment().format('YYYY-MM-DD');\r\n if (currentDate && selectedDate > currentDate) {\r\n error = this.translatorService.Tranlate(\r\n 'CAR_DETAILS_YEAR_OF_FIRST_REGISTRATION_ERROR',\r\n 'Data primei inmatriculari trebuie sa fie mai mica decat data curenta'\r\n );\r\n }\r\n }\r\n\r\n this.setState({\r\n datePickerFirstRegistrationError: error\r\n });\r\n\r\n this.props.setMavoVehicleObject({\r\n ...this.props.mavoVehicleState.mavoVehicle,\r\n firstRegistrationDate: selectedDate || null\r\n });\r\n\r\n return error;\r\n };\r\n\r\n handleFirstRegistrationDateChange = (\r\n date: MaterialUiPickersDate | null,\r\n value?: string | null\r\n ) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n const selectedDate = date ? date.format('YYYY-MM-DD') : undefined;\r\n this.validateFirstRegistrationDate(selectedDate);\r\n };\r\n\r\n \r\n handleCloseConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n\r\n handleOpenConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: true,\r\n dialogVisible: true\r\n });\r\n };\r\n\r\n handleCloseModal = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n \r\n loadData = async () => {\r\n const {\r\n vehicleMakeRef,\r\n bodyTypeRCRRef,\r\n transmissionTypeRef,\r\n modelRef,\r\n colorRCRRef,\r\n versionRef,\r\n vehicleAttachmentTypeRef\r\n } = RefConstants;\r\n\r\n const [\r\n vehicleMakeList,\r\n bodyTypeList,\r\n transmissionTypeList,\r\n fuelTypeList,\r\n modelTypesList,\r\n colorTypeList,\r\n versionTypeList,\r\n provenanceTypeList,\r\n vehicleAttachmentTypeList\r\n ] = await Promise.all([\r\n this.appReferentialService.Get(vehicleMakeRef?.baseUrl),\r\n this.appReferentialService.Get(bodyTypeRCRRef!.baseUrl),\r\n this.appReferentialService.Get(transmissionTypeRef!.baseUrl),\r\n this.vehicleService.GetRCRFuelTypes(),\r\n this.appReferentialService.Get(modelRef!.baseUrl),\r\n this.appReferentialService.Get(colorRCRRef!.baseUrl),\r\n this.appReferentialService.Get(versionRef!.baseUrl),\r\n this.vehicleService.GetProvenances(),\r\n this.appReferentialService.Get(vehicleAttachmentTypeRef!.baseUrl)\r\n ]);\r\n\r\n if (this.props.mavoVehicleState.mavoVehicle.id === 0) {\r\n if (this.props.mavoVehicleState.mavoVehicle.provenanceId === null) {\r\n const dvsProvenance = provenanceTypeList.find(x => x.type === MavoVehicleProvenanceType.DVS);\r\n if (dvsProvenance) {\r\n this.props.setMavoVehicleObject({\r\n ...this.props.mavoVehicleState.mavoVehicle,\r\n provenance: dvsProvenance,\r\n provenanceId: dvsProvenance.id\r\n });\r\n }\r\n }\r\n }\r\n \r\n this.setState({\r\n isLoading: false,\r\n brandTypes: vehicleMakeList,\r\n bodyTypes: bodyTypeList,\r\n transmissionTypes: transmissionTypeList,\r\n fuelTypes: fuelTypeList,\r\n modelTypes: modelTypesList as IReferential[],\r\n colorTypes: colorTypeList,\r\n versionTypes: versionTypeList,\r\n provenanceTypes: provenanceTypeList as Provenance[],\r\n vehicleAttachmentTypes: vehicleAttachmentTypeList\r\n });\r\n };\r\n\r\n convertKwToHp = (kw: number) => (R.isEmpty(kw) ? '' : Math.round(kw * 1.36));\r\n convertHpToKw = (hp: number) => (R.isEmpty(hp) ? '' : Math.round(hp / 1.36));\r\n\r\n handlePowerChange = (e: any) => {\r\n this.props.setMavoVehicleObject({\r\n ...this.props.mavoVehicleState.mavoVehicle,\r\n power: e.target.value,\r\n horsePower: this.convertKwToHp(e.target.value)\r\n });\r\n };\r\n\r\n handleHPChange = (e: any) => {\r\n this.props.setMavoVehicleObject({\r\n ...this.props.mavoVehicleState.mavoVehicle,\r\n horsePower: e.target.value,\r\n power: this.convertHpToKw(e.target.value)\r\n });\r\n };\r\n\r\n\r\n handleFabricationYearChange = (e: any) => {\r\n this.props.setMavoVehicleObject({\r\n ...this.props.mavoVehicleState.mavoVehicle,\r\n fabricationYear: e.target.value\r\n });\r\n };\r\n\r\n handleChassisNumberChange = (e: any) => {\r\n const vin = e.target.value;\r\n this.props.setMavoVehicleObject({ ...this.props.mavoVehicleState.mavoVehicle, vin: e.target.value});\r\n if(R.test(/^(?=.*[0-9])(?=.*[abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ])[0-9abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ-]{17}$/, vin)) {\r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n vin: e.target.value,\r\n make: null,\r\n makeId: null,\r\n model: null,\r\n modelId: null,\r\n versionItem: null,\r\n versionId: null,\r\n colorRCR: null,\r\n colorRCRId: null,\r\n fuelType: null,\r\n fuelTypeId: null,\r\n bodyTypeRCRId: null,\r\n bodyTypeRCR: null,\r\n transmissionTypeId: null,\r\n transmissionType: null,\r\n firstRegistrationDate: null,\r\n fabricationYear: null,\r\n kilometersNr: null,\r\n power: null,\r\n engineManufactureCode: null,\r\n accessories: null\r\n });\r\n }\r\n };\r\n\r\n chassisNumberValidation = async () => {\r\n if (!R.test(/^(?=.*[0-9])(?=.*[abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ])[0-9abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ-]{17}$/, this.props.mavoVehicleState.mavoVehicle.vin)) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('INVALID_CAR_VIN_IDENTIFICATOR', \"Te rugăm să te asiguri că seria de șasiu introdusă are 17 caractere alfanumerice și nu conține spații sau literele 'O' sau 'I'!\"), \r\n { \r\n variant: 'warning' \r\n });\r\n return;\r\n }\r\n const vehicle = await this.vehicleService.GetMavoVehicleByVin(this.props.mavoVehicleState.mavoVehicle.vin);\r\n if (!R.isNil(vehicle)) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('MAVO_VEHICLE_EXISTS', \"Vehiculul cu acest vin este deja inregistrat!\"), \r\n { \r\n variant: 'warning' \r\n });\r\n return;\r\n } \r\n }\r\n\r\n private getModelsOptions(): IReferential[] {\r\n const filteredModelTypes = this.state.modelTypes.filter(\r\n (model) => model.dependencyId === this.props.mavoVehicleState.mavoVehicle.makeId\r\n );\r\n if (!R.isEmpty(filteredModelTypes)) return filteredModelTypes;\r\n\r\n return [];\r\n }\r\n\r\n\r\n private getVersionsOptions(): IReferential[] {\r\n const filteredVersionTypes = this.state.versionTypes.filter(\r\n (version) => version.modelId === this.props.mavoVehicleState.mavoVehicle.modelId\r\n );\r\n if (!R.isEmpty(filteredVersionTypes)) return filteredVersionTypes;\r\n\r\n return [];\r\n }\r\n\r\n isDisabled = (): boolean => {\r\n //1.2\tActualizare/adaugare\r\n if (this.props.mavoVehicleState.mavoVehicle.id === 0) {\r\n //Nu pot fi modificate informatii vehicul din tab-urile «Informatii generale», «Stare vehicul», \r\n //«Despre vehicul (Dotari)» si «Date STOC» daca vehiculul este in una din starile : «Licitatie», «Comanda», «Aviz», «Factura»\r\n return disabledNewMavoVehicleStatuses.includes(this.props.mavoVehicleState.mavoVehicle.currentStatus!.status!.code ?? '') ? true : false;\r\n } else {\r\n //daca vehiculul este in stare “Licitatie”, se pot actualiza doar informatiile «Stare vehicul», «Despre vehicul (Dotari)» si «Poze» \r\n if (this.props.mavoVehicleState.mavoVehicle.currentStatus!.status!.code === MavoVehicleStatusCodeEnum.LICITATIE.toString()) {\r\n return true;\r\n }\r\n //daca vehiculul este in orice alta stare («Comanda», «Aviz», «Factura»), nu se pot actualiza nici un fel de informatii referitoare la acest vehicul\r\n return disabledMavoVehicleStatuses.includes(this.props.mavoVehicleState.mavoVehicle.currentStatus!.status!.code ?? '') ? true : false;\r\n }\r\n };\r\n\r\n\r\n isDisabledVin = (): boolean => {\r\n //1.3\tActualizare/modificare\r\n //daca vehiculul nu este in stare «Licitatie», «Comanda», «Aviz», «Factura», se poate actualiza orice informatie, \r\n //exceptie Cod VIN + Marca + Model\r\n return disabledNewMavoVehicleStatuses.includes(this.props.mavoVehicleState.mavoVehicle.currentStatus!.status!.code ?? '') ? true : false;\r\n }\r\n \r\n private getBodiesOptions(): IReferential[] {\r\n return this.state.bodyTypes ?? [];\r\n }\r\n\r\n renderGeneralInformationForm = () => {\r\n return (\r\n {\r\n this.submitMavoVehicleData();\r\n }}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n \r\n option.displayName || ''}\r\n getOptionSelected={(option, value) => option?.id === value?.id}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n option.displayName || ''}\r\n getOptionSelected={(option, value) => option?.id === value?.id}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n option.displayName || ''}\r\n getOptionSelected={(option, value) => option?.id === value?.id}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n option.displayName || ''}\r\n getOptionSelected={(option, value) => option?.id === value?.id}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n this.onChange('engineManufactureCode')(e)}\r\n label={this.translatorService.Tranlate(\r\n 'MAVO_VEHICLE_MANUFACTURE_CODE',\r\n 'Motor'\r\n )}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n option.displayName || ''}\r\n getOptionSelected={(option, value) => option?.id === value?.id}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n option.displayName || ''}\r\n getOptionSelected={(option, value) => option?.id === value?.id}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {\r\n this.handleHPChange(e);\r\n }}\r\n label={this.translatorService.Tranlate('CAR_DETAILS_HORSE_POWER', 'Putere (CP)')}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n new Date(this.props.mavoVehicleState.mavoVehicle.firstRegistrationDate).getFullYear()\r\n ? true\r\n : false\r\n }\r\n helperText={\r\n this.props.mavoVehicleState.mavoVehicle.fabricationYear &&\r\n this.props.mavoVehicleState.mavoVehicle.firstRegistrationDate &&\r\n this.props.mavoVehicleState.mavoVehicle.fabricationYear >\r\n new Date(this.props.mavoVehicleState.mavoVehicle.firstRegistrationDate).getFullYear()\r\n ? this.translatorService.Tranlate(\r\n 'MAVO_FABRICATION_DATE_ERROR',\r\n 'Anul fabricatiei trebuie sa fie mai mic decat anul primei inmatriculari'\r\n )\r\n : ''\r\n }\r\n /> \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n this.onChange('kilometersNr')(e)}\r\n validators={['isValidNumberOfKm']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'CAR_DETAILS_NUMBER_OF_KILOMETERS_ERROR',\r\n 'Numarul de kilometri nu trebuie sa fie mai mare de 1000000'\r\n )\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'CAR_DETAILS_NUMBER_OF_KILOMETERS',\r\n 'Numar kilometri'\r\n )}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n \r\n \r\n option.displayName || ''}\r\n getOptionSelected={(option, value) => option?.id === value?.id}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n this.onChange('accessories')(e)}\r\n label={this.translatorService.Tranlate('MAVO_VEHICLE_ACCESORIES', 'Accesorii')}\r\n />\r\n \r\n \r\n option.type || ''}\r\n getOptionSelected={(option, value) => option?.id === value?.id}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n {\r\n this.props.mavoVehicleAuction && this.props.mavoVehicleAuction.id !== 0 ?\r\n (\r\n \r\n \r\n this.onChange('observations')(e)}\r\n label={this.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_OBSERVATIONS',\r\n 'Observatii'\r\n )}\r\n multiline\r\n variant=\"outlined\"\r\n rows={6}\r\n />\r\n \r\n \r\n ) : null\r\n }\r\n \r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
{this.renderGeneralInformationForm()}
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (\r\n state: ApplicationState,\r\n ownProps: MavoVehicleDetailsProps\r\n ) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle,\r\n mavoVehicle: state.mavoVehicle,\r\n ...ownProps\r\n }),\r\n { ...CaseSettingsActionCreators, ...VehicleActionCreators, ...MavoVehicleActionCreators }\r\n)(withSnackbar(MavoGeneralInformationContainer as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withSnackbar } from 'notistack';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport _ from 'lodash';\r\nimport { ApplicationState, CaseSettingsActionCreators, VehicleActionCreators } from '../../store';\r\nimport { MavoVehicleActionCreators } from '../../store/actions/MavoVehicle';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { MavoVehicleOptionDetailsProps } from '../cases/vehicleDetails/MavoVehicleDetailsProps';\r\nimport { IMavoVehicleOptionsContainerProps } from '../cases/vehicleDetails/IMavoVehicleOptionsContainerProps';\r\nimport { Checkbox, Grid } from '@material-ui/core';\r\nimport { MavoVehicleStatusCodeEnum, RefConstants, disabledMavoVehicleStatuses, disabledNewMavoVehicleStatuses } from '../../helpers/Constants';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport * as R from 'ramda';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport NumberFormat from 'react-number-format';\r\n\r\ninterface IMavoVehicleOptionsContainerState {\r\n isLoading: boolean;\r\n executing: boolean;\r\n isOpen: boolean;\r\n dialogVisible: boolean;\r\n isDisabled: boolean;\r\n vehicleTypes: IReferential[];\r\n}\r\n\r\nclass MavoVehicleOptionsContainer extends React.PureComponent<\r\n IMavoVehicleOptionsContainerProps,\r\n IMavoVehicleOptionsContainerState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: false,\r\n executing: false,\r\n isValuationOpen: false,\r\n isOpen: false,\r\n dialogVisible: false,\r\n isDisabled: false,\r\n vehicleTypes: [] as IReferential[]\r\n } as IMavoVehicleOptionsContainerState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n\r\n }\r\n\r\n loadData = async () => {\r\n const {\r\n vehicleTypeRef\r\n } = RefConstants;\r\n\r\n const vehicleTypes = await this.appReferentialService.Get(vehicleTypeRef!.baseUrl);\r\n \r\n this.setState(\r\n {\r\n isLoading: false,\r\n isDisabled: this.isDisabled(),\r\n vehicleTypes: vehicleTypes\r\n }\r\n );\r\n\r\n };\r\n\r\n isDisabled = (): boolean => {\r\n if (this.props.disabled) {\r\n return true;\r\n }\r\n \r\n //1.2\tActualizare/adaugare\r\n if (this.props.mavoVehicleState.mavoVehicle.id === 0) {\r\n //Nu pot fi modificate informatii vehicul din tab-urile «Informatii generale», «Stare vehicul», \r\n //«Despre vehicul (Dotari)» si «Date STOC» daca vehiculul este in una din starile : «Licitatie», «Comanda», «Aviz», «Factura»\r\n return disabledNewMavoVehicleStatuses.includes(this.props.mavoVehicleState.mavoVehicle.currentStatus!.status!.code ?? '') ? true : false;\r\n } else {\r\n //daca vehiculul este in stare “Licitatie”, se pot actualiza doar informatiile «Stare vehicul», «Despre vehicul (Dotari)» si «Poze» \r\n if (this.props.mavoVehicleState.mavoVehicle.currentStatus!.status!.code === MavoVehicleStatusCodeEnum.LICITATIE.toString()) {\r\n return false;\r\n }\r\n //daca vehiculul este in orice alta stare («Comanda», «Aviz», «Factura»), nu se pot actualiza nici un fel de informatii referitoare la acest vehicul\r\n return disabledMavoVehicleStatuses.includes(this.props.mavoVehicleState.mavoVehicle.currentStatus!.status!.code ?? '') ? true : false;\r\n }\r\n };\r\n\r\n onChange =\r\n (fieldName: string, fieldNameId?: string) => (e: any, newValue?: IReferential | null) => {\r\n !R.isNil(fieldNameId)\r\n ? \r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n vehicleOptionInfo: {\r\n ...this.props.mavoVehicleState.mavoVehicle.vehicleOptionInfo, \r\n [fieldName]: newValue || e.target.value,\r\n [fieldNameId]: Utils.GetIdOrNull(newValue)\r\n }\r\n })\r\n : \r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n vehicleOptionInfo: {\r\n ...this.props.mavoVehicleState.mavoVehicle.vehicleOptionInfo, \r\n [fieldName]: newValue || e.target.value\r\n }\r\n })\r\n };\r\n\r\n onCheckBoxChange =\r\n (fieldName: string) => (checked: boolean) => {\r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n vehicleOptionInfo: {\r\n ...this.props.mavoVehicleState.mavoVehicle.vehicleOptionInfo, \r\n [fieldName]: checked\r\n }\r\n })\r\n };\r\n\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={0}\r\n />\r\n );\r\n };\r\n\r\n onVehicleChange =\r\n (fieldName: string, fieldNameId?: string) => (e: any, newValue?: IReferential | null) => {\r\n !R.isNil(fieldNameId)\r\n ? \r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n [fieldName]: newValue || e.target.value,\r\n [fieldNameId]: Utils.GetIdOrNull(newValue)\r\n })\r\n : \r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n [fieldName]: newValue || e.target.value\r\n })\r\n };\r\n\r\n rendeVehicleOptionForm = () => {\r\n return (\r\n {\r\n // this.submitCaseVehicleDetailsData(e);\r\n }}\r\n >\r\n
\r\n \r\n \r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('alarm')(!this.props.vehicleOptionInfo.alarm)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_ALARM', 'Alarma')}\r\n
\r\n this.onCheckBoxChange('alarm')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('towHook')(!this.props.vehicleOptionInfo.towHook)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_TOW_HOOK', 'Carlig de remorcare')}\r\n
\r\n this.onCheckBoxChange('towHook')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('heatedSeats')(!this.props.vehicleOptionInfo.heatedSeats)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_HEATED_SEATS', 'Scaune incalzite')}\r\n
\r\n this.onCheckBoxChange('heatedSeats')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n {\r\n this.onVehicleChange('cylinderCapacity')(e);\r\n }}\r\n label={this.translatorService.Tranlate('VEHICLE_OPTIONS_ENGINE_CAPACITY', 'Cilindree')}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n \r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('antiTheft')(!this.props.vehicleOptionInfo.antiTheft)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_ANTI_THEFT', 'Antifurt')} \r\n
\r\n this.onCheckBoxChange('antiTheft')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('protectionFrame')(!this.props.vehicleOptionInfo.protectionFrame)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_PROTECTION_FRAME', 'Cablu de protectie')}\r\n
\r\n this.onCheckBoxChange('protectionFrame')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('rainSensors')(!this.props.vehicleOptionInfo.rainSensors)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_RAIN_SENSORS', 'Senzori de ploaie')}\r\n
\r\n this.onCheckBoxChange('rainSensors')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n {\r\n this.onChange('emissionsClass')(e);\r\n }}\r\n label={this.translatorService.Tranlate('VEHICLE_OPTIONS_EMISSIONS_CLASS', 'Clasa de poluare')}\r\n />\r\n \r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('abs')(!this.props.vehicleOptionInfo.abs)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_ABS', 'ABS')} \r\n
\r\n this.onCheckBoxChange('abs')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('steeringWheelControls')(!this.props.vehicleOptionInfo.steeringWheelControls)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_STEERING_WHEEL_CONTROLS', 'Comenzi pe volan')}\r\n
\r\n this.onCheckBoxChange('steeringWheelControls')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('parkingSensors')(!this.props.vehicleOptionInfo.parkingSensors)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_PARKING_SENSORS', 'Senzori de parcare')}\r\n
\r\n this.onCheckBoxChange('parkingSensors')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n {\r\n this.onChange('doorCount')(e);\r\n }}\r\n label={this.translatorService.Tranlate('VEHICLE_OPTIONS_DOOR_COUNT', 'Numar portiere')}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n \r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('esp')(!this.props.vehicleOptionInfo.esp)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_ESP', 'ESP')} \r\n
\r\n this.onCheckBoxChange('esp')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('onBoardComputer')(!this.props.vehicleOptionInfo.onBoardComputer)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_ON_BOARD_COMPUTER', 'Computer pe bord')}\r\n
\r\n this.onCheckBoxChange('onBoardComputer')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('powerSteering')(!this.props.vehicleOptionInfo.powerSteering)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_POWER_STEERING', 'Servodirectie')}\r\n
\r\n this.onCheckBoxChange('powerSteering')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n {\r\n this.onChange('seatCount')(e);\r\n }}\r\n label={this.translatorService.Tranlate('VEHICLE_OPTIONS_SEAT_COUNT', 'Numar locuri')}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n \r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('driverFrontAirbag')(!this.props.vehicleOptionInfo.driverFrontAirbag)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_DRIVER_FRONT_AIRBAG', 'Airbag frontal sofer')} \r\n
\r\n this.onCheckBoxChange('driverFrontAirbag')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('cruiseControl')(!this.props.vehicleOptionInfo.cruiseControl)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_CRUISE_CONTROL', 'Cruise control')}\r\n
\r\n this.onCheckBoxChange('cruiseControl')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('sunroof')(!this.props.vehicleOptionInfo.sunroof)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_SUN_ROOF', 'Trapa')}\r\n
\r\n this.onCheckBoxChange('sunroof')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n {\r\n this.onChange('driveType')(e);\r\n }}\r\n label={this.translatorService.Tranlate('VEHICLE_OPTIONS_DRIVE_TYPE', 'Tractiune')}\r\n />\r\n \r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('passengerFrontAirbag')(!this.props.vehicleOptionInfo.passengerFrontAirbag)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_PASSENGER_FRONT_AIRBAG', 'Airbag frontal pasager')} \r\n
\r\n this.onCheckBoxChange('passengerFrontAirbag')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('lockableDifferential')(!this.props.vehicleOptionInfo.lockableDifferential)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_LOCKABLE_DIFFERENTIAL', 'Diferential blocabil')}\r\n
\r\n this.onCheckBoxChange('lockableDifferential')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('rightHandDrive')(!this.props.vehicleOptionInfo.rightHandDrive)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_RIGHT_HAND_DRIVE', 'Volan dreapta')}\r\n
\r\n this.onCheckBoxChange('rightHandDrive')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n {\r\n this.onChange('registration')(e);\r\n }}\r\n label={this.translatorService.Tranlate('VEHICLE_OPTIONS_REGISTRATION', 'Inmatriculare')}\r\n />\r\n \r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('frontSideAirbags')(!this.props.vehicleOptionInfo.frontSideAirbags)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_FRONT_SIDE_AIRBAGS', 'Airbag-uri lateral fata')} \r\n
\r\n this.onCheckBoxChange('frontSideAirbags')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('particleFilter')(!this.props.vehicleOptionInfo.particleFilter)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_PARTICLE_FILTER', 'Filtru particule')}\r\n
\r\n this.onCheckBoxChange('particleFilter')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('fogLights')(!this.props.vehicleOptionInfo.fogLights)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_FOG_LIGHTS', 'Proiectoare de ceata')}\r\n
\r\n this.onCheckBoxChange('fogLights')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n {\r\n this.onChange('vehicleCondition')(e);\r\n }}\r\n label={this.translatorService.Tranlate('VEHICLE_OPTIONS_VECHICLE_CONDITION', 'Stare vehicul')}\r\n />\r\n \r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('frontCurtainAirbag')(!this.props.vehicleOptionInfo.frontCurtainAirbag)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_FRONT_CURTAIN_AIRBAG', 'Airbag cortina fata')} \r\n
\r\n this.onCheckBoxChange('frontCurtainAirbag')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('electricMirrors')(!this.props.vehicleOptionInfo.electricMirrors)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_ELECTRIC_MIRRORS', 'Oglinzi electrice')}\r\n
\r\n this.onCheckBoxChange('electricMirrors')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('airConditioning')(!this.props.vehicleOptionInfo.airConditioning)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_AIR_CONFITIONING', 'Aer conditionat')}\r\n
\r\n this.onCheckBoxChange('airConditioning')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n {\r\n this.onChange('metallicColor')(e);\r\n }}\r\n label={this.translatorService.Tranlate('VEHICLE_OPTIONS_METALLIC_COLOR', 'Culoare metalizata')}\r\n />\r\n \r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('xenonHeadlights')(!this.props.vehicleOptionInfo.xenonHeadlights)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_XENON_HEADLIGHTS', 'Faruri xenon')} \r\n
\r\n this.onCheckBoxChange('xenonHeadlights')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('frontElectricWindows')(!this.props.vehicleOptionInfo.frontElectricWindows)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_FRONT_ELECTRIC_WINDOWS', 'Geamuri electrice fata')}\r\n
\r\n this.onCheckBoxChange('frontElectricWindows')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('radio')(!this.props.vehicleOptionInfo.radio)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_RADIO', 'Radio')}\r\n
\r\n this.onCheckBoxChange('radio')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n {\r\n this.onChange('upholstery')(e);\r\n }}\r\n label={this.translatorService.Tranlate('VEHICLE_OPTIONS_UPHOLSTERY', 'Tapiterie')}\r\n />\r\n \r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('alloyWheels')(!this.props.vehicleOptionInfo.alloyWheels)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_ALLOY_WHEELS', 'Jante aliaj')} \r\n
\r\n this.onCheckBoxChange('alloyWheels')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('rearElectricWindows')(!this.props.vehicleOptionInfo.rearElectricWindows)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_REAR_ELECTRIC_WINDOWS', 'Geamuri electrice spate')}\r\n
\r\n this.onCheckBoxChange('rearElectricWindows')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('cdPlayer')(!this.props.vehicleOptionInfo.cdPlayer)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_CD_PLAYER', 'CD')}\r\n
\r\n this.onCheckBoxChange('cdPlayer')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n {\r\n this.onChange('upholsteryColor')(e);\r\n }}\r\n label={this.translatorService.Tranlate('VEHICLE_OPTIONS_UPHOLSTERY_COLOR', 'Culoare tapiterie')}\r\n />\r\n \r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('glassRoof')(!this.props.vehicleOptionInfo.glassRoof)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_GLASS_ROOF', 'Acoperis sticla')} \r\n
\r\n this.onCheckBoxChange('glassRoof')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('tintedWindows')(!this.props.vehicleOptionInfo.tintedWindows)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_TINTED_WINDOWS', 'Geamuri cu tente/colorate')}\r\n
\r\n this.onCheckBoxChange('tintedWindows')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('videoScreen')(!this.props.vehicleOptionInfo.videoScreen)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_VIDEO_SCREEN', 'Ecran video tetiere')}\r\n
\r\n this.onCheckBoxChange('videoScreen')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n {\r\n this.onChange('previousOwnersCount')(e);\r\n }}\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_OPTIONS_PREVIOUS_OWNERS_COUNT',\r\n 'Nr proprietari anteriori'\r\n )}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('gps')(!this.props.vehicleOptionInfo.gps)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_OPTION_GPS', 'GPS')}\r\n
\r\n this.onCheckBoxChange('gps')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n edge=\"end\"\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n {\r\n this.onChange('countryOfOrigin')(e);\r\n }}\r\n label={this.translatorService.Tranlate('VEHICLE_OPTIONS_COUNTRY_OF_ORIGIN', 'Tara de origine')}\r\n />\r\n \r\n \r\n
\r\n \r\n );\r\n }\r\n\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n {!this.state.isLoading ? this.rendeVehicleOptionForm() : null}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (\r\n state: ApplicationState,\r\n ownProps: MavoVehicleOptionDetailsProps\r\n ) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle,\r\n mavoVehicle: state.mavoVehicle,\r\n ...ownProps\r\n }),\r\n { ...CaseSettingsActionCreators, ...VehicleActionCreators, ...MavoVehicleActionCreators }\r\n)(withSnackbar(MavoVehicleOptionsContainer as any));\r\n","import React from 'react';\r\nimport { TransformWrapper, TransformComponent } from \"react-zoom-pan-pinch\";\r\n\r\ninterface IPreviewAttachmentState {\r\n currentIndex: number,\r\n scale: number,\r\n}\r\n\r\ninterface IPreviewAttachmentProps {\r\n loadMavoAttachmentData: { url: string; extension: string | undefined; }[],\r\n currentIndex: number\r\n}\r\n\r\nclass PreviewAttachment extends React.PureComponent<\r\n IPreviewAttachmentProps,\r\n IPreviewAttachmentState\r\n> {\r\n\r\n state = {\r\n currentIndex: this.props.currentIndex,\r\n scale: 1,\r\n } as IPreviewAttachmentState;\r\n\r\n\r\n nextImage = () => {\r\n this.setState({\r\n currentIndex: (this.state.currentIndex + 1) % this.props.loadMavoAttachmentData?.length\r\n });\r\n };\r\n\r\n prevImage = () => {\r\n this.setState({\r\n currentIndex: this.state.currentIndex === 0 ? this.props.loadMavoAttachmentData?.length - 1 : this.state.currentIndex - 1\r\n });\r\n\r\n };\r\n\r\n public render() {\r\n return (\r\n
\r\n \r\n ‹\r\n \r\n \r\n ›\r\n \r\n \r\n {({ zoomIn, zoomOut }) => (\r\n <>\r\n \r\n zoomIn()}\r\n className='zoomGalleryButton'\r\n >\r\n +\r\n \r\n zoomOut()}\r\n className='zoomGalleryButton'\r\n >\r\n −\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default PreviewAttachment\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsActionCreators,\r\n VehicleActionCreators\r\n} from '../../store';\r\nimport { withSnackbar } from 'notistack';\r\nimport {\r\n CardContent,\r\n Button,\r\n Grid,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n Typography,\r\n DialogContent,\r\n Box\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { ButtonGroup, Card, CardFooter } from 'reactstrap';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { MavoImageUploadSizeLimit, MavoVehicelAttachementTypeCodeEnum, MavoVehicleStatusCodeEnum, RefConstants, disabledMavoVehicleStatuses } from '../../helpers/Constants';\r\nimport DescriptionIcon from '@material-ui/icons/Description';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport _ from 'lodash';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { MavoVehicleAttachment } from '../../interfaces/Vehicle';\r\nimport { MavoVehicleDetailsProps } from '../cases/vehicleDetails/MavoVehicleDetailsProps';\r\nimport { MavoVehicleActionCreators } from '../../store/actions/MavoVehicle';\r\nimport { IMavoAttachmentDataContainerProps } from '../cases/vehicleDetails/IMavoAttachmentDataContainerProps';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { isNullOrUndefined } from 'util';\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-ignore\r\nimport FileViewer from 'react-file-viewer';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport VisibilityIcon from '@material-ui/icons/Visibility';\r\nimport FileSaver from 'file-saver';\r\nimport PreviewAttachment from './PreviewAttachment';\r\n\r\n\r\ninterface IMavoAttachmentDataContainerState {\r\n isLoading: boolean;\r\n executing: boolean;\r\n attachmentTypeList: IReferential[];\r\n previewAttachFile: any;\r\n previewAttachFileExtension: string;\r\n isDialogOpen: boolean;\r\n currentIndex: number,\r\n loadMavoAttachmentData: { url: string; extension: string | undefined; }[]\r\n}\r\n\r\nclass MavoAttachmentDataContainer extends React.PureComponent<\r\n IMavoAttachmentDataContainerProps,\r\n IMavoAttachmentDataContainerState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n static displayName = 'MavoAttachmentDataContainer';\r\n\r\n state = {\r\n isLoading: false,\r\n executing: false,\r\n isValuationOpen: false,\r\n isOpen: false,\r\n dialogVisible: false,\r\n attachmentTypeList: [],\r\n previewAttachFile: '',\r\n previewAttachFileExtension: '',\r\n isDialogOpen: false,\r\n currentIndex: 0,\r\n loadMavoAttachmentData: []\r\n } as IMavoAttachmentDataContainerState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n }\r\n\r\n loadData = async () => {\r\n const {\r\n vehicleAttachmentTypeRef\r\n } = RefConstants;\r\n const [\r\n vehicleAttachmentTypeList,\r\n vehicleAttachmentList\r\n ] = await Promise.all([\r\n this.appReferentialService.Get(vehicleAttachmentTypeRef?.baseUrl),\r\n this.vehicleService.GetMavoVehicleAttachments(this.props.mavoVehicleState.mavoVehicle.id)\r\n ]);\r\n\r\n const results = await Promise.all(\r\n vehicleAttachmentList?.map(async ({ originalFileName, fileName }) => {\r\n try {\r\n const fileBlob = await this.vehicleService.GetMavoVehicleAttachment(fileName);\r\n const url = URL.createObjectURL(fileBlob);\r\n const extension = originalFileName.split('.').pop();\r\n return { url, extension };\r\n } catch (error) {\r\n console.error(`Error processing file ${originalFileName}:`, error);\r\n return null;\r\n }\r\n })\r\n );\r\n\r\n const finalResults = results?.filter((result) => result !== null);\r\n this.props.setMavoVehicleObject({\r\n ...this.props.mavoVehicleState.mavoVehicle,\r\n mavoVehicleAttachments: vehicleAttachmentList\r\n })\r\n\r\n vehicleAttachmentTypeList.forEach((attachmentType) => {\r\n attachmentType.isLoading = false;\r\n });\r\n\r\n this.setState({\r\n isLoading: false,\r\n attachmentTypeList: vehicleAttachmentTypeList,\r\n loadMavoAttachmentData: finalResults\r\n });\r\n };\r\n\r\n\r\n isDisabled = (): boolean => {\r\n //1.3\tActualizare/modificare\r\n if (this.props.mavoVehicleState.mavoVehicle.id !== 0) {\r\n //daca vehiculul este in stare “Licitatie”, se pot actualiza doar informatiile «Stare vehicul», «Despre vehicul (Dotari)» si «Poze» \r\n if (this.props.mavoVehicleState.mavoVehicle.currentStatus!.status!.code === MavoVehicleStatusCodeEnum.LICITATIE.toString()) {\r\n return false;\r\n }\r\n //daca vehiculul este in orice alta stare («Comanda», «Aviz», «Factura»), nu se pot actualiza nici un fel de informatii referitoare la acest vehicul\r\n return disabledMavoVehicleStatuses.includes(this.props.mavoVehicleState.mavoVehicle.currentStatus!.status!.code ?? '') ? true : false;\r\n }\r\n return false;\r\n };\r\n\r\n\r\n handlePreviewAttachment = async (originalFileName: string, filename: string) => {\r\n try {\r\n const fileBlob = await this.vehicleService.GetMavoVehicleAttachment(filename);\r\n const url = URL.createObjectURL(fileBlob);\r\n const extension = originalFileName.split('.').pop();\r\n\r\n if (isNullOrUndefined(extension)) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n previewAttachFile: url,\r\n previewAttachFileExtension: extension!.toLowerCase(),\r\n isDialogOpen: true\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n renderPreviewAttachment = () => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n canUpload = (attachemntType: IReferential): boolean => {\r\n const files = this.props.mavoVehicleState.mavoVehicle.mavoVehicleAttachments.filter(\r\n (attach) => attach.attachmentTypeId === attachemntType.id\r\n );\r\n\r\n if (attachemntType.code == MavoVehicelAttachementTypeCodeEnum.IMG) {\r\n if (files.length >= 10) {\r\n return false;\r\n }\r\n }\r\n\r\n if (attachemntType.code == MavoVehicelAttachementTypeCodeEnum.OTHER) {\r\n if (files.length >= 2) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n\r\n setAttachmentTypeList = (attachmentType: IReferential, value: boolean) => {\r\n const attachmentTypeList = _.cloneDeep(this.state.attachmentTypeList);\r\n for (let i = 0; i < attachmentTypeList.length; i++) {\r\n if (attachmentTypeList[i].id === attachmentType.id) {\r\n attachmentTypeList[i].isLoading = value;\r\n }\r\n }\r\n\r\n return attachmentTypeList;\r\n };\r\n\r\n /**\r\n * Get dimensions of any image by url\r\n * @param {string} url\r\n * @param {number} [rejectTimeout] timeout for reject\r\n * @return {Promise<{ width: number, height: number }>}\r\n */\r\n reactImageSize = (\r\n url: string,\r\n rejectTimeout: number\r\n ): Promise<{ width: number; height: number }> =>\r\n new Promise((resolve, reject) => {\r\n let timer: NodeJS.Timeout | null = null;\r\n\r\n const img = new Image();\r\n\r\n img.addEventListener('load', () => {\r\n if (timer) {\r\n clearTimeout(timer);\r\n }\r\n\r\n resolve({ width: img.width, height: img.height });\r\n });\r\n\r\n img.addEventListener('error', (event) => {\r\n if (timer) {\r\n clearTimeout(timer);\r\n }\r\n\r\n reject(`${event.type}: ${event.message}`);\r\n });\r\n\r\n img.src = url;\r\n\r\n if (rejectTimeout) {\r\n timer = setTimeout(() => reject('Timeout exception'), rejectTimeout);\r\n }\r\n });\r\n\r\n addWatermarkToImage = async (file: File): Promise => {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n const img = new Image();\r\n img.src = reader.result as string;\r\n\r\n img.onload = () => {\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\");\r\n if (!ctx) return;\r\n\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n\r\n ctx.drawImage(img, 0, 0);\r\n\r\n const watermarkText = \"Licensed for Mavo Application Only\";\r\n ctx.font = `${img.width / 20}px Arial`;\r\n ctx.fillStyle = \"rgba(255, 255, 255, 0.5)\";\r\n ctx.textAlign = \"center\";\r\n ctx.textBaseline = \"middle\";\r\n\r\n ctx.save();\r\n ctx.translate(canvas.width / 2, canvas.height / 2);\r\n ctx.rotate(-Math.PI / 4);\r\n\r\n ctx.fillText(watermarkText, 0, 0);\r\n\r\n ctx.restore();\r\n\r\n canvas.toBlob(\r\n (blob) => {\r\n if (blob) {\r\n const watermarkedFile = new File([blob], file.name, {\r\n type: \"image/png\"\r\n });\r\n resolve(watermarkedFile);\r\n } else {\r\n reject(new Error(\"Eroare la generarea imaginii cu watermark\"));\r\n }\r\n },\r\n \"image/png\",\r\n 1.0\r\n );\r\n };\r\n\r\n img.onerror = (err) => {\r\n console.error(\"Eroare la încărcarea imaginii\", err);\r\n reject(err);\r\n };\r\n };\r\n\r\n reader.onerror = (err) => {\r\n console.error(\"Eroare la citirea fișierului\", err);\r\n reject(err);\r\n };\r\n\r\n reader.readAsDataURL(file);\r\n });\r\n };\r\n\r\n handleUploadAttachment = async (\r\n e: React.ChangeEvent,\r\n attachmentType: IReferential\r\n ) => {\r\n try {\r\n if (e.target.files === null) {\r\n return;\r\n }\r\n e.persist();\r\n\r\n this.setState({\r\n attachmentTypeList: this.setAttachmentTypeList(attachmentType, true)\r\n });\r\n\r\n const attachments: MavoVehicleAttachment[] = [];\r\n for (let i = 0; i < e.target.files.length; i++) {\r\n const file = e.target.files![i];\r\n if (attachmentType.code == MavoVehicelAttachementTypeCodeEnum.IMG) {\r\n const fileSizeKB = file.size / 1024;\r\n if (fileSizeKB > MavoImageUploadSizeLimit.MaxSizeKB) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('MAVO_VEHICLE_IMG', 'Imaginea ') +\r\n file.name +\r\n this.translatorService.Tranlate('MAVO_VEHICLE_MAX_SIZE', 'depaseste dimensiunea maxima de 1MB.'),\r\n {\r\n variant: 'warning',\r\n autoHideDuration: 5000\r\n }\r\n );\r\n continue;\r\n }\r\n }\r\n const watermarkedFile = await this.addWatermarkToImage(file);\r\n attachments.push({\r\n id: 0,\r\n mavoVehicleId: this.props.mavoVehicleState.mavoVehicle.id,\r\n attachmentTypeId: attachmentType.id,\r\n attachmentType: attachmentType,\r\n file: watermarkedFile,\r\n originalFileName: file.name\r\n } as MavoVehicleAttachment);\r\n }\r\n\r\n if (this.props.mavoVehicleState.mavoVehicle.id === 0) {\r\n this.props.setMavoVehicleObject({\r\n ...this.props.mavoVehicleState.mavoVehicle,\r\n mavoVehicleAttachments: [\r\n ...this.props.mavoVehicleState.mavoVehicle.mavoVehicleAttachments,\r\n ...attachments\r\n ]\r\n });\r\n } else {\r\n if (attachments.length > 0) {\r\n const newFiles = await this.vehicleService.AddMavoVehicleAttachments(attachments);\r\n this.props.setMavoVehicleObject({\r\n ...this.props.mavoVehicleState.mavoVehicle,\r\n mavoVehicleAttachments: [\r\n ...this.props.mavoVehicleState.mavoVehicle.mavoVehicleAttachments,\r\n ...newFiles\r\n ]\r\n });\r\n }\r\n }\r\n\r\n this.setState({\r\n attachmentTypeList: this.setAttachmentTypeList(attachmentType, false)\r\n });\r\n\r\n e.target.value = '';\r\n } catch (error) {\r\n console.log(error);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n e.target.value = '';\r\n }\r\n };\r\n\r\n handleDeleteAttachment = async (id: number, fileName: string) => {\r\n try {\r\n await this.vehicleService.RemoveMavoVehicleAttachment(fileName);\r\n\r\n const mavoVehicleAttachments = [...this.props.mavoVehicleState.mavoVehicle.mavoVehicleAttachments];\r\n const index = mavoVehicleAttachments.findIndex((item) => item.id === id);\r\n mavoVehicleAttachments.splice(index, 1);\r\n\r\n this.props.setMavoVehicleObject({\r\n ...this.props.mavoVehicleState.mavoVehicle,\r\n mavoVehicleAttachments: [...mavoVehicleAttachments]\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n downloadFile = async (fileName: string, origFileName: string) => {\r\n const fileBlob = await this.vehicleService.GetMavoVehicleAttachment(fileName);\r\n FileSaver.saveAs(fileBlob, origFileName);\r\n };\r\n\r\n renderAttachments = (attachemntType: IReferential) => {\r\n const attachments = this.props.mavoVehicleState.mavoVehicle.mavoVehicleAttachments.filter(\r\n (item) => item.attachmentTypeId === attachemntType.id\r\n );\r\n const attachmentsToRender = [] as any[];\r\n\r\n attachments.forEach((attach, index) => {\r\n attachmentsToRender.push(\r\n \r\n \r\n \r\n
\r\n {attach.id ? (\r\n {\r\n this.handlePreviewAttachment(attach.originalFileName, attach.fileName);\r\n }}\r\n >\r\n \r\n )\r\n : null}\r\n
\r\n
\r\n \r\n
\r\n \r\n {\r\n if (attach.id !== 0) {\r\n this.downloadFile(attach.fileName, attach.originalFileName)\r\n }\r\n }}\r\n >\r\n {attach.originalFileName}\r\n {' '}\r\n \r\n
\r\n
\r\n {attach.id !== 0 && !this.isDisabled() && !this.props.disabled ? (\r\n \r\n
\r\n {\r\n this.handleDeleteAttachment(\r\n attach.id,\r\n attach.fileName\r\n );\r\n }}\r\n >\r\n \r\n \r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n );\r\n });\r\n return attachmentsToRender;\r\n };\r\n\r\n renderWorkflowAttashmentTypes = () => {\r\n const attachmentTypes = [] as any[];\r\n const attachmentTypeList = this.state.attachmentTypeList;\r\n if (attachmentTypeList.length !== 0) {\r\n attachmentTypeList.forEach((attach, index) => {\r\n attach.fileInputKey = Date.now();\r\n attachmentTypes.push(\r\n
\r\n \r\n
\r\n
\r\n \r\n {attach!.displayName}\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n {!attach.isLoading ? (\r\n
\r\n {this.props.mavoVehicleState.mavoVehicle.mavoVehicleAttachments.filter(\r\n (item) => item.attachmentTypeId === attach.id\r\n ).length !== 0 ? (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
{this.renderAttachments(attach)}
\r\n
\r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n \r\n \r\n \r\n {\r\n return this.handleUploadAttachment(e, attach);\r\n }}\r\n type=\"file\"\r\n accept={attach!.code == MavoVehicelAttachementTypeCodeEnum.IMG ? 'image/*' : '*'}\r\n multiple={true}\r\n />\r\n \r\n Upload\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n });\r\n }\r\n return attachmentTypes;\r\n };\r\n\r\n renderGalleryAttashment = () => {\r\n return
\r\n {this.state.loadMavoAttachmentData?.map((attach, index) => {\r\n return
\r\n
\r\n { this.setState({ isDialogOpen: true, currentIndex: index }) }}\r\n className=\"img-fluid\"\r\n style={{ maxWidth: '100%', maxHeight: '100%', objectFit: 'contain' }}\r\n src={attach?.url}>\r\n
\r\n
\r\n })}\r\n
\r\n }\r\n\r\n closeDialog = async () => {\r\n this.setState({\r\n isDialogOpen: false\r\n });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n this.isDisabled() ? this.renderGalleryAttashment() :
{this.renderWorkflowAttashmentTypes()}
\r\n ) : null}\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('CASE_PREVIEW_DOC', 'Previzualizare document')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.isDisabled() ?\r\n \r\n \r\n :\r\n \r\n {this.renderPreviewAttachment()}\r\n }\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (\r\n state: ApplicationState,\r\n ownProps: MavoVehicleDetailsProps\r\n ) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle,\r\n mavoVehicle: state.mavoVehicle,\r\n ...ownProps\r\n }),\r\n { ...CaseSettingsActionCreators, ...VehicleActionCreators, ...MavoVehicleActionCreators }\r\n)(withSnackbar(MavoAttachmentDataContainer as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withSnackbar } from 'notistack';\r\nimport {\r\n Checkbox,\r\n FormControlLabel,\r\n Grid,\r\n Typography\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport _ from 'lodash';\r\nimport { ApplicationState, CaseSettingsActionCreators, VehicleActionCreators } from '../../store';\r\nimport { MavoVehicleActionCreators } from '../../store/actions/MavoVehicle';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { MavoVehicleStatusCodeEnum, RefConstants, VehicleStatusCodeEnum, allowedMavoVehicleStatuses, disabledMavoVehicleStatuses, disabledNewMavoVehicleStatuses } from '../../helpers/Constants';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { MavoVehicleStatusDetailsProps } from '../cases/vehicleDetails/MavoVehicleStatusDetailsProps';\r\nimport { IMavoStatusDataContainerProps } from '../cases/vehicleDetails/IMavoStatusDataContainerProps';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport * as R from 'ramda';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport moment from 'moment';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport MomentUtils from '@date-io/moment';\r\nimport NumberFormat from 'react-number-format';\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\ninterface IMavoStatusDataContainerState {\r\n isLoading: boolean;\r\n executing: boolean;\r\n isDisabled: boolean;\r\n bodyConditions: IReferential[];\r\n}\r\n\r\nconst maxNumberOfCharacters = 100;\r\n\r\nclass MavoStatusDataContainer extends React.PureComponent<\r\n IMavoStatusDataContainerProps,\r\n IMavoStatusDataContainerState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n \r\n static contextType = ApplicationContext;\r\n static displayName = 'MavoStatusDataContainer';\r\n\r\n state = {\r\n isLoading: false,\r\n executing: false,\r\n isValuationOpen: false,\r\n isOpen: false,\r\n dialogVisible: false,\r\n isDisabled: false,\r\n bodyConditions: []\r\n } as IMavoStatusDataContainerState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n\r\n ValidatorForm.addValidationRule('maxLength', (value) => {\r\n if (!value) {\r\n return true;\r\n }\r\n\r\n if (value.length <= maxNumberOfCharacters) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n\r\n ValidatorForm.addValidationRule('isGreaterThanMaxValue', (value) => {\r\n if (value >= 999999.99) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n\r\n loadData = async () => {\r\n const {\r\n bodyConditionRef\r\n } = RefConstants;\r\n const bodyConditions = await this.appReferentialService.Get(bodyConditionRef!.baseUrl);\r\n \r\n this.setState(\r\n {\r\n isLoading: false,\r\n isDisabled: this.isDisabled(),\r\n bodyConditions: bodyConditions\r\n }\r\n );\r\n };\r\n\r\n isDisabled = (): boolean => {\r\n if (this.props.disabled) {\r\n return true;\r\n }\r\n\r\n //1.2\tActualizare/adaugare\r\n if (this.props.mavoVehicleState.mavoVehicle.id === 0) {\r\n //Nu pot fi modificate informatii vehicul din tab-urile «Informatii generale», «Stare vehicul», \r\n //«Despre vehicul (Dotari)» si «Date STOC» daca vehiculul este in una din starile : «Licitatie», «Comanda», «Aviz», «Factura»\r\n return disabledNewMavoVehicleStatuses.includes(this.props.mavoVehicleState.mavoVehicle.currentStatus!.status!.code ?? '') ? true : false;\r\n } else {\r\n //daca vehiculul este in stare “Licitatie”, se pot actualiza doar informatiile «Stare vehicul», «Despre vehicul (Dotari)» si «Poze» \r\n if (this.props.mavoVehicleState.mavoVehicle.currentStatus!.status!.code === MavoVehicleStatusCodeEnum.LICITATIE.toString()) {\r\n return false;\r\n }\r\n //daca vehiculul este in orice alta stare («Comanda», «Aviz», «Factura»), nu se pot actualiza nici un fel de informatii referitoare la acest vehicul\r\n return disabledMavoVehicleStatuses.includes(this.props.mavoVehicleState.mavoVehicle.currentStatus!.status!.code ?? '') ? true : false;\r\n }\r\n };\r\n\r\n onChange =\r\n (fieldName: string, fieldNameId?: string) => (e: any, newValue?: IReferential | null) => {\r\n !R.isNil(fieldNameId)\r\n ? \r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n vehicleConditionInfo: {\r\n ...this.props.mavoVehicleState.mavoVehicle.vehicleConditionInfo, \r\n [fieldName]: newValue || e.target.value,\r\n [fieldNameId]: Utils.GetIdOrNull(newValue)\r\n }\r\n })\r\n : \r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n vehicleConditionInfo: {\r\n ...this.props.mavoVehicleState.mavoVehicle.vehicleConditionInfo, \r\n [fieldName]: newValue || e.target.value\r\n }\r\n })\r\n };\r\n\r\n onCheckBoxChange =\r\n (fieldName: string) => (checked: boolean) => {\r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n vehicleConditionInfo: {\r\n ...this.props.mavoVehicleState.mavoVehicle.vehicleConditionInfo, \r\n [fieldName]: checked\r\n }\r\n })\r\n };\r\n\r\n onRepairPriceChange = (e: any) => {\r\n const inputValue = e.target.value;\r\n const parsedValue = inputValue === \"\" || isNaN(inputValue) ? null : parseFloat(inputValue);\r\n\r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n vehicleConditionInfo: {\r\n ...this.props.mavoVehicleState.mavoVehicle.vehicleConditionInfo, \r\n repairCostPrice: parsedValue\r\n }\r\n })\r\n };\r\n\r\n\r\n handleToggleIsChecked =\r\n (fieldName: string, fieldName2: string) => (checked: boolean) => {\r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n vehicleConditionInfo: {\r\n ...this.props.mavoVehicleState.mavoVehicle.vehicleConditionInfo, \r\n [fieldName]: checked,\r\n [fieldName2]: !checked\r\n }\r\n })\r\n };\r\n\r\n renderBodySection = () => {\r\n return (\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_CONDITION_BODY_TITLE', 'Caroserie')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_CONDITION_PAINTING_TITLE', 'Vopsire')}\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_CONDITION_TINWARE_AND_PAINTING_TITLE', 'Tinichigherie & Vopsitorie')}\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_CONDITION_REPLACE_AND_PAINTING_TITLE', 'Inlocuire & Vopsire')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {this.translatorService.Tranlate('VEHICLE_CONDITION_LEFT', 'S')}\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('VEHICLE_CONDITION_RIGHT', 'D')}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('VEHICLE_CONDITION_LEFT', 'S')}\r\n
\r\n
\r\n {this.translatorService.Tranlate('VEHICLE_CONDITION_RIGHT', 'D')}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('VEHICLE_CONDITION_LEFT', 'S')}\r\n
\r\n
\r\n {this.translatorService.Tranlate('VEHICLE_CONDITION_RIGHT', 'D')}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_FRONT_WING', 'Aripa fata')}\r\n \r\n {/* Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Tinichigerie & Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Inlocuire & Vopsire */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_REAR_WING', 'Aripa spate')}\r\n \r\n {/* Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Tinichigerie & Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Inlocuire & Vopsire */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_FRONT_DOOR', 'Usa fata')}\r\n \r\n {/* Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Tinichigerie & Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Inlocuire & Vopsire */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_REAR_DOOR', 'Usa spate')}\r\n \r\n {/* Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Tinichigerie & Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Inlocuire & Vopsire */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_HOOD', 'Capota')}\r\n \r\n {/* Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Tinichigerie & Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Inlocuire & Vopsire */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_FACE_MASK', 'Masca fata')}\r\n \r\n {/* Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Tinichigerie & Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Inlocuire & Vopsire */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_FRONT_BUMPER', 'Bara fata')}\r\n \r\n {/* Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Tinichigerie & Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Inlocuire & Vopsire */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_RARE_BUMPER', 'Bara spate')}\r\n \r\n {/* Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Tinichigerie & Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Inlocuire & Vopsire */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_TRUNK', 'Haion')}\r\n \r\n {/* Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Tinichigerie & Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Inlocuire & Vopsire */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_SPOILER', 'Eleron')}\r\n \r\n {/* Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Tinichigerie & Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Inlocuire & Vopsire */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_ROOF', 'Pavilion')}\r\n \r\n {/* Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Tinichigerie & Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Inlocuire & Vopsire */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_SUPERSTRUCTURE', 'Suprastructura')}\r\n \r\n {/* Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Tinichigerie & Vopsitorie */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {/* Inlocuire & Vopsire */}\r\n \r\n
\r\n option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n {this.translatorService.Tranlate('VEHICLE_REPLACE_REPAIR_TITLE', 'Inlocuire / Reparatie')}\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_CONDITION_LEFT', 'S')}\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_CONDITION_RIGHT', 'D')}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n {this.translatorService.Tranlate('VEHICLE_FOR_REPLACING_TITLE', 'De inlocuit')}\r\n
\r\n
\r\n {this.translatorService.Tranlate('VEHICLE_FOR_REPAIR_TITLE', 'De reparat')}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('VEHICLE_FOR_REPLACING_TITLE', 'De inlocuit')}\r\n
\r\n
\r\n {this.translatorService.Tranlate('VEHICLE_FOR_REPAIR_TITLE', 'De reparat')}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n {this.translatorService.Tranlate('VEHICLE_FOR_REPLACING_TITLE', 'De inlocuit')}\r\n
\r\n
\r\n {this.translatorService.Tranlate('VEHICLE_FOR_REPAIR_TITLE', 'De reparat')}\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICE_FRONT_SIDE_WINDOW', 'Geam lateral fata')}\r\n \r\n \r\n
\r\n this.handleToggleIsChecked('frontLeftSideWindowToReplace', 'frontLeftSideWindowToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('frontLeftSideWindowToRepair', 'frontLeftSideWindowToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n
\r\n this.handleToggleIsChecked('frontRightSideWindowToReplace', 'frontRightSideWindowToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('frontRightSideWindowToRepair', 'frontRightSideWindowToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_REAR_WINDOW', 'Luneta')}\r\n \r\n \r\n
\r\n this.handleToggleIsChecked('rearWindshieldToReplace', 'rearWindshieldToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('rearWindshieldToRepair', 'rearWindshieldToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICE_REAR_SIDE_WINDOW', 'Geam lateral spate')}\r\n \r\n \r\n
\r\n this.handleToggleIsChecked('rearLeftSideWindowToReplace', 'rearLeftSideWindowToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('rearLeftSideWindowToRepair', 'rearLeftSideWindowToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n
\r\n this.handleToggleIsChecked('rearRightSideWindowToReplace', 'rearRightSideWindowToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('rearRightSideWindowToRepair', 'rearRightSideWindowToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_WINDSCREEN', 'Parbriz')}\r\n \r\n \r\n
\r\n this.handleToggleIsChecked('windshieldToReplace', 'windshieldToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('windshieldToRepair', 'windshieldToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICE_SIDE_MIRROR', 'Oglinda laterala')}\r\n \r\n \r\n
\r\n this.handleToggleIsChecked('leftSideMirrorToReplace', 'leftSideMirrorToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('leftSideMirrorToRepair','leftSideMirrorToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n
\r\n this.handleToggleIsChecked('rightSideMirrorToReplace', 'rightSideMirrorToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('rightSideMirrorToRepair', 'rightSideMirrorToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_HOOD_GRILL', 'Grila capota')}\r\n \r\n \r\n
\r\n this.handleToggleIsChecked('hoodGrilleToReplace', 'hoodGrilleToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('hoodGrilleToRepair', 'hoodGrilleToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICE_WIPERS', 'Stergatoare')}\r\n \r\n \r\n
\r\n this.handleToggleIsChecked('leftWiperToReplace', 'leftWiperToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('leftWiperToRepair', 'leftWiperToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n
\r\n this.handleToggleIsChecked('rightWiperToReplace', 'rightWiperToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('rightWiperToRepair', 'rightWiperToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICE_PROJECTOR', 'Proiector')}\r\n \r\n \r\n
\r\n this.handleToggleIsChecked('leftProjectorToReplace', 'leftProjectorToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('leftProjectorToRepair', 'leftProjectorToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n
\r\n this.handleToggleIsChecked('rightProjectorToReplace', 'rightProjectorToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('rightProjectorToRepair', 'rightProjectorToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICE_SIGNALIZATION', 'Semnalizare')}\r\n \r\n \r\n
\r\n this.handleToggleIsChecked('leftTurnSignalToReplace', 'leftTurnSignalToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('leftTurnSignalToRepair', 'leftTurnSignalToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n
\r\n this.handleToggleIsChecked('rightTurnSignalToReplace', 'rightTurnSignalToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('rightTurnSignalToRepair', 'rightTurnSignalToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICE_LIGHT_HOUSE', 'Far')}\r\n \r\n \r\n
\r\n this.handleToggleIsChecked('leftHeadlightToReplace', 'leftHeadlightToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('leftHeadlightToRepair', 'leftHeadlightToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n
\r\n this.handleToggleIsChecked('rightHeadlightToReplace', 'rightHeadlightToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('rightHeadlightToRepair', 'rightHeadlightToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_CONDITION_LEFT_INFRASTRACTURE', 'S=stanga')}\r\n \r\n
\r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICE_TRAFFIC_STOPS', 'Stopuri')}\r\n \r\n \r\n
\r\n this.handleToggleIsChecked('leftBrakeLightsToReplace', 'leftBrakeLightsToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('leftBrakeLightsToRepair', 'leftBrakeLightsToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n\r\n \r\n
\r\n this.handleToggleIsChecked('rightBrakeLightsToReplace', 'rightBrakeLightsToRepair')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n this.handleToggleIsChecked('rightBrakeLightsToRepair', 'rightBrakeLightsToReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-padding\"\r\n />\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_CONDITION_RIGHT_INFRASTRACTURE', 'R=dreapta')}\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n renderMecanicsSection = () => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_MECANICS_TITLE', 'Mecanica')}\r\n \r\n \r\n \r\n \r\n this.onChange('motor')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_MOTOR', 'Motor')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n this.onChange('leftCvJoints')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_CV_JOINTS_LEFT', 'Planetare S')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n this.onChange('rightCvJoints')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_CV_JOINTS_RIGHT', 'Planetare D')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n this.onChange('clutch')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_CLUTCH', 'Ambreaj')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n this.onChange('leftShockAbsorbers')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_SHOCK_ABSORBERS_LEFT', 'Amortizoare S')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n this.onChange('rightShockAbsorbers')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_SHOCK_ABSORBERS_RIGHT', 'Amortizoare D')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n \r\n this.onChange('gearbox')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_GEARBOX', 'Cutie viteze')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n this.onChange('frontBrakes')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_FRONT_BRAKES', 'Frane F')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n this.onChange('backBrakes')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_BACK_BRAKES', 'Frane SP')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n \r\n \r\n this.onChange('steering')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_STEERING', 'Directie')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.onChange('battery')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_BATTERY', 'Baterie')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('MECANICS_EXPLICATION_LABEL', 'S=stanga , D=Dreapta , F=fata , SP=spate')}\r\n \r\n \r\n\r\n \r\n \r\n this.onChange('exhaust')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_EXHAUST', 'Esapament')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n this.onChange('tires')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_TIRES', 'Anvelope')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n this.onChange('driveShaft')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_DRIVE_SAFT', 'Ax cardanic')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n handleITPValidateDateChange = (\r\n date: MaterialUiPickersDate | null,\r\n value?: string | null\r\n ) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n const selectedDate = date ? date.format('YYYY-MM-DD') : undefined;\r\n\r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n vehicleConditionInfo: {\r\n ...this.props.mavoVehicleState.mavoVehicle.vehicleConditionInfo, \r\n itpValidateDate: selectedDate || null\r\n }\r\n })\r\n };\r\n\r\n renderInteriorAndAccesoriesSection = () => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_INTERIOR_AND_ACCESORIES_TITLE', 'Interior si accesorii')}\r\n \r\n \r\n \r\n \r\n this.onChange('leftSeatUpholstery')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_LEFT_SEAT_UPHOLSTERY', 'Tapiserie scaune stanga')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n\r\n \r\n this.onChange('interiorMirror')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_INTERIOR_MIRROR', 'Oglinda interioara')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n this.onChange('rightSeatUpholstery')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_RIGHT_SEAT_UPHOLSTERY', 'Tapiserie scaune dreapta')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n\r\n \r\n this.onChange('firstAidKit')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_FIRST_AID_KIT', 'Trusa sanitara')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n this.onChange('rearSeatUpholstery')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_REAR_SEAT_UPHOLSTERY', 'Tapiserie scaune spate')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n\r\n \r\n this.onChange('bulbKit')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_BULB_KIT', 'Trusa de becuri')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n this.onChange('leftFrontHeadrest')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_LEFT_FRONT_HEADREST', 'Tetiera fata stanga')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_SPARE_TIRE', 'Roata de rezerva')}\r\n \r\n \r\n this.handleToggleIsChecked('spareTireGood', 'spareTireReplace')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-top-padding\"\r\n />\r\n }\r\n label={this.translatorService.Tranlate('VEHICLE_SPARE_TIRE_GOOD', 'Buna')}\r\n className=\"ml-0 mr-3 mb-0\"\r\n />\r\n this.handleToggleIsChecked('spareTireReplace', 'spareTireGood')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className=\"checkbox-no-top-padding\"\r\n />\r\n }\r\n label={this.translatorService.Tranlate('VEHICLE_SPARE_TIRE_REPLACE', 'De inlocuit')}\r\n className=\"ml-0 mr-3 mb-0\"\r\n />\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n this.onChange('rightFrontHeadrest')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_RIGHT_FRONT_HEADREST', 'Tetiera fata dreapta')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n this.onChange('rearHeadrest')(e)}\r\n label= {this.translatorService.Tranlate('VEHICLE_REAR_HEADREST', 'Tetiera spate')}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n this.onCheckBoxChange('frontFloorMats')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className='checkbox-no-top-padding'\r\n >\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('frontFloorMats')(!this.props.conditionInfo.frontFloorMats)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_FLOOR_MATS', 'Covorase fata')}\r\n
\r\n
\r\n\r\n \r\n this.onCheckBoxChange('fireExtinguisher')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className='checkbox-no-top-padding'\r\n >\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('fireExtinguisher')(!this.props.conditionInfo.fireExtinguisher)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_FIRE_EXTINGUISHER', 'Extinctor')}\r\n
\r\n
\r\n\r\n \r\n this.onCheckBoxChange('wheelWrench')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className='checkbox-no-top-padding'\r\n >\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('wheelWrench')(!this.props.conditionInfo.wheelWrench)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_WHEEL_WRENCH', 'Cheie roti')}\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n this.onCheckBoxChange('rearFloorMats')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className='checkbox-no-top-padding'\r\n >\r\n
!this.state.isDisabled && this.onCheckBoxChange('rearFloorMats')(!this.props.conditionInfo.rearFloorMats)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_REAR_FLOOR_MATS', 'Covorase spate')}\r\n
\r\n
\r\n\r\n \r\n this.onCheckBoxChange('reflectiveTriangle')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className='checkbox-no-top-padding'\r\n >\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('reflectiveTriangle')(!this.props.conditionInfo.reflectiveTriangle)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_REFLECTIVE_TRIANGLE', 'Triunghi reflectorizant')}\r\n
\r\n
\r\n\r\n \r\n this.onCheckBoxChange('carJack')(e.target.checked)}\r\n disabled={this.state.isDisabled}\r\n className='checkbox-no-top-padding'\r\n >\r\n \r\n
!this.state.isDisabled && this.onCheckBoxChange('carJack')(!this.props.conditionInfo.carJack)} \r\n style={{\r\n cursor: this.state.isDisabled ? 'not-allowed' : 'pointer',\r\n userSelect: 'none'\r\n }}\r\n >\r\n {this.translatorService.Tranlate('VEHICLE_CAR_JACK', 'Cric')}\r\n
\r\n
\r\n
\r\n \r\n )\r\n };\r\n\r\n renderObservationsSection = () => {\r\n return (\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_OBSERVATIONS_TITLE', 'Observatii')}\r\n \r\n this.onChange('observations')(e)}\r\n label={this.translatorService.Tranlate(\r\n 'VEHICLE_OBSERVATIONS',\r\n 'Observatii'\r\n )}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharacters\r\n ]}\r\n />\r\n \r\n\r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_ESTIMATE_COST_REPAIR_TITLE', 'Deviz estimativ cost remedieri (€)')}\r\n \r\n\r\n \r\n this.onRepairPriceChange(e)\r\n }\r\n label={this.translatorService.Tranlate('VEHICLE_ESTIMATE_COST_REPAIR', 'Deviz estimativ cost remedieri (€)')}\r\n validators={['isGreaterThanMaxValue']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'GRATTER_THAN_MAX_VALUE_ERROR_MESSAGE',\r\n 'Pretul introdus este prea mare. Trebuie sa fie mica decat 999999.99'\r\n ) \r\n ]}\r\n InputProps={{\r\n inputComponent: this.NumberDecimalFormatCustom\r\n }}\r\n />\r\n \r\n \r\n );\r\n }\r\n\r\n NumberDecimalFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n \r\n renderVehicleStatusForm = () => {\r\n return (\r\n {\r\n // this.submitCaseVehicleDetailsData(e);\r\n }}\r\n >\r\n
\r\n {this.renderBodySection()}\r\n {this.renderMecanicsSection()}\r\n {this.renderInteriorAndAccesoriesSection()}\r\n {this.renderObservationsSection()}\r\n
\r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
{this.renderVehicleStatusForm()}
\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (\r\n state: ApplicationState,\r\n ownProps: MavoVehicleStatusDetailsProps\r\n ) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle,\r\n mavoVehicle: state.mavoVehicle,\r\n ...ownProps\r\n }),\r\n { ...CaseSettingsActionCreators, ...VehicleActionCreators, ...MavoVehicleActionCreators }\r\n)(withSnackbar(MavoStatusDataContainer as any));\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n VehicleActionCreators,\r\n VehicleState\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Button,\r\n Card,\r\n AppBar,\r\n Tabs,\r\n Tab\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { WorkflowSectionStepForm } from '../../interfaces/Workflow';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { MavoVehicleStatusCodeEnum, ReferentialCode, disabledMavoVehicleStatuses, mavoVehicleStatuses } from '../../helpers/Constants';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { Vehicle, MavoVehicle, MavoVehicleAttachment, VehicleOptionInfo, VehicleConditionInfo } from '../../interfaces/Vehicle';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport * as R from 'ramda';\r\nimport { MavoVehicleActionCreators } from '../../store/actions/MavoVehicle';\r\nimport { MavoVehicleState } from '../../store/reducers/MavoVehicle';\r\nimport MavoGeneralInformationContainer from './MavoGeneralInformationContainer';\r\nimport MavoVehicleOptionsContainer from './MavoVehicleOptionsContainer';\r\nimport MavoAttachmentDataContainer from './MavoAttachmentDataContainer';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MavoStatusDataContainer from './MavoStatusDataContainer';\r\nimport NavigationIcon from '@material-ui/icons/Navigation';\r\n\r\ninterface IMavoVehicleDetailsFormState {\r\n isLoading: boolean;\r\n executing: boolean;\r\n isUserHidden: boolean;\r\n vehicle: MavoVehicle;\r\n selectedTab: number;\r\n statuses: IReferential[];\r\n statusOptions: IReferential[];\r\n selectedDisplayedStatus: string;\r\n isChangeVehicleStatusDialogOpen: boolean;\r\n}\r\n\r\nexport interface ExternalMavoVehicleDetailsFormProps {\r\n workflowForm: WorkflowSectionStepForm;\r\n vehicleDetails: Vehicle;\r\n}\r\n\r\ntype IMavoVehicleDetailsFormProps = ExternalMavoVehicleDetailsFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n mavoVehicleState: MavoVehicleState;\r\n} & typeof CaseSettingsActionCreators &\r\n typeof VehicleActionCreators &\r\n typeof MavoVehicleActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass MavoVehicleDetailsForm extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: true,\r\n executing: false,\r\n isUserHidden: false,\r\n selectedTab: 0,\r\n statuses: [] as IReferential[],\r\n statusOptions: [],\r\n isChangeVehicleStatusDialogOpen: false,\r\n vehicle: {\r\n id: 0,\r\n vin: '',\r\n make: null,\r\n makeId: null,\r\n model: null,\r\n modelId: null,\r\n versionItem: null,\r\n versionId: null,\r\n colorRCR: null,\r\n colorRCRId: null,\r\n fuelType: null,\r\n fuelTypeId: null,\r\n bodyTypeRCRId: null,\r\n bodyTypeRCR: null,\r\n transmissionTypeId: null,\r\n transmissionType: null,\r\n provenance: null,\r\n provenanceId: null,\r\n firstRegistrationDate: '',\r\n fabricationYear: null,\r\n kilometersNr: null,\r\n power: null,\r\n engineManufactureCode: '',\r\n accessories: null,\r\n isReserved: false,\r\n reservations: '',\r\n cylinderCapacity: null,\r\n supplier: null,\r\n location: null,\r\n htPurchaseRonPrice: null,\r\n ttcEvaluationEurPrice: null,\r\n nirNumber: null,\r\n nirDate: null,\r\n currentStatus: null,\r\n vehicleOptions: [],\r\n vehicleType: null,\r\n vehicleTypeId: null,\r\n mavoVehicleAttachments: [] as MavoVehicleAttachment[],\r\n vehicleOptionInfo: {\r\n vehicleId: 0,\r\n engineCapacity: null,\r\n emissionsClass: null,\r\n doorCount: null,\r\n seatCount: null,\r\n driveType: null,\r\n registration: null,\r\n vehicleCondition: null,\r\n metallicColor: null,\r\n upholstery: null,\r\n upholsteryColor: null,\r\n previousOwnersCount: null,\r\n countryOfOrigin: null,\r\n alarm: false,\r\n antiTheft: false,\r\n abs: false,\r\n esp: false,\r\n driverFrontAirbag: false,\r\n passengerFrontAirbag: false,\r\n frontSideAirbags: false,\r\n frontCurtainAirbag: false,\r\n xenonHeadlights: false,\r\n alloyWheels: false,\r\n glassRoof: false,\r\n towHook: false,\r\n protectionFrame: false,\r\n steeringWheelControls: false,\r\n onBoardComputer: false,\r\n cruiseControl: false,\r\n lockableDifferential: false,\r\n particleFilter: false,\r\n electricMirrors: false,\r\n frontElectricWindows: false,\r\n rearElectricWindows: false,\r\n tintedWindows: false,\r\n heatedSeats: false,\r\n rainSensors: false,\r\n parkingSensors: false,\r\n powerSteering: false,\r\n sunroof: false,\r\n rightHandDrive: false,\r\n fogLights: false,\r\n airConditioning: false,\r\n radio: false,\r\n cdPlayer: false,\r\n videoScreen: false,\r\n gps: false\r\n } as VehicleOptionInfo,\r\n vehicleConditionInfo: {\r\n vehicleId: 0,\r\n frontWingLeftPaintId: null,\r\n frontWingLeftPaint: null,\r\n frontWingRightPaintId: null,\r\n frontWingRightPaint: null,\r\n rearWingLeftPaintId: null,\r\n rearWingLeftPaint: null,\r\n rearWingRightPaintId: null,\r\n rearWingRightPaint: null,\r\n frontDoorLeftPaintId: null,\r\n frontDoorLeftPaint: null,\r\n frontDoorRightPaintId: null,\r\n frontDoorRightPaint: null,\r\n rearDoorLeftPaintId: null,\r\n rearDoorLeftPaint: null,\r\n rearDoorRightPaintId: null,\r\n rearDoorRightPaint: null,\r\n hoodPaintId: null,\r\n hoodPaint: null,\r\n faceMaskPaintId: null,\r\n faceMaskPaint: null,\r\n frontBumperPaintId: null,\r\n frontBumperPaint: null,\r\n rearBumperPaintId: null,\r\n rearBumperPaint: null,\r\n trunkPaintId: null,\r\n trunkPaint: null,\r\n spoilerPaintId: null,\r\n spoilerPaint: null,\r\n roofPaintId: null,\r\n roofPaint: null,\r\n superstructurePaintId: null,\r\n superstructurePaint: null,\r\n\r\n // Tinichigerie + Vopsitorie (Bodywork + Painting)\r\n frontWingLeftBodyPaintId: null,\r\n frontWingLeftBodyPaint: null,\r\n frontWingRightBodyPaintId: null,\r\n frontWingRightBodyPaint: null,\r\n rearWingLeftBodyPaintId: null,\r\n rearWingLeftBodyPaint: null,\r\n rearWingRightBodyPaintId: null,\r\n rearWingRightBodyPaint: null,\r\n frontDoorLeftBodyPaintId: null,\r\n frontDoorLeftBodyPaint: null,\r\n frontDoorRightBodyPaintId: null,\r\n frontDoorRightBodyPaint: null,\r\n rearDoorLeftBodyPaintId: null,\r\n rearDoorLeftBodyPaint: null,\r\n rearDoorRightBodyPaintId: null,\r\n rearDoorRightBodyPaint: null,\r\n hoodBodyPaintId: null,\r\n hoodBodyPaint: null,\r\n faceMaskBodyPaintId: null,\r\n faceMaskBodyPaint: null,\r\n frontBumperBodyPaintId: null,\r\n frontBumperBodyPaint: null,\r\n rearBumperBodyPaintId: null,\r\n rearBumperBodyPaint: null,\r\n trunkBodyPaintId: null,\r\n trunkBodyPaint: null,\r\n spoilerBodyPaintId: null,\r\n spoilerBodyPaint: null,\r\n roofBodyPaintId: null,\r\n roofBodyPaint: null,\r\n superstructureBodyPaintId: null,\r\n superstructureBodyPaint: null,\r\n\r\n // Replacement & Painting (Inlcuire + vopsire)\r\n frontWingLeftReplacePaintId: null,\r\n frontWingLeftReplacePaint: null,\r\n frontWingRightReplacePaintId: null,\r\n frontWingRightReplacePaint: null,\r\n rearWingLeftReplacePaintId: null,\r\n rearWingLeftReplacePaint: null,\r\n rearWingRightReplacePaintId: null,\r\n rearWingRightReplacePaint: null,\r\n frontDoorLeftReplacePaintId: null,\r\n frontDoorLeftReplacePaint: null,\r\n frontDoorRightReplacePaintId: null,\r\n frontDoorRightReplacePaint: null,\r\n rearDoorLeftReplacePaintId: null,\r\n rearDoorLeftReplacePaint: null,\r\n rearDoorRightReplacePaintId: null,\r\n rearDoorRightReplacePaint: null,\r\n hoodReplacePaintId: null,\r\n hoodReplacePaint: null,\r\n faceMaskReplacePaintId: null,\r\n faceMaskReplacePaint: null,\r\n frontBumperReplacePaintId: null,\r\n frontBumperReplacePaint: null,\r\n rearBumperReplacePaintId: null,\r\n rearBumperReplacePaint: null,\r\n trunkReplacePaintId: null,\r\n trunkReplacePaint: null,\r\n spoilerReplacePaintId: null,\r\n spoilerReplacePaint: null,\r\n roofReplacePaintId: null,\r\n roofReplacePaint: null,\r\n superstructureReplacePaintId: null,\r\n superstructureReplacePaint: null,\r\n\r\n //Inlocuire/Reparatie\r\n frontLeftSideWindowToReplace: false,\r\n frontLeftSideWindowToRepair: false,\r\n frontRightSideWindowToReplace: false,\r\n frontRightSideWindowToRepair: false,\r\n\r\n rearLeftSideWindowToReplace: false,\r\n rearLeftSideWindowToRepair: false,\r\n rearRightSideWindowToReplace: false,\r\n rearRightSideWindowToRepair: false,\r\n\r\n leftSideMirrorToReplace: false,\r\n leftSideMirrorToRepair: false,\r\n rightSideMirrorToReplace: false,\r\n rightSideMirrorToRepair: false,\r\n\r\n leftWiperToReplace: false,\r\n leftWiperToRepair: false,\r\n rightWiperToReplace: false,\r\n rightWiperToRepair: false,\r\n\r\n leftProjectorToReplace: false,\r\n leftProjectorToRepair: false,\r\n rightProjectorToReplace: false,\r\n rightProjectorToRepair: false,\r\n\r\n leftTurnSignalToReplace: false,\r\n leftTurnSignalToRepair: false,\r\n rightTurnSignalToReplace: false,\r\n rightTurnSignalToRepair: false,\r\n\r\n leftHeadlightToReplace: false,\r\n leftHeadlightToRepair: false,\r\n rightHeadlightToReplace: false,\r\n rightHeadlightToRepair: false,\r\n\r\n leftBrakeLightsToReplace: false,\r\n leftBrakeLightsToRepair: false,\r\n rightBrakeLightsToReplace: false,\r\n rightBrakeLightsToRepair: false,\r\n\r\n rearWindshieldToReplace: false,\r\n rearWindshieldToRepair: false,\r\n\r\n windshieldToReplace: false,\r\n windshieldToRepair: false,\r\n\r\n hoodGrilleToReplace: false,\r\n hoodGrilleToRepair: false,\r\n\r\n //Mecanica\r\n motor: null,\r\n clutch: null,\r\n gearbox: null,\r\n steering: null,\r\n battery: null,\r\n exhaust: null,\r\n tires: null,\r\n driveShaft: null,\r\n leftCvJoints: null,\r\n rightCvJoints: null,\r\n leftShockAbsorbers: null,\r\n rightShockAbsorbers: null,\r\n frontBrakes: null,\r\n backBrakes: null,\r\n itpValidateDate: null,\r\n\r\n //Interior si accesorii\r\n leftSeatUpholstery: null,\r\n rightSeatUpholstery: null,\r\n rearSeatUpholstery: null,\r\n interiorMirror: null,\r\n firstAidKit: null,\r\n bulbKit: null,\r\n leftFrontHeadrest: null,\r\n rightFrontHeadrest: null,\r\n rearHeadrest: null,\r\n spareTireGood: false,\r\n spareTireReplace: false,\r\n frontFloorMats: false,\r\n fireExtinguisher: false,\r\n wheelWrench: false,\r\n rearFloorMats: false,\r\n reflectiveTriangle: false,\r\n carJack: false,\r\n } as VehicleConditionInfo\r\n } as unknown as MavoVehicle,\r\n selectedDisplayedStatus: ''\r\n } as IMavoVehicleDetailsFormState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadMavoVehicle();\r\n }\r\n );\r\n }\r\n\r\n loadMavoVehicle = async () => {\r\n const statusesTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.VehicleStatus\r\n );\r\n const statuses = (await this.appReferentialService.Get(statusesTypeRef!.baseUrl)).filter(x => mavoVehicleStatuses.includes(x.id));\r\n\r\n if (this.props.match.params.id.toUpperCase() !== 'NEW') {\r\n try {\r\n await this.props.setMavoVehicle(this.props.match.params.id as any);\r\n } catch (error) { }\r\n } else {\r\n const initialStatus = statuses.find((status) => status.code === MavoVehicleStatusCodeEnum.INDISPONIBIL.toString());\r\n this.props.setMavoVehicleObject({\r\n ...this.props.mavoVehicleState.mavoVehicle,\r\n currentStatus: {\r\n ...this.props.mavoVehicleState.mavoVehicle.currentStatus,\r\n id: 0,\r\n status: initialStatus!,\r\n statusId: initialStatus!.id\r\n }\r\n });\r\n }\r\n\r\n const vehicle = this.props.mavoVehicleState.mavoVehicle;\r\n\r\n if (disabledMavoVehicleStatuses.includes(this.props.mavoVehicleState.mavoVehicle.currentStatus!.status!.code ?? '')) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('IN_PROCESING_OF_SALE', 'Inregistrare in curs de vanzare'), {\r\n variant: 'info'\r\n });\r\n }\r\n\r\n this.setState({\r\n isLoading: false,\r\n vehicle: vehicle,\r\n statuses: statuses,\r\n selectedDisplayedStatus: !R.isNil(vehicle?.currentStatus?.status)\r\n ? vehicle?.currentStatus?.status?.displayName || ''\r\n : ''\r\n });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState({ isChangeVehicleStatusDialogOpen: false });\r\n };\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState({\r\n selectedTab: newValue\r\n });\r\n };\r\n\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n {\r\n this.props.setMavoVehicleObject(null);\r\n this.props.history.push('/mavo-vehicles');\r\n }}\r\n >\r\n \r\n {this.translatorService.Tranlate(\r\n 'MENU_MAVO_VEHICLES_RECORD',\r\n 'Evidenta vehicule'\r\n )}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n \r\n
\r\n {!this.state.isLoading ?\r\n \r\n : null}\r\n
\r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState, ownProps: ExternalMavoVehicleDetailsFormProps) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle,\r\n mavoVehicleState: state.mavoVehicle\r\n }),\r\n { ...CaseSettingsActionCreators, ...VehicleActionCreators, ...MavoVehicleActionCreators }\r\n)(withSnackbar(MavoVehicleDetailsForm as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withSnackbar } from 'notistack';\r\nimport {\r\n Button,\r\n FormControlLabel,\r\n Grid,\r\n Switch\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport _ from 'lodash';\r\nimport { ApplicationState, CaseSettingsActionCreators, VehicleActionCreators } from '../../store';\r\nimport { MavoVehicleActionCreators } from '../../store/actions/MavoVehicle';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport moment from 'moment';\r\nimport * as R from 'ramda';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport NumberFormat from 'react-number-format';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { IMavoStockDataEditContainerProps } from '../cases/vehicleDetails/IMavoStockDataEditContainerProps';\r\nimport { MavoVehicle } from '../../interfaces/Vehicle';\r\nimport { MavoVehicleStockDetailsEditProps } from '../cases/vehicleDetails/MavoVehicleStockDetailsEditProps';\r\n\r\ninterface IMavoStockDataEditContainerState {\r\n isLoading: boolean;\r\n executing: boolean;\r\n}\r\n\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\nconst maxNumberOfCharactersObservations = 300;\r\n\r\nclass MavoStockDataEditContainer extends React.PureComponent<\r\n IMavoStockDataEditContainerProps,\r\n IMavoStockDataEditContainerState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n \r\n static contextType = ApplicationContext;\r\n static displayName = 'MavoStockDataEditContainer';\r\n\r\n state = {\r\n isLoading: false,\r\n executing: false,\r\n isValuationOpen: false,\r\n isOpen: false,\r\n dialogVisible: false\r\n } as IMavoStockDataEditContainerState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: false\r\n }\r\n );\r\n\r\n ValidatorForm.addValidationRule('maxLength', (value) => {\r\n if (!value) {\r\n return true;\r\n }\r\n\r\n if (value.length <= maxNumberOfCharactersObservations) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={0}\r\n />\r\n );\r\n };\r\n\r\n \r\n NumberDecimalFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n\r\n NumberDecimalCurrencyFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={4}\r\n />\r\n );\r\n };\r\n\r\n onChange =\r\n (fieldName: string, fieldNameId?: string) => (e: any, newValue?: IReferential | null) => {\r\n !R.isNil(fieldNameId)\r\n ? \r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n [fieldName]: newValue || e.target.value,\r\n [fieldNameId]: Utils.GetIdOrNull(newValue)\r\n })\r\n : \r\n this.props.setMavoVehicleObject({ \r\n ...this.props.mavoVehicleState.mavoVehicle, \r\n [fieldName]: newValue || e.target.value\r\n })\r\n };\r\n\r\n handleNirDateChange = (\r\n date: MaterialUiPickersDate | null,\r\n value?: string | null\r\n ) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n const selectedDate = date ? date.format('YYYY-MM-DD') : undefined;\r\n\r\n this.props.setMavoVehicleObject({\r\n ...this.props.mavoVehicleState.mavoVehicle,\r\n nirDate: selectedDate || ''\r\n });\r\n };\r\n\r\n \r\n handleSwitchValue = async (checked: boolean) => {\r\n this.props.setMavoVehicleObject({\r\n ...this.props.mavoVehicleState.mavoVehicle,\r\n isReserved: checked\r\n });\r\n };\r\n\r\n isDisabled = (): boolean => {\r\n return this.props.hasRights ? false : true;\r\n };\r\n\r\n submitMavoVehicleData = async () => {\r\n try {\r\n this.setState({ executing: true, isLoading: true });\r\n let newVehicle = { ...this.props.mavoVehicleState.mavoVehicle } as MavoVehicle;\r\n newVehicle = await this.vehicleService.AddMavoVehicle({\r\n ...newVehicle,\r\n vehicleOptions: []\r\n });\r\n\r\n this.props.setMavoVehicleObject(newVehicle);\r\n this.setState({ executing: false, isLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } \r\n };\r\n\r\n renderVehicleDetails = () => {\r\n return (\r\n \r\n \r\n \r\n
\r\n {this.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_VIN_CODE', 'VIN')}: \r\n
\r\n
\r\n  {this.props.mavoVehicleState.mavoVehicle.vin}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('VEHICLES_VEHICLE_MAKE', 'Marca')}:\r\n
\r\n
\r\n  {this.props.mavoVehicleState.mavoVehicle.make ? this.props.mavoVehicleState.mavoVehicle.make.displayName : ''}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('VEHICLES_VEHICLE_MODEL', 'Model')}:\r\n
\r\n
\r\n  {this.props.mavoVehicleState.mavoVehicle.model ? this.props.mavoVehicleState.mavoVehicle.model.displayName : ''}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_STATE', 'Stare')}:\r\n
\r\n
\r\n  {!R.isNil(this.props.mavoVehicleState.mavoVehicle?.currentStatus?.status) ? this.props.mavoVehicleState.mavoVehicle?.currentStatus?.status?.displayName || '' : ''}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n renderStockDataForm = () => {\r\n return (\r\n {\r\n this.submitMavoVehicleData();\r\n }}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.onChange('nirNumber')(e)}\r\n label={this.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_NIR_NUMBER', 'Nr NIR')}\r\n />\r\n \r\n \r\n {/* \r\n \r\n this.onChange('supplier')(e)}\r\n label={this.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_SUPPLIER',\r\n 'Furnizor'\r\n )}\r\n />\r\n \r\n \r\n this.onChange('ttcEvaluationEurPrice')(e)}\r\n label={this.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_INITIAL_PRICE', 'Pret intrare')}\r\n validators={['minNumber:1']}\r\n InputProps={{\r\n inputComponent: this.NumberDecimalFormatCustom\r\n }}\r\n />\r\n \r\n */}\r\n \r\n \r\n this.onChange('supplier')(e)}\r\n label={this.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_SUPPLIER',\r\n 'Furnizor'\r\n )}\r\n />\r\n \r\n \r\n this.onChange('location')(e)}\r\n label={this.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_LOCATION',\r\n 'Locatie'\r\n )}\r\n />\r\n \r\n \r\n
\r\n {\r\n this.handleSwitchValue(e.target.checked)\r\n }}\r\n color=\"primary\"\r\n />\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'MAVO_VEHICLE_RESERVED',\r\n 'Rezervat'\r\n )}\r\n labelPlacement=\"end\"\r\n className=\"mt-3 ml-0 mr-0\"\r\n />\r\n
\r\n
\r\n
\r\n \r\n \r\n this.onChange('observations')(e)}\r\n label={this.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_OBSERVATIONS',\r\n 'Observatii'\r\n )}\r\n validators={['maxLength']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'VALIDATORS_MAX_LENGTH',\r\n 'Numar maxim de caractere: '\r\n ) + maxNumberOfCharactersObservations\r\n ]}\r\n multiline\r\n variant=\"outlined\"\r\n rows={6}\r\n />\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.onChange('noticeNr')(e)}\r\n label={this.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_NOTICE_NUMBER', 'Nr aviz')}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.onChange('invoiceNr')(e)}\r\n label={this.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_INVOICE_NUMBER', 'Nr factura')}\r\n />\r\n \r\n \r\n this.onChange('salePrice')(e)}\r\n label={this.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_INVOICE_PRICE', 'Pret vanzare')}\r\n />\r\n \r\n \r\n this.onChange('currencyRate')(e)}\r\n label={this.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_INVOICE_CURRENCY', 'Curs vanzare')}\r\n InputProps={{\r\n inputComponent: this.NumberDecimalCurrencyFormatCustom\r\n }}\r\n />\r\n \r\n \r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate('SAVE', 'Salveaza')}\r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n <>\r\n
\r\n {this.renderVehicleDetails()}\r\n
\r\n
\r\n {this.renderStockDataForm()}\r\n
\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (\r\n state: ApplicationState,\r\n ownProps: MavoVehicleStockDetailsEditProps\r\n ) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle,\r\n mavoVehicle: state.mavoVehicle,\r\n ...ownProps\r\n }),\r\n { ...CaseSettingsActionCreators, ...VehicleActionCreators, ...MavoVehicleActionCreators }\r\n)(withSnackbar(MavoStockDataEditContainer as any));\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n VehicleActionCreators,\r\n VehicleState\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Button,\r\n Card,\r\n AppBar,\r\n Tabs,\r\n Tab\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { MavoVehicleStatusCodeEnum, ReferentialCode, mavoVehicleStatuses } from '../../helpers/Constants';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { MavoVehicle } from '../../interfaces/Vehicle';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport * as R from 'ramda';\r\nimport { MavoVehicleActionCreators } from '../../store/actions/MavoVehicle';\r\nimport { MavoVehicleState } from '../../store/reducers/MavoVehicle';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MavoStockDataEditContainer from './MavoStockDataEditContainer';\r\nimport NavigationIcon from '@material-ui/icons/Navigation';\r\n\r\ninterface IMavoVehicleStockDetailsFormState {\r\n isLoading: boolean;\r\n executing: boolean;\r\n isUserHidden: boolean;\r\n vehicle: MavoVehicle | null;\r\n selectedTab: number;\r\n statuses: IReferential[];\r\n selectedDisplayedStatus: string;\r\n hasRights: boolean;\r\n}\r\n\r\ntype IMavoVehicleStockDetailsFormProps = {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n mavoVehicleState: MavoVehicleState;\r\n} & typeof CaseSettingsActionCreators &\r\n typeof VehicleActionCreators &\r\n typeof MavoVehicleActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass MavoVehicleStockDetailsForm extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: true,\r\n executing: false,\r\n isUserHidden: false,\r\n selectedTab: 0,\r\n statuses: [] as IReferential[],\r\n selectedDisplayedStatus: '',\r\n hasRights: false\r\n } as IMavoVehicleStockDetailsFormState;\r\n\r\n public componentDidMount() { \r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadMavoVehicle();\r\n }\r\n );\r\n }\r\n\r\n loadMavoVehicle = async () => {\r\n const statusesTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.VehicleStatus\r\n );\r\n const statuses = (await this.appReferentialService.Get(statusesTypeRef!.baseUrl)).filter(x => mavoVehicleStatuses.includes(x.id));\r\n\r\n await this.props.setMavoVehicle(this.props.match.params.id as any);\r\n\r\n const vehicle = this.props.mavoVehicleState.mavoVehicle;\r\n\r\n this.setState({\r\n isLoading: false,\r\n vehicle: vehicle,\r\n statuses: statuses,\r\n selectedDisplayedStatus: !R.isNil(vehicle?.currentStatus?.status)\r\n ? vehicle?.currentStatus?.status?.displayName || '' : '',\r\n hasRights: this.props.mavoVehicleState.mavoVehicle!.currentStatus!.status!.code === MavoVehicleStatusCodeEnum.INDISPONIBIL ? true : false\r\n });\r\n };\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState({\r\n selectedTab: newValue\r\n });\r\n };\r\n \r\n updateHasRightsValue = (value: boolean) => {\r\n this.setState({\r\n hasRights: value\r\n });\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n {\r\n this.props.setMavoVehicleObject(null);\r\n this.props.history.push('/mavo-vehicles');\r\n }}\r\n >\r\n \r\n {this.translatorService.Tranlate(\r\n 'MENU_MAVO_VEHICLES_RECORD',\r\n 'Evidenta vehicule'\r\n )}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle,\r\n mavoVehicleState: state.mavoVehicle\r\n }),\r\n{ ...CaseSettingsActionCreators, ...VehicleActionCreators, ...MavoVehicleActionCreators }\r\n)(withSnackbar(MavoVehicleStockDetailsForm as any));\r\n","import { MavoVehicleAuction } from '../../interfaces/Vehicle';\r\nimport { AppThunkAction } from '.././';\r\nimport * as ActionTypes from './ActionTypes';\r\n\r\ninterface SetVehicleAuction {\r\n type: typeof ActionTypes.VEHICLE_SET_VEHICLE_AUCTION;\r\n mavoVehicleAuction: MavoVehicleAuction | null;\r\n}\r\n\r\nexport type VehicleAuctionAction = SetVehicleAuction;\r\n\r\nexport const VehicleAuctionActionCreators = {\r\n setMavoVehicleAuctionObject:\r\n (mavoVehicleAuction: MavoVehicleAuction | null): AppThunkAction =>\r\n async (dispatch, getState, context) => {\r\n dispatch({ type: ActionTypes.VEHICLE_SET_VEHICLE_AUCTION, mavoVehicleAuction: mavoVehicleAuction });\r\n },\r\n};\r\n","import React, { useState, useEffect, useContext } from \"react\";\r\nimport moment from \"moment\";\r\nimport { ApplicationContext } from \"../../context/Contexts\";\r\nimport { MavoAuctionStatusEnum } from \"../../helpers/Constants\";\r\nimport { IReferential } from \"../../interfaces/IReferential\";\r\n\r\ntype RealTimeDateProps = {\r\n endDate: string;\r\n showLastOffer: boolean;\r\n auctionStatus: IReferential;\r\n};\r\n\r\nconst RealTimeDate = ({ endDate, showLastOffer, auctionStatus }: RealTimeDateProps) => {\r\n const [remainingTime, setRemainingTime] = useState(\"\");\r\n const [isLastOffer, setIsLastOffer] = useState(false);\r\n const context = useContext(ApplicationContext);\r\n const translatorService = context.translatorService;\r\n\r\n const calculateRemainingTime = (endDate: string) => {\r\n const now = moment();\r\n const end = moment(endDate);\r\n const duration = moment.duration(end.diff(now));\r\n\r\n if (auctionStatus?.code === MavoAuctionStatusEnum.TERMINATA) {\r\n return translatorService.Tranlate(\"CLOSED_AUCTION\", \"Licitatie inchisa!\");\r\n }\r\n\r\n if (auctionStatus?.code === MavoAuctionStatusEnum.STOPATA) {\r\n return translatorService.Tranlate(\"STOPPED_AUCTION\", \"Licitatie stopata!\");\r\n }\r\n\r\n if (duration.asMilliseconds() <= 0) {\r\n return translatorService.Tranlate(\"AUCTION_IN_ANALYSIS\", \"In Analiza!\");\r\n }\r\n\r\n // Dacă mai sunt mai puțin de 5 minute până la ora 17:00\r\n if (duration.asMinutes() <= 5 && end.hour() === 17) {\r\n setIsLastOffer(true);\r\n } else {\r\n setIsLastOffer(false);\r\n }\r\n\r\n const days = Math.floor(duration.asDays());\r\n const hours = duration.hours();\r\n const minutes = duration.minutes();\r\n const seconds = duration.seconds();\r\n\r\n let timeString = '';\r\n if (days > 0) timeString += `${days} zile, `;\r\n if (hours > 0) timeString += `${hours} ore, `;\r\n if (minutes > 0) timeString += `${minutes} minute, `;\r\n timeString += `${seconds} secunde`;\r\n\r\n return timeString;\r\n };\r\n\r\n useEffect(() => {\r\n const updateRemainingTime = () => {\r\n setRemainingTime(calculateRemainingTime(endDate));\r\n };\r\n\r\n const interval = setInterval(updateRemainingTime, 1000);\r\n updateRemainingTime(); \r\n\r\n return () => clearInterval(interval);\r\n }, [endDate]);\r\n\r\n return (\r\n \r\n {remainingTime}\r\n {showLastOffer && isLastOffer && (\r\n \r\n {translatorService.Tranlate(\"AUCTION_LAST_OFFER\", \"Ultima oferta\")}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default RealTimeDate;\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n VehicleActionCreators,\r\n VehicleState\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Button,\r\n Card,\r\n CardContent,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n Grid,\r\n Modal\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { MavoVehicleAuction, MavoVehicleAuctionOffer } from '../../interfaces/Vehicle';;\r\nimport { MavoVehicleActionCreators } from '../../store/actions/MavoVehicle';\r\nimport { MavoVehicleState } from '../../store/reducers/MavoVehicle';\r\nimport { VehicleAuctionActionCreators } from '../../store/actions/VehicleAuction';\r\nimport moment from 'moment';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport _ from 'lodash';\r\nimport NavigationIcon from '@material-ui/icons/Navigation';\r\nimport RealTimeDate from './RealTimeDate';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport NumberFormat from 'react-number-format';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\n\r\ninterface IMavoAuctionDetailsFormState {\r\n isLoading: boolean;\r\n executing: boolean; \r\n isOpen: boolean;\r\n dialogVisible: boolean;\r\n selectedAuction: MavoVehicleAuction;\r\n mavoVehicleAuctionOffer: MavoVehicleAuctionOffer;\r\n isOfferLoading: boolean; \r\n}\r\n\r\nexport interface ExternalMavoAuctionDetailsFormProps {\r\n selectedAuction: MavoVehicleAuction;\r\n closeDialog: () => void;\r\n goToUserAuctions: () => void;\r\n} \r\n\r\ntype IMavoAuctionDetailsFormProps = ExternalMavoAuctionDetailsFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n mavoVehicleState: MavoVehicleState;\r\n mavoVehicleAuctionState: MavoVehicleAuction;\r\n} & typeof CaseSettingsActionCreators &\r\n typeof VehicleActionCreators &\r\n typeof MavoVehicleActionCreators & typeof VehicleAuctionActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass AddAuctionOfferDialog extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n private appUserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: false,\r\n executing: false,\r\n isOpen: false,\r\n dialogVisible: false,\r\n selectedAuction: this.props.selectedAuction,\r\n offers: [] as MavoVehicleAuctionOffer[],\r\n maxOffers: [] as MavoVehicleAuctionOffer[],\r\n mavoVehicleAuctionOffer: {\r\n mavoVehicleAuctionId: 0,\r\n id: 0\r\n } as MavoVehicleAuctionOffer,\r\n isOfferLoading: false\r\n } as IMavoAuctionDetailsFormState;\r\n\r\n public componentDidMount() { \r\n ValidatorForm.addValidationRule('isValidMinimumOffer', (value) => {\r\n const minimumOffer = this.state.selectedAuction!.mavoVehicleAuctionOffers.length > 0 ? \r\n this.state.selectedAuction!.minDifference + this.state.selectedAuction!.currentPrice : \r\n this.state.selectedAuction!.startPrice;\r\n if (value < minimumOffer) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n ValidatorForm.addValidationRule('isValidMaximumOffer', (value) => {\r\n if (value < this.state.mavoVehicleAuctionOffer!.minimumOffer) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n ValidatorForm.addValidationRule('isGreaterThanMaxValue', (value) => {\r\n if (value >= 999999.99) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n }\r\n\r\n private loadData = async () => {\r\n const mavoVehicleAuction = await this.vehicleService.GetMavoAuction(this.state.selectedAuction.id);\r\n const minimumOffer = mavoVehicleAuction.mavoVehicleAuctionOffers.length > 0 ? \r\n mavoVehicleAuction.minDifference + mavoVehicleAuction.currentPrice : \r\n mavoVehicleAuction.startPrice;\r\n\r\n this.setState({\r\n isLoading: false,\r\n selectedAuction: mavoVehicleAuction,\r\n mavoVehicleAuctionOffer: {\r\n ...this.state.mavoVehicleAuctionOffer,\r\n mavoVehicleAuctionId: mavoVehicleAuction.id,\r\n minimumOffer: minimumOffer,\r\n details: ''\r\n }\r\n });\r\n\r\n }\r\n\r\n NumberDecimalFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n\r\n addAuctionOffer = async () => {\r\n try {\r\n this.setState({\r\n isOpen: false,\r\n executing: true,\r\n isOfferLoading: true\r\n });\r\n\r\n const mavoVehicleAuctionOffer = {\r\n ...this.state.mavoVehicleAuctionOffer,\r\n hasManualOffer: true\r\n };\r\n\r\n const result = await this.vehicleService.AddMavoAuctionOffer(mavoVehicleAuctionOffer);\r\n if (!result.success) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate(result.message, result.message), {\r\n variant: 'error'\r\n });\r\n \r\n if (result.currentPrice) {\r\n this.setState({\r\n executing: false,\r\n isOfferLoading: false,\r\n mavoVehicleAuctionOffer: {\r\n ...this.state.mavoVehicleAuctionOffer,\r\n minimumOffer: result.currentPrice + this.state.selectedAuction!.minDifference \r\n }\r\n });\r\n }\r\n return;\r\n }\r\n\r\n this.setState({\r\n executing: false,\r\n isOfferLoading: false\r\n });\r\n\r\n this.props.goToUserAuctions();\r\n \r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } \r\n }\r\n \r\n renderAuctionDetails = () => {\r\n return (\r\n \r\n \r\n
\r\n {this.translatorService.Tranlate('MAVO_AUCTION_REMAINING_TIME', 'Timp ramas')}:\r\n
\r\n
\r\n  \r\n \r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_VIN_CODE', 'VIN')}: \r\n
\r\n
\r\n  {this.state.selectedAuction ? this.state.selectedAuction.mavoVehicle.vin : ''}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('VEHICLES_VEHICLE_MAKE', 'Marca')}:\r\n
\r\n
\r\n  {this.state.selectedAuction && this.state.selectedAuction.mavoVehicle.make ? this.state.selectedAuction.mavoVehicle.make.displayName : ''}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('VEHICLES_VEHICLE_MODEL', 'Model')}:\r\n
\r\n
\r\n  {this.state.selectedAuction && this.state.selectedAuction.mavoVehicle.model ? this.state.selectedAuction.mavoVehicle.model.displayName : ''}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('MAVO_VEHICLES_AUCTION_START_PRICE', 'Pret start licitatie')}:\r\n
\r\n
\r\n  {this.state.selectedAuction && this.state.selectedAuction.startPrice} EUR\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_AUCTION_START_DATE_1',\r\n 'Data start licitatie'\r\n )}:\r\n
\r\n
\r\n  {this.state.selectedAuction && this.state.selectedAuction.startDate ?\r\n moment\r\n .utc(this.state.selectedAuction.startDate)\r\n .local()\r\n .format(this.props.appState.dateFormat) : null}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_AUCTION_END_DATE',\r\n 'Data stop licitatie'\r\n )}:\r\n
\r\n
\r\n  {this.state.selectedAuction && this.state.selectedAuction.endDate ? moment(this.state.selectedAuction.endDate).format('DD-MM-YYYY HH:mm') : null}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('VEHICLE_AUCTION_MIN_DIFFERENCE', 'Suma minima peste ultima oferta')}:\r\n
\r\n
\r\n  {this.state.selectedAuction!.minDifference || ''}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('VEHICLE_AUCTION_CURRENT_PRICE', 'Pret curent licitatie')}:\r\n
\r\n
\r\n  {this.state.selectedAuction!.mavoVehicleAuctionOffers.length > 0 ? this.state.selectedAuction!.currentPrice : ''}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n onChange =\r\n (fieldName: string, isNumber: boolean) => (e: any, newValue?: IReferential | null) => {\r\n isNumber\r\n ? this.setState({\r\n mavoVehicleAuctionOffer: {\r\n ...this.state.mavoVehicleAuctionOffer,\r\n [fieldName]: parseFloat(newValue || e.target.value)\r\n }\r\n })\r\n : this.setState({\r\n mavoVehicleAuctionOffer: {\r\n ...this.state.mavoVehicleAuctionOffer,\r\n [fieldName]: newValue || e.target.value\r\n }\r\n });\r\n };\r\n \r\n public renderOfferContent() {\r\n return (\r\n \r\n \r\n \r\n \r\n this.onChange('minimumOffer', true)(e)\r\n }\r\n label={this.translatorService.Tranlate('VEHICLE_AUCTION_MINIMUM_OFFER', 'Oferta mea minima')}\r\n validators={['isValidMinimumOffer', 'isGreaterThanMaxValue']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'MINIMUM_OFFER_ERROR_MESSAGE',\r\n 'Oferta minima trebuie sa fie mai mare decat pretul curent al licitatiei + suma minima peste ultima oferta: '\r\n ) + (this.state.selectedAuction!.mavoVehicleAuctionOffers.length > 0 ? \r\n this.state.selectedAuction!.minDifference + this.state.selectedAuction!.currentPrice : \r\n this.state.selectedAuction!.startPrice) + ' EUR',\r\n this.translatorService.Tranlate(\r\n 'GRATTER_THAN_MAX_VALUE_ERROR_MESSAGE',\r\n 'Pretul introdus este prea mare. Trebuie sa fie mica decat 999999.99'\r\n )\r\n ]}\r\n InputProps={{\r\n inputComponent: this.NumberDecimalFormatCustom\r\n }}\r\n />\r\n \r\n \r\n \r\n this.onChange('maximumOffer', true)(e)\r\n }\r\n label={this.translatorService.Tranlate('VEHICLE_AUCTION_MAXIMUM_OFFER', 'Oferta mea maxima')}\r\n validators={['isValidMaximumOffer', 'isGreaterThanMaxValue']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'MAXIMUM_OFFER_ERROR_MESSAGE',\r\n 'Oferta maxima trebuie sa fie mai mare sau egala decat oferta mea minima: '\r\n ) + this.state.mavoVehicleAuctionOffer.minimumOffer + ' EUR',\r\n this.translatorService.Tranlate(\r\n 'GRATTER_THAN_MAX_VALUE_ERROR_MESSAGE',\r\n 'Pretul introdus este prea mare. Trebuie sa fie mica decat 999999.99'\r\n ) \r\n ]}\r\n InputProps={{\r\n inputComponent: this.NumberDecimalFormatCustom\r\n }}\r\n />\r\n \r\n \r\n this.onChange('details', false)(e)}\r\n label={this.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_OFFER_DETAILS',\r\n 'Alte detalii'\r\n )}\r\n multiline\r\n variant=\"outlined\"\r\n rows={4}\r\n />\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n {this.translatorService.Tranlate('MAVO_VEHICLE_IMPORT_CLOSE_BTN', 'Renunta')}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n \r\n handleOpenConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: true,\r\n dialogVisible: true\r\n });\r\n };\r\n\r\n handleCloseModal = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n
\r\n {\r\n this.props.closeDialog();\r\n }}\r\n >\r\n \r\n {this.translatorService.Tranlate('AUCTION_DIALOG_BACK', 'Inapoi')}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n {this.renderAuctionDetails()} \r\n {this.renderOfferContent()} \r\n \r\n ): null}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n {`${this.translatorService.Tranlate(\r\n 'AUCTION_CONFIRMATION_MESSAGE',\r\n 'Confirmati licitarea conform conditiilor de licitare ?'\r\n )} `}\r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_SEARCH_FORM_VEHICLE_YES', 'Da')}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState, ownProps: ExternalMavoAuctionDetailsFormProps) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle,\r\n mavoVehicleState: state.mavoVehicle,\r\n mavoVehicleAuctionState: state.mavoVehicleAuction,\r\n }),\r\n{ ...CaseSettingsActionCreators, ...VehicleActionCreators, ...MavoVehicleActionCreators, ...VehicleAuctionActionCreators }\r\n)(withSnackbar(AddAuctionOfferDialog as any));\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n VehicleActionCreators,\r\n VehicleState\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Button,\r\n Card,\r\n AppBar,\r\n Tabs,\r\n Tab,\r\n Dialog,\r\n IconButton,\r\n DialogTitle,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport {ReferentialCode, RoleClaimsEnum, mavoVehicleStatuses } from '../../helpers/Constants';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { MavoVehicle, MavoVehicleAttachment, MavoVehicleAuction, MavoVehicleAuctionOffer, VehicleConditionInfo, VehicleOptionInfo } from '../../interfaces/Vehicle';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport * as R from 'ramda';\r\nimport { MavoVehicleActionCreators } from '../../store/actions/MavoVehicle';\r\nimport { MavoVehicleState } from '../../store/reducers/MavoVehicle';\r\nimport MavoGeneralInformationContainer from './MavoGeneralInformationContainer';\r\nimport MavoVehicleOptionsContainer from './MavoVehicleOptionsContainer';\r\nimport MavoAttachmentDataContainer from './MavoAttachmentDataContainer';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MavoStatusDataContainer from './MavoStatusDataContainer';\r\nimport { VehicleAuctionActionCreators } from '../../store/actions/VehicleAuction';\r\nimport NavigationIcon from '@material-ui/icons/Navigation';\r\nimport _ from 'lodash';\r\nimport AddAuctionOfferDialog from './AddAuctionOfferDialog';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\ninterface IMavoVehicleDetailsViewFormState {\r\n isLoading: boolean;\r\n executing: boolean;\r\n isUserHidden: boolean;\r\n vehicle: MavoVehicle;\r\n selectedTab: number;\r\n statuses: IReferential[];\r\n statusOptions: IReferential[];\r\n selectedDisplayedStatus: string;\r\n isChangeVehicleStatusDialogOpen: boolean;\r\n isOfferDialogOpen: boolean;\r\n mavoVehicleAuctionOffer: MavoVehicleAuctionOffer;\r\n}\r\n\r\nexport interface ExternalMavoVehicleDetailsViewFormProps {\r\n mavoVehicleAuction: MavoVehicleAuction;\r\n closeDialog: () => void;\r\n goToUserAuctions: () => void;\r\n} \r\n\r\ntype IMavoVehicleDetailsViewFormProps = ExternalMavoVehicleDetailsViewFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n mavoVehicleState: MavoVehicleState;\r\n mavoVehicleAuctionState: MavoVehicleAuction;\r\n} & typeof CaseSettingsActionCreators &\r\n typeof VehicleActionCreators &\r\n typeof MavoVehicleActionCreators & typeof VehicleAuctionActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass MavoVehicleDetailsViewForm extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: true,\r\n executing: false,\r\n isUserHidden: false,\r\n selectedTab: 0,\r\n statuses: [] as IReferential[],\r\n statusOptions: [],\r\n isChangeVehicleStatusDialogOpen: false,\r\n isOfferDialogOpen: false,\r\n mavoVehicleAuctionOffer: {\r\n mavoVehicleAuctionId: 0,\r\n id: 0\r\n } as MavoVehicleAuctionOffer,\r\n vehicle: {\r\n id: 0,\r\n vin: '',\r\n make: null,\r\n makeId: null,\r\n model: null,\r\n modelId: null,\r\n versionItem: null,\r\n versionId: null,\r\n color: null,\r\n colorId: null,\r\n fuelType: null,\r\n fuelTypeId: null,\r\n bodyTypeId: null,\r\n bodyType: null,\r\n transmissionTypeId: null,\r\n transmissionType: null,\r\n provenance: null,\r\n provenanceId: null,\r\n firstRegistrationDate: '',\r\n fabricationYear: null,\r\n kilometersNr: null,\r\n power: null,\r\n engineManufactureCode: '',\r\n accessories: null,\r\n isReserved: false,\r\n reservations: '',\r\n cylinderCapacity: null,\r\n supplier: null,\r\n location: null,\r\n htPurchaseRonPrice: null,\r\n ttcEvaluationEurPrice: null,\r\n nirNumber: null,\r\n nirDate: null,\r\n currentStatus: null,\r\n vehicleOptions: [],\r\n vehicleType: null,\r\n vehicleTypeId: null,\r\n mavoVehicleAttachments: [] as MavoVehicleAttachment[],\r\n vehicleOptionInfo: {\r\n vehicleId: 0,\r\n engineCapacity: null,\r\n emissionsClass: null,\r\n doorCount: null,\r\n seatCount: null,\r\n driveType: null,\r\n registration: null,\r\n vehicleCondition: null,\r\n metallicColor: null,\r\n upholstery: null,\r\n upholsteryColor: null,\r\n previousOwnersCount: null,\r\n countryOfOrigin: null,\r\n alarm: false,\r\n antiTheft: false,\r\n abs: false,\r\n esp: false,\r\n driverFrontAirbag: false,\r\n passengerFrontAirbag: false,\r\n frontSideAirbags: false,\r\n frontCurtainAirbag: false,\r\n xenonHeadlights: false,\r\n alloyWheels: false,\r\n glassRoof: false,\r\n towHook: false,\r\n protectionFrame: false,\r\n steeringWheelControls: false,\r\n onBoardComputer: false,\r\n cruiseControl: false,\r\n lockableDifferential: false,\r\n particleFilter: false,\r\n electricMirrors: false,\r\n frontElectricWindows: false,\r\n rearElectricWindows: false,\r\n tintedWindows: false,\r\n heatedSeats: false,\r\n rainSensors: false,\r\n parkingSensors: false,\r\n powerSteering: false,\r\n sunroof: false,\r\n rightHandDrive: false,\r\n fogLights: false,\r\n airConditioning: false,\r\n radio: false,\r\n cdPlayer: false,\r\n videoScreen: false,\r\n gps: false\r\n } as VehicleOptionInfo,\r\n vehicleConditionInfo: {\r\n vehicleId: 0,\r\n frontWingLeftPaintId: null,\r\n frontWingLeftPaint: null,\r\n frontWingRightPaintId: null,\r\n frontWingRightPaint: null,\r\n rearWingLeftPaintId: null,\r\n rearWingLeftPaint: null,\r\n rearWingRightPaintId: null,\r\n rearWingRightPaint: null,\r\n frontDoorLeftPaintId: null,\r\n frontDoorLeftPaint: null,\r\n frontDoorRightPaintId: null,\r\n frontDoorRightPaint: null,\r\n rearDoorLeftPaintId: null,\r\n rearDoorLeftPaint: null,\r\n rearDoorRightPaintId: null,\r\n rearDoorRightPaint: null,\r\n hoodPaintId: null,\r\n hoodPaint: null,\r\n faceMaskPaintId: null,\r\n faceMaskPaint: null,\r\n frontBumperPaintId: null,\r\n frontBumperPaint: null,\r\n rearBumperPaintId: null,\r\n rearBumperPaint: null,\r\n trunkPaintId: null,\r\n trunkPaint: null,\r\n spoilerPaintId: null,\r\n spoilerPaint: null,\r\n roofPaintId: null,\r\n roofPaint: null,\r\n superstructurePaintId: null,\r\n superstructurePaint: null,\r\n \r\n // Tinichigerie + Vopsitorie (Bodywork + Painting)\r\n frontWingLeftBodyPaintId: null,\r\n frontWingLeftBodyPaint: null,\r\n frontWingRightBodyPaintId: null,\r\n frontWingRightBodyPaint: null,\r\n rearWingLeftBodyPaintId: null,\r\n rearWingLeftBodyPaint: null,\r\n rearWingRightBodyPaintId: null,\r\n rearWingRightBodyPaint: null,\r\n frontDoorLeftBodyPaintId: null,\r\n frontDoorLeftBodyPaint: null,\r\n frontDoorRightBodyPaintId: null,\r\n frontDoorRightBodyPaint: null,\r\n rearDoorLeftBodyPaintId: null,\r\n rearDoorLeftBodyPaint: null,\r\n rearDoorRightBodyPaintId: null,\r\n rearDoorRightBodyPaint: null,\r\n hoodBodyPaintId: null,\r\n hoodBodyPaint: null,\r\n faceMaskBodyPaintId: null,\r\n faceMaskBodyPaint: null,\r\n frontBumperBodyPaintId: null,\r\n frontBumperBodyPaint: null,\r\n rearBumperBodyPaintId: null,\r\n rearBumperBodyPaint: null,\r\n trunkBodyPaintId: null,\r\n trunkBodyPaint: null,\r\n spoilerBodyPaintId: null,\r\n spoilerBodyPaint: null,\r\n roofBodyPaintId: null,\r\n roofBodyPaint: null,\r\n superstructureBodyPaintId: null,\r\n superstructureBodyPaint: null,\r\n \r\n // Replacement & Painting (Inlcuire + vopsire)\r\n frontWingLeftReplacePaintId: null,\r\n frontWingLeftReplacePaint: null,\r\n frontWingRightReplacePaintId: null,\r\n frontWingRightReplacePaint: null,\r\n rearWingLeftReplacePaintId: null,\r\n rearWingLeftReplacePaint: null,\r\n rearWingRightReplacePaintId: null,\r\n rearWingRightReplacePaint: null,\r\n frontDoorLeftReplacePaintId: null,\r\n frontDoorLeftReplacePaint: null,\r\n frontDoorRightReplacePaintId: null,\r\n frontDoorRightReplacePaint: null,\r\n rearDoorLeftReplacePaintId: null,\r\n rearDoorLeftReplacePaint: null,\r\n rearDoorRightReplacePaintId: null,\r\n rearDoorRightReplacePaint: null,\r\n hoodReplacePaintId: null,\r\n hoodReplacePaint: null,\r\n faceMaskReplacePaintId: null,\r\n faceMaskReplacePaint: null,\r\n frontBumperReplacePaintId: null,\r\n frontBumperReplacePaint: null,\r\n rearBumperReplacePaintId: null,\r\n rearBumperReplacePaint: null,\r\n trunkReplacePaintId: null,\r\n trunkReplacePaint: null,\r\n spoilerReplacePaintId: null,\r\n spoilerReplacePaint: null,\r\n roofReplacePaintId: null,\r\n roofReplacePaint: null,\r\n superstructureReplacePaintId: null,\r\n superstructureReplacePaint: null,\r\n\r\n //Inlocuire/Reparatie\r\n frontLeftSideWindowToReplace: false,\r\n frontLeftSideWindowToRepair: false,\r\n frontRightSideWindowToReplace: false,\r\n frontRightSideWindowToRepair: false,\r\n \r\n rearLeftSideWindowToReplace: false,\r\n rearLeftSideWindowToRepair: false,\r\n rearRightSideWindowToReplace: false,\r\n rearRightSideWindowToRepair: false,\r\n \r\n leftSideMirrorToReplace: false,\r\n leftSideMirrorToRepair: false,\r\n rightSideMirrorToReplace: false,\r\n rightSideMirrorToRepair: false,\r\n \r\n leftWiperToReplace: false,\r\n leftWiperToRepair: false,\r\n rightWiperToReplace: false,\r\n rightWiperToRepair: false,\r\n \r\n leftProjectorToReplace: false,\r\n leftProjectorToRepair: false,\r\n rightProjectorToReplace: false,\r\n rightProjectorToRepair: false,\r\n \r\n leftTurnSignalToReplace: false,\r\n leftTurnSignalToRepair: false,\r\n rightTurnSignalToReplace: false,\r\n rightTurnSignalToRepair: false,\r\n \r\n leftHeadlightToReplace: false,\r\n leftHeadlightToRepair: false,\r\n rightHeadlightToReplace: false,\r\n rightHeadlightToRepair: false,\r\n \r\n leftBrakeLightsToReplace: false,\r\n leftBrakeLightsToRepair: false,\r\n rightBrakeLightsToReplace: false,\r\n rightBrakeLightsToRepair: false,\r\n \r\n rearWindshieldToReplace: false,\r\n rearWindshieldToRepair: false,\r\n \r\n windshieldToReplace: false,\r\n windshieldToRepair: false,\r\n \r\n hoodGrilleToReplace: false,\r\n hoodGrilleToRepair: false,\r\n \r\n //Mecanica\r\n motor: null,\r\n clutch: null,\r\n gearbox: null,\r\n steering: null,\r\n battery: null,\r\n exhaust: null,\r\n tires: null,\r\n driveShaft: null,\r\n leftCvJoints: null,\r\n rightCvJoints: null,\r\n leftShockAbsorbers: null,\r\n rightShockAbsorbers: null,\r\n frontBrakes: null,\r\n backBrakes: null,\r\n itpValidateDate: null,\r\n \r\n //Interior si accesorii\r\n leftSeatUpholstery: null,\r\n rightSeatUpholstery: null,\r\n rearSeatUpholstery: null,\r\n interiorMirror: null,\r\n firstAidKit: null, \r\n bulbKit: null, \r\n leftFrontHeadrest: null, \r\n rightFrontHeadrest: null,\r\n rearHeadrest: null,\r\n spareTireGood: false,\r\n spareTireReplace: false,\r\n frontFloorMats: false,\r\n fireExtinguisher: false,\r\n wheelWrench: false,\r\n rearFloorMats: false,\r\n reflectiveTriangle: false, \r\n carJack: false,\r\n } as VehicleConditionInfo\r\n } as unknown as MavoVehicle,\r\n selectedDisplayedStatus: ''\r\n } as IMavoVehicleDetailsViewFormState;\r\n\r\n public componentDidMount() { \r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadMavoVehicle();\r\n }\r\n );\r\n }\r\n\r\n loadMavoVehicle = async () => {\r\n const statusesTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.VehicleStatus\r\n );\r\n const statuses = (await this.appReferentialService.Get(statusesTypeRef!.baseUrl)).filter(x => mavoVehicleStatuses.includes(x.id));\r\n \r\n await this.props.setMavoVehicle(this.props.mavoVehicleAuction.mavoVehicleId);\r\n\r\n const vehicle = this.props.mavoVehicleState.mavoVehicle;\r\n\r\n this.setState({\r\n isLoading: false,\r\n vehicle: vehicle,\r\n statuses: statuses,\r\n selectedDisplayedStatus: !R.isNil(vehicle?.currentStatus?.status)\r\n ? vehicle?.currentStatus?.status?.displayName || ''\r\n : ''\r\n });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState({ isChangeVehicleStatusDialogOpen: false });\r\n };\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState({\r\n selectedTab: newValue\r\n });\r\n };\r\n\r\n openAddOfferDialog = () => {\r\n this.setState({\r\n isOfferDialogOpen: true\r\n });\r\n }\r\n\r\n closeAddOfferDialog = () => {\r\n this.setState({\r\n isOfferDialogOpen: false\r\n });\r\n };\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n {\r\n this.props.closeDialog();\r\n }}\r\n >\r\n \r\n {this.translatorService.Tranlate(\r\n 'MENU_MAVO_VEHICLES_AUCTIONS_RECORD',\r\n 'Inapoi la lista'\r\n )}\r\n \r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? null : (\r\n {\r\n this.openAddOfferDialog();\r\n }}\r\n >\r\n {this.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_BID',\r\n 'Liciteaza'\r\n )}\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n \r\n
\r\n {!this.state.isLoading ? \r\n \r\n : null}\r\n
\r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n
\r\n
\r\n\r\n {this.state.isOfferDialogOpen && this.props.mavoVehicleAuction ? (\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('MAVO_VEHICLES_AUCTION_OFFER', 'Oferta')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : null }\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState, ownProps: ExternalMavoVehicleDetailsViewFormProps) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle,\r\n mavoVehicleState: state.mavoVehicle,\r\n mavoVehicleAuctionState: state.mavoVehicleAuction,\r\n }),\r\n{ ...CaseSettingsActionCreators, ...VehicleActionCreators, ...MavoVehicleActionCreators, ...VehicleAuctionActionCreators }\r\n)(withSnackbar(MavoVehicleDetailsViewForm as any));\r\n","import * as React from 'react';\r\nimport { ApplicationState, AppState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Card,\r\n Grid,\r\n Tab,\r\n Tabs,\r\n AppBar,\r\n TextField,\r\n Button,\r\n Checkbox,\r\n FormControlLabel,\r\n Dialog,\r\n DialogTitle,\r\n IconButton,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n MavoVehicleAuctionsFilters,\r\n MavoVehicleAuctionsList,\r\n MavoVehicleAuctionOffer,\r\n MavoVehicleAuction\r\n} from '../../interfaces/Vehicle';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Loader from '../Loader';\r\nimport noop from 'lodash/noop';\r\nimport _ from 'lodash';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { MavoVehicleActionCreators } from '../../store/actions/MavoVehicle';\r\nimport { MavoVehicleState } from '../../store/reducers/MavoVehicle';\r\nimport NumberFormat from 'react-number-format';\r\nimport { VehicleAuctionActionCreators } from '../../store/actions/VehicleAuction';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport MavoVehicleDetailsViewForm from './MavoVehicleDetailsViewForm';\r\nimport {MuiThemeProvider, createMuiTheme } from '@material-ui/core';\r\nimport RealTimeDate from './RealTimeDate';\r\nimport AddAuctionOfferDialog from './AddAuctionOfferDialog';\r\nimport { RoleClaimsEnum } from '../../helpers/Constants';\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\ntype MavoVehiclesAuctionsProps = {\r\n appState: AppState;\r\n mavoVehicleState: MavoVehicleState;\r\n mavoVehicleAuctionState: MavoVehicleAuction;\r\n} &\r\n typeof MavoVehicleActionCreators & typeof VehicleAuctionActionCreators &\r\n ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface IMavoVehiclesAuctionsState {\r\n auctionsList: MavoVehicleAuctionsList;\r\n makeEntities: IReferential[];\r\n selectedMakeEntities: IReferential[];\r\n modelEntities: IReferential[];\r\n selectedModelEntities: IReferential[];\r\n selectedStartDate: Date | null;\r\n selectedEndDate: Date | null;\r\n minPrice: number | null;\r\n maxPrice: number | null;\r\n selectedTab: number;\r\n isLoading: boolean;\r\n isLoadingAuctions: boolean;\r\n count: number;\r\n page: number;\r\n pageSize: number;\r\n vin: string;\r\n selectedAuction: MavoVehicleAuction | null;\r\n executing: boolean;\r\n isDialogOpen: boolean;\r\n isOfferDialogOpen: boolean;\r\n mavoVehicleAuctionOffer: MavoVehicleAuctionOffer;\r\n isOpen: boolean;\r\n}\r\n\r\nclass MavoVehiclesAuctions extends React.PureComponent {\r\n private cbContext!: AppContext;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n auctionsList: {} as MavoVehicleAuctionsList,\r\n makeEntities: [],\r\n selectedMakeEntities: [],\r\n modelEntities: [],\r\n selectedModelEntities: [],\r\n selectedTab: 0,\r\n isLoading: false,\r\n isLoadingAuctions: false,\r\n count: 1,\r\n page: 0,\r\n pageSize: 10,\r\n vin: '',\r\n selectedStartDate: null,\r\n selectedEndDate: null,\r\n selectedAuction: null,\r\n executing: false,\r\n minPrice: null,\r\n maxPrice: null,\r\n isDialogOpen: false,\r\n isOfferDialogOpen: false,\r\n mavoVehicleAuctionOffer: {\r\n mavoVehicleAuctionId: 0,\r\n id: 0\r\n } as MavoVehicleAuctionOffer,\r\n isOpen: false\r\n } as IMavoVehiclesAuctionsState;\r\n\r\n public async componentDidMount() {\r\n const mavoVehiclesAuctionsFilters = {\r\n makeIds: [],\r\n modelIds: [],\r\n startDate: null,\r\n endDate: null,\r\n page: this.state.page + 1,\r\n pageSize: this.state.pageSize,\r\n vin: '',\r\n minPrice: null,\r\n maxPrice: null\r\n } as MavoVehicleAuctionsFilters;\r\n\r\n this.setState({\r\n isLoading: true\r\n });\r\n\r\n const [auctionsList] = await Promise.all([\r\n this.cbContext.vehicleService.GetAuctions(mavoVehiclesAuctionsFilters)\r\n ]);\r\n\r\n this.setState(\r\n {\r\n auctionsList: auctionsList,\r\n count: auctionsList.total,\r\n page: auctionsList.page - 1\r\n },\r\n async () => {\r\n await this.reloadFilters();\r\n }\r\n );\r\n }\r\n\r\n loadAuctions = async (page: number, rowsPerPage: number) => {\r\n this.setState({\r\n isLoadingAuctions: true,\r\n selectedAuction: null\r\n });\r\n\r\n const mavoVehiclesAuctionsFilters = {\r\n makeIds: this.state.selectedMakeEntities.map((item) => item.id),\r\n modelIds: this.state.selectedModelEntities.map((item) => item.id),\r\n startDate: this.state.selectedStartDate\r\n ? new Date(this.state.selectedStartDate.setHours(0, 0, 0, 0))\r\n : null,\r\n endDate: this.state.selectedEndDate\r\n ? new Date(this.state.selectedEndDate.setHours(23, 59, 59, 999))\r\n : null,\r\n page: page + 1,\r\n pageSize: rowsPerPage,\r\n vin: this.state.vin,\r\n minPrice: this.state.minPrice,\r\n maxPrice: this.state.maxPrice\r\n } as MavoVehicleAuctionsFilters;\r\n\r\n const auctionsList = await this.cbContext.vehicleService.GetAuctions(mavoVehiclesAuctionsFilters);\r\n \r\n this.setState({\r\n auctionsList: auctionsList,\r\n page: auctionsList.page - 1,\r\n pageSize: rowsPerPage,\r\n count: auctionsList.total,\r\n isLoadingAuctions: false\r\n });\r\n };\r\n\r\n reloadFilters = async () => {\r\n const filters = await this.cbContext.vehicleService.GetAuctionsFilters();\r\n this.setState({\r\n makeEntities: filters.makeList,\r\n modelEntities: filters.modelList,\r\n isLoading: false\r\n });\r\n };\r\n\r\n makeSelectedAuction = (isSelected: boolean, id: number) => {\r\n const auctions = _.cloneDeep(this.state.auctionsList.auctions);\r\n const auction = auctions.find((item) => item.id === id);\r\n if (auction) {\r\n auction.isSelected = isSelected;\r\n }\r\n\r\n if (isSelected) {\r\n auctions.forEach((item) => {\r\n if (item.id !== id) {\r\n item.isSelected = false;\r\n } \r\n });\r\n }\r\n this.setState({\r\n auctionsList: {\r\n ...this.state.auctionsList,\r\n auctions: auctions\r\n },\r\n selectedAuction: isSelected ? (auction ? auction : null): null\r\n });\r\n }\r\n\r\n getMuiTheme = () => createMuiTheme({\r\n overrides: {\r\n MuiTableCell: {\r\n head: {\r\n paddingLeft: \"2px\",\r\n paddingRight: \"2px\",\r\n paddingTop: \"2px\",\r\n paddingBottom: \"2px\"\r\n },\r\n },\r\n MUIDataTableBodyCell: {\r\n stackedCommon: {\r\n paddingLeft: \"2px\",\r\n paddingRight: \"2px\",\r\n paddingTop: \"0px\",\r\n paddingBottom: \"0px\",\r\n height: \"40px !important\"\r\n }\r\n },\r\n MuiCheckbox: {\r\n root: {\r\n padding: \"0px\", // Adjust the padding to make the checkbox smaller\r\n },\r\n colorSecondary: {\r\n '&.Mui-checked': {\r\n color: \"#3d4977 !important\",\r\n '&:hover': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.03) !important'\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.03) !important'\r\n }\r\n }\r\n }\r\n } as any\r\n });\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'id',\r\n label: ' ',\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const auction = this.state.auctionsList.auctions.find((item) => item.id === tableMeta.rowData[0]);\r\n return (\r\n \r\n \r\n
\r\n {\r\n this.makeSelectedAuction(e.target.checked, auction!.id);\r\n }}\r\n >\r\n }\r\n label=''\r\n />\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.vin',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_VIN_CODE', 'VIN'),\r\n \r\n },\r\n {\r\n name: 'mavoVehicle.make.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MAKE', 'Marca'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.model.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MODEL', 'Model'),\r\n options: {\r\n sort: false\r\n }\r\n }, \r\n {\r\n name: '',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'AUCTION_ADMIN_HAS_OFFERS',\r\n 'Oferte'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n const auction = this.state.auctionsList.auctions.find((item) => item.id === tableMeta.rowData[0]);\r\n return (\r\n \r\n \r\n
\r\n {auction!.mavoVehicleAuctionOffers.length > 0 ? \r\n this.cbContext.translatorService.Tranlate(\"AUCTION_ADMIN_HAS_OFFERS_YES\", \"Da\")\r\n : this.cbContext.translatorService.Tranlate(\"AUCTION_ADMIN_HAS_OFFERS_NO\", \"Nu\")\r\n }\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'startPrice',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_AUCTION_START_PRICE', 'Pret start'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'currentPrice',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'AUCTION_ADMIN_CURRENT_PRICE',\r\n 'Pret curent'\r\n ),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'startDate',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_AUCTION_START_DATE',\r\n 'Data start'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any) => {\r\n return (\r\n \r\n \r\n
\r\n {value\r\n ? moment\r\n .utc(value)\r\n .local()\r\n .format(this.props.appState.dateFormat)\r\n : null}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'endDate',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'ADMIN_AUCTION_END_DATE',\r\n 'Data stop'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any) => {\r\n return (\r\n \r\n \r\n
\r\n {value\r\n ? moment(value)\r\n .format(this.props.appState.longDateFormat)\r\n : null}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.provenance.type',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MENU_NOMENCLATURES_TAB_PROVENANCE',\r\n 'Provenienta'\r\n ),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.location',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHILES_VEHICLE_LOCATION',\r\n 'Locatie'\r\n ),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: '',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_AUCTION_REMAINING_TIME', 'Timp ramas'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n const auction = this.state.auctionsList.auctions.find((item) => item.id === tableMeta.rowData[0]);\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n sortFunction = (a: any, b: any) => {\r\n return a.order - b.order;\r\n };\r\n\r\n handleMakeEntitiesChange = (newValue: any[]) => {\r\n const selectedModels = [...this.state.selectedModelEntities];\r\n const selectedMakeIds = newValue.map(({ id }) => id);\r\n\r\n const models = selectedModels.filter(({ dependencyId }) =>\r\n selectedMakeIds.includes(dependencyId)\r\n );\r\n\r\n this.setState(\r\n {\r\n selectedMakeEntities: newValue,\r\n selectedModelEntities: models\r\n }\r\n );\r\n };\r\n\r\n handleModelEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedModelEntities: newValue\r\n }\r\n );\r\n };\r\n\r\n handleMinPriceChange = (value: string) => {\r\n this.setState({\r\n minPrice: value ? parseFloat(value) : null\r\n });\r\n };\r\n\r\n handleMaxPriceChange = (value: string) => {\r\n this.setState({\r\n maxPrice: value ? parseFloat(value) : null\r\n });\r\n };\r\n\r\n\r\n handleStartDateChange = async (date: MaterialUiPickersDate | null, value?: string | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState(\r\n {\r\n selectedStartDate: date!.toDate(),\r\n isLoading: false\r\n }\r\n );\r\n };\r\n\r\n handleEndDateChange = async (date: MaterialUiPickersDate | null, value?: string | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n selectedEndDate: date!.toDate(),\r\n isLoading: false\r\n }\r\n );\r\n };\r\n\r\n\r\n renderSearchButtons() {\r\n return (\r\n
\r\n
\r\n this.loadAuctions(this.state.page, this.state.pageSize)}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_SEARCH',\r\n 'Cautare'\r\n )}\r\n \r\n
\r\n
\r\n this.resetFilters()}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_RESET',\r\n 'Reset'\r\n )}\r\n \r\n
\r\n
\r\n\r\n );\r\n }\r\n\r\n openAddOfferDialog = () => {\r\n if (!this.state.selectedAuction) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('PLEASE_SELECT_LINE', 'Va rugam sa selectati o linie!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n\r\n this.setState({\r\n isOfferDialogOpen: true\r\n });\r\n }\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n renderAuctionsButtons() {\r\n return (\r\n
\r\n
\r\n {\r\n if (!this.state.selectedAuction) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('PLEASE_SELECT_LINE', 'Va rugam sa selectati o linie!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n\r\n this.setState({\r\n isDialogOpen: true,\r\n selectedAuction: this.state.selectedAuction!\r\n });\r\n }}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_VIEW',\r\n 'Vizualizeaza'\r\n )}\r\n \r\n
\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? null : (\r\n
\r\n \r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_BID',\r\n 'Liciteaza'\r\n )}\r\n \r\n
\r\n )}\r\n
\r\n\r\n );\r\n }\r\n\r\n resetFilters = async () => {\r\n this.setState({\r\n selectedMakeEntities: [],\r\n selectedModelEntities: [],\r\n selectedStartDate: null,\r\n selectedEndDate: null,\r\n vin: '',\r\n minPrice: null,\r\n maxPrice: null\r\n }, async () => {\r\n await this.loadAuctions(this.state.page, this.state.pageSize);\r\n });\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n \r\n\r\n renderFilters = () => {\r\n const selectedMakes = this.state.selectedMakeEntities;\r\n let models = this.state.modelEntities;\r\n\r\n if (selectedMakes.length) {\r\n const makeIds = selectedMakes.map(({ id }) => id);\r\n models = this.state.modelEntities.filter(({ dependencyId }) => {\r\n return makeIds.includes(dependencyId!);\r\n });\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n this.handleMakeEntitiesChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n \r\n \r\n\r\n this.handleMinPriceChange(e.target.value)}\r\n label={this.cbContext.translatorService.Tranlate(\r\n 'AUCTIONS_FILTER_MIN_PRICE',\r\n 'Pret minim'\r\n )}\r\n validators={['required', 'minNumber:1']}\r\n errorMessages={[\r\n this.cbContext.translatorService.Tranlate(\r\n 'AUCTIONS_FILTER_MIN_PRICE',\r\n 'Pret minim'\r\n )\r\n ]}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n /> \r\n\r\n
\r\n {\r\n this.setState({\r\n vin: e.target.value\r\n });\r\n }}\r\n validators={['required']}\r\n label={this.cbContext.translatorService.Tranlate('CALCULATION_DETAILS_VIN', 'Vin')}\r\n />\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n \r\n this.handleModelEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n \r\n \r\n\r\n this.handleMaxPriceChange(e.target.value)}\r\n label={this.cbContext.translatorService.Tranlate(\r\n 'AUCTIONS_FILTER_MAX_PRICE',\r\n 'Pret maxim'\r\n )}\r\n validators={['required', 'minNumber:1']}\r\n errorMessages={[\r\n this.cbContext.translatorService.Tranlate(\r\n 'AUCTIONS_FILTER_MAX_PRICE',\r\n 'Pret maxim'\r\n )\r\n ]}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n /> \r\n \r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n onRowDoubleClick = (\r\n dataIndex: number,\r\n rowIndex: number,\r\n columnIndex: number\r\n ) => {\r\n if (columnIndex == 1) {\r\n return;\r\n }\r\n const auction = this.state.auctionsList.auctions[dataIndex];\r\n this.setState({\r\n isDialogOpen: true,\r\n selectedAuction: auction!\r\n });\r\n };\r\n\r\n tableOptions = () => {\r\n return {\r\n sort: true,\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.cbContext.translatorService),\r\n elevation: 0,\r\n serverSide: true,\r\n count: this.state.count,\r\n rowsPerPage: this.state.pageSize,\r\n page: this.state.page,\r\n onCellClick: (colData: any, cellMeta: any) => {\r\n if (cellMeta && cellMeta.colIndex !== null && cellMeta.rowIndex !== null) {\r\n // Set up a double-click event listener on the cell\r\n if (cellMeta.event.detail === 2) {\r\n this.onRowDoubleClick(cellMeta.dataIndex, cellMeta.rowIndex, cellMeta.colIndex);\r\n }\r\n }\r\n },\r\n onTableChange: async (action: any, tableState: any) => {\r\n switch (action) {\r\n case 'changePage':\r\n await this.loadAuctions(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'changeRowsPerPage':\r\n await this.loadAuctions(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'sort':\r\n break;\r\n default:\r\n }\r\n }\r\n };\r\n };\r\n\r\n importedTableOptions = () => {\r\n return {\r\n sort: true,\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.cbContext.translatorService),\r\n elevation: 0,\r\n count: this.state.count,\r\n rowsPerPage: this.state.pageSize,\r\n page: this.state.page\r\n };\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState(\r\n {\r\n isDialogOpen: false,\r\n selectedAuction: null\r\n },\r\n async () => {\r\n this.loadAuctions(this.state.page, this.state.pageSize);\r\n }\r\n );\r\n };\r\n \r\n closeOfferDialog = async () => {\r\n this.setState(\r\n {\r\n isOfferDialogOpen: false,\r\n selectedAuction: null,\r\n isLoadingAuctions: true\r\n },\r\n async () => {\r\n this.loadAuctions(this.state.page, this.state.pageSize);\r\n }\r\n );\r\n };\r\n\r\n goToUserAuctions = () => {\r\n this.props.history.push('/user/auctions');\r\n }\r\n\r\n handleOpenConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: true\r\n });\r\n };\r\n\r\n handleCloseModal = () => {\r\n this.setState({\r\n isOpen: false\r\n });\r\n };\r\n\r\n public render() {\r\n this.cbContext = this.context as AppContext;\r\n\r\n if (this.state.isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n {this.renderAuctionsButtons()}\r\n {this.renderFilters()}\r\n {this.renderSearchButtons()}\r\n {this.state.isLoadingAuctions ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )} \r\n
\r\n
\r\n
\r\n
\r\n {this.state.selectedAuction ? (\r\n \r\n \r\n \r\n {this.cbContext.translatorService.Tranlate('MAVO_VEHICLE_VIEW', 'Fisa Tehnica (Fisa de Evaluare)')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.selectedAuction === null ? null : (\r\n \r\n )}\r\n \r\n \r\n ) : null }\r\n {this.state.isOfferDialogOpen && this.state.selectedAuction ? (\r\n \r\n \r\n \r\n {this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_AUCTION_OFFER', 'Oferta')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : null }\r\n
\r\n );\r\n }\r\n}\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n mavoVehicleState: state.mavoVehicle,\r\n mavoVehicleAuctionState: state.mavoVehicleAuction\r\n }),\r\n{ ...MavoVehicleActionCreators, ...VehicleAuctionActionCreators }\r\n)(withSnackbar(MavoVehiclesAuctions as any));","import * as React from 'react';\r\nimport { ApplicationState, AppState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Card,\r\n Grid,\r\n Tab,\r\n Tabs,\r\n AppBar,\r\n TextField,\r\n Button,\r\n Dialog,\r\n DialogTitle,\r\n IconButton,\r\n DialogContent,\r\n FormControlLabel,\r\n Checkbox\r\n} from '@material-ui/core';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n MavoVehicleAuction,\r\n MavoVehicleUserAuctionsFilters,\r\n MavoVehicleUserAuctionsList\r\n} from '../../interfaces/Vehicle';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Loader from '../Loader';\r\nimport noop from 'lodash/noop';\r\nimport _ from 'lodash';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { MavoVehicleActionCreators } from '../../store/actions/MavoVehicle';\r\nimport { MavoVehicleState } from '../../store/reducers/MavoVehicle';\r\nimport NumberFormat from 'react-number-format';\r\nimport { VehicleAuctionActionCreators } from '../../store/actions/VehicleAuction';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport MavoVehicleDetailsViewForm from './MavoVehicleDetailsViewForm';\r\nimport {MuiThemeProvider, createMuiTheme } from '@material-ui/core';\r\nimport RealTimeDate from './RealTimeDate';\r\nimport { AuctionOfferStatusEnum } from '../../helpers/Constants';\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\ntype MavoVehiclesUserAuctionsProps = {\r\n appState: AppState;\r\n mavoVehicleState: MavoVehicleState;\r\n mavoVehicleAuctionState: MavoVehicleAuction;\r\n} &\r\n typeof MavoVehicleActionCreators & typeof VehicleAuctionActionCreators &\r\n ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface IMavoVehiclesUserAuctionsState {\r\n auctionsList: MavoVehicleUserAuctionsList;\r\n makeEntities: IReferential[];\r\n selectedMakeEntities: IReferential[];\r\n modelEntities: IReferential[];\r\n selectedModelEntities: IReferential[];\r\n selectedStartDate: Date | null;\r\n selectedEndDate: Date | null;\r\n minPrice: number | null;\r\n maxPrice: number | null;\r\n selectedTab: number;\r\n isLoading: boolean;\r\n isLoadingAuctions: boolean;\r\n count: number;\r\n page: number;\r\n pageSize: number;\r\n vin: string;\r\n selectedAuction: MavoVehicleAuction | null;\r\n executing: boolean;\r\n isDialogOpen: boolean;\r\n offerStatuses: IReferential[];\r\n selectedOfferStatus: IReferential | null;\r\n}\r\n\r\nclass MavoVehiclesUserAuctions extends React.PureComponent {\r\n private cbContext!: AppContext;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n auctionsList: {} as MavoVehicleUserAuctionsList,\r\n makeEntities: [],\r\n selectedMakeEntities: [],\r\n modelEntities: [],\r\n selectedModelEntities: [],\r\n selectedTab: 0,\r\n isLoading: false,\r\n isLoadingAuctions: false,\r\n count: 1,\r\n page: 0,\r\n pageSize: 10,\r\n vin: '',\r\n selectedStartDate: null,\r\n selectedEndDate: null,\r\n selectedAuction: null,\r\n executing: false,\r\n minPrice: null,\r\n maxPrice: null,\r\n isDialogOpen: false,\r\n offerStatuses: [\r\n {\r\n id: 1,\r\n displayName: '-'\r\n } as IReferential,\r\n {\r\n id: 2,\r\n displayName: 'Castigator',\r\n code: 'CASTIGATOR'\r\n } as IReferential,\r\n {\r\n id: 3,\r\n displayName: 'Necastigator',\r\n code: 'NECASTIGATOR'\r\n } as IReferential,\r\n {\r\n id: 4,\r\n displayName: 'Oferta depasita',\r\n code: 'OFERTA_DEPASITA'\r\n } as IReferential,\r\n {\r\n id: 5,\r\n displayName: 'Ultimul ofertant',\r\n code: 'ULTIMUL_OFERTANT'\r\n } as IReferential\r\n ],\r\n selectedOfferStatus: null\r\n } as IMavoVehiclesUserAuctionsState;\r\n\r\n public async componentDidMount() {\r\n const mavoVehiclesUserAuctionsFilters = {\r\n makeIds: [],\r\n modelIds: [],\r\n startDate: null,\r\n endDate: null,\r\n page: this.state.page + 1,\r\n pageSize: this.state.pageSize,\r\n vin: '',\r\n minPrice: null,\r\n maxPrice: null,\r\n selectedOfferStatus: null\r\n } as MavoVehicleUserAuctionsFilters;\r\n\r\n this.setState({\r\n isLoading: true\r\n });\r\n\r\n const [auctionsList] = await Promise.all([\r\n this.cbContext.vehicleService.GetUserAuctions(mavoVehiclesUserAuctionsFilters)\r\n ]);\r\n\r\n this.setState(\r\n {\r\n auctionsList: auctionsList,\r\n count: auctionsList.total,\r\n page: auctionsList.page - 1\r\n },\r\n async () => {\r\n await this.reloadFilters();\r\n }\r\n );\r\n }\r\n\r\n loadUserAuctions = async (page: number, rowsPerPage: number) => {\r\n this.setState({\r\n isLoadingAuctions: true,\r\n selectedAuction: null\r\n });\r\n\r\n const mavoVehiclesUserAuctionsFilters = {\r\n makeIds: this.state.selectedMakeEntities.map((item) => item.id),\r\n modelIds: this.state.selectedModelEntities.map((item) => item.id),\r\n startDate: this.state.selectedStartDate\r\n ? new Date(this.state.selectedStartDate.setHours(0, 0, 0, 0))\r\n : null,\r\n endDate: this.state.selectedEndDate\r\n ? new Date(this.state.selectedEndDate.setHours(23, 59, 59, 999))\r\n : null,\r\n page: page + 1,\r\n pageSize: rowsPerPage,\r\n vin: this.state.vin,\r\n minPrice: this.state.minPrice,\r\n maxPrice: this.state.maxPrice,\r\n selectedOfferStatus: this.state.selectedOfferStatus ? this.state.selectedOfferStatus.code : null\r\n } as MavoVehicleUserAuctionsFilters;\r\n\r\n const auctionsList = await this.cbContext.vehicleService.GetUserAuctions(mavoVehiclesUserAuctionsFilters);\r\n\r\n this.setState({\r\n auctionsList: auctionsList,\r\n page: auctionsList.page - 1,\r\n pageSize: rowsPerPage,\r\n count: auctionsList.total,\r\n isLoadingAuctions: false\r\n });\r\n };\r\n\r\n reloadFilters = async () => {\r\n const filters = await this.cbContext.vehicleService.GetUserAuctionsFilters();\r\n this.setState({\r\n makeEntities: filters.makeList,\r\n modelEntities: filters.modelList,\r\n isLoading: false\r\n });\r\n };\r\n\r\n getMuiTheme = () => createMuiTheme({\r\n overrides: {\r\n MuiTableCell: {\r\n head: {\r\n paddingLeft: \"2px\",\r\n paddingRight: \"2px\",\r\n paddingTop: \"2px\",\r\n paddingBottom: \"2px\"\r\n },\r\n },\r\n MUIDataTableBodyCell: {\r\n stackedCommon: {\r\n paddingLeft: \"2px\",\r\n paddingRight: \"2px\",\r\n paddingTop: \"0px\",\r\n paddingBottom: \"0px\",\r\n height: \"40px !important\"\r\n }\r\n },\r\n MuiCheckbox: {\r\n root: {\r\n padding: \"0px\", // Adjust the padding to make the checkbox smaller\r\n },\r\n colorSecondary: {\r\n '&.Mui-checked': {\r\n color: \"#3d4977 !important\",\r\n '&:hover': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.03) !important'\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.03) !important'\r\n }\r\n }\r\n }\r\n } as any\r\n });\r\n\r\n makeSelectedAuction = (isSelected: boolean, id: number) => {\r\n const auctions = _.cloneDeep(this.state.auctionsList.auctions);\r\n const auction = auctions.find((item) => item.id === id);\r\n if (auction) {\r\n auction.isSelected = isSelected;\r\n }\r\n\r\n if (isSelected) {\r\n auctions.forEach((item) => {\r\n if (item.id !== id) {\r\n item.isSelected = false;\r\n } \r\n });\r\n }\r\n this.setState({\r\n auctionsList: {\r\n ...this.state.auctionsList,\r\n auctions: auctions\r\n },\r\n selectedAuction: isSelected ? (auction ? auction : null): null\r\n });\r\n }\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'id',\r\n label: ' ',\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const auction = this.state.auctionsList.auctions.find((item) => item.id === tableMeta.rowData[0]);\r\n return (\r\n \r\n \r\n
\r\n {\r\n this.makeSelectedAuction(e.target.checked, auction!.id);\r\n }}\r\n >\r\n }\r\n label=''\r\n />\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.vin',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_VIN_CODE', 'VIN'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n }, \r\n {\r\n name: 'mavoVehicle.make.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MAKE', 'Marca'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.model.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MODEL', 'Model'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n }, \r\n {\r\n name: '',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'AUCTION_ADMIN_HAS_OFFERS',\r\n 'Oferte'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n const auction = this.state.auctionsList.auctions.find((item) => item.id === tableMeta.rowData[0]);\r\n return (\r\n \r\n \r\n
\r\n {auction!.mavoVehicleAuctionOffers.length > 0 ? \r\n this.cbContext.translatorService.Tranlate(\"AUCTION_ADMIN_HAS_OFFERS_YES\", \"Da\")\r\n : this.cbContext.translatorService.Tranlate(\"AUCTION_ADMIN_HAS_OFFERS_NO\", \"Nu\")\r\n }\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'startPrice',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_AUCTION_START_PRICE', 'Pret start'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'currentPrice',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'AUCTION_ADMIN_CURRENT_PRICE',\r\n 'Pret curent'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'startDate',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_AUCTION_START_DATE',\r\n 'Data start'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n \r\n
\r\n {value\r\n ? moment\r\n .utc(value)\r\n .local()\r\n .format(this.props.appState.dateFormat)\r\n : null}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'endDate',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'ADMIN_AUCTION_END_DATE',\r\n 'Data stop'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n \r\n
\r\n {value\r\n ? moment(value)\r\n .format(this.props.appState.longDateFormat)\r\n : null}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.provenance.type',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MENU_NOMENCLATURES_TAB_PROVENANCE',\r\n 'Provenienta'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.location',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHILES_VEHICLE_LOCATION',\r\n 'Locatie'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'auctionStatus.displayName',\r\n label: this.cbContext.translatorService.Tranlate('ADMIN_AUCTION_STATUS', 'Stare licitatie'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n }\r\n }\r\n }, \r\n {\r\n name: 'userStatus',\r\n label: this.cbContext.translatorService.Tranlate('AUCTION_USER_STATUS', 'Status'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n const auction = this.state.auctionsList.auctions.find((item) => item.id === tableMeta.rowData[0]);\r\n if (!auction) {\r\n return \"\";\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n {this.cbContext.translatorService.Tranlate(auction.userStatus, auction.userStatus)}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n } \r\n }, \r\n {\r\n name: 'userMaximumOffer',\r\n label: this.cbContext.translatorService.Tranlate('AUCTION_USER_MAXIMUM_OFFER', 'Oferta mea maxima'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n const auction = this.state.auctionsList.auctions.find((item) => item.id === tableMeta.rowData[0]);\r\n const userOffer = auction!.mavoVehicleAuctionOffers.find((item) => item.createdBy === this.props.appState.appUser?.id);\r\n \r\n if (!userOffer) {\r\n return \"\";\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n {userOffer.maximumOffer}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n }, \r\n {\r\n name: '',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_AUCTION_REMAINING_TIME', 'Timp ramas'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n const auction = this.state.auctionsList.auctions.find((item) => item.id === tableMeta.rowData[0]);\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n sortFunction = (a: any, b: any) => {\r\n return a.order - b.order;\r\n };\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState(\r\n {\r\n selectedTab: newValue,\r\n page: 0\r\n },\r\n async () => await this.loadUserAuctions(0, this.state.pageSize)\r\n );\r\n };\r\n\r\n handleMakeEntitiesChange = (newValue: any[]) => {\r\n const selectedModels = [...this.state.selectedModelEntities];\r\n const selectedMakeIds = newValue.map(({ id }) => id);\r\n\r\n const models = selectedModels.filter(({ dependencyId }) =>\r\n selectedMakeIds.includes(dependencyId)\r\n );\r\n\r\n this.setState(\r\n {\r\n selectedMakeEntities: newValue,\r\n selectedModelEntities: models\r\n }\r\n );\r\n };\r\n\r\n handleModelEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedModelEntities: newValue\r\n }\r\n );\r\n };\r\n\r\n handleOfferStatusChange = (newValue: any) => {\r\n this.setState(\r\n {\r\n selectedOfferStatus: newValue\r\n }\r\n );\r\n };\r\n\r\n handleMinPriceChange = (value: string) => {\r\n this.setState({\r\n minPrice: value ? parseFloat(value) : null\r\n });\r\n };\r\n\r\n handleMaxPriceChange = (value: string) => {\r\n this.setState({\r\n maxPrice: value ? parseFloat(value) : null\r\n });\r\n };\r\n\r\n\r\n handleStartDateChange = async (date: MaterialUiPickersDate | null, value?: string | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState(\r\n {\r\n selectedStartDate: date!.toDate(),\r\n isLoading: false\r\n }\r\n );\r\n };\r\n\r\n handleEndDateChange = async (date: MaterialUiPickersDate | null, value?: string | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n selectedEndDate: date!.toDate(),\r\n isLoading: false\r\n }\r\n );\r\n };\r\n\r\n renderSearchButtons() {\r\n return (\r\n
\r\n
\r\n this.loadUserAuctions(this.state.page, this.state.pageSize)}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_SEARCH',\r\n 'Cautare'\r\n )}\r\n \r\n
\r\n
\r\n this.resetFilters()}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_RESET',\r\n 'Reset'\r\n )}\r\n \r\n
\r\n
\r\n\r\n );\r\n }\r\n\r\n resetFilters = async () => {\r\n this.setState({\r\n selectedMakeEntities: [],\r\n selectedModelEntities: [],\r\n selectedStartDate: null,\r\n selectedEndDate: null,\r\n vin: '',\r\n minPrice: null,\r\n maxPrice: null,\r\n selectedOfferStatus: null\r\n }, async () => {\r\n await this.loadUserAuctions(this.state.page, this.state.pageSize);\r\n });\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n \r\n\r\n renderFilters = () => {\r\n const selectedMakes = this.state.selectedMakeEntities;\r\n let models = this.state.modelEntities;\r\n\r\n if (selectedMakes.length) {\r\n const makeIds = selectedMakes.map(({ id }) => id);\r\n models = this.state.modelEntities.filter(({ dependencyId }) => {\r\n return makeIds.includes(dependencyId!);\r\n });\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n this.handleMakeEntitiesChange(newValue)}\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n \r\n \r\n\r\n this.handleMinPriceChange(e.target.value)}\r\n label={this.cbContext.translatorService.Tranlate(\r\n 'AUCTIONS_FILTER_MIN_PRICE',\r\n 'Pret minim'\r\n )}\r\n validators={['required', 'minNumber:1']}\r\n errorMessages={[\r\n this.cbContext.translatorService.Tranlate(\r\n 'AUCTIONS_FILTER_MIN_PRICE',\r\n 'Pret minim'\r\n )\r\n ]}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n /> \r\n\r\n
\r\n {\r\n this.setState({\r\n vin: e.target.value\r\n });\r\n }}\r\n validators={['required']}\r\n label={this.cbContext.translatorService.Tranlate('CALCULATION_DETAILS_VIN', 'Vin')}\r\n />\r\n
\r\n
\r\n\r\n \r\n \r\n this.handleModelEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n \r\n \r\n\r\n this.handleMaxPriceChange(e.target.value)}\r\n label={this.cbContext.translatorService.Tranlate(\r\n 'AUCTIONS_FILTER_MAX_PRICE',\r\n 'Pret maxim'\r\n )}\r\n validators={['required', 'minNumber:1']}\r\n errorMessages={[\r\n this.cbContext.translatorService.Tranlate(\r\n 'AUCTIONS_FILTER_MAX_PRICE',\r\n 'Pret maxim'\r\n )\r\n ]}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n /> \r\n\r\n {/* \r\n this.handleOfferStatusChange(newValue) // actualizați metoda pentru a gestiona selecția unică\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n /> */}\r\n\r\n \r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n onRowDoubleClick = (\r\n dataIndex: number,\r\n rowIndex: number,\r\n columnIndex: number\r\n ) => {\r\n const auction = this.state.auctionsList.auctions[dataIndex];\r\n this.setState({\r\n isDialogOpen: true,\r\n selectedAuction: auction!\r\n });\r\n };\r\n\r\n tableOptions = () => {\r\n return {\r\n sort: true,\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.cbContext.translatorService),\r\n elevation: 0,\r\n serverSide: true,\r\n count: this.state.count,\r\n rowsPerPage: this.state.pageSize,\r\n page: this.state.page,\r\n onCellClick: (colData: any, cellMeta: any) => {\r\n if (cellMeta && cellMeta.colIndex !== null && cellMeta.rowIndex !== null) {\r\n // Set up a double-click event listener on the cell\r\n if (cellMeta.event.detail === 2) {\r\n this.onRowDoubleClick(cellMeta.dataIndex, cellMeta.rowIndex, cellMeta.colIndex);\r\n }\r\n }\r\n },\r\n onTableChange: async (action: any, tableState: any) => {\r\n switch (action) {\r\n case 'changePage':\r\n await this.loadUserAuctions(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'changeRowsPerPage':\r\n await this.loadUserAuctions(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'sort':\r\n break;\r\n default:\r\n }\r\n }\r\n };\r\n };\r\n\r\n getColor = (dataIndex: number) => {\r\n const auction = this.state.auctionsList.auctions[dataIndex];\r\n if (!auction) return \"default-text\";\r\n \r\n const status = auction.userStatus;\r\n \r\n if (status === AuctionOfferStatusEnum.AUCTION_WINNER || status === AuctionOfferStatusEnum.AUCTION_LAST_BIDDER) {\r\n return \"green-text\";\r\n } else if (status === AuctionOfferStatusEnum.AUCTION_LOSER || status === AuctionOfferStatusEnum.AUCTION_OFFER_EXCEEDED) {\r\n return \"red-text\";\r\n }\r\n \r\n return \"default-text\";\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState(\r\n {\r\n isDialogOpen: false,\r\n selectedAuction: null\r\n },\r\n async () => {\r\n this.loadUserAuctions(this.state.page, this.state.pageSize);\r\n }\r\n );\r\n };\r\n\r\n goToUserAuctions = () => {\r\n this.props.history.push('/user/auctions');\r\n };\r\n\r\n public render() {\r\n this.cbContext = this.context as AppContext;\r\n\r\n if (this.state.isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n {this.renderFilters()}\r\n {this.renderSearchButtons()}\r\n {this.state.isLoadingAuctions ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )} \r\n
\r\n
\r\n
\r\n
\r\n {this.state.selectedAuction ? (\r\n \r\n \r\n \r\n {this.cbContext.translatorService.Tranlate('MAVO_VEHICLE_VIEW', 'Fisa Tehnica (Fisa de Evaluare)')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.selectedAuction === null ? null : (\r\n \r\n )}\r\n \r\n \r\n ) : null }\r\n
\r\n );\r\n }\r\n}\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n mavoVehicleState: state.mavoVehicle,\r\n mavoVehicleAuctionState: state.mavoVehicleAuction\r\n }),\r\n{ ...MavoVehicleActionCreators, ...VehicleAuctionActionCreators }\r\n)(withSnackbar(MavoVehiclesUserAuctions as any));","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n VehicleActionCreators,\r\n VehicleState\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Button,\r\n Card,\r\n CardContent,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n Divider,\r\n Grid,\r\n Modal,\r\n Typography\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { CloseAuctionRequestDto, MavoVehicleAuction, MavoVehicleAuctionOffer } from '../../interfaces/Vehicle';;\r\nimport * as R from 'ramda';\r\nimport { MavoVehicleActionCreators } from '../../store/actions/MavoVehicle';\r\nimport { MavoVehicleState } from '../../store/reducers/MavoVehicle';\r\nimport { VehicleAuctionActionCreators } from '../../store/actions/VehicleAuction';\r\nimport moment from 'moment';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport _ from 'lodash';\r\nimport NavigationIcon from '@material-ui/icons/Navigation';\r\n\r\n\r\ninterface IMavoAuctionDetailsFormState {\r\n isLoading: boolean;\r\n executing: boolean; \r\n isOpen: boolean;\r\n dialogVisible: boolean;\r\n mavoVehicleAuction: MavoVehicleAuction;\r\n offers: MavoVehicleAuctionOffer[];\r\n maxOffers: MavoVehicleAuctionOffer[];\r\n}\r\n\r\nexport interface ExternalMavoAuctionDetailsFormProps {\r\n mavoVehicleAuction: MavoVehicleAuction;\r\n closeDialog: () => void;\r\n} \r\n\r\ntype IMavoAuctionDetailsFormProps = ExternalMavoAuctionDetailsFormProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n mavoVehicleState: MavoVehicleState;\r\n mavoVehicleAuctionState: MavoVehicleAuction;\r\n} & typeof CaseSettingsActionCreators &\r\n typeof VehicleActionCreators &\r\n typeof MavoVehicleActionCreators & typeof VehicleAuctionActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass MavoAuctionDetailsForm extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n private appUserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: false,\r\n executing: false,\r\n isOpen: false,\r\n dialogVisible: false,\r\n mavoVehicleAuction: this.props.mavoVehicleAuction,\r\n offers: [] as MavoVehicleAuctionOffer[],\r\n maxOffers: [] as MavoVehicleAuctionOffer[]\r\n } as IMavoAuctionDetailsFormState;\r\n\r\n public componentDidMount() { \r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n \r\n }\r\n\r\n private loadData = async () => {\r\n const mavoVehicleAuction = await this.vehicleService.GetMavoAuction(this.state.mavoVehicleAuction.id);\r\n if (mavoVehicleAuction.mavoVehicleAuctionOffers.length > 0) {\r\n const mavoVehicleAuctionOffers = _.cloneDeep(mavoVehicleAuction.mavoVehicleAuctionOffers);\r\n const users = await this.appUserService.GetUsersInfo(\r\n Array.from(new Set(mavoVehicleAuctionOffers.map((item) => item.createdBy)))\r\n );\r\n mavoVehicleAuctionOffers.forEach((offer) => {\r\n const user = users.find((item: AppUser) => item.id === offer.createdBy);\r\n offer.createdByUser = R.isNil(user) ? null : user;\r\n });\r\n mavoVehicleAuction.mavoVehicleAuctionOffers = _.cloneDeep(mavoVehicleAuctionOffers);\r\n }\r\n\r\n const maxOffers = mavoVehicleAuction.mavoVehicleAuctionOffers.filter(x => x.hasManualOffer);\r\n console.log('maxOffers', maxOffers);\r\n this.setState({\r\n isLoading: false,\r\n mavoVehicleAuction: mavoVehicleAuction,\r\n offers: mavoVehicleAuction.mavoVehicleAuctionOffers,\r\n maxOffers: maxOffers\r\n });\r\n\r\n }\r\n \r\n showOfferTimeline = () => {\r\n return this.state.offers.map((mavoVehicleAuctionOffer, index) => {\r\n return (\r\n
\r\n {mavoVehicleAuctionOffer.dateCreation ? moment.utc(mavoVehicleAuctionOffer.dateCreation).local().format(this.props.appState.longDateFormat) : ''}\r\n  \r\n -\r\n  \r\n {mavoVehicleAuctionOffer.createdByUser ? mavoVehicleAuctionOffer.createdByUser.organization!.name : ''}\r\n  \r\n :\r\n  \r\n {mavoVehicleAuctionOffer.minimumOffer} \r\n  \r\n :\r\n {mavoVehicleAuctionOffer.hasManualOffer ? '' : ' * '}\r\n
\r\n );\r\n });\r\n };\r\n\r\n showBidOfferTimeline = () => {\r\n return this.state.maxOffers.map((mavoVehicleAuctionOffer, index) => {\r\n return (\r\n
\r\n {mavoVehicleAuctionOffer.dateCreation ? moment.utc(mavoVehicleAuctionOffer.dateCreation).local().format(this.props.appState.longDateFormat) : ''}\r\n  \r\n /\r\n  \r\n {mavoVehicleAuctionOffer.createdByUser ? mavoVehicleAuctionOffer.createdByUser.organization!.name : ''}\r\n  \r\n =\r\n  \r\n {mavoVehicleAuctionOffer.maximumOffer} \r\n
\r\n );\r\n });\r\n };\r\n \r\n auctionCommentDetails = () => {\r\n return (\r\n \r\n \r\n
\r\n {this.translatorService.Tranlate('AUCTION_OTHER_DETAILS', 'Alte detalii') + ':'}\r\n
\r\n
\r\n {this.state.mavoVehicleAuction ? this.state.mavoVehicleAuction.details : ''}\r\n
\r\n
\r\n
\r\n );\r\n } \r\n\r\n auctionDetails = () => {\r\n return (\r\n \r\n \r\n
\r\n {this.translatorService.Tranlate('MAVO_VEHICLES_AUCTION_VIN', 'VIN') + ': '}{' '}\r\n
\r\n
\r\n   {this.state.mavoVehicleAuction ? this.state.mavoVehicleAuction.mavoVehicle.vin : ''}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('VEHICLES_VEHICLE_MAKE', 'Marca') + ': '}{' '}\r\n
\r\n
\r\n   {this.state.mavoVehicleAuction.mavoVehicle.make?.displayName}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('VEHICLES_VEHICLE_MODEL', 'Model') + ': '}{' '}\r\n
\r\n
\r\n   {this.state.mavoVehicleAuction.mavoVehicle.model?.displayName}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_STATE', 'Stare')}:\r\n
\r\n
\r\n  {!R.isNil(this.state.mavoVehicleAuction.auctionStatus) ? this.state.mavoVehicleAuction.auctionStatus.displayName || '' : ''}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('MAVO_VEHICLES_AUCTION_START_EURO_PRICE', 'Pret start licitatie (euro)')}:\r\n
\r\n
\r\n  {this.state.mavoVehicleAuction && this.state.mavoVehicleAuction.startPrice} EUR\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('MAVO_VEHICLES_AUCTION_START_DATE', 'Data start') + ': '}{' '}\r\n
\r\n
\r\n  \r\n {moment\r\n .utc(this.state.mavoVehicleAuction.startDate)\r\n .local()\r\n .format(this.props.appState.dateFormat)}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('MAVO_VEHICLES_AUCTION_END_DATE', 'Data stop licitatie') + ': '}{' '}\r\n
\r\n
\r\n  \r\n {moment(this.state.mavoVehicleAuction.endDate)\r\n .format(this.props.appState.longDateFormat)}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('VEHICLE_AUCTION_MIN_DIFFERENCE', 'Suma minima peste ultima oferta')+ ': '}{' '}\r\n
\r\n
\r\n  {this.state.mavoVehicleAuction.minDifference || ''}\r\n
\r\n
\r\n \r\n
\r\n {this.translatorService.Tranlate('VEHICLE_AUCTION_CURRENT_EURO_PRICE', 'Pret curent licitatie (euro)')+ ': '}{' '}\r\n
\r\n
\r\n  {this.state.mavoVehicleAuction.currentPrice || ''}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n \r\n handleOpenConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: true,\r\n dialogVisible: true\r\n });\r\n };\r\n\r\n handleCloseModal = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n\r\n closeAuction = async () => {\r\n try {\r\n const request = {\r\n auctionId: this.state.mavoVehicleAuction.id,\r\n } as CloseAuctionRequestDto;\r\n const result = await this.vehicleService.CloseAuction(request);\r\n this.handleCloseModal();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n
\r\n {\r\n this.props.closeDialog();\r\n }}\r\n >\r\n \r\n {this.translatorService.Tranlate('AUCTION_DIALOG_BACK', 'Inapoi')}\r\n \r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate('AUCTION_DIALOG_CLOSED_BUTTON', 'Inchide licitatie')}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n {this.auctionDetails()} \r\n \r\n {this.translatorService.Tranlate(\r\n 'AUCTION_HISTORY',\r\n 'Istoric licitatie'\r\n )}:\r\n \r\n {this.state.offers && this.state.offers.length > 0 ? (\r\n
\r\n {this.showOfferTimeline()}\r\n
\r\n ) : (\r\n
\r\n
\r\n Nu exista oferte\r\n
\r\n
\r\n )}\r\n \r\n {this.auctionCommentDetails()}\r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'AUCTION_MAX_BIDS',\r\n 'Lista oferte maxime (Biduri maxime)'\r\n )}:\r\n \r\n {this.state.maxOffers && this.state.maxOffers.length > 0 ? (\r\n
\r\n {this.showBidOfferTimeline()}\r\n
\r\n ) : (\r\n
\r\n
\r\n Nu exista oferte\r\n
\r\n
\r\n )}\r\n
\r\n ): null}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n {`${this.translatorService.Tranlate(\r\n 'AUCTION_CLOSED_CONFIRMATION_MESSAGE',\r\n 'Sunteti sigur ca doriti sa inchideti licitatia?'\r\n )} `}\r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VEHICLE_SEARCH_FORM_VEHICLE_YES', 'Da')}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState, ownProps: ExternalMavoAuctionDetailsFormProps) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle,\r\n mavoVehicleState: state.mavoVehicle,\r\n mavoVehicleAuctionState: state.mavoVehicleAuction,\r\n }),\r\n{ ...CaseSettingsActionCreators, ...VehicleActionCreators, ...MavoVehicleActionCreators, ...VehicleAuctionActionCreators }\r\n)(withSnackbar(MavoAuctionDetailsForm as any));\r\n","import * as React from 'react';\r\nimport { ApplicationState, AppState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Card,\r\n Grid,\r\n Tab,\r\n Tabs,\r\n AppBar,\r\n TextField,\r\n Button,\r\n Checkbox,\r\n FormControlLabel,\r\n DialogTitle,\r\n DialogContent,\r\n Dialog,\r\n IconButton,\r\n Modal,\r\n DialogContentText,\r\n DialogActions\r\n} from '@material-ui/core';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n MavoVehicleAuction,\r\n Provenance,\r\n MavoAdminAuctionsList,\r\n MavoAdminAuctionsFilters,\r\n CloseAuctionRequestDto\r\n} from '../../interfaces/Vehicle';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Loader from '../Loader';\r\nimport noop from 'lodash/noop';\r\nimport _ from 'lodash';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MavoVehicleActionCreators } from '../../store/actions/MavoVehicle';\r\nimport { MavoVehicleState } from '../../store/reducers/MavoVehicle';\r\nimport NumberFormat from 'react-number-format';\r\nimport { VehicleAuctionActionCreators } from '../../store/actions/VehicleAuction';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport MavoAuctionDetailsForm from './MavoAuctionDetailsForm';\r\nimport {MuiThemeProvider, createMuiTheme } from '@material-ui/core';\r\nimport RealTimeDate from './RealTimeDate';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport FileSaver from 'file-saver';\r\nimport { ScaleLoader } from 'react-spinners';\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\ntype MavoVehiclesAdminAuctionsProps = {\r\n appState: AppState;\r\n mavoVehicleState: MavoVehicleState;\r\n mavoVehicleAuctionState: MavoVehicleAuction;\r\n} &\r\n typeof MavoVehicleActionCreators & typeof VehicleAuctionActionCreators &\r\n ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface IMavoVehiclesAdminAuctionsState {\r\n auctionsList: MavoAdminAuctionsList;\r\n selectedStartDate: Date | null;\r\n selectedEndDate: Date | null;\r\n provenanceEntities: Provenance[];\r\n selectedProvenanceEntities: Provenance[];\r\n statusEntities: IReferential[];\r\n selectedStatusEntities: IReferential[];\r\n selectedTab: number;\r\n isLoading: boolean;\r\n isLoadingAuctions: boolean;\r\n count: number;\r\n page: number;\r\n pageSize: number;\r\n vin: string;\r\n selectedAuction: MavoVehicleAuction | null;\r\n executing: boolean;\r\n isDialogOpen: boolean;\r\n isOfferDialogOpen: boolean;\r\n isOpen: boolean;\r\n isLoadingExport: boolean;\r\n}\r\n\r\nclass MavoVehiclesAdminAuctions extends React.PureComponent {\r\n private cbContext!: AppContext;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n auctionsList: {} as MavoAdminAuctionsList,\r\n selectedStartDate: null,\r\n selectedEndDate: null,\r\n provenanceEntities: [],\r\n selectedProvenanceEntities: [],\r\n statusEntities: [],\r\n selectedStatusEntities: [],\r\n selectedTab: 0,\r\n isLoading: false,\r\n isLoadingAuctions: false,\r\n count: 1,\r\n page: 0,\r\n pageSize: 10,\r\n vin: '',\r\n selectedAuction: null,\r\n executing: false,\r\n isDialogOpen: false,\r\n isOfferDialogOpen: false,\r\n isOpen: false,\r\n isLoadingExport: false\r\n } as IMavoVehiclesAdminAuctionsState;\r\n\r\n public async componentDidMount() {\r\n const mavoAdminAuctionsFilters = {\r\n startDate: null,\r\n endDate: null,\r\n statusIds: [],\r\n provenanceIds: [],\r\n page: this.state.page + 1,\r\n pageSize: this.state.pageSize,\r\n vin: '',\r\n } as MavoAdminAuctionsFilters;\r\n\r\n this.setState({\r\n isLoading: true\r\n });\r\n\r\n const [auctionsList] = await Promise.all([\r\n this.cbContext.vehicleService.GetAdminAuctions(mavoAdminAuctionsFilters)\r\n ]);\r\n this.setState(\r\n {\r\n auctionsList: auctionsList,\r\n count: auctionsList.total,\r\n page: auctionsList.page - 1\r\n },\r\n async () => {\r\n await this.reloadFilters();\r\n }\r\n );\r\n }\r\n\r\n loadAuctions = async (page: number, rowsPerPage: number) => {\r\n this.setState({\r\n isLoadingAuctions: true,\r\n selectedAuction: null\r\n });\r\n\r\n const mavoAdminAuctionsFilters = {\r\n startDate: this.state.selectedStartDate\r\n ? new Date(this.state.selectedStartDate.setHours(0, 0, 0, 0))\r\n : null,\r\n endDate: this.state.selectedEndDate\r\n ? new Date(this.state.selectedEndDate.setHours(23, 59, 59, 999))\r\n : null,\r\n provenanceIds: this.state.selectedProvenanceEntities.map((item) => item.id),\r\n statusIds: this.state.selectedStatusEntities.map((item) => item.id),\r\n page: page + 1,\r\n pageSize: rowsPerPage,\r\n vin: this.state.vin\r\n } as MavoAdminAuctionsFilters;\r\n\r\n const auctionsList = await this.cbContext.vehicleService.GetAdminAuctions(mavoAdminAuctionsFilters);\r\n this.setState({\r\n auctionsList: auctionsList,\r\n page: auctionsList.page - 1,\r\n pageSize: rowsPerPage,\r\n count: auctionsList.total,\r\n isLoadingAuctions: false\r\n });\r\n };\r\n\r\n reloadFilters = async () => {\r\n const filters = await this.cbContext.vehicleService.GetAdminAuctionsFilters();\r\n this.setState({\r\n provenanceEntities: filters.provenanceList,\r\n statusEntities: filters.statusList,\r\n isLoading: false\r\n });\r\n };\r\n\r\n makeSelectedAuction = (isSelected: boolean, id: number) => {\r\n const auctions = _.cloneDeep(this.state.auctionsList.auctions);\r\n const auction = auctions.find((item) => item.id === id);\r\n if (auction) {\r\n auction.isSelected = isSelected;\r\n }\r\n\r\n if (isSelected) {\r\n auctions.forEach((item) => {\r\n if (item.id !== id) {\r\n item.isSelected = false;\r\n } \r\n });\r\n }\r\n this.setState({\r\n auctionsList: {\r\n ...this.state.auctionsList,\r\n auctions: auctions\r\n },\r\n selectedAuction: isSelected ? (auction ? auction : null): null\r\n });\r\n }\r\n\r\n getMuiTheme = () => createMuiTheme({\r\n overrides: {\r\n MuiTableCell: {\r\n head: {\r\n paddingLeft: \"2px\",\r\n paddingRight: \"2px\",\r\n paddingTop: \"2px\",\r\n paddingBottom: \"2px\"\r\n },\r\n },\r\n MUIDataTableBodyCell: {\r\n stackedCommon: {\r\n paddingLeft: \"2px\",\r\n paddingRight: \"2px\",\r\n paddingTop: \"0px\",\r\n paddingBottom: \"0px\",\r\n height: \"40px !important\"\r\n }\r\n },\r\n MuiCheckbox: {\r\n root: {\r\n padding: \"0px\", // Adjust the padding to make the checkbox smaller\r\n },\r\n colorSecondary: {\r\n '&.Mui-checked': {\r\n color: \"#3d4977 !important\",\r\n '&:hover': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.03) !important'\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.03) !important'\r\n }\r\n }\r\n }\r\n } as any\r\n });\r\n \r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'id',\r\n label: ' ',\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const auction = this.state.auctionsList.auctions.find((item) => item.id === tableMeta.rowData[0]);\r\n return (\r\n \r\n \r\n
\r\n {\r\n this.makeSelectedAuction(e.target.checked, auction!.id);\r\n }}\r\n >\r\n }\r\n label=''\r\n />\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.vin',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_VIN_CODE', 'VIN'),\r\n \r\n },\r\n {\r\n name: 'mavoVehicle.make.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MAKE', 'Marca'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.model.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MODEL', 'Model'),\r\n options: {\r\n sort: false\r\n }\r\n }, \r\n {\r\n name: '',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'AUCTION_ADMIN_HAS_OFFERS',\r\n 'Oferte'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n const auction = this.state.auctionsList.auctions.find((item) => item.id === tableMeta.rowData[0]);\r\n return (\r\n \r\n \r\n
\r\n {auction!.mavoVehicleAuctionOffers.length > 0 ? \r\n this.cbContext.translatorService.Tranlate(\"AUCTION_ADMIN_HAS_OFFERS_YES\", \"Da\")\r\n : this.cbContext.translatorService.Tranlate(\"AUCTION_ADMIN_HAS_OFFERS_NO\", \"Nu\")\r\n }\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'startPrice',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_AUCTION_START_PRICE', 'Pret start licitatie'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'currentPrice',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'AUCTION_ADMIN_CURRENT_PRICE',\r\n 'Pret curent'\r\n ),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'startDate',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_AUCTION_START_DATE',\r\n 'Data start'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any) => {\r\n return (\r\n \r\n \r\n
\r\n {value\r\n ? moment\r\n .utc(value)\r\n .local()\r\n .format(this.props.appState.dateFormat)\r\n : null}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'endDate',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'ADMIN_AUCTION_END_DATE',\r\n 'Data stop'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any) => {\r\n return (\r\n \r\n \r\n
\r\n {value\r\n ? moment(value)\r\n .format(this.props.appState.longDateFormat)\r\n : null}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'auctionStatus.displayName',\r\n label: this.cbContext.translatorService.Tranlate('ADMIN_AUCTION_STATUS', 'Stare licitatie'),\r\n options: {\r\n sort: false\r\n }\r\n }, \r\n {\r\n name: 'mavoVehicle.provenance.type',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MENU_NOMENCLATURES_TAB_PROVENANCE',\r\n 'Provenienta'\r\n ),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: '',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_AUCTION_REMAINING_TIME', 'Timp ramas'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n const auction = this.state.auctionsList.auctions.find((item) => item.id === tableMeta.rowData[0]);\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n sortFunction = (a: any, b: any) => {\r\n return a.order - b.order;\r\n };\r\n\r\n handleProvenanceEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedProvenanceEntities: newValue\r\n }\r\n );\r\n };\r\n\r\n renderAdminAuctionsButtons() {\r\n return (\r\n
\r\n
\r\n {\r\n if (!this.state.selectedAuction) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('PLEASE_SELECT_LINE', 'Va rugam sa selectati o linie!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n\r\n this.setState({\r\n isDialogOpen: true\r\n });\r\n }}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'ADMIN_AUCTION_DETAILS',\r\n 'Consultare'\r\n )}\r\n \r\n
\r\n
\r\n { \r\n if (!this.state.selectedAuction) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('PLEASE_SELECT_LINE', 'Va rugam sa selectati o linie!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n this.handleOpenConfirmationDialog();\r\n }}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'ADMIN_STOP_AUCTION',\r\n 'Stopare'\r\n )}\r\n \r\n
\r\n
\r\n \r\n {this.cbContext.translatorService.Tranlate(\r\n 'ADMIN_AUCTION_EXPORT',\r\n 'Export'\r\n )}\r\n \r\n
\r\n
\r\n\r\n );\r\n }\r\n\r\n renderSearchButtons() {\r\n return (\r\n
\r\n
\r\n this.loadAuctions(this.state.page, this.state.pageSize)}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_SEARCH',\r\n 'Cautare'\r\n )}\r\n \r\n
\r\n
\r\n this.resetFilters()}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_RESET',\r\n 'Reset'\r\n )}\r\n \r\n
\r\n
\r\n\r\n );\r\n }\r\n\r\n handleStatusEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedStatusEntities: newValue\r\n }\r\n );\r\n };\r\n\r\n resetFilters = async () => {\r\n this.setState({\r\n selectedStartDate: null,\r\n selectedEndDate: null,\r\n selectedProvenanceEntities: [],\r\n selectedStatusEntities: [],\r\n vin: ''\r\n }, async () => {\r\n await this.loadAuctions(this.state.page, this.state.pageSize);\r\n });\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n \r\n handleStartDateChange = async (date: MaterialUiPickersDate | null, value?: string | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState(\r\n {\r\n selectedStartDate: date!.toDate(),\r\n isLoading: false\r\n }\r\n );\r\n };\r\n\r\n handleEndDateChange = async (date: MaterialUiPickersDate | null, value?: string | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n selectedEndDate: date!.toDate(),\r\n isLoading: false\r\n }\r\n );\r\n };\r\n\r\n\r\n renderFilters = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.handleStatusEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n
\r\n {\r\n this.setState({\r\n vin: e.target.value\r\n });\r\n }}\r\n validators={['required']}\r\n label={this.cbContext.translatorService.Tranlate('CALCULATION_DETAILS_VIN', 'Vin')}\r\n />\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n this.handleProvenanceEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: Provenance) => option.type || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n onRowDoubleClick = (\r\n dataIndex: number,\r\n rowIndex: number,\r\n columnIndex: number\r\n ) => {\r\n if (columnIndex != 2) {\r\n return;\r\n }\r\n const auction = this.state.auctionsList.auctions[dataIndex];\r\n this.setState({\r\n isDialogOpen: true,\r\n selectedAuction: auction!\r\n });\r\n };\r\n\r\n tableOptions = () => {\r\n return {\r\n sort: true,\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.cbContext.translatorService),\r\n elevation: 0,\r\n serverSide: true,\r\n count: this.state.count,\r\n rowsPerPage: this.state.pageSize,\r\n page: this.state.page,\r\n onCellClick: (colData: any, cellMeta: any) => {\r\n if (cellMeta && cellMeta.colIndex !== null && cellMeta.rowIndex !== null) {\r\n // Set up a double-click event listener on the cell\r\n if (cellMeta.event.detail === 2) {\r\n this.onRowDoubleClick(cellMeta.dataIndex, cellMeta.rowIndex, cellMeta.colIndex);\r\n }\r\n }\r\n },\r\n onTableChange: async (action: any, tableState: any) => {\r\n switch (action) {\r\n case 'changePage':\r\n await this.loadAuctions(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'changeRowsPerPage':\r\n await this.loadAuctions(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'sort':\r\n break;\r\n default:\r\n }\r\n }\r\n };\r\n };\r\n \r\n closeDialog = async () => {\r\n this.setState(\r\n {\r\n isDialogOpen: false,\r\n selectedAuction: null\r\n }, async () => {\r\n this.loadAuctions(this.state.page, this.state.pageSize);\r\n }\r\n );\r\n };\r\n\r\n handleOpenConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: true\r\n });\r\n };\r\n\r\n handleCloseModal = () => {\r\n this.setState({\r\n isOpen: false\r\n }, () => {\r\n this.makeSelectedAuction(false, this.state.selectedAuction!.id)\r\n });\r\n };\r\n\r\n closeAuction = async () => {\r\n try {\r\n const request = {\r\n auctionId: this.state.selectedAuction!.id,\r\n } as CloseAuctionRequestDto;\r\n\r\n await this.cbContext.vehicleService.CloseAuction(request);\r\n\r\n this.setState({\r\n isOpen: false,\r\n selectedAuction: null\r\n }, async () => {\r\n this.loadAuctions(this.state.page, this.state.pageSize);\r\n });\r\n\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n handleExportAuctionOffers = async () => {\r\n try {\r\n this.setState({\r\n isLoadingExport: true\r\n });\r\n\r\n const mavoAdminAuctionsFilters = {\r\n startDate: this.state.selectedStartDate\r\n ? new Date(this.state.selectedStartDate.setHours(0, 0, 0, 0))\r\n : null,\r\n endDate: this.state.selectedEndDate\r\n ? new Date(this.state.selectedEndDate.setHours(23, 59, 59, 999))\r\n : null,\r\n provenanceIds: this.state.selectedProvenanceEntities.map((item) => item.id),\r\n statusIds: this.state.selectedStatusEntities.map((item) => item.id),\r\n vin: this.state.vin\r\n } as MavoAdminAuctionsFilters;\r\n \r\n const fileBlob = await this.cbContext.vehicleService.ExportAuctionOffers(mavoAdminAuctionsFilters);\r\n\r\n FileSaver.saveAs(fileBlob, 'Export_Licitatii_Detaliu' + '.xlsx');\r\n\r\n this.setState({\r\n isLoadingExport: false\r\n });\r\n\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (err: any) {\r\n this.setState({\r\n isLoadingExport: false\r\n });\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n public render() {\r\n this.cbContext = this.context as AppContext;\r\n\r\n if (this.state.isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n {this.renderAdminAuctionsButtons()}\r\n
\r\n \r\n
\r\n {this.renderFilters()}\r\n {this.renderSearchButtons()}\r\n {this.state.isLoadingAuctions ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )} \r\n
\r\n
\r\n
\r\n
\r\n {this.state.selectedAuction ? (\r\n \r\n \r\n \r\n {this.cbContext.translatorService.Tranlate('MAVO_VEHICLE_AUCTION_DETAILS', 'Detalii licitatie')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.selectedAuction === null ? null : (\r\n \r\n )}\r\n \r\n \r\n ) : null }\r\n\r\n \r\n \r\n \r\n \r\n {`${this.cbContext.translatorService.Tranlate(\r\n 'AUCTION_CLOSED_CONFIRMATION_MESSAGE',\r\n 'Sunteti sigur ca doriti sa inchideti licitatia?'\r\n )} `}\r\n \r\n \r\n \r\n \r\n {this.cbContext.translatorService.Tranlate('VEHICLE_SEARCH_FORM_VEHICLE_YES', 'Da')}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n mavoVehicleState: state.mavoVehicle,\r\n mavoVehicleAuctionState: state.mavoVehicleAuction\r\n }),\r\n{ ...MavoVehicleActionCreators, ...VehicleAuctionActionCreators }\r\n)(withSnackbar(MavoVehiclesAdminAuctions as any));","import * as React from 'react';\r\nimport { Button, CircularProgress } from \"@material-ui/core\";\r\nimport { AppContext, ApplicationContext } from \"../../context/Contexts\";\r\nimport { CreateEInvoiceRequest, DeclineMavoVehicleOrderRequest, MavoVehicleCreateInvoiceRequestDto, MavoVehicleCreateNoticeRequestDto, MavoVehicleOrderRCICloseRequest } from '../../interfaces/Vehicle';\r\nimport { InvoiceTypeCodeEnum, MavoOrderStatusCodeEnum, MavoVehicleProvenanceType, ReportTypeCode } from '../../helpers/Constants';\r\nimport { withSnackbar } from 'notistack';\r\nimport { ApplicationState } from '../../store';\r\nimport { connect } from 'react-redux';\r\nimport { IMavoOrdersButtonsProps, MavoOrderButtonsProps } from '../cases/vehicleDetails/IMavoOrdersButtonsProps';\r\nimport FileSaver from 'file-saver';\r\n\r\ninterface IOrdersButtonsState {\r\n isLoading: boolean;\r\n executing: boolean;\r\n orderConfirmationLoading: boolean;\r\n cancelOrderLoading: boolean;\r\n orderRefuseLoading: boolean;\r\n printPaymentNoticeLoading: boolean;\r\n generateInvoiceLoading: boolean;\r\n rciCloseOrderLoading: boolean;\r\n}\r\n\r\nclass OrdersButtons extends React.PureComponent<\r\n IMavoOrdersButtonsProps,\r\n IOrdersButtonsState\r\n> {\r\n\r\n state = {\r\n isLoading: false,\r\n executing: false,\r\n orderConfirmationLoading: false,\r\n cancelOrderLoading: false,\r\n orderRefuseLoading: false,\r\n printPaymentNoticeLoading: false,\r\n generateInvoiceLoading: false,\r\n rciCloseOrderLoading: false\r\n } as IOrdersButtonsState;\r\n\r\n private cbContext!: AppContext;\r\n static contextType = ApplicationContext;\r\n\r\n handleOrderConfirm = async () => {\r\n if (!this.props.selectedOrder?.orderStatus) return;\r\n if (this.props.selectedOrder?.orderStatus.code === MavoOrderStatusCodeEnum.CONFIRMAT.toString()) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ORDER_CONFIRM_ERR_MSG', 'Nu puteti confirma o comanda deja confirmata!'), {\r\n variant: 'warning' \r\n });\r\n return;\r\n }\r\n if (this.props.selectedOrder?.orderStatus.code === MavoOrderStatusCodeEnum.TRANSMIS.toString()) {\r\n try {\r\n this.setState({ orderConfirmationLoading: true });\r\n\r\n const request = {\r\n mavoVehicleOrderId: this.props.selectedOrder.id,\r\n userId: this.props.selectedOrder.userId ?? null\r\n } as MavoVehicleCreateNoticeRequestDto;\r\n\r\n await this.cbContext.vehicleService.ConfirmMavoVehicleOrder(ReportTypeCode.RENAULT_AVIZ_PLATA, request);\r\n\r\n this.props.loadOrders(this.props.page, this.props.pageSize);\r\n\r\n this.setState({ orderConfirmationLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch {\r\n this.setState({ executing: false, orderConfirmationLoading: false });\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n }\r\n \r\n handleCancelConfirmation = async () => {\r\n if (!this.props.selectedOrder?.orderStatus) return;\r\n\r\n if (this.props.selectedOrder?.orderStatus.code === MavoOrderStatusCodeEnum.TRANSMIS.toString()) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ORDER_CANCEL_CONFIRM_ERR_MSG', 'Nu a fost generat Aviz de Plata!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n\r\n try {\r\n this.setState({ cancelOrderLoading: true });\r\n const request = {\r\n mavoVehicleOrderId: this.props.selectedOrder.id,\r\n userId: this.props.selectedOrder.userId ?? null\r\n } as MavoVehicleCreateNoticeRequestDto;\r\n \r\n await this.cbContext.vehicleService.CancelNoticeMavoVehicle(ReportTypeCode.RENAULT_AVIZ_PLATA, request);\r\n\r\n this.props.loadOrders(this.props.page, this.props.pageSize);\r\n\r\n this.setState({ cancelOrderLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch {\r\n this.setState({ executing: false, cancelOrderLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n \r\n }\r\n\r\n handleOrderRefuse = async () => {\r\n if (!this.props.selectedOrder?.orderStatus) return;\r\n if (this.props.selectedOrder?.orderStatus.code === MavoOrderStatusCodeEnum.CONFIRMAT.toString()) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ORDER_REFUSE_ERR_MSG', 'Vehicul in curs de facturare!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n try {\r\n this.setState({ orderRefuseLoading: true });\r\n\r\n const request = {\r\n mavoVehicleOrderId: this.props.selectedOrder.id\r\n } as DeclineMavoVehicleOrderRequest;\r\n\r\n await this.cbContext.vehicleService.DeclineMavoVehicleOrder(request);\r\n\r\n this.props.loadOrders(this.props.page, this.props.pageSize);\r\n\r\n this.setState({ orderRefuseLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch {\r\n this.setState({ executing: false, orderRefuseLoading: false });\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n handlePrintPaymentNotice = async () => {\r\n if (!this.props.selectedOrder?.orderStatus) return;\r\n if (this.props.selectedOrder?.orderStatus.code === MavoOrderStatusCodeEnum.TRANSMIS.toString()) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ORDER_PRINT_PAYMENT_NOTICE_ERR_MSG', 'Vehicul fara Aviz de Plata !'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n\r\n try {\r\n this.setState({ printPaymentNoticeLoading: true });\r\n\r\n const fileBlob = await this.cbContext.vehicleService.PrintMavoVehicleNotice(this.props.selectedOrder.id);\r\n\r\n this.setState({ printPaymentNoticeLoading: false });\r\n\r\n const file = new File([fileBlob], this.cbContext.translatorService.Tranlate('PRINT_NOTICE_NAME', 'Avizare plata bancara') + '.pdf', { type: 'application/pdf' });\r\n \r\n FileSaver.saveAs(fileBlob, \"AvizarePlataBancara\" + '.pdf');\r\n\r\n const url = URL.createObjectURL(file);\r\n window.open(url, '_blank');\r\n } catch {\r\n this.setState({ executing: false, printPaymentNoticeLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n handleInvoiceGenerate = async () => {\r\n if (!this.props.selectedOrder?.orderStatus) return;\r\n if (this.props.selectedOrder?.orderStatus.code === MavoOrderStatusCodeEnum.TRANSMIS.toString()) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ORDER_PRINT_PAYMENT_NOTICE_ERR_MSG', 'Vehicul fara Aviz de Plata !'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n\r\n try {\r\n this.setState({ generateInvoiceLoading: true });\r\n\r\n const request = {\r\n mavoVehicleOrderId: this.props.selectedOrder.id,\r\n userId: this.props.selectedOrder.userId ?? null\r\n } as MavoVehicleCreateInvoiceRequestDto;\r\n const response = await this.cbContext.vehicleService.GenerateInvoiceReport(ReportTypeCode.RENAULT_FACTURA_LIVRARE, request);\r\n\r\n if (response.existingValidInvoice) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ORDER_VALID_GENERATE_INVOICE_ERR_MSG', 'Factura valida existenta!'), {\r\n variant: 'warning'\r\n });\r\n this.setState({ generateInvoiceLoading: false });\r\n return;\r\n }\r\n\r\n const eInvoiceResponse = await this.cbContext.vehicleService.CreateEInvoice({\r\n orderId: this.props.selectedOrder.id,\r\n invoiceId: response.id,\r\n invoiceTypeCode: InvoiceTypeCodeEnum.FACTURA.toString()\r\n } as CreateEInvoiceRequest);\r\n if (eInvoiceResponse && eInvoiceResponse.statusMessage) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate(eInvoiceResponse.statusMessage, eInvoiceResponse.statusMessage), {\r\n variant: 'warning'\r\n });\r\n }\r\n\r\n this.props.loadOrders(this.props.page, this.props.pageSize);\r\n\r\n this.setState({ generateInvoiceLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch {\r\n this.setState({ executing: false, generateInvoiceLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n handleRCICloseOrder = async () => {\r\n if (!this.props.selectedOrder) return;\r\n\r\n try {\r\n this.setState({ rciCloseOrderLoading: true });\r\n\r\n const request = {\r\n mavoVehicleOrderId: this.props.selectedOrder.id\r\n } as MavoVehicleOrderRCICloseRequest;\r\n\r\n await this.cbContext.vehicleService.CloseMavoVehicleOrderRCI(request);\r\n\r\n this.props.loadOrders(this.props.page, this.props.pageSize);\r\n\r\n this.setState({ rciCloseOrderLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch {\r\n this.setState({ executing: false, rciCloseOrderLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n orderButtonDisabled = () => {\r\n if (this.state.orderConfirmationLoading || this.state.cancelOrderLoading || this.state.orderRefuseLoading || this.state.printPaymentNoticeLoading || this.state.generateInvoiceLoading || this.state.rciCloseOrderLoading) {\r\n return true;\r\n }\r\n\r\n if (this.props.selectedOrder && this.props.selectedOrder.mavoVehicle!.provenance!.type === MavoVehicleProvenanceType.DVS) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n rciButtonDisabled = () => {\r\n if (this.state.orderConfirmationLoading || this.state.cancelOrderLoading || this.state.orderRefuseLoading || this.state.printPaymentNoticeLoading || this.state.generateInvoiceLoading || this.state.rciCloseOrderLoading) {\r\n return true;\r\n }\r\n\r\n if (this.props.selectedOrder && this.props.selectedOrder.mavoVehicle!.provenance!.type === MavoVehicleProvenanceType.RCI) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n render() {\r\n this.cbContext = this.context as AppContext;\r\n\r\n return (\r\n
\r\n
\r\n \r\n {this.state.orderConfirmationLoading && (\r\n \r\n )}\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_ORDER_CONFIRM_ORDER',\r\n 'Confirma comanda'\r\n )}\r\n \r\n
\r\n
\r\n \r\n {this.state.cancelOrderLoading && (\r\n \r\n )}\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_ORDER_CANCEL_ORDER_CONFIRMATION',\r\n 'Anuleaza confirmare comanda'\r\n )}\r\n \r\n
\r\n
\r\n \r\n {this.state.orderRefuseLoading && (\r\n \r\n )}\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_ORDER_REFUSE_ORDER',\r\n 'Refuza comanda'\r\n )}\r\n \r\n
\r\n
\r\n \r\n {this.state.printPaymentNoticeLoading && (\r\n \r\n )}\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_ORDER_PRINT_PAYMENT_ORDER',\r\n 'Tiparire Aviz de Plata'\r\n )}\r\n \r\n
\r\n
\r\n \r\n {this.state.generateInvoiceLoading && (\r\n \r\n )}\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_ORDER_GENERATE_INVOICE',\r\n 'Generare factura'\r\n )}\r\n \r\n
\r\n
\r\n \r\n {this.state.rciCloseOrderLoading && (\r\n \r\n )}\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_ORDER_CLOSE_RCI_ORDER',\r\n 'Inchidere comanda RCI'\r\n )}\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (\r\n state: ApplicationState,\r\n ownProps: MavoOrderButtonsProps\r\n ) => ({\r\n appState: state.app,\r\n ...ownProps\r\n })\r\n)(withSnackbar(OrdersButtons as any));\r\n","import * as React from 'react';\r\nimport { ApplicationState, AppState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Card,\r\n Grid,\r\n Tab,\r\n Tabs,\r\n AppBar,\r\n TextField,\r\n Button,\r\n Checkbox,\r\n FormControlLabel\r\n} from '@material-ui/core';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Provenance,\r\n MavoOrdersFilters,\r\n MavoOrdersList,\r\n MavoVehicleOrder\r\n} from '../../interfaces/Vehicle';\r\nimport { ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Loader from '../Loader';\r\nimport noop from 'lodash/noop';\r\nimport _ from 'lodash';\r\nimport { MavoVehicleActionCreators } from '../../store/actions/MavoVehicle';\r\nimport { MavoVehicleState } from '../../store/reducers/MavoVehicle';\r\nimport NumberFormat from 'react-number-format';\r\nimport { VehicleAuctionActionCreators } from '../../store/actions/VehicleAuction';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport OrdersButtons from './OrdersButtons';\r\nimport { MavoVehicleProvenanceType } from '../../helpers/Constants';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport * as R from 'ramda';\r\nimport {MuiThemeProvider, createMuiTheme } from '@material-ui/core';\r\n\r\ntype MavoVehiclesOrdersProps = {\r\n appState: AppState;\r\n mavoVehicleState: MavoVehicleState\r\n} &\r\n typeof MavoVehicleActionCreators & typeof VehicleAuctionActionCreators &\r\n ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface IMavoVehiclesOrdersState {\r\n ordersList: MavoOrdersList;\r\n selectedAgentEntities: AppUser[];\r\n agentList: AppUser[];\r\n provenanceEntities: Provenance[];\r\n selectedProvenanceEntities: Provenance[];\r\n selectedTab: number;\r\n isLoading: boolean;\r\n isLoadingOrders: boolean;\r\n count: number;\r\n page: number;\r\n pageSize: number;\r\n executing: boolean;\r\n selectedOrder: MavoVehicleOrder | null;\r\n}\r\n\r\nclass MavoVehiclesOrders extends React.PureComponent {\r\n private cbContext!: AppContext;\r\n static contextType = ApplicationContext;\r\n private appUserService!: IAppUserService;\r\n\r\n state = {\r\n ordersList: {} as MavoOrdersList,\r\n selectedAgentEntities: [],\r\n agentList: [],\r\n provenanceEntities: [],\r\n selectedProvenanceEntities: [],\r\n selectedTab: 0,\r\n isLoading: false,\r\n isLoadingOrders: false,\r\n count: 1,\r\n page: 0,\r\n pageSize: 10,\r\n executing: false,\r\n isDialogOpen: false,\r\n isOfferDialogOpen: false,\r\n selectedOrder: null\r\n } as IMavoVehiclesOrdersState;\r\n\r\n public async componentDidMount() {\r\n this.setState({\r\n isLoading: true \r\n });\r\n\r\n const provenanceTypeList = await this.cbContext.vehicleService.GetProvenances();\r\n const dvsProvenance = provenanceTypeList.find(x => x.type === MavoVehicleProvenanceType.DVS);\r\n\r\n const mavoVehiclesOrdersFilters = {\r\n agentIds: [],\r\n provenanceIds: dvsProvenance != null ? [dvsProvenance.id] : [],\r\n page: this.state.page + 1,\r\n pageSize: this.state.pageSize\r\n } as MavoOrdersFilters;\r\n \r\n const [ordersList, orderFilters] = await Promise.all([\r\n this.cbContext.vehicleService.GetMavoOrders(mavoVehiclesOrdersFilters),\r\n await this.cbContext.vehicleService.GetMavoOrdersFilters({\r\n agentIds: this.state.selectedAgentEntities.map((item) => item.id),\r\n provenanceIds: dvsProvenance != null ? [dvsProvenance.id] : [],\r\n } as MavoOrdersFilters)\r\n ]);\r\n\r\n const [users, createdByList] = await Promise.all([\r\n this.appUserService.GetUsersInfo(ordersList.orders\r\n .map((item) => item.userId)\r\n .filter((userId): userId is string => userId !== null)),\r\n this.appUserService.GetUsersInfo(orderFilters.agentList)\r\n ]);\r\n\r\n ordersList.orders.forEach((order) => {\r\n const user = users.find((item) => item.id === order.userId);\r\n order.user = R.isNil(user) ? null : user;\r\n });\r\n\r\n this.setState(\r\n {\r\n ordersList: ordersList,\r\n count: ordersList.total,\r\n page: ordersList.page - 1,\r\n selectedProvenanceEntities: dvsProvenance != null ? [dvsProvenance] : [],\r\n provenanceEntities: orderFilters.provenanceList,\r\n agentList: createdByList,\r\n isLoading: false\r\n });\r\n }\r\n\r\n isInternal = (): boolean | null => {\r\n if (this.state.selectedTab === 0) {\r\n return null;\r\n }\r\n if (this.state.selectedTab === 1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n loadOrders = async (page: number, rowsPerPage: number) => {\r\n this.setState({\r\n isLoadingOrders: true,\r\n selectedOrder: null\r\n });\r\n\r\n const mavoVehiclesOrdersFilters = {\r\n provenanceIds: this.state.selectedProvenanceEntities.map((item) => item.id),\r\n agentIds: this.state.selectedAgentEntities.map((item) => item.id),\r\n page: page + 1,\r\n pageSize: rowsPerPage\r\n } as MavoOrdersFilters;\r\n\r\n const ordersList = await this.cbContext.vehicleService.GetMavoOrders(mavoVehiclesOrdersFilters);\r\n\r\n const [users] = await Promise.all([\r\n this.appUserService.GetUsersInfo(ordersList.orders\r\n .map((item) => item.userId)\r\n .filter((userId): userId is string => userId !== null))\r\n ]);\r\n\r\n ordersList.orders.forEach((order) => {\r\n const user = users.find((item) => item.id === order.userId);\r\n order.user = R.isNil(user) ? null : user;\r\n });\r\n\r\n this.setState({\r\n ordersList: ordersList,\r\n page: ordersList.page - 1,\r\n pageSize: rowsPerPage,\r\n count: ordersList.total,\r\n isLoadingOrders: false\r\n });\r\n };\r\n\r\n makeSelectedOrder = (isSelected: boolean, id: number) => {\r\n const orders = _.cloneDeep(this.state.ordersList.orders);\r\n const order = orders.find((item) => item.id === id);\r\n if (order) {\r\n order.isSelected = isSelected;\r\n }\r\n\r\n if (isSelected) {\r\n orders.forEach((item) => {\r\n if (item.id !== id) {\r\n item.isSelected = false;\r\n } \r\n });\r\n }\r\n this.setState({\r\n ordersList: {\r\n ...this.state.ordersList,\r\n orders: orders\r\n },\r\n selectedOrder: isSelected ? (order ? order : null): null\r\n });\r\n }\r\n\r\n getMuiTheme = () => createMuiTheme({\r\n overrides: {\r\n MuiTableCell: {\r\n head: {\r\n paddingLeft: \"2px\",\r\n paddingRight: \"2px\",\r\n paddingTop: \"2px\",\r\n paddingBottom: \"2px\"\r\n },\r\n },\r\n MUIDataTableBodyCell: {\r\n stackedCommon: {\r\n paddingLeft: \"2px\",\r\n paddingRight: \"2px\",\r\n paddingTop: \"0px\",\r\n paddingBottom: \"0px\",\r\n height: \"40px !important\"\r\n }\r\n },\r\n MuiCheckbox: {\r\n root: {\r\n padding: \"0px\", // Adjust the padding to make the checkbox smaller\r\n },\r\n colorSecondary: {\r\n '&.Mui-checked': {\r\n color: \"#3d4977 !important\",\r\n '&:hover': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.03) !important'\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.03) !important'\r\n }\r\n }\r\n }\r\n } as any\r\n });\r\n\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'id',\r\n label: ' ',\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const row = this.state.ordersList.orders.find((item) => item.id === tableMeta.rowData[0]);\r\n return (\r\n \r\n \r\n
\r\n {\r\n this.makeSelectedOrder(e.target.checked, row!.id);\r\n }}\r\n >\r\n }\r\n label=''\r\n />\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.vin',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_VIN_CODE', 'VIN'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.make.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MAKE', 'Marca'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.model.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MODEL', 'Model'),\r\n options: {\r\n sort: false\r\n }\r\n }, \r\n {\r\n name: 'mavoVehicle.versionItem.displayName',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_VERSION', 'Versiune'),\r\n options: {\r\n sort: false\r\n }\r\n }, \r\n {\r\n name: 'mavoVehicle.fuelType.displayName',\r\n label: this.cbContext.translatorService.Tranlate('CAR_DETAILS_FUEL_TYPE', 'Combustibil'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.colorRCR.displayName',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_COLOR',\r\n 'Culoare'\r\n ),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.fabricationYear',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLE_FABRICATION_YEAR',\r\n 'An de fabricatie'\r\n ),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.kilometersNr',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_KM',\r\n 'Km'\r\n ),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'userId',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLE_ORDER_CLIENT',\r\n 'Client'\r\n ), \r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const order = this.state.ordersList.orders.find((item) => item.id === tableMeta.rowData[0]);\r\n if (R.isNil(order)) {\r\n return '';\r\n }\r\n\r\n return (\r\n \r\n \r\n {R.isNil(order.user) ? order.name : order.user!.organization!.name}\r\n \r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'price',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLE_ORDER_PRICE',\r\n 'Pret'\r\n ),\r\n },\r\n {\r\n name: 'mavoVehicle.currentStatus.status.displayName',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_ORDER_VEHICLE_STATE_', 'Stare vehicul'),\r\n options: {\r\n sort: false\r\n }\r\n }, \r\n {\r\n name: 'mavoVehicle.provenance.type',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MENU_NOMENCLATURES_TAB_PROVENANCE',\r\n 'Provenienta'\r\n ),\r\n options: {\r\n sort: false\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n sortFunction = (a: any, b: any) => {\r\n return a.order - b.order;\r\n };\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState(\r\n {\r\n selectedTab: newValue,\r\n page: 0\r\n },\r\n async () => await this.loadOrders(0, this.state.pageSize)\r\n );\r\n };\r\n\r\n\r\n handleProvenanceEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedProvenanceEntities: newValue\r\n }\r\n );\r\n };\r\n\r\n renderSearchButtons() {\r\n return (\r\n
\r\n
\r\n this.loadOrders(this.state.page, this.state.pageSize)}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_SEARCH',\r\n 'Cautare'\r\n )}\r\n \r\n
\r\n
\r\n this.resetFilters()}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_RESET',\r\n 'Reset'\r\n )}\r\n \r\n
\r\n
\r\n\r\n );\r\n }\r\n\r\n resetFilters = async () => {\r\n this.setState({\r\n selectedProvenanceEntities: [],\r\n selectedAgentEntities: []\r\n }, async () => {\r\n await this.loadOrders(this.state.page, this.state.pageSize);\r\n });\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n \r\n handleAgentChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedAgentEntities: newValue\r\n }\r\n );\r\n };\r\n\r\n renderFilters = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n this.handleAgentChange(newValue)}\r\n getOptionLabel={(option: AppUser) => option.userName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n this.handleProvenanceEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: Provenance) => option.type || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n\r\n tableOptions = () => {\r\n return {\r\n sort: true,\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.cbContext.translatorService),\r\n elevation: 0,\r\n serverSide: true,\r\n count: this.state.count,\r\n rowsPerPage: this.state.pageSize,\r\n page: this.state.page,\r\n onTableChange: async (action: any, tableState: any) => {\r\n switch (action) {\r\n case 'changePage':\r\n await this.loadOrders(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'changeRowsPerPage':\r\n await this.loadOrders(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'sort':\r\n break;\r\n default:\r\n }\r\n }\r\n };\r\n };\r\n \r\n\r\n public render() {\r\n this.cbContext = this.context as AppContext;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n if (this.state.isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n \r\n {this.renderFilters()}\r\n {this.renderSearchButtons()}\r\n {this.state.isLoadingOrders ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )} \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n mavoVehicleState: state.mavoVehicle\r\n }),\r\n{ ...MavoVehicleActionCreators }\r\n)(withSnackbar(MavoVehiclesOrders as any));","import * as React from 'react';\r\nimport {\r\n List,\r\n ListItem,\r\n ListItemText,\r\n Card,\r\n} from '@material-ui/core';\r\nimport { LanguageApi } from '../../../interfaces/Case';\r\nimport { AppContext, ApplicationContext } from '../../../context/Contexts';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\n\r\ninterface Props {\r\n language: LanguageApi;\r\n}\r\n\r\nclass LanguageApiCard extends React.Component {\r\n private translatorService!: ITranslatorService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n processCountryFlag = (languageCode: string) => {\r\n let countryCode = '';\r\n if (languageCode === 'en') {\r\n countryCode = 'GB';\r\n } else {\r\n countryCode = languageCode.toUpperCase();\r\n }\r\n return `https://flagsapi.com/${countryCode}/shiny/32.png`\r\n }\r\n\r\n render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {`Flag\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LanguageApiCard;\r\n","import * as React from 'react';\r\nimport {\r\n List,\r\n ListItem,\r\n ListItemText,\r\n Card,\r\n} from '@material-ui/core';\r\nimport { LanguageApi, LanguageLocal } from '../../../interfaces/Case';\r\nimport { AppContext, ApplicationContext } from '../../../context/Contexts';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\n\r\ninterface Props extends ProviderContext {\r\n languageApi: LanguageApi;\r\n languagesLocal: LanguageLocal[];\r\n fetchLanguages: () => void;\r\n}\r\n\r\nclass LanguageLocalCard extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n \r\n static contextType = ApplicationContext;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n }\r\n\r\n checkIfLocalLanguageExists(language: LanguageApi) {\r\n return this.props.languagesLocal.some((lang) => lang.code === language.code);\r\n }\r\n\r\n showSnackbar = (result: 'success' | 'error') => {\r\n if (result === 'success') {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCESS_MSG', 'Succes'), {\r\n variant: 'success'\r\n });\r\n } else if (result === 'error') {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n handleImport = async (code: string) => {\r\n try {\r\n const result = await this.translatorService.ImportLanguage({code});\r\n this.props.fetchLanguages();\r\n this.showSnackbar('success');\r\n } catch (error) {\r\n this.showSnackbar('error');\r\n }\r\n }\r\n\r\n handleUpdate = async (code: string) => {\r\n try {\r\n const result = await this.translatorService.UpdateLanguage({code});\r\n this.props.fetchLanguages();\r\n this.showSnackbar('success');\r\n } catch (error) {\r\n this.showSnackbar('error');\r\n }\r\n }\r\n\r\n handleDelete = async (code: string) => {\r\n try {\r\n const result = await this.translatorService.DeleteLanguage({code});\r\n this.props.fetchLanguages();\r\n this.showSnackbar('success');\r\n } catch (error) {\r\n this.showSnackbar('error');\r\n }\r\n }\r\n \r\n renderActionsButtons(language: LanguageApi) {\r\n const buttonStyle = {\r\n display: 'flex',\r\n alignItems: 'center',\r\n textAlign: 'center',\r\n borderRadius: '0.5rem',\r\n margin: '0 5px',\r\n color: 'white',\r\n fontWeight: 'bold',\r\n } as React.CSSProperties;\r\n\r\n if (this.checkIfLocalLanguageExists(language)) {\r\n return (\r\n <>\r\n this.handleDelete(language.code)}>\r\n \r\n \r\n this.handleUpdate(language.code)}>\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n this.handleImport(language.code)}>\r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {this.renderActionsButtons(this.props.languageApi)}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withSnackbar(LanguageLocalCard);\r\n","import * as React from 'react';\r\nimport {\r\n Divider,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n ListSubheader,\r\n Typography,\r\n Box,\r\n Grid,\r\n Container\r\n} from '@material-ui/core';\r\nimport LanguageApiCard from './LanguageApiCard';\r\nimport LanguageLocalCard from './LanguageLocalCard';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { AppContext, ApplicationContext } from '../../../context/Contexts';\r\nimport { AppState, ApplicationState } from '../../../store';\r\nimport { LanguageApi, LanguageLocal } from '../../../interfaces/Case';\r\nimport { ReferentialCode, RoleClaimsEnum } from '../../../helpers/Constants';\r\nimport { connect } from 'react-redux';\r\nimport { ProviderContext, withSnackbar } from 'notistack';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\n\r\ninterface PoeditorState {\r\n isLoading: boolean;\r\n languagesApi: LanguageApi[];\r\n languagesLocal: LanguageLocal[];\r\n}\r\n\r\ntype PoeditorProps = { appState: AppState } & ProviderContext;\r\n\r\nclass PoEditor extends React.Component {\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n constructor(props: PoeditorProps) {\r\n super(props);\r\n this.state = {\r\n isLoading: false, \r\n languagesApi: [],\r\n languagesLocal: []\r\n };\r\n }\r\n\r\n public componentDidMount() {\r\n console.log(this.props.appState);\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.fetchLanguagesList();\r\n }\r\n );\r\n }\r\n \r\n public hasRole = (roleCode: string): boolean => {\r\n return this.props.appState.appUser?.userRole?.code === roleCode;\r\n };\r\n\r\n fetchLanguagesList = async () => {\r\n try {\r\n const countryRef = Referentials.referential.find((item) => item.code === ReferentialCode.Country);\r\n const [languagesList, languages, countryList] = await Promise.all([\r\n await this.translatorService.GetLanguagesList(),\r\n await this.translatorService.GetLanguages(),\r\n this.appReferentialService.Get(countryRef!.baseUrl)\r\n ]);\r\n\r\n if (this.hasRight(RoleClaimsEnum.AdminCountryOrganization) && this.props.appState.appUser?.countryId) {\r\n const country = countryList.find((item: any) => item.id === this.props.appState.appUser?.countryId);\r\n this.setState({\r\n languagesApi: (languagesList.data as LanguageApi[]).filter((item: LanguageApi) => country?.code?.toLowerCase() == item.code.toLowerCase()) || [],\r\n languagesLocal: languages.data as LanguageLocal[],\r\n isLoading: false\r\n });\r\n } else {\r\n this.setState({ \r\n languagesApi: languagesList.data as LanguageApi[],\r\n languagesLocal: languages.data as LanguageLocal[],\r\n isLoading: false\r\n });\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n fetchLanguages = async () => {\r\n try {\r\n const result = await this.translatorService.GetLanguages();\r\n this.setState({ languagesLocal: result.data as LanguageLocal[] });\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n \r\n Poditor\r\n \r\n \r\n {this.translatorService.Tranlate('AVAILABLE_LANGUAGES', 'Limbi disponibile')}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('LANGUAGES_ON_API', 'Limbi disponibile pe API')}\r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('LANGUAGES_ON_CARFIX', 'Limbi disponibile pe Carfix')}\r\n \r\n \r\n \r\n \r\n {this.state.languagesApi?.map((language: LanguageApi) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(PoEditor as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport {\r\n Tooltip,\r\n Box,\r\n Button,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableMeta,\r\n MUIDataTableColumnOptions\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ICaseService } from '../../../services/Interfaces/ICaseService';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport moment from 'moment';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport EditOutlinedIcon from '@material-ui/icons/EditOutlined';\r\nimport { MaintenanceCupiOptionalPart } from '../../../interfaces/Case';\r\n\r\ninterface IMaintenanceCupiOptionalPartState {\r\n newMaintenanceCupiOptionalPart: MaintenanceCupiOptionalPart;\r\n maintenanceOptionList: IReferential[];\r\n maintenanceCupiOptionalPartList: MaintenanceCupiOptionalPart[];\r\n isLoading: boolean;\r\n isDialogOpen: boolean;\r\n newMaintenanceCupiOptionalPartId: number | null;\r\n}\r\n\r\ntype IMaintenanceCupiOptionalPartProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass MaintenanceCupiOptionalPartComponent extends React.PureComponent<\r\n IMaintenanceCupiOptionalPartProps,\r\n IMaintenanceCupiOptionalPartState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n\r\n static contextType = ApplicationContext;\r\n private newMaintenanceCupiOptionalPart = {\r\n id: 0,\r\n maintenanceOptionalId: 0,\r\n cupiCode: null\r\n } as unknown as MaintenanceCupiOptionalPart;\r\n\r\n state = {\r\n maintenanceCupiOptionalPartList: [],\r\n isLoading: false,\r\n selectedFilter: 0,\r\n isDialogOpen: false,\r\n newMaintenanceCupiOptionalPart: this.newMaintenanceCupiOptionalPart,\r\n maintenanceOptionList: [],\r\n newMaintenanceCupiOptionalPartId: null\r\n } as IMaintenanceCupiOptionalPartState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadMaintenanceCupiOptionalPartList();\r\n }\r\n );\r\n }\r\n\r\n loadMaintenanceCupiOptionalPartList = async () => {\r\n const maintenanceCupiOptionalPartList = await this.caseService.MaintenanceCupiOptionalPartList();\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.MaintenanceOption\r\n );\r\n const maintenanceOptionList = (await this.appReferentialService.Get(ref!.baseUrl)).filter((item) => item.isActive === true);\r\n\r\n this.setState({\r\n maintenanceCupiOptionalPartList: maintenanceCupiOptionalPartList,\r\n isLoading: false,\r\n maintenanceOptionList: maintenanceOptionList,\r\n newMaintenanceCupiOptionalPart: { ...this.newMaintenanceCupiOptionalPart }\r\n });\r\n };\r\n\r\n\r\n \r\n\r\n private handleMaintenanceOptionChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n newMaintenanceCupiOptionalPart: {\r\n ...this.state.newMaintenanceCupiOptionalPart,\r\n maintenanceOption: newValue,\r\n maintenanceOptionId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n private handleCupiCodeChange = (value: string) => {\r\n this.setState({\r\n newMaintenanceCupiOptionalPart: {\r\n ...this.state.newMaintenanceCupiOptionalPart,\r\n cupiCode: value\r\n }\r\n });\r\n };\r\n\r\n public saveMaintenanceCupiOptionalPart = async () => {\r\n if (this.state.newMaintenanceCupiOptionalPartId === null) {\r\n try {\r\n\r\n await this.caseService.AddMaintenanceCupiOptionalPart(this.state.newMaintenanceCupiOptionalPart);\r\n\r\n await this.loadMaintenanceCupiOptionalPartList();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n } else {\r\n try {\r\n\r\n await this.caseService.UpdateMaintenanceCupiOptionalPart(this.state.newMaintenanceCupiOptionalPart);\r\n\r\n await this.loadMaintenanceCupiOptionalPartList();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n this.handleCupiCodeChange(e.target.value)}\r\n label={this.translatorService.Tranlate(\r\n 'MAINTENANCE_CUPI_PART_OPTIONAL_CUPI_CODE',\r\n 'Cod Cupi'\r\n )}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n\r\n \r\n this.handleMaintenanceOptionChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'maintenanceOption',\r\n label: this.translatorService.Tranlate(\r\n 'MAINTENANCE_CUPI_PART_OPTIONAL_NAME',\r\n 'Denumire Piesa'\r\n ),\r\n options: {\r\n sort: true,\r\n customSort: (a: IReferential, b: IReferential) => {\r\n return a.name!.localeCompare(b.displayName!);\r\n },\r\n customBodyRender: (value: IReferential) => {\r\n return value ? value.displayName : '';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'cupiCode',\r\n label: this.translatorService.Tranlate('MAINTENANCE_CUPI_PART_OPTIONAL_CUPI_CODE', 'Cod Cupi')\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate('USERS_DATE_MODIFICATION_HEADER', 'Data Modificare'),\r\n options: {\r\n filter: false,\r\n sortDirection: 'desc',\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n <>\r\n this.newMaintenanceCupiOptionalPartPopup(tableMeta.rowData[0])}\r\n >\r\n \r\n \r\n this.deleteMaintenanceCupiOptionalPart(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n }];\r\n\r\n return columns;\r\n };\r\n\r\n deleteMaintenanceCupiOptionalPart = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.caseService.RemoveMaintenanceCupiOptionalPart(id);\r\n await this.loadMaintenanceCupiOptionalPartList();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n\r\n newMaintenanceCupiOptionalPartPopup = async (maintenanceCupiOptionalPartId: number | null) => {\r\n let newMaintenanceCupiOptionalPart: MaintenanceCupiOptionalPart;\r\n if (maintenanceCupiOptionalPartId == null) {\r\n newMaintenanceCupiOptionalPart = { ...this.state.newMaintenanceCupiOptionalPart } as MaintenanceCupiOptionalPart;\r\n } else {\r\n newMaintenanceCupiOptionalPart = this.state.maintenanceCupiOptionalPartList.find((item) => item.id === maintenanceCupiOptionalPartId)!;\r\n }\r\n this.setState({\r\n isDialogOpen: true,\r\n newMaintenanceCupiOptionalPart: newMaintenanceCupiOptionalPart,\r\n newMaintenanceCupiOptionalPartId: maintenanceCupiOptionalPartId\r\n });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState(\r\n { \r\n isDialogOpen: false, \r\n newMaintenanceCupiOptionalPart: this.newMaintenanceCupiOptionalPart \r\n }\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n // responsive: \"stacked\",\r\n customToolbar: () => {\r\n return (\r\n \r\n this.newMaintenanceCupiOptionalPartPopup(null)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n {this.state.isDialogOpen ? (\r\n \r\n \r\n \r\n \r\n \r\n {!this.state.newMaintenanceCupiOptionalPartId ? \r\n this.translatorService.Tranlate(\r\n 'MAINTENANCE_CUPI_PART_OPTIONAL_ADD_MODAL_TITLE',\r\n 'Adauga Cod Cupi'\r\n ) : this.translatorService.Tranlate(\r\n 'MAINTENANCE_CUPI_PART_OPTIONAL_UPDATE_MODAL_TITLE',\r\n 'Actualizeaza Cod Cupi'\r\n )} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(MaintenanceCupiOptionalPartComponent as any));\r\n","import * as React from 'react';\r\nimport { ApplicationState, AppState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Card,\r\n Grid,\r\n Tab,\r\n Tabs,\r\n AppBar,\r\n TextField,\r\n Button,\r\n Checkbox,\r\n FormControlLabel,\r\n CircularProgress\r\n} from '@material-ui/core';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n MavoVoInvoiceFilters,\r\n MavoVoInvoicesList,\r\n MavoVehicleInvoice,\r\n MavoVoInvoiceExportFilters,\r\n MavoVehicleCreateInvoiceRequestDto,\r\n DownloadResultsRequest,\r\n CreateEInvoiceRequest\r\n} from '../../interfaces/Vehicle';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Loader from '../Loader';\r\nimport noop from 'lodash/noop';\r\nimport _ from 'lodash';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MavoVehicleActionCreators } from '../../store/actions/MavoVehicle';\r\nimport { MavoVehicleState } from '../../store/reducers/MavoVehicle';\r\nimport NumberFormat from 'react-number-format';\r\nimport { VehicleAuctionActionCreators } from '../../store/actions/VehicleAuction';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport FileSaver from 'file-saver';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { EInvoiceStatusEnum, InvoiceTypeCodeEnum, MavoVehicleInvoiceStatusEnum, ReportTypeCode, RoleClaimsEnum } from '../../helpers/Constants';\r\nimport {MuiThemeProvider, createMuiTheme } from '@material-ui/core';\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\ntype VoInvoiceHistoryProps = {\r\n appState: AppState;\r\n mavoVehicleState: MavoVehicleState\r\n} &\r\n typeof MavoVehicleActionCreators & typeof VehicleAuctionActionCreators &\r\n ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface IVoInvoiceHistoryState {\r\n invoicesList: MavoVoInvoicesList;\r\n selectedAgentEntities: AppUser[];\r\n agentList: AppUser[];\r\n statusEntities: IReferential[];\r\n selectedStatusEntities: IReferential[];\r\n selectedStartDate: Date | null;\r\n selectedEndDate: Date | null;\r\n invoiceNumber: string;\r\n selectedTab: number;\r\n isLoading: boolean;\r\n isLoadingInvoices: boolean;\r\n count: number;\r\n page: number;\r\n pageSize: number;\r\n executing: boolean;\r\n selectedInvoice: MavoVehicleInvoice | null;\r\n isLoadingExport: boolean;\r\n isLoadingNotice: boolean;\r\n isLoadingInvoice: boolean;\r\n isLoadingBackToStock: boolean;\r\n isLoadingEInvoice: boolean;\r\n isLoadingResendInvoice: boolean;\r\n}\r\n\r\nclass VoInvoiceHistory extends React.PureComponent {\r\n private cbContext!: AppContext;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n invoicesList: {} as MavoVoInvoicesList,\r\n selectedAgentEntities: this.props.appState!.user!.profile.role.includes(RoleClaimsEnum.MavoAgent) ? [this.props.appState.appUser] : [],\r\n agentList: [],\r\n provenanceEntities: [],\r\n selectedProvenanceEntities: [],\r\n statusEntities: [],\r\n selectedStatusEntities: [],\r\n selectedStartDate: null,\r\n selectedEndDate: null,\r\n invoiceNumber: '',\r\n selectedTab: 0,\r\n isLoading: false,\r\n isLoadingInvoices: false,\r\n count: 1,\r\n page: 0,\r\n pageSize: 10,\r\n executing: false,\r\n isDialogOpen: false,\r\n isOfferDialogOpen: false,\r\n selectedInvoice: null,\r\n isLoadingExport: false,\r\n isLoadingInvoice: false,\r\n isLoadingNotice: false,\r\n isLoadingBackToStock: false,\r\n isLoadingEInvoice: false,\r\n isLoadingResendInvoice: false\r\n } as IVoInvoiceHistoryState;\r\n\r\n public async componentDidMount() {\r\n this.setState({\r\n isLoading: true\r\n });\r\n\r\n const mavoInvoicesFilters = {\r\n agentIds: this.state.selectedAgentEntities.map((item) => item.id),\r\n statusIds: [],\r\n startDate: null,\r\n endDate: null,\r\n invoiceNumber: '',\r\n page: this.state.page + 1,\r\n pageSize: this.state.pageSize\r\n } as MavoVoInvoiceFilters;\r\n\r\n const [invoicesList, invoicesFilters] = await Promise.all([\r\n this.cbContext.vehicleService.GetMavoInvoices(mavoInvoicesFilters),\r\n this.cbContext.vehicleService.GetMavoInvoicesFilters({\r\n agentIds: this.state.selectedAgentEntities.map((item) => item.id),\r\n statusIds: [],\r\n startDate: null,\r\n endDate: null,\r\n invoiceNumber: '',\r\n } as MavoVoInvoiceFilters)\r\n ]);\r\n const createdByList = await this.cbContext.appUserService.GetUsersInfo(invoicesFilters.agentList);\r\n \r\n this.setState(\r\n {\r\n invoicesList: invoicesList,\r\n count: invoicesList.total,\r\n page: invoicesList.page - 1,\r\n statusEntities: invoicesFilters.statusList,\r\n agentList: createdByList,\r\n isLoading: false\r\n }\r\n );\r\n }\r\n\r\n isInternal = (): boolean | null => {\r\n if (this.state.selectedTab === 0) {\r\n return null;\r\n }\r\n if (this.state.selectedTab === 1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n loadInvoices = async (page: number, rowsPerPage: number) => {\r\n this.setState({\r\n isLoadingInvoices: true,\r\n selectedInvoice: null \r\n });\r\n\r\n const mavoInvoicesFilters = {\r\n statusIds: this.state.selectedStatusEntities.map((item) => item.id),\r\n agentIds: this.state.selectedAgentEntities.map((item) => item.id),\r\n startDate: this.state.selectedStartDate\r\n ? new Date(this.state.selectedStartDate.setHours(0, 0, 0, 0))\r\n : null,\r\n endDate: this.state.selectedEndDate\r\n ? new Date(this.state.selectedEndDate.setHours(23, 59, 59, 999))\r\n : null,\r\n invoiceNumber: this.state.invoiceNumber,\r\n page: page + 1,\r\n pageSize: rowsPerPage\r\n } as MavoVoInvoiceFilters;\r\n\r\n const invoicesList = await this.cbContext.vehicleService.GetMavoInvoices(mavoInvoicesFilters);\r\n \r\n this.setState({\r\n invoicesList: invoicesList,\r\n page: invoicesList.page - 1,\r\n pageSize: rowsPerPage,\r\n count: invoicesList.total,\r\n isLoadingInvoices: false\r\n });\r\n };\r\n\r\n makeSelectedInvoice = (isSelected: boolean, id: number) => {\r\n const invoices = _.cloneDeep(this.state.invoicesList.invoices);\r\n const invoice = invoices.find((item) => item.id === id);\r\n if (invoice) {\r\n invoice.isSelected = isSelected;\r\n }\r\n\r\n if (isSelected) {\r\n invoices.forEach((item) => {\r\n if (item.id !== id) {\r\n item.isSelected = false;\r\n } \r\n });\r\n }\r\n this.setState({\r\n invoicesList: {\r\n ...this.state.invoicesList,\r\n invoices: invoices\r\n },\r\n selectedInvoice: isSelected ? (invoice ? invoice : null): null\r\n });\r\n }\r\n\r\n getMuiTheme = () => createMuiTheme({\r\n overrides: {\r\n MuiTableCell: {\r\n head: {\r\n paddingLeft: \"2px\",\r\n paddingRight: \"2px\",\r\n paddingTop: \"2px\",\r\n paddingBottom: \"2px\"\r\n },\r\n },\r\n MUIDataTableBodyCell: {\r\n stackedCommon: {\r\n paddingLeft: \"2px\",\r\n paddingRight: \"2px\",\r\n paddingTop: \"0px\",\r\n paddingBottom: \"0px\",\r\n height: \"40px !important\"\r\n }\r\n },\r\n MuiCheckbox: {\r\n root: {\r\n padding: \"0px\", // Adjust the padding to make the checkbox smaller\r\n },\r\n colorSecondary: {\r\n '&.Mui-checked': {\r\n color: \"#3d4977 !important\",\r\n '&:hover': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.03) !important'\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.03) !important'\r\n }\r\n }\r\n }\r\n } as any\r\n });\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'id',\r\n label: ' ',\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const invoice = this.state.invoicesList.invoices.find((item) => item.id === tableMeta.rowData[0]);\r\n return (\r\n \r\n \r\n
\r\n {\r\n this.makeSelectedInvoice(e.target.checked, invoice!.id);\r\n }}\r\n >\r\n }\r\n label=''\r\n />\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.vin',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_VIN_CODE', 'VIN'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.make.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MAKE', 'Marca'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.model.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MODEL', 'Model'),\r\n options: {\r\n sort: false\r\n }\r\n }, \r\n {\r\n name: 'mavoVehicle.fabricationYear',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLE_INVOICE_FABRICATION_YEAR',\r\n 'An fabr'\r\n ),\r\n options: {\r\n sort: false\r\n }\r\n }, \r\n {\r\n name: 'price',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_INVOICE_RON_PRICE', 'Pret vanzare (lei)'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const invoice = this.state.invoicesList.invoices.find((item) => item.id === tableMeta.rowData[0]);\r\n return (\r\n \r\n \r\n {invoice != null ? (invoice.price).toFixed(2) : null}\r\n \r\n \r\n )\r\n }\r\n }\r\n },\r\n {\r\n name: 'invoiceNumber',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_INVOICE_NUMBER', 'Nr factura'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'invoiceDate',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_INVOICE_DATE',\r\n 'Data factura'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any) => {\r\n return (\r\n \r\n \r\n
\r\n {value\r\n ? moment\r\n .utc(value)\r\n .local()\r\n .format(this.props.appState.dateFormat)\r\n : null}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n }, \r\n {\r\n name: 'invoiceStatus.displayName',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_INVOICE_STATE', 'Stare factura'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'anafIndexUpload',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_INVOICE_ANAF_INDEX', 'Index Anaf'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'anafDownloadId',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_INVOICE_ANAF_DOWNLOAD', 'Id descarcare Anaf'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'anafStatus',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_E_INVOICE_STATE', 'Stare E-factura'),\r\n options: {\r\n sort: false,\r\n customBodyRender: (anafStatus: IReferential | null) => {\r\n return anafStatus ? anafStatus.displayName : null;\r\n }\r\n }\r\n \r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n sortFunction = (a: any, b: any) => {\r\n return a.order - b.order;\r\n };\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState(\r\n {\r\n selectedTab: newValue,\r\n page: 0\r\n },\r\n async () => await this.loadInvoices(0, this.state.pageSize)\r\n );\r\n };\r\n\r\n\r\n\r\n renderSearchButtons() {\r\n return (\r\n
\r\n
\r\n this.loadInvoices(this.state.page, this.state.pageSize)}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_SEARCH',\r\n 'Cautare'\r\n )}\r\n \r\n
\r\n
\r\n this.resetFilters()}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_RESET',\r\n 'Reset'\r\n )}\r\n \r\n
\r\n
\r\n\r\n );\r\n }\r\n\r\n resetFilters = async () => {\r\n this.setState({\r\n selectedStatusEntities: [],\r\n selectedAgentEntities: this.hasRight(RoleClaimsEnum.MavoAgent) ? this.state.selectedAgentEntities : [],\r\n selectedStartDate: null,\r\n selectedEndDate: null,\r\n invoiceNumber: ''\r\n }, async () => {\r\n await this.loadInvoices(this.state.page, this.state.pageSize);\r\n });\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n \r\n handleAgentChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedAgentEntities: newValue\r\n }\r\n );\r\n };\r\n\r\n handleStatusEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedStatusEntities: newValue\r\n }\r\n );\r\n };\r\n\r\n handleStartDateChange = async (date: MaterialUiPickersDate | null, value?: string | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState(\r\n {\r\n selectedStartDate: date!.toDate(),\r\n isLoading: false\r\n }\r\n );\r\n };\r\n\r\n handleEndDateChange = async (date: MaterialUiPickersDate | null, value?: string | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n selectedEndDate: date!.toDate(),\r\n isLoading: false\r\n }\r\n );\r\n };\r\n\r\n renderFilters = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n this.handleAgentChange(newValue)}\r\n getOptionLabel={(option: AppUser) => option.userName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n\r\n
\r\n {\r\n this.setState({\r\n invoiceNumber: e.target.value\r\n });\r\n }}\r\n validators={['required']}\r\n label={this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_INVOICE_NUMBER', 'Nr factura')}\r\n />\r\n
\r\n
\r\n \r\n \r\n this.handleStatusEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n renderAgentMavoFilters = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {\r\n this.setState({\r\n invoiceNumber: e.target.value\r\n });\r\n }}\r\n validators={['required']}\r\n label={this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_INVOICE_NUMBER', 'Nr factura')}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.handleStatusEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n tableOptions = () => {\r\n return {\r\n sort: true,\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.cbContext.translatorService),\r\n elevation: 0,\r\n serverSide: true,\r\n count: this.state.count,\r\n rowsPerPage: this.state.pageSize,\r\n page: this.state.page,\r\n onTableChange: async (action: any, tableState: any) => {\r\n switch (action) {\r\n case 'changePage':\r\n await this.loadInvoices(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'changeRowsPerPage':\r\n await this.loadInvoices(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'sort':\r\n break;\r\n default:\r\n }\r\n }\r\n };\r\n };\r\n\r\n handleBackToStock = async () => {\r\n if (!this.state.selectedInvoice) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('PLEASE_SELECT_LINE', 'Va rugam sa selectati o linie!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n\r\n if (!this.state.selectedInvoice.invoiceStatus) {\r\n return;\r\n }\r\n\r\n if (this.state.selectedInvoice.invoiceStatus!.code === MavoVehicleInvoiceStatusEnum.STORNO.toString() \r\n || this.state.selectedInvoice.invoiceStatus!.code === MavoVehicleInvoiceStatusEnum.STORNATA.toString()) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('INVOICE_BACK_TO_STOCK_WARNING', 'Operatia este disponibila doar pentru facturile in stare Valida!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n\r\n this.setState({isLoadingBackToStock: true});\r\n try {\r\n const request = {\r\n mavoVehicleOrderId: this.state.selectedInvoice.mavoVehicleOrderId,\r\n userId: this.state.selectedInvoice.mavoVehicleOrder.userId ?? null,\r\n invoiceId: this.state.selectedInvoice.id\r\n } as MavoVehicleCreateInvoiceRequestDto;\r\n \r\n const response = await this.cbContext.vehicleService.CancelInvoiceMavoVehicle(ReportTypeCode.RENAULT_FACTURA_LIVRARE, request);\r\n\r\n const eInvoiceResponse = await this.cbContext.vehicleService.CreateEInvoice({\r\n orderId: this.state.selectedInvoice.mavoVehicleOrderId,\r\n invoiceId: response.id,\r\n invoiceTypeCode: InvoiceTypeCodeEnum.FACTURA.toString()\r\n } as CreateEInvoiceRequest);\r\n if (eInvoiceResponse && eInvoiceResponse.statusMessage) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate(eInvoiceResponse.statusMessage, eInvoiceResponse.statusMessage), {\r\n variant: 'warning'\r\n });\r\n }\r\n\r\n this.setState({isLoadingBackToStock: false});\r\n\r\n this.loadInvoices(this.state.page, this.state.pageSize);\r\n\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch {\r\n this.setState({isLoadingBackToStock: false});\r\n\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n handlePrintNotice = async () => {\r\n if (!this.state.selectedInvoice) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('PLEASE_SELECT_LINE', 'Va rugam sa selectati o linie!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n\r\n if (!this.state.selectedInvoice.invoiceStatus) {\r\n return;\r\n }\r\n\r\n if (this.state.selectedInvoice.invoiceStatus!.code === MavoVehicleInvoiceStatusEnum.STORNO.toString()) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('INVOICE_PRINT_NOTICE_FOR_STORNO_INVOICE', 'Se pot tipari doar avizele care au factura Valida sau Stornata!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n\r\n this.setState({ isLoadingNotice: true });\r\n try {\r\n const fileBlob = await this.cbContext.vehicleService.PrintMavoVehicleNoticeBasedInvoiceId(this.state.selectedInvoice.id);\r\n const file = new File([fileBlob], this.cbContext.translatorService.Tranlate('PRINT_NOTICE_NAME', 'Avizare plata bancara') + '.pdf', { type: 'application/pdf' });\r\n this.setState({ isLoadingNotice: false });\r\n\r\n FileSaver.saveAs(fileBlob, \"AvizarePlataBancara\" + '.pdf');\r\n const url = URL.createObjectURL(file);\r\n window.open(url, '_blank');\r\n } catch {\r\n this.setState({ isLoadingNotice: false });\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n handlePrintInvoice = async () => {\r\n if (!this.state.selectedInvoice) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('PLEASE_SELECT_LINE', 'Va rugam sa selectati o linie!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n if (!this.state.selectedInvoice.invoiceStatus) {\r\n return;\r\n }\r\n\r\n if (this.state.selectedInvoice.invoiceStatus!.code === MavoVehicleInvoiceStatusEnum.STORNATA.toString()) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('INVOICE_PRINT_FOR_STORNATA_INVOICE', 'Nu pot fi tiparite decat facturi cu stare Valida sau Storno!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n\r\n const isStorno = this.state.selectedInvoice.invoiceStatus!.code === MavoVehicleInvoiceStatusEnum.STORNO.toString();\r\n this.setState({ isLoadingInvoice: true });\r\n try {\r\n const fileBlob = await this.cbContext.vehicleService.PrintInvoice(this.state.selectedInvoice.id);\r\n const file = new File([fileBlob], this.cbContext.translatorService.Tranlate('PRINT_INVOICE_NAME', 'Factura livrare') + '.pdf', { type: 'application/pdf' });\r\n this.setState({ isLoadingInvoice: false });\r\n\r\n FileSaver.saveAs(fileBlob, isStorno ? \"FacturaLivrareStorno\" : \"FacturaLivrare\" + '.pdf');\r\n const url = URL.createObjectURL(file);\r\n window.open(url, '_blank');\r\n } catch {\r\n this.setState({ isLoadingInvoice: false });\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n handlePrintEInvoice = async () => {\r\n if (!this.state.selectedInvoice) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('PLEASE_SELECT_LINE', 'Va rugam sa selectati o linie!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n if (!this.state.selectedInvoice.invoiceStatus) {\r\n return;\r\n }\r\n\r\n if (this.state.selectedInvoice.invoiceStatus!.code === MavoVehicleInvoiceStatusEnum.STORNATA.toString()) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('INVOICE_PRINT_FOR_STORNATA_INVOICE', 'Nu pot fi tiparite decat facturi cu stare Valida sau Storno!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n \r\n if (!this.state.selectedInvoice.resultPath) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('INVOICE_NO_DOWNLOAD_ID', 'Nu exista id de descarcare anaf!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n\r\n this.setState({ isLoadingEInvoice: true });\r\n try {\r\n const request = {\r\n filePath: this.state.selectedInvoice.resultPath\r\n } as DownloadResultsRequest;\r\n const response = await this.cbContext.vehicleService.DownloadResults(request);\r\n const byteArray = Uint8Array.from(atob(response.byteContent), char => char.charCodeAt(0));\r\n const file = new Blob([byteArray], { type: 'application/zip' });\r\n FileSaver.saveAs(file, response.name);\r\n this.setState({ isLoadingEInvoice: false }); \r\n } catch {\r\n this.setState({ isLoadingEInvoice: false });\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } \r\n }\r\n\r\n handleSendToEInvoice = async () => {\r\n if (!this.state.selectedInvoice) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('PLEASE_SELECT_LINE', 'Va rugam sa selectati o linie!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n\r\n if (!this.state.selectedInvoice.invoiceStatus) {\r\n return;\r\n }\r\n\r\n if (this.state.selectedInvoice.invoiceStatus!.code === MavoVehicleInvoiceStatusEnum.STORNATA.toString()) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('INVOICE_PRINT_FOR_STORNATA_INVOICE', 'Nu pot fi tiparite decat facturi cu stare Valida sau Storno!'), {\r\n variant: 'warning'\r\n });\r\n return;\r\n }\r\n\r\n this.setState({ isLoadingInvoices: true });\r\n try {\r\n const eInvoiceResponse = await this.cbContext.vehicleService.CreateEInvoice({\r\n invoiceId: this.state.selectedInvoice.id,\r\n orderId: this.state.selectedInvoice.mavoVehicleOrderId,\r\n invoiceTypeCode: InvoiceTypeCodeEnum.FACTURA_CORECTATA.toString()\r\n } as CreateEInvoiceRequest);\r\n if (eInvoiceResponse.statusMessage) {\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate(eInvoiceResponse.statusMessage, eInvoiceResponse.statusMessage), {\r\n variant: 'warning'\r\n });\r\n }\r\n \r\n this.loadInvoices(this.state.page, this.state.pageSize);\r\n this.setState({ isLoadingInvoices: false });\r\n } catch {\r\n this.setState({ isLoadingInvoices: false });\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } \r\n }\r\n\r\n handleExportInvoices = async () => {\r\n try {\r\n this.setState({\r\n isLoadingExport: true\r\n });\r\n const mavoInvoicesFilters = {\r\n agentIds: this.state.selectedAgentEntities.map((item) => item.id),\r\n statusIds: this.state.selectedStatusEntities.map((item) => item.id),\r\n startDate: this.state.selectedStartDate\r\n ? new Date(this.state.selectedStartDate.setHours(0, 0, 0, 0))\r\n : null,\r\n endDate: this.state.selectedEndDate\r\n ? new Date(this.state.selectedEndDate.setHours(23, 59, 59, 999))\r\n : null,\r\n invoiceNumber: this.state.invoiceNumber\r\n } as MavoVoInvoiceExportFilters;\r\n const fileBlob = await this.cbContext.vehicleService.ExportInvoices(mavoInvoicesFilters);\r\n FileSaver.saveAs(fileBlob, 'Export VO Facturat' + '.xlsx');\r\n this.setState({\r\n isLoadingExport: false\r\n });\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (err: any) {\r\n this.setState({\r\n isLoadingExport: false\r\n });\r\n this.props.enqueueSnackbar(this.cbContext.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n public disabledResendInvoice = () : boolean => {\r\n if (!this.state.selectedInvoice) {\r\n return true;\r\n }\r\n\r\n if (this.state.selectedInvoice.anafStatus && (this.state.selectedInvoice.anafStatus.code === EInvoiceStatusEnum.PENDING.toString() || this.state.selectedInvoice.anafStatus.code === EInvoiceStatusEnum.VERIFICATION_SUCCESS.toString())) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n public disabledPrintEInvoice = () : boolean => {\r\n if (!this.state.selectedInvoice) {\r\n return true;\r\n }\r\n\r\n if (!this.state.selectedInvoice.anafStatus) {\r\n return true;\r\n }\r\n\r\n return false; \r\n }\r\n\r\n renderMavoInvoicesButtons() {\r\n return (\r\n
\r\n
\r\n {!this.hasRight(RoleClaimsEnum.MavoAgent) ? (\r\n \r\n {this.state.isLoadingBackToStock && (\r\n \r\n )}\r\n {this.cbContext.translatorService.Tranlate(\r\n 'RETURN_STOCK',\r\n 'Retur Stoc'\r\n )}\r\n \r\n ) : ''}\r\n
\r\n
\r\n \r\n {this.state.isLoadingNotice && (\r\n \r\n )}\r\n {this.cbContext.translatorService.Tranlate(\r\n 'PRINT_NOTICE',\r\n 'Tiparire aviz'\r\n )}\r\n \r\n
\r\n
\r\n \r\n {this.state.isLoadingInvoice && (\r\n \r\n )}\r\n {this.cbContext.translatorService.Tranlate(\r\n 'PRINT_INVOICE',\r\n 'Tiparire factura'\r\n )}\r\n \r\n
\r\n
\r\n \r\n {this.state.isLoadingEInvoice && (\r\n \r\n )}\r\n {this.cbContext.translatorService.Tranlate(\r\n 'PRINT_EINVOICE',\r\n 'Tiparire e-factura'\r\n )}\r\n \r\n
\r\n
\r\n \r\n {this.state.isLoadingResendInvoice && (\r\n \r\n )}\r\n {this.cbContext.translatorService.Tranlate(\r\n 'RESEND_EINVOICE',\r\n 'Reincarca in e-factura'\r\n )}\r\n \r\n
\r\n
\r\n {!this.hasRight(RoleClaimsEnum.MavoAgent) ? (\r\n \r\n {this.cbContext.translatorService.Tranlate(\r\n 'EXPORT_DATA',\r\n 'Export'\r\n )}\r\n \r\n ) : ''}\r\n
\r\n
\r\n );\r\n }\r\n\r\n\r\n public render() {\r\n this.cbContext = this.context as AppContext;\r\n\r\n if (this.state.isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n {this.renderMavoInvoicesButtons()}\r\n
\r\n \r\n
\r\n {this.hasRight(RoleClaimsEnum.MavoAgent) ? this.renderAgentMavoFilters() : this.renderFilters()}\r\n {this.renderSearchButtons()}\r\n {this.state.isLoadingInvoices ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )} \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n mavoVehicleState: state.mavoVehicle\r\n }),\r\n{ ...MavoVehicleActionCreators }\r\n)(withSnackbar(VoInvoiceHistory as any));","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n AppUserAdminActionCreators,\r\n AppUserAdminState,\r\n AppState\r\n} from '../../../store';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta\r\n} from 'mui-datatables';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { IconButton, Box, Switch, Button, Tooltip } from '@material-ui/core';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../../services/Interfaces/IAppUserService';\r\nimport { AppUser } from '../../../interfaces/AppUser';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Organization } from '../../../interfaces/Organization';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\n\r\ntype UsersTabProps = {\r\n appUserAdminState: AppUserAdminState;\r\n appState: AppState;\r\n} & ProviderContext &\r\n typeof AppUserAdminActionCreators &\r\n RouteComponentProps;\r\n\r\ninterface IUsersTabState {\r\n users: AppUser[];\r\n isLoading: boolean;\r\n}\r\nclass MavoUsersTab extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n users: [],\r\n isLoading: false\r\n } as IUsersTabState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadUsers();\r\n }\r\n );\r\n }\r\n\r\n loadUsers = async () => {\r\n const userList = await this.appUserService.GetMavoUserAppUsers();\r\n\r\n this.setState({\r\n users: userList.users,\r\n isLoading: false\r\n });\r\n };\r\n\r\n handleUserActiveChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const usersClone = [...this.state.users];\r\n const updUser = usersClone.find((item) => item.id === id);\r\n\r\n if (updUser !== undefined) {\r\n updUser.isActive = event.target.checked;\r\n\r\n try {\r\n await this.appUserService.UpdateUser(updUser);\r\n this.setState({\r\n users: usersClone\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n onRowClick = (e: any, id: string) => {\r\n this.props.history.push('/admin/mavo/users/' + id);\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'email',\r\n label: this.translatorService.Tranlate('USERS_EMAIL_HEADER', 'Email'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.onRowClick(e, tableMeta.rowData[0])}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'lastName',\r\n label: this.translatorService.Tranlate('USERS_LAST_NAME_HEADER', 'Nume'),\r\n options: {\r\n filter: false\r\n }\r\n },\r\n {\r\n name: 'firstName',\r\n label: this.translatorService.Tranlate('USERS_FIRST_NAME_HEADER', 'Prenume'),\r\n options: {\r\n filter: false\r\n }\r\n },\r\n {\r\n name: 'organization',\r\n label: this.translatorService.Tranlate('USERS_ORGANIZATION_HEADER', 'Organizatie'),\r\n options: {\r\n customBodyRender: (value: Organization) => {\r\n return value.hoName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'updatedByUserFullName',\r\n label: this.translatorService.Tranlate('USERS_UPDATEDBY_HEADER', 'Modificat de')\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate('USERS_DATE_MODIFICATION_HEADER', 'Data MOdificare'),\r\n\r\n options: {\r\n sortDirection: 'desc',\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'isActive',\r\n label: this.translatorService.Tranlate('USERS_IS_ACTIVE_HEADER', 'Activ'),\r\n options: {\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(isActive: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names[0]) !== -1 && isActive === true) ||\r\n (filterVal.indexOf(this.names[1]) !== -1 && isActive === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleUserActiveChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n // responsive: \"stacked\",\r\n customToolbar: () => {\r\n return (\r\n \r\n {\r\n this.props.history.push('/admin/mavo/users/new');\r\n }}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appUserAdminState: state.appUserAdmin,\r\n appState: state.app\r\n }),\r\n AppUserAdminActionCreators // Selects which action creators are merged into the component's props\r\n)(withSnackbar(MavoUsersTab as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppUserAdminActionCreators, AppUserAdminState } from '../../../store';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport UsersTab from './UsersTab';\r\nimport RolesTab from './RolesTab';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport TabPanel from '../../_shared/Tabs';\r\nimport { Card, Tab, Tabs, Box, CardContent } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../../services/Interfaces/IAppUserService';\r\nimport MavoUsersTab from './MavoUsersTab';\r\n\r\nexport interface ExternalAppUsersAdminProps {\r\n selectedTab: number;\r\n}\r\ntype AppUserAdminProps = AppUserAdminState &\r\n typeof AppUserAdminActionCreators &\r\n ExternalAppUsersAdminProps &\r\n RouteComponentProps<{ startDateIndex: string }>;\r\n\r\nclass MavoAppUsersAdmin extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n selectedTab: 0\r\n };\r\n\r\n public componentDidMount() {\r\n if (this.props.match.path.toLowerCase() === '/admin/mavo/users') {\r\n this.setState({ selectedTab: 0 });\r\n }\r\n if (this.props.match.path.toLowerCase() === '/admin/roles') {\r\n this.setState({ selectedTab: 1 });\r\n }\r\n }\r\n\r\n handleChangeTab = async (event: React.ChangeEvent, newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.app, // Selects which state properties are merged into the component's props\r\n AppUserAdminActionCreators // Selects which action creators are merged into the component's props\r\n)(MavoAppUsersAdmin as any);\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n AppUserAdminState,\r\n ApplicationState,\r\n AppActionCreators\r\n} from '../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Grid,\r\n TextField,\r\n Switch,\r\n FormControlLabel,\r\n Button,\r\n Box,\r\n Card,\r\n CardContent\r\n} from '@material-ui/core';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../../services/Interfaces/IAppUserService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { Organization } from '../../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { AppUser } from '../../../interfaces/AppUser';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { isNullOrUndefined } from 'util';\r\n\r\nexport interface ExternalEditUserProps {\r\n userChanged: () => Promise;\r\n}\r\n\r\ntype EditUserProps = AppUserAdminState &\r\n ProviderContext &\r\n typeof AppUserAdminActionCreators &\r\n typeof AppActionCreators &\r\n RouteComponentProps<{ id: string }> &\r\n ExternalEditUserProps;\r\n\r\ninterface IEditUserState {\r\n organizations: Organization[];\r\n managers: AppUser[];\r\n userRoles: IReferential[];\r\n users: AppUser[];\r\n user: AppUser;\r\n}\r\n\r\nclass MavoEditUser extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n organizations: [],\r\n managers: [] as AppUser[],\r\n users: [] as AppUser[],\r\n userRoles: [],\r\n user: {\r\n email: '',\r\n firstName: '',\r\n lastName: '',\r\n phoneNumber: '',\r\n isActive: true,\r\n organization: null,\r\n organizationId: 0,\r\n jobFunction: '',\r\n manager: null,\r\n managerId: '',\r\n role: null,\r\n roleId: null,\r\n id: null,\r\n isMavo: true\r\n } as AppUser\r\n };\r\n\r\n public async componentDidMount() {\r\n const refRole = Referentials.referential.find((item) => item.code === ReferentialCode.UserRole);\r\n const [org, users, userRoles] = await Promise.all([\r\n this.organizationService.GetOrganizations(),\r\n this.appUserService.GetAppUsers(),\r\n this.appReferentialService.Get(refRole!.baseUrl)\r\n ]);\r\n\r\n let user = this.state.user;\r\n\r\n if (this.props.match.params.id.toUpperCase() !== 'NEW') {\r\n try {\r\n user = await this.appUserService.GetAppUser(this.props.match.params.id);\r\n\r\n const organization = org.find((o) => o.id === user.organizationId);\r\n user.organization = organization === undefined ? null : organization;\r\n\r\n const manager = users.users.find((m) => m.id === user.managerId);\r\n user.manager = manager === undefined ? null : manager;\r\n\r\n user.role = null;\r\n if (!isNullOrUndefined(user.roleId)) {\r\n const role = userRoles.find((item) => item.id === user.roleId);\r\n user.role = isNullOrUndefined(role) ? null : role;\r\n }\r\n } catch (error) {}\r\n }\r\n\r\n this.setState({\r\n organizations: org,\r\n users: users.users,\r\n user: user,\r\n userRoles: userRoles.filter((item) => item.isActive),\r\n managers: this.filterMangers(users.users, user.organization)\r\n });\r\n }\r\n\r\n private handleTextChange = (event: React.ChangeEvent) => {\r\n let value: any;\r\n if (event.target.type === 'text') {\r\n value = event.currentTarget.value;\r\n }\r\n if (event.target.type === 'checkbox') {\r\n value = event.currentTarget.checked;\r\n }\r\n\r\n this.setState({\r\n ...this.state,\r\n user: {\r\n ...this.state.user,\r\n [event.target.id]: value\r\n }\r\n });\r\n };\r\n\r\n private handleAutocompleteChange = (\r\n property: string,\r\n propertyId: string,\r\n newValue: Organization | null | undefined | AppUser | IReferential\r\n ) => {\r\n this.setState({\r\n user: {\r\n ...this.state.user,\r\n [property]: newValue,\r\n [propertyId]: newValue === null || newValue === undefined ? null : newValue.id\r\n // gtId: newValue === null || newValue === undefined || property === \"manager\" ?\r\n // this.state.user.gtId : newValue.gtId\r\n }\r\n });\r\n };\r\n\r\n private handleOrganizationChange = (newValue: Organization | null) => {\r\n this.setState({\r\n user: {\r\n ...this.state.user,\r\n organization: newValue,\r\n organizationId: newValue === null ? null : newValue.id,\r\n gtId: newValue === null || newValue === undefined ? this.state.user.gtId : newValue.gtId,\r\n hoId:\r\n newValue === null || newValue === undefined\r\n ? this.state.user.hoId\r\n : isNullOrUndefined(newValue.hoId)\r\n ? newValue.id\r\n : newValue.hoId,\r\n manager: null,\r\n managerId: null\r\n },\r\n managers: this.filterMangers(this.state.users, newValue)\r\n });\r\n };\r\n\r\n private saveUser = async () => {\r\n try {\r\n const users = await this.appUserService.GetAppUsers(this.state.user.email);\r\n\r\n if (users.totalCount > 1) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_USER_EXISTS', 'Utilizatorul exista deja!'),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n if (users.totalCount === 1 && users.users[0].id !== this.state.user.id) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_USER_EXISTS', 'Utilizatorul exista deja!'),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n if (this.state.user.id !== null) {\r\n await this.appUserService.UpdateUser(this.state.user);\r\n } else {\r\n const newUser = await this.appUserService.AddUser(this.state.user);\r\n this.props.history.push('/admin/mavo/users/' + newUser.id);\r\n }\r\n\r\n this.props.userChanged();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n public filterMangers = (users: AppUser[], newOrganization: Organization | null | undefined) => {\r\n return newOrganization === null || newOrganization === undefined\r\n ? []\r\n : users.filter((value) => value.organization!.hoId === newOrganization!.hoId);\r\n };\r\n\r\n public renderForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n this.handleOrganizationChange(newValue)\r\n }\r\n getOptionLabel={(option: Organization) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleAutocompleteChange('manager', 'managerId', newValue)\r\n }\r\n getOptionLabel={(option: AppUser) => option.userName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n this.handleAutocompleteChange('role', 'roleId', newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n this.handleTextChange(e)}\r\n color=\"primary\"\r\n id=\"isActive\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={this.translatorService.Tranlate('EDIT_USER_ISACTIVE_FIELD', 'Stare')}\r\n />\r\n\r\n this.handleTextChange(e)}\r\n color=\"primary\"\r\n id=\"isMavo\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={this.translatorService.Tranlate('EDIT_USER_ISMAVO_FIELD', 'User MAVO')}\r\n />\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n \r\n \r\n {this.renderForm()}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (stateProps: any, dispatchProps: any, ownProps: ExternalEditUserProps) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n//export default EditUser as any\r\nexport default connect(\r\n (state: ApplicationState) => state.appUserAdmin,\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(MavoEditUser as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppUserAdminActionCreators, AppUserAdminState } from '../../../store';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport NavigationIcon from '@material-ui/icons/Navigation';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport TabPanel from '../../_shared/Tabs';\r\nimport { Card, Tab, Tabs, Button, CardContent, Box } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IAppUserService } from '../../../services/Interfaces/IAppUserService';\r\nimport EditUser from './EditUser';\r\nimport EditUserRoles from './EditUserRoles';\r\nimport ResetPassword from './ResetPassword';\r\nimport { AppUser } from '../../../interfaces/AppUser';\r\nimport MavoEditUser from './MavoEditUser';\r\n\r\ntype UserDetailsProps = AppUserAdminState &\r\n typeof AppUserAdminActionCreators &\r\n RouteComponentProps<{ id: string }>;\r\n\r\ninterface IUserDetailsState {\r\n user: AppUser;\r\n selectedTab: number;\r\n}\r\n\r\nclass MavoUserDetails extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appUserService!: IAppUserService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n selectedTab: 0,\r\n user: {\r\n email: '',\r\n firstName: '',\r\n lastName: '',\r\n phoneNumber: '',\r\n isActive: false,\r\n organization: {},\r\n organizationId: 0,\r\n jobFunction: '',\r\n id: null\r\n } as AppUser\r\n };\r\n\r\n public async componentDidMount() {\r\n await this.loadUser();\r\n }\r\n\r\n loadUser = async () => {\r\n let user = this.state.user;\r\n\r\n if (this.props.match.params.id.toUpperCase() !== 'NEW') {\r\n try {\r\n user = await this.appUserService.GetAppUser(this.props.match.params.id);\r\n } catch (error) {}\r\n }\r\n this.setState({\r\n user: user\r\n });\r\n };\r\n\r\n handleChangeTab = async (event: React.ChangeEvent, newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n {\r\n this.props.history.push('/admin/mavo/users');\r\n }}\r\n >\r\n \r\n {this.translatorService.Tranlate('EDIT_USER_BACK_TO_USERS_BTN', 'Utilizatori')}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n this.loadUser()} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => state.appUserAdmin, // Selects which state properties are merged into the component's props\r\n AppUserAdminActionCreators // Selects which action creators are merged into the component's props\r\n)(MavoUserDetails as any);\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport {\r\n Tooltip,\r\n Box,\r\n Button,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableMeta,\r\n MUIDataTableColumnOptions\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { RefConstants } from '../../../helpers/Constants';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport moment from 'moment';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport EditOutlinedIcon from '@material-ui/icons/EditOutlined';\r\nimport NumberFormat from 'react-number-format';\r\nimport { IVehicleService } from '../../../services/Interfaces/IVehicleService';\r\nimport { AlcorParameterInfo } from '../../../interfaces/Vehicle';\r\n\r\ninterface IAlcorParameterInfoListState {\r\n newAlcorParameterInfo: AlcorParameterInfo;\r\n alcorParameters: IReferential[];\r\n alcorParametersInfoList: AlcorParameterInfo[];\r\n isLoading: boolean;\r\n isDialogOpen: boolean;\r\n newAlcorParameterInfoId: number | null;\r\n}\r\n\r\ntype IAlcorParameterInfoListProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass AlcorParameterInfoList extends React.PureComponent<\r\n IAlcorParameterInfoListProps,\r\n IAlcorParameterInfoListState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n\r\n static contextType = ApplicationContext;\r\n private newAlcorParameterInfo = {\r\n id: 0,\r\n value: '',\r\n alcorParameterId: null,\r\n alcorParameter: null\r\n } as unknown as AlcorParameterInfo;\r\n\r\n state = {\r\n alcorParameters: [],\r\n isLoading: false,\r\n selectedFilter: 0,\r\n isDialogOpen: false,\r\n newAlcorParameterInfo: this.newAlcorParameterInfo,\r\n alcorParametersInfoList: [],\r\n newAlcorParameterInfoId: null\r\n } as IAlcorParameterInfoListState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadAlcorParameterInfoList();\r\n }\r\n );\r\n }\r\n\r\n loadAlcorParameterInfoList = async () => {\r\n const alcorParametersInfoList = await this.vehicleService.GetAlcorParameterInfoList();\r\n const { alcorParameterRef } = RefConstants;\r\n\r\n const alcorParameters = await this.appReferentialService.Get(alcorParameterRef!.baseUrl);\r\n\r\n\r\n this.setState({\r\n alcorParameters: alcorParameters,\r\n isLoading: false,\r\n alcorParametersInfoList: alcorParametersInfoList,\r\n newAlcorParameterInfo: { ...this.newAlcorParameterInfo }\r\n });\r\n };\r\n\r\n private handleAlcorParameterChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n newAlcorParameterInfo: {\r\n ...this.state.newAlcorParameterInfo,\r\n alcorParameter: newValue,\r\n alcorParameterId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n public saveAlcorParameterInfo = async () => {\r\n if (this.state.newAlcorParameterInfoId === null) {\r\n try {\r\n await this.vehicleService.AddAlcorParameterInfo(this.state.newAlcorParameterInfo);\r\n\r\n await this.loadAlcorParameterInfoList();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n } else {\r\n try {\r\n\r\n await this.vehicleService.UpdateAlcorParameterInfo(this.state.newAlcorParameterInfo);\r\n\r\n await this.loadAlcorParameterInfoList();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n \r\n \r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={0}\r\n />\r\n );\r\n };\r\n \r\n onChange =\r\n (fieldName: string, isNumber: boolean) => (e: any, newValue?: IReferential | null) => {\r\n isNumber\r\n ? this.setState({\r\n newAlcorParameterInfo: {\r\n ...this.state.newAlcorParameterInfo,\r\n [fieldName]: parseFloat(newValue || e.target.value)\r\n }\r\n })\r\n : this.setState({\r\n newAlcorParameterInfo: {\r\n ...this.state.newAlcorParameterInfo,\r\n [fieldName]: newValue || e.target.value\r\n }\r\n });\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n this.handleAlcorParameterChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n /> \r\n\r\n \r\n this.onChange('value', false)(e)\r\n }\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('FINANCIAL_PARAMETER_INFO_VALUE', 'Valoare')}\r\n />\r\n\r\n \r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'alcorParameter',\r\n label: this.translatorService.Tranlate(\r\n 'ALCOR_PARAMETER',\r\n 'Parametru Alcor'\r\n ),\r\n options: {\r\n sort: true,\r\n customSort: (a: IReferential, b: IReferential) => {\r\n return a.displayName!.localeCompare(b.displayName!);\r\n },\r\n customBodyRender: (value: IReferential) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'value',\r\n label: this.translatorService.Tranlate('FINANCIAL_PARAMETER_INFO_VALUE', 'Valoare'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return value;\r\n }\r\n }\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate('USERS_DATE_MODIFICATION_HEADER', 'Data Modificare'),\r\n options: {\r\n filter: false,\r\n sortDirection: 'desc',\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n const alcorParameterInfo = this.state.alcorParametersInfoList.find((item) => item.id === tableMeta.rowData[0]);\r\n\r\n return (\r\n <>\r\n this.newAlcorParameterInfoPopup(tableMeta.rowData[0])}\r\n >\r\n \r\n \r\n this.deleteAlcorParameterInfo(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n }];\r\n\r\n return columns;\r\n };\r\n\r\n deleteAlcorParameterInfo = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n\r\n await this.vehicleService.RemoveAlcorParameterInfo(id);\r\n\r\n await this.loadAlcorParameterInfoList();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n\r\n newAlcorParameterInfoPopup = async (alcorParameterInfoId: number | null) => {\r\n let newAlcorParameterInfo: AlcorParameterInfo;\r\n if (alcorParameterInfoId == null) {\r\n newAlcorParameterInfo = { ...this.state.newAlcorParameterInfo } as AlcorParameterInfo;\r\n } else {\r\n newAlcorParameterInfo = this.state.alcorParametersInfoList.find((item) => item.id === alcorParameterInfoId)!;\r\n }\r\n this.setState({\r\n isDialogOpen: true,\r\n newAlcorParameterInfo: newAlcorParameterInfo,\r\n newAlcorParameterInfoId: alcorParameterInfoId\r\n });\r\n };\r\n\r\n closeDialog = () => {\r\n this.setState(\r\n { \r\n isDialogOpen: false, \r\n newAlcorParameterInfo: this.newAlcorParameterInfo,\r\n newAlcorParameterInfoId: null\r\n }\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n customToolbar: () => {\r\n return (\r\n \r\n this.newAlcorParameterInfoPopup(null)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n {this.state.isDialogOpen ? (\r\n \r\n \r\n \r\n \r\n \r\n {!this.state.newAlcorParameterInfoId ? \r\n this.translatorService.Tranlate(\r\n 'ALCOR_PARAMETER_INFO_NEW_MODAL_TITLE',\r\n 'Adauga parametru alcor'\r\n ) : this.translatorService.Tranlate(\r\n 'ALCOR_PARAMETER_INFO_UPDATE_MODAL_TITLE',\r\n 'Actualizeaza parametru alcor'\r\n )} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(AlcorParameterInfoList as any));\r\n","import * as React from 'react';\r\nimport { ApplicationState, AppState, CaseSettingsState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { Button, Grid, CardContent, IconButton, Dialog, DialogTitle, Typography, DialogContent, Box, Divider} from '@material-ui/core';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport MomentUtils from '@date-io/moment';\r\nimport _ from 'lodash';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { Organization, OrganizationAttachment } from '../../interfaces/Organization';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { AttachmentTypeCode, RefConstants, RoleClaimsEnum } from '../../helpers/Constants';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\n\r\nimport { ButtonGroup, Card, CardFooter } from 'reactstrap';\r\nimport DescriptionIcon from '@material-ui/icons/Description';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport VisibilityIcon from '@material-ui/icons/Visibility';\r\nimport FileSaver from 'file-saver';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { isNullOrUndefined } from 'util';\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-ignore\r\nimport FileViewer from 'react-file-viewer';\r\n\r\ntype UserManualProps = {\r\n appState: AppState;\r\n caseSettingsState: CaseSettingsState;\r\n } & ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface IUserManualState {\r\n isLoading: boolean;\r\n organizationList: Organization[];\r\n selectedOrganization: Organization | null;\r\n attachmentTypeList: IReferential[];\r\n organizationAttachments: OrganizationAttachment[];\r\n previewAttachFile: any;\r\n previewAttachFileExtension: string;\r\n isDialogOpen: boolean;\r\n isLoadingAttachments: boolean;\r\n}\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n}\r\n\r\nclass UserManual extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: false,\r\n organizationList: [],\r\n selectedOrganization: null,\r\n attachmentTypeList: [],\r\n organizationAttachments: [],\r\n previewAttachFile: '',\r\n previewAttachFileExtension: '',\r\n isDialogOpen: false, \r\n isLoadingAttachments: false\r\n } as IUserManualState;\r\n\r\n public async componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizations();\r\n }\r\n );\r\n }\r\n\r\n loadOrganizations = async () => {\r\n const {\r\n attachementTypeRef\r\n } = RefConstants;\r\n\r\n const organizationId = this.props.appState.appUser!.hoId === null ? this.props.appState.appUser!.organizationId : this.props.appState.appUser!.hoId;\r\n console.log(organizationId);\r\n const [\r\n organizations,\r\n attachmentTypeList,\r\n organizationAttachments\r\n ] = await Promise.all([\r\n this.organizationService.GetHOOrganizations(null),\r\n this.appReferentialService.Get(attachementTypeRef?.baseUrl),\r\n this.hasRight(RoleClaimsEnum.Admin) ? this.organizationService.GetOrganizationAdminAttachments() \r\n : this.organizationService.GetOrganizationAttachments(organizationId!)\r\n ]);\r\n\r\n attachmentTypeList.forEach((attachmentType) => {\r\n attachmentType.isLoading = false;\r\n });\r\n\r\n console.log('organizationAttachments', organizationAttachments);\r\n\r\n this.setState({\r\n organizationList: organizations,\r\n isLoading: false,\r\n attachmentTypeList: attachmentTypeList.filter((item) => item.code == AttachmentTypeCode.MANUAL_UTILIZARE),\r\n organizationAttachments: organizationAttachments\r\n });\r\n }\r\n\r\n loadOrganizationAttachments = async () => {\r\n this.setState({\r\n isLoadingAttachments: true\r\n });\r\n\r\n const organizationId = this.props.appState.appUser!.hoId === null ? this.props.appState.appUser!.organizationId : this.props.appState.appUser!.hoId;\r\n console.log(organizationId);\r\n const organizationAttachments = this.hasRight(RoleClaimsEnum.Admin) ? await this.organizationService.GetOrganizationAdminAttachments() \r\n : await this.organizationService.GetOrganizationAttachments(organizationId!);\r\n \r\n this.setState({\r\n organizationAttachments: organizationAttachments,\r\n isLoadingAttachments: false\r\n });\r\n }\r\n\r\n saveOrganizationAttachments = async () => {\r\n try {\r\n this.setState({ isLoading: true });\r\n\r\n this.setState({ isLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (err: any) {\r\n this.setState({ isLoading: false });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n handleOrganizationChange = (newValue: Organization | null) => {\r\n this.setState({\r\n selectedOrganization: newValue\r\n });\r\n };\r\n\r\n setAttachmentTypeList = (attachmentType: IReferential, value: boolean) => {\r\n const attachmentTypeList = _.cloneDeep(this.state.attachmentTypeList);\r\n for (let i = 0; i < attachmentTypeList.length; i++) {\r\n if (attachmentTypeList[i].id === attachmentType.id) {\r\n attachmentTypeList[i].isLoading = value;\r\n }\r\n }\r\n\r\n return attachmentTypeList;\r\n };\r\n\r\n handleUploadAttachment = async (\r\n e: React.ChangeEvent,\r\n attachmentType: IReferential\r\n ) => {\r\n try {\r\n\r\n console.log(e.target.files);\r\n if (e.target.files === null) {\r\n return;\r\n }\r\n e.persist();\r\n\r\n this.setState({\r\n attachmentTypeList: this.setAttachmentTypeList(attachmentType, true)\r\n });\r\n\r\n\r\n const attachments: OrganizationAttachment[] = [];\r\n for (let i = 0; i < e.target.files.length; i++) {\r\n const file = e.target.files![i];\r\n attachments.push({\r\n id: 0,\r\n organizationId: this.state.selectedOrganization!.id,\r\n file: file,\r\n originalFileName: file.name\r\n } as OrganizationAttachment);\r\n }\r\n\r\n const newFiles = await this.organizationService.AddOrganizationAttachments(attachments);\r\n \r\n await this.loadOrganizationAttachments();\r\n\r\n this.setState({\r\n attachmentTypeList: this.setAttachmentTypeList(attachmentType, false)\r\n });\r\n\r\n\r\n e.target.value = '';\r\n\r\n } catch (error) {\r\n console.log(error);\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n e.target.value = '';\r\n }\r\n };\r\n\r\n renderWorkflowAttashmentTypes = () => {\r\n const attachmentTypes = [] as any[];\r\n const attachmentTypeList = this.state.attachmentTypeList;\r\n if (attachmentTypeList.length !== 0) {\r\n attachmentTypeList.forEach((attach, index) => {\r\n attach.fileInputKey = Date.now();\r\n attachmentTypes.push(\r\n
\r\n \r\n
\r\n
\r\n \r\n {attach!.displayName}\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {\r\n return this.handleUploadAttachment(e, attach);\r\n }}\r\n type=\"file\"\r\n multiple={true}\r\n disabled={!this.state.selectedOrganization}\r\n\r\n />\r\n \r\n Upload\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n });\r\n }\r\n return attachmentTypes;\r\n };\r\n\r\n renderFilters = () => {\r\n return (\r\n {\r\n this.saveOrganizationAttachments();\r\n }}\r\n >\r\n
\r\n \r\n \r\n \r\n this.handleOrganizationChange(newValue)\r\n } \r\n getOptionLabel={(option: Organization) => option!.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n
{this.renderWorkflowAttashmentTypes()}
\r\n
\r\n
\r\n
\r\n \r\n );\r\n };\r\n\r\n getDistinctOrganization = (organizationAttachments: OrganizationAttachment[]) => {\r\n return _.map(_.groupBy(organizationAttachments, 'organizationId'), \r\n (items, organizationId) => ({\r\n organization: items[0].organization,\r\n attachments: items,\r\n }));\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState({\r\n isDialogOpen: false\r\n });\r\n };\r\n\r\n handlePreviewAttachment = async (originalFileName: string, filename: string) => {\r\n try {\r\n const fileBlob = await this.organizationService.GetOrganizationAttachment(filename);\r\n const url = URL.createObjectURL(fileBlob);\r\n const extension = originalFileName.split('.').pop();\r\n\r\n if (isNullOrUndefined(extension)) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n previewAttachFile: url,\r\n previewAttachFileExtension: extension!.toLowerCase(),\r\n isDialogOpen: true\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n renderPreviewAttachment = () => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n downloadFile = async (fileName: string, origFileName: string) => {\r\n const fileBlob = await this.organizationService.GetOrganizationAttachment(fileName);\r\n FileSaver.saveAs(fileBlob, origFileName);\r\n };\r\n\r\n handleDeleteAttachment = async (id: number, fileName: string) => {\r\n try {\r\n await this.organizationService.RemoveOrganizationAttachment(fileName);\r\n\r\n await this.loadOrganizationAttachments();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n renderAttachments = (attachments: OrganizationAttachment[]) => {\r\n const attachmentsToRender = [] as any[];\r\n\r\n attachments.forEach((attach, index) => {\r\n attachmentsToRender.push(\r\n \r\n \r\n \r\n
\r\n {attach.id ? (\r\n {\r\n this.handlePreviewAttachment(attach.originalFileName, attach.fileName);\r\n }}\r\n >\r\n \r\n ) \r\n : null} \r\n
\r\n
\r\n \r\n
\r\n \r\n {\r\n if (attach.id !== 0) {\r\n this.downloadFile(attach.fileName, attach.originalFileName)\r\n }\r\n }}\r\n >\r\n {attach.originalFileName}\r\n {' '}\r\n \r\n
\r\n
\r\n {attach.id !== 0 && this.hasRight(RoleClaimsEnum.Admin) ? (\r\n \r\n
\r\n {\r\n this.handleDeleteAttachment(\r\n attach.id,\r\n attach.fileName\r\n );\r\n }}\r\n >\r\n \r\n \r\n
\r\n
\r\n ) : null}\r\n
\r\n
\r\n );\r\n });\r\n return attachmentsToRender;\r\n };\r\n\r\n renderOrganizationAttachments = () => {\r\n const organizationAttachment = [] as any[];\r\n const organizationAttachmentList = this.getDistinctOrganization(this.state.organizationAttachments);\r\n\r\n if (organizationAttachmentList.length !== 0) {\r\n organizationAttachmentList.forEach((attach, index) => {\r\n organizationAttachment.push(\r\n
\r\n \r\n
\r\n
\r\n \r\n {attach.organization!.displayName}\r\n \r\n
\r\n
\r\n \r\n
\r\n {attach.attachments.length !== 0 ? (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
{this.renderAttachments(attach.attachments)}
\r\n
\r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n });\r\n }\r\n\r\n return organizationAttachment;\r\n };\r\n\r\n renderOrganizations = () => {\r\n return (\r\n <>\r\n
\r\n \r\n
\r\n {!this.state.isLoadingAttachments ? (\r\n
\r\n \r\n \r\n
\r\n {this.renderOrganizationAttachments()}\r\n
\r\n
\r\n
\r\n
\r\n ) : null}\r\n \r\n );\r\n };\r\n\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n \r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n this.hasRight(RoleClaimsEnum.Admin) ? (\r\n
\r\n {this.renderFilters()}\r\n \r\n {this.renderOrganizations()}\r\n
\r\n ) : ( \r\n
\r\n {this.renderOrganizations()}\r\n
\r\n )\r\n ) : null}\r\n\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('CASE_PREVIEW_DOC', 'Previzualizare document')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderPreviewAttachment()}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n caseSettingsState: state.caseSettings\r\n }),\r\n null\r\n)(withSnackbar(UserManual as any));\r\n","import React, { Fragment, ChangeEvent } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Organization,\r\n OrganizationType,\r\n OrganizationLevelType\r\n} from '../../../interfaces/Organization';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport {\r\n Box,\r\n Switch,\r\n Button,\r\n Tooltip,\r\n IconButton,\r\n Card,\r\n CardContent,\r\n Tabs,\r\n Tab,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport {\r\n OrganizationTypeCode,\r\n ReferentialCode,\r\n OrganizationLevelTypeCode\r\n} from '../../../helpers/Constants';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\n\r\ninterface IHOOrganizationsState {\r\n organizations: Organization[];\r\n isLoading: boolean;\r\n selectedFilter: number;\r\n isDialogOpen: boolean;\r\n newHOOrg: Organization;\r\n organizationTypes: OrganizationType[];\r\n}\r\n\r\ntype HOOrganizationsProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\nclass MavoHOOrganizations extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n private neworg = {\r\n name: '',\r\n id: 0,\r\n gtId: this.props.appState.appUser!.gtId,\r\n organizationTypeId: 0,\r\n organizationType: null,\r\n organizationLevelTypeId: 1,\r\n parent: null,\r\n isActive: true,\r\n isMavoPartener: true\r\n } as Organization;\r\n\r\n state = {\r\n organizations: [],\r\n isLoading: false,\r\n selectedFilter: 0,\r\n isDialogOpen: false,\r\n newHOOrg: this.neworg,\r\n organizationTypes: [] as OrganizationType[]\r\n } as IHOOrganizationsState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizations();\r\n }\r\n );\r\n }\r\n\r\n loadOrganizations = async () => {\r\n const orgList = await this.organizationService.GetMavoHOOrganizations();\r\n\r\n this.setState({\r\n organizations: orgList,\r\n isLoading: false,\r\n newHOOrg: { ...this.neworg }\r\n });\r\n };\r\n\r\n filterOrganizations = (orgList: Organization[]): Organization[] => {\r\n if (this.state.selectedFilter === 1) {\r\n orgList = orgList.filter((item) => item.organizationType!.code === OrganizationTypeCode.GT);\r\n }\r\n if (this.state.selectedFilter === 2) {\r\n orgList = orgList.filter((item) => item.organizationType!.code !== OrganizationTypeCode.GT);\r\n }\r\n\r\n return orgList;\r\n };\r\n\r\n newHOOrg = async () => {\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OrganizationType\r\n );\r\n const orgTypes = await this.appReferentialService.Get(ref!.baseUrl);\r\n\r\n this.setState({\r\n isDialogOpen: true,\r\n organizationTypes: orgTypes.filter(\r\n (item) => item.isActive === true\r\n ) as any as OrganizationType[]\r\n });\r\n };\r\n\r\n onRowClick = async (e: any, id: string, value: string) => {\r\n this.props.history.push('/admin/mavo/hoorganizations/' + id, value);\r\n };\r\n\r\n filterChange = (event: React.ChangeEvent, newValue: number) => {\r\n this.setState(\r\n { selectedFilter: newValue }\r\n // , async () => await this.loadOrganizations()\r\n );\r\n };\r\n\r\n handleIsActiveChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newOrganizations = [...this.state.organizations];\r\n const updatedOrgIndex = newOrganizations.findIndex((o) => o.id === id);\r\n\r\n if (updatedOrgIndex >= 0) {\r\n newOrganizations[updatedOrgIndex] = {\r\n ...newOrganizations[updatedOrgIndex],\r\n isActive: event.target.checked\r\n };\r\n\r\n try {\r\n await this.organizationService.UpdateOrganization(newOrganizations[updatedOrgIndex]);\r\n\r\n this.setState({ organizations: newOrganizations });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'name',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_ORGANIZATION_NAME_HEADER',\r\n 'Organizatie'\r\n ),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.onRowClick(e, tableMeta.rowData[0], value)}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'organizationType',\r\n label: this.translatorService.Tranlate('ORGANIZATIONS_ORGANIZATION_TYPE_HEADER', 'Tip'),\r\n // customSort: (a:IReferential, b:IReferential) => { debugger; return a.name!.localeCompare(b.name!)},\r\n options: {\r\n sort: true,\r\n customSort: (a: IReferential, b: IReferential) => {\r\n debugger;\r\n return a.name!.localeCompare(b.name!);\r\n },\r\n customBodyRender: (value: OrganizationType) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'companyNumber',\r\n label: this.translatorService.Tranlate('ORGANIZATIONS_COMPANY_NUMBER_HEADER', 'CUI'),\r\n options: {\r\n filter: false\r\n }\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate('USERS_DATE_MODIFICATION_HEADER', 'Data Modificare'),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'isActive',\r\n label: this.translatorService.Tranlate('USERS_IS_ACTIVE_HEADER', 'Activ'),\r\n options: {\r\n sortDirection: 'desc',\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(isActive: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names![0]) !== -1 && isActive === true) ||\r\n (filterVal.indexOf(this.names![1]) !== -1 && isActive === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleIsActiveChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n private handleTextChange = (event: React.ChangeEvent) => {\r\n let value: any;\r\n if (event.target.type === 'text') {\r\n value = event.currentTarget.value;\r\n }\r\n this.setState({\r\n newHOOrg: {\r\n ...this.state.newHOOrg,\r\n [event.target.id]: value\r\n }\r\n });\r\n };\r\n\r\n private handleOrganizationTypeChange = (newValue: OrganizationType | null) => {\r\n this.setState({\r\n newHOOrg: {\r\n ...this.state.newHOOrg,\r\n organizationType: newValue,\r\n organizationTypeId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n public saveOrganization = async () => {\r\n try {\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OrganizationLevel\r\n );\r\n const orgLevelTypes = await this.appReferentialService.Get(ref!.baseUrl);\r\n\r\n const hoType = orgLevelTypes.find((item) => item.code === OrganizationLevelTypeCode.HO);\r\n\r\n const newOrg = this.state.newHOOrg;\r\n\r\n if (hoType !== undefined) {\r\n newOrg.organizationLevelTypeId = hoType.id;\r\n newOrg.organizationLevelType = hoType as any as OrganizationLevelType;\r\n }\r\n\r\n await this.organizationService.AddOrganization(this.state.newHOOrg);\r\n\r\n await this.loadOrganizations();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n public renderFilters = () => {\r\n return (\r\n \r\n \r\n \r\n , newValue: number) =>\r\n this.filterChange(event, newValue)\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n closeDialog = () => {\r\n this.setState({ isDialogOpen: false });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n // responsive: \"stacked\",\r\n customToolbar: () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n {this.renderFilters()}\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_NEW_HO_MODAL_TITLE',\r\n 'Adauga organizatie'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.handleOrganizationTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: OrganizationType) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(MavoHOOrganizations as any));\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n AppUserAdminActionCreators,\r\n ApplicationState,\r\n AppActionCreators,\r\n AppState\r\n} from '../../../store';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { Grid, Button, Card, Tabs, Tab, CardContent } from '@material-ui/core';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport {\r\n Organization,\r\n OrganizationLevelType,\r\n OrganizationType\r\n} from '../../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { WrapperSimple } from '../../../layout-components';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ReferentialCode, OrganizationLevelTypeCode } from '../../../helpers/Constants';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport TabPanel from '../../_shared/Tabs';\r\nimport OrganizationBankAccounts from './OrganizationBankAccounts';\r\nimport OrganizationLogo from './OrganizationLogo';\r\nimport OrganizationTokens from './OrganizationTokens';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Switch, FormControlLabel, Typography } from '@material-ui/core';\r\nimport * as R from 'ramda';\r\n\r\ninterface IEditOrganizationState {\r\n organization: Organization;\r\n organizationLevelTypes: OrganizationLevelType[];\r\n parentOrganizations: Organization[];\r\n organizationTypes: OrganizationType[];\r\n selectedTab: number;\r\n countryList: IReferential[];\r\n regionList: IReferential[];\r\n cityList: IReferential[];\r\n isLoading: boolean;\r\n}\r\n\r\nexport interface ExternalEditOrganizationsProps {\r\n organizationChanged?: () => void;\r\n organizationId: number;\r\n}\r\n\r\ntype EditOrganizationProps = { appState: AppState } & ProviderContext &\r\n ExternalEditOrganizationsProps &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass MavoEditOrganization extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n organization: {\r\n id: 0,\r\n name: '',\r\n organizationType: null,\r\n organizationLevelType: null,\r\n country: null,\r\n region: null,\r\n parent: null,\r\n gtId: this.props.appState.appUser!.gtId,\r\n isActive: true,\r\n newFeature: false,\r\n uploadFeature: false,\r\n cityInfo: null\r\n } as Organization,\r\n organizationLevelTypes: [] as OrganizationLevelType[],\r\n parentOrganizations: [] as Organization[],\r\n organizationTypes: [] as OrganizationType[],\r\n selectedTab: 0,\r\n countryList: [] as IReferential[],\r\n regionList: [] as IReferential[],\r\n cityList: [] as IReferential[],\r\n isLoading: true\r\n };\r\n\r\n public async componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n //let organization = this.state.organization;\r\n\r\n // if (this.props.organizationId !== 0) {\r\n // organization = ;\r\n // }\r\n\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OrganizationType\r\n );\r\n const countryRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.Country\r\n );\r\n const regionRef = Referentials.referential.find((item) => item.code === ReferentialCode.Region);\r\n const cityRef = Referentials.referential.find((item) => item.code === ReferentialCode.City);\r\n\r\n const [organization, orgLevelList, orgTypes, countryList, regionList, cityList] = await Promise.all([\r\n this.props.organizationId !== 0\r\n ? this.organizationService.GetOrganization(this.props.organizationId)\r\n : this.state.organization,\r\n this.organizationService.GetOrganizationLevels(hoId),\r\n this.appReferentialService.Get(ref!.baseUrl),\r\n this.appReferentialService.Get(countryRef!.baseUrl),\r\n this.appReferentialService.Get(regionRef!.baseUrl),\r\n this.appReferentialService.Get(cityRef!.baseUrl)\r\n ]);\r\n organization.hoId = hoId;\r\n const organizationLevelTypes = orgLevelList.map((item) => item.organizationLevelType);\r\n\r\n this.setState(\r\n {\r\n organization: organization,\r\n organizationLevelTypes: organizationLevelTypes.filter(\r\n (item) => item.code !== OrganizationLevelTypeCode.HO\r\n ),\r\n organizationTypes: orgTypes as any as OrganizationType[],\r\n //parentOrganizations: [],\r\n regionList: regionList.filter((item) => item.isActive === true),\r\n countryList: countryList.filter((item) => item.isActive === true),\r\n cityList: cityList.filter((item) => item.isActive === true),\r\n isLoading: false\r\n },\r\n async () => {\r\n const organizations =\r\n this.props.organizationId === 0\r\n ? ([] as Organization[])\r\n : await this.organizationService.GetOrganizationsByHO(\r\n hoId,\r\n this.state.organization.organizationLevelTypeId\r\n );\r\n\r\n this.setState({\r\n parentOrganizations: organizations\r\n });\r\n }\r\n );\r\n }\r\n\r\n private handleTextChange = (event: React.ChangeEvent) => {\r\n let value: any;\r\n if (event.target.type === 'text') {\r\n value = event.currentTarget.value;\r\n }\r\n this.setState({\r\n organization: {\r\n ...this.state.organization,\r\n [event.target.id]: value\r\n }\r\n });\r\n };\r\n\r\n private handleOrganizationLevelTypeChange = async (newValue: OrganizationLevelType | null) => {\r\n let orgs = [] as Organization[];\r\n if (newValue !== null) {\r\n orgs = await this.organizationService.GetOrganizationsByHO(\r\n this.state.organization.hoId,\r\n newValue.id\r\n );\r\n }\r\n this.setState({\r\n organization: {\r\n ...this.state.organization,\r\n organizationLevelType: newValue,\r\n organizationLevelTypeId: newValue !== null ? newValue!.id : 0,\r\n parent:\r\n newValue !== null && newValue.code === OrganizationLevelTypeCode.HO\r\n ? null\r\n : this.state.organization.parent,\r\n parentId:\r\n newValue !== null && newValue.code === OrganizationLevelTypeCode.HO\r\n ? null\r\n : this.state.organization.parentId\r\n },\r\n parentOrganizations: orgs\r\n });\r\n };\r\n\r\n private handleOrganizationTypeChange = (newValue: OrganizationType | null) => {\r\n this.setState({\r\n organization: {\r\n ...this.state.organization,\r\n organizationType: newValue,\r\n organizationTypeId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n private handleCountryChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n organization: {\r\n ...this.state.organization,\r\n country: newValue,\r\n countryId: newValue !== null ? newValue!.id : null,\r\n region: null,\r\n regionId: null,\r\n cityInfo: null,\r\n cityId: null\r\n }\r\n });\r\n };\r\n\r\n private handleRegionChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n organization: {\r\n ...this.state.organization,\r\n region: newValue,\r\n regionId: newValue !== null ? newValue!.id : null,\r\n cityInfo: null,\r\n cityId: null\r\n }\r\n });\r\n };\r\n\r\n private handleCityInfoChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n organization: {\r\n ...this.state.organization,\r\n cityInfo: newValue,\r\n cityId: newValue !== null ? newValue!.id : null\r\n }\r\n });\r\n };\r\n\r\n private handleOrganizationChange = (newValue: Organization | null) => {\r\n this.setState({\r\n organization: {\r\n ...this.state.organization,\r\n parent: newValue,\r\n parentId: newValue !== null ? newValue!.id : 0,\r\n organizationType: newValue !== null ? newValue.organizationType : null\r\n }\r\n });\r\n };\r\n\r\n public saveOrganization = async () => {\r\n try {\r\n if (this.state.organization.id === 0) {\r\n await this.organizationService.AddOrganization(this.state.organization);\r\n } else {\r\n await this.organizationService.UpdateOrganization(this.state.organization);\r\n }\r\n\r\n if (this.props.organizationChanged) {\r\n this.props.organizationChanged();\r\n }\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n private getRegionsOptions(): IReferential[] | undefined {\r\n const filteredRegions = this.state.regionList.filter(\r\n (region) => (this.state.organization.countryId && region.dependencyId) && region.dependencyId === this.state.organization.countryId\r\n );\r\n\r\n return filteredRegions;\r\n }\r\n \r\n private getCitiesOptions(): IReferential[] | undefined {\r\n const filteredCities = this.state.cityList.filter(\r\n (city) => (this.state.organization.regionId && city.dependencyId) && city.dependencyId === this.state.organization.regionId\r\n );\r\n\r\n return filteredCities;\r\n }\r\n\r\n public renderForm() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.handleOrganizationLevelTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: OrganizationLevelType) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleOrganizationChange(newValue)\r\n }\r\n getOptionLabel={(option: Organization) => option.name || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n\r\n \r\n this.handleOrganizationTypeChange(newValue)\r\n }\r\n getOptionLabel={(option: OrganizationType) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n this.handleCountryChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n\r\n \r\n \r\n this.handleRegionChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n this.handleCityInfoChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderForm() : null}\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalEditOrganizationsProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\nexport default connect(\r\n (state: ApplicationState) => ({ appState: state.app }),\r\n { ...AppUserAdminActionCreators, ...AppActionCreators },\r\n mergeProps\r\n)(withSnackbar(MavoEditOrganization as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Organization } from '../../../interfaces/Organization';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport {\r\n Box,\r\n Switch,\r\n Button,\r\n Tooltip,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n Typography,\r\n Grid\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport moment from 'moment';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport { isNullOrUndefined } from 'util';\r\nimport EditOrganization from './EditOrganization';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport MavoEditOrganization from './MavoEditOrganization';\r\n\r\ninterface IOrganizationEntitiesState {\r\n organizations: Organization[];\r\n isLoading: boolean;\r\n isOpenDialog: boolean;\r\n selectedOrganizationId: number;\r\n}\r\n\r\ntype IOrganizationEntitiesPros = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass MavoOrganizationEntities extends React.PureComponent<\r\n IOrganizationEntitiesPros,\r\n IOrganizationEntitiesState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n organizations: [],\r\n isLoading: false,\r\n isOpenDialog: false,\r\n selectedOrganizationId: 0\r\n } as IOrganizationEntitiesState;\r\n\r\n public componentDidMount() {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadOrganizations();\r\n }\r\n );\r\n }\r\n\r\n loadOrganizations = async () => {\r\n const hoId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(hoId)) {\r\n return;\r\n }\r\n\r\n const orgList = await this.organizationService.GetOrganizationsByHO(hoId, null);\r\n\r\n this.setState({\r\n organizations: orgList,\r\n isLoading: false\r\n });\r\n };\r\n\r\n onRowClick = (e: any, id: number) => {\r\n this.editOrganization(id);\r\n };\r\n\r\n handleIsActiveChange = async (\r\n event: React.ChangeEvent,\r\n tableMeta: MUIDataTableMeta\r\n ) => {\r\n const id = tableMeta.rowData[0];\r\n const newOrganizations = [...this.state.organizations];\r\n const updatedOrgIndex = newOrganizations.findIndex((o) => o.id === id);\r\n\r\n if (updatedOrgIndex >= 0) {\r\n newOrganizations[updatedOrgIndex] = {\r\n ...newOrganizations[updatedOrgIndex],\r\n isActive: event.target.checked\r\n };\r\n\r\n try {\r\n await this.organizationService.UpdateOrganization(newOrganizations[updatedOrgIndex]);\r\n\r\n this.setState({ organizations: newOrganizations });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'name',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_ORGANIZATION_NAME_HEADER',\r\n 'Organizatie'\r\n ),\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value: string, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.onRowClick(e, tableMeta.rowData[0])}\r\n >\r\n {value}\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'organizationLevelType',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATION_ENTITIES_HIERARCHY_LEVEL',\r\n 'Nivel ierarhic'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: IReferential) => {\r\n return value.displayName;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'parent',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_ORGANIZATION_PARENT_HEADER',\r\n 'Entitate Superioara'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Organization) => {\r\n return isNullOrUndefined(value) ? '' : value.name;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_DATE_MODIFICATION_HEADER',\r\n 'Data Modificare'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'isActive',\r\n label: this.translatorService.Tranlate('USERS_IS_ACTIVE_HEADER', 'Activ'),\r\n options: {\r\n sort: false,\r\n filterOptions: {\r\n names: [\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_ACTIVE', 'Activ'),\r\n this.translatorService.Tranlate('TABLE_IS_ACTIVE_COLUMN_INACTIVE', 'Inactiv')\r\n ],\r\n logic(isActive: any, filterVal: string[]) {\r\n const show =\r\n (filterVal.indexOf(this.names[0]) !== -1 && isActive === true) ||\r\n (filterVal.indexOf(this.names[1]) !== -1 && isActive === false);\r\n return !show;\r\n }\r\n },\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n this.handleIsActiveChange(e, tableMeta)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n editOrganization = (id: number) => {\r\n this.setState({ isOpenDialog: true, selectedOrganizationId: id });\r\n };\r\n\r\n handleClose = (reload: boolean) => {\r\n if (reload) {\r\n this.setState({ isOpenDialog: false }, async () => {\r\n await this.loadOrganizations();\r\n });\r\n } else {\r\n this.setState({ isOpenDialog: false });\r\n }\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n // responsive: \"stacked\",\r\n customToolbar: () => {\r\n return (\r\n \r\n {\r\n this.setState({ selectedOrganizationId: 0, isOpenDialog: true });\r\n }}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'ORGANIZATION_EDIT_MODAL_TITLE',\r\n 'Editare Organizatie'\r\n )}\r\n \r\n \r\n \r\n this.handleClose(false)}\r\n size={'small'}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n this.handleClose(true)}\r\n />\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(MavoOrganizationEntities as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState } from '../../../store';\r\nimport { withSnackbar } from 'notistack';\r\nimport { Card, Tabs, Tab, CardContent, Box } from '@material-ui/core';\r\nimport TabPanel from '../../_shared/Tabs';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport OrganizationEntities from '../organizations/OrganizationEntities';\r\nimport OrganizationHierarchy from '../organizations/OrganizationHierarchy';\r\nimport MavoOrganizationEntities from './MavoOrganizationEntities';\r\n\r\ninterface IOrganizationDetailsTabState {\r\n selectedTab: number;\r\n}\r\nclass MavoOrganizationDetailsTab extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = { selectedTab: 0 };\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(MavoOrganizationDetailsTab as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { Grid, Button, Box } from '@material-ui/core';\r\nimport OrganizationDetailsTab from '../organizations/OrganizationDetailsTab';\r\nimport { AppContext, ApplicationContext } from '../../../context/Contexts';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport OrganizationUsers from '../organizations/OrganizationUsers';\r\nimport OrganizationInterfaces from '../organizations/OrganizationInterfaces';\r\nimport OrganizationParameters from '../organizations/OrganizationParameters';\r\nimport OrganizationNewCaseType from './organizationCase/OrganizationNewCaseType';\r\nimport OrganizationTariffs from '../tariffs/Tariffs';\r\nimport Workflows from '../workflows/Workflows';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { PageTitle } from '../../../layout-components';\r\nimport OrganizationFilters from '../../admin/organizations/OrganizationFilters';\r\nimport { Organization } from '../../../interfaces/Organization';\r\nimport MavoOrganizationDetailsTab from './MavoOrganizationDetailsTab';\r\n\r\ninterface IOrganizationAdminStateState {\r\n selectedTab: number;\r\n organization: Organization | null;\r\n}\r\n\r\ntype IOrganizationAdminProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\nclass MavoOrganizationAdmin extends React.PureComponent<\r\n IOrganizationAdminProps,\r\n IOrganizationAdminStateState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n selectedTab: 0,\r\n organization: null\r\n } as IOrganizationAdminStateState;\r\n\r\n componentDidMount = async () => {\r\n const orgId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(orgId)) {\r\n return;\r\n }\r\n const organizations = await this.organizationService.GetUserOrganizationsByIds([orgId]);\r\n\r\n this.setState({\r\n organization: organizations.length === 1 ? organizations[0] : null\r\n });\r\n };\r\n\r\n onButtonClick = (newValue: number) => {\r\n this.setState({ selectedTab: newValue });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.onButtonClick(0)}\r\n >\r\n \r\n {this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_TAB_GENERAL_DATA',\r\n 'Date Generale'\r\n )}\r\n \r\n \r\n \r\n \r\n this.onButtonClick(1)}\r\n >\r\n {this.translatorService.Tranlate('ORGANIZATIONS_TAB_USERS', 'Utilizatori')}\r\n \r\n \r\n \r\n \r\n \r\n {this.state.selectedTab === 0 ? (\r\n \r\n ) : null}\r\n {this.state.selectedTab === 1 ? (\r\n \r\n ) : null}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(MavoOrganizationAdmin as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport {\r\n Box,\r\n Button,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableMeta,\r\n MUIDataTableColumnOptions\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ICaseService } from '../../../services/Interfaces/ICaseService';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport moment from 'moment';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport EditOutlinedIcon from '@material-ui/icons/EditOutlined';\r\nimport { Model } from '../../../interfaces/Case';\r\n\r\ninterface IModelCarClassState {\r\n newModel: Model;\r\n carClasses: IReferential[];\r\n modelList: Model[];\r\n isLoading: boolean;\r\n isDialogOpen: boolean;\r\n newModelId: number | null;\r\n}\r\n\r\ntype IModelCarClassProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\n\r\nclass ModelCarClass extends React.PureComponent<\r\n IModelCarClassProps,\r\n IModelCarClassState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n\r\n static contextType = ApplicationContext;\r\n private newModel = {\r\n id: 0,\r\n carClassId: 0\r\n } as unknown as Model;\r\n\r\n state = {\r\n modelList: [],\r\n isLoading: false,\r\n selectedFilter: 0,\r\n isDialogOpen: false,\r\n newModel: this.newModel,\r\n carClasses: [],\r\n newModelId: null\r\n } as IModelCarClassState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadModels();\r\n }\r\n );\r\n }\r\n\r\n loadModels = async () => {\r\n const models = await this.caseService.GetModelList();\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CarClass\r\n );\r\n const carClasses = (await this.appReferentialService.Get(ref!.baseUrl)).filter((item) => item.isActive === true);\r\n\r\n this.setState({\r\n modelList: models,\r\n isLoading: false,\r\n carClasses: carClasses,\r\n newModel: { ...this.newModel }\r\n });\r\n };\r\n\r\n private handleCarClassChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n newModel: {\r\n ...this.state.newModel,\r\n carClass: newValue,\r\n carClassId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n public updateCarClassModel = async () => {\r\n try {\r\n await this.caseService.UpdateCarClassModel(this.state.newModel);\r\n\r\n await this.loadModels();\r\n\r\n this.closeDialog();\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n this.handleCarClassChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'brand',\r\n label: this.translatorService.Tranlate(\r\n 'CASE_VALUATION_BRAND_LABEL',\r\n 'Marca'\r\n )\r\n },\r\n {\r\n name: 'name',\r\n label: this.translatorService.Tranlate(\r\n 'CASE_VALUATION_MODEL_LABEL',\r\n 'Model'\r\n )\r\n },\r\n {\r\n name: 'description',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_DESCRIPTION_HEADER',\r\n 'Descriere'\r\n )\r\n },\r\n {\r\n name: 'carClass',\r\n label: this.translatorService.Tranlate(\r\n 'CAR_CLASS',\r\n 'Clasa masina'\r\n ),\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: IReferential) => {\r\n return value ? value.name : null;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate('USERS_DATE_MODIFICATION_HEADER', 'Data Modificare'),\r\n options: {\r\n filter: false,\r\n sortDirection: 'desc',\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n <>\r\n this.newCarClassPopup(tableMeta.rowData[0])}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n }];\r\n\r\n return columns;\r\n };\r\n\r\n newCarClassPopup = async (modelId: number | null) => {\r\n let newModel: Model;\r\n if (modelId == null) {\r\n newModel = { ...this.state.newModel } as Model;\r\n } else {\r\n newModel = this.state.modelList.find((item) => item.id === modelId)!;\r\n }\r\n this.setState({\r\n isDialogOpen: true,\r\n newModel: newModel,\r\n newModelId: modelId\r\n });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState(\r\n { \r\n isDialogOpen: false, \r\n newModel: this.newModel \r\n }\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: true\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('MODEL_CAR_CLASS_UPDATE_MODAL_TITLE', 'Actualizeaza clasa masina')} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(ModelCarClass as any));\r\n","import React, { useMemo } from 'react';\r\nimport { Box } from '@material-ui/core';\r\nimport { useAppDispatch, useAppSelector } from '../../store/configureStore';\r\nimport { AGENDA_SET_SELECTED_RANGE } from '../../store/actions/ActionTypes';\r\nimport Calendar from 'react-calendar';\r\nimport 'react-calendar/dist/Calendar.css';\r\nimport { appointmentsInDay } from '../../utils/appointments';\r\nimport { AppointmentStatusCodeEnum } from '../../helpers/Constants';\r\nimport moment from 'moment';\r\n\r\nexport const SmallCalendar = ({ getAppointments, setModalOpen }:any) => {\r\n const selectedRange = useAppSelector((state) => state.agenda?.selectedRange);\r\n const appointments = useAppSelector((state) => state.agenda?.appointments.filter((appointment) => appointment?.appointmentStatus?.code !== AppointmentStatusCodeEnum.CANCELED.toString()));\r\n const dispatch = useAppDispatch();\r\n const dateFormat = useAppSelector((state) => state.app?.dateFormat);\r\n \r\n const currentRange = useMemo(() => {\r\n if (!selectedRange) {\r\n return [new Date(), new Date()];\r\n }\r\n\r\n return [selectedRange?.start_date, selectedRange?.end_date];\r\n }, [selectedRange]);\r\n\r\n const onChangeDate = (date:any) =>{\r\n // If date is array, with 2 elements, it's range\r\n if (date?.length === 2) {\r\n dispatch({\r\n type: AGENDA_SET_SELECTED_RANGE,\r\n payload: {\r\n start_date: date[0],\r\n end_date: date[1]\r\n }\r\n });\r\n getAppointments({\r\n dateFilterStartDate: date[0],\r\n datefilterEndDate: date[1]\r\n })\r\n setModalOpen(false);\r\n return;\r\n }\r\n const newDate = new Date(date);\r\n newDate.setHours(23);\r\n newDate.setMinutes(59);\r\n newDate.setSeconds(59);\r\n dispatch({\r\n type: AGENDA_SET_SELECTED_RANGE,\r\n payload: {\r\n start_date: date,\r\n end_date: newDate\r\n }\r\n });\r\n getAppointments({\r\n dateFilterStartDate: date,\r\n datefilterEndDate: newDate\r\n })\r\n setModalOpen(false);\r\n }\r\n\r\n return (\r\n \r\n {\r\n const appoimentsForDate = appointmentsInDay(date, appointments, dateFormat || 'DD/MM/YYYY');\r\n if (appoimentsForDate.length > 0) {\r\n return (\r\n \r\n {appoimentsForDate.length}\r\n \r\n );\r\n }\r\n }}\r\n key={selectedRange?.start_date?.toString()}\r\n value={currentRange}\r\n showNeighboringMonth={false}\r\n onChange={(date:any) =>onChangeDate(date)}\r\n locale={moment.locale()}\r\n />\r\n \r\n );\r\n};\r\n\r\nconst getColorHueIntensity = (intensity: number) => {\r\n // blue from light to dark\r\n if (intensity < 20) {\r\n return 'hsl(359, 100%, 90%)';\r\n }\r\n if (intensity < 40) {\r\n return 'hsl(359, 100%, 80%)';\r\n }\r\n\r\n if (intensity < 60) {\r\n return 'hsl(359, 100%, 70%)';\r\n }\r\n\r\n if (intensity < 80) {\r\n return 'hsl(359, 100%, 60%)';\r\n }\r\n\r\n if (intensity < 100) {\r\n return 'hsl(359, 100%, 50%)';\r\n }\r\n\r\n return 'hsl(359, 100%, 40%)';\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport {\r\n Box,\r\n Button,\r\n Dialog,\r\n Grid,\r\n IconButton,\r\n Typography\r\n} from '@material-ui/core';\r\nimport { useSnackbar } from 'notistack';\r\nimport { WorkflowService } from '../../services/WorkflowService';\r\nimport { Organization } from '../../interfaces/Organization';\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { OrganizationService } from '../../services/OrganizationService';\r\nimport { Workflow } from '../../interfaces/Workflow';\r\nimport { Close } from '@material-ui/icons';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { newAppointmentCase } from './agenda.requests';\r\nimport { useHistory } from 'react-router';\r\nimport { Case } from '../../interfaces/Case';\r\nimport { ReferentialService } from '../../services/ReferentialService';\r\nimport { CaseTypeCodeEnum, ReferentialCode } from '../../helpers/Constants';\r\nimport Referentials from '../../helpers/Referentials.json';\r\n\r\nexport const NewCaseAppointment = ({appAppointmentId, close}: any) => {\r\n const translatorService = new TranslatorService();\r\n\r\n const history = useHistory();\r\n const { enqueueSnackbar } = useSnackbar();\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [selectedItem, setSelectedItem] = useState(null);\r\n const [workflows, setWorkflows] = useState>([]);\r\n const [organizations, setOrganizations] = useState>([]);\r\n\r\n const loadData = async () =>{\r\n const workflowServiceInstance = new WorkflowService();\r\n const organizationServiceInstance = new OrganizationService();\r\n const appReferentialServiceInstance = new ReferentialService([]);\r\n const refCaseType = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CaseType\r\n );\r\n \r\n const [workflows, orgCaseTypes] = await Promise.all([\r\n workflowServiceInstance.GetUserWorkflows(),\r\n appReferentialServiceInstance.Get(refCaseType!.baseUrl)\r\n ]);\r\n const owners = await organizationServiceInstance.GetUserOrganizationsByIds(\r\n Array.from(new Set(workflows.map((item) => item.organizationOwnerId)))\r\n );\r\n workflows.forEach((w) => {\r\n const owner = owners.find((item) => item.id === w.organizationOwnerId);\r\n w.organizationOwner = isNullOrUndefined(owner) ? null : owner;\r\n\r\n const orgCaseType = orgCaseTypes.find((item) => item.id == w.caseTypeId);\r\n w.caseType = isNullOrUndefined(orgCaseType) ? null : orgCaseType;\r\n });\r\n\r\n const futureOrganizations: Organization[] = [];\r\n workflows.forEach((w) => {\r\n if (futureOrganizations.find((item) => item.id === w.organizationOwnerId) === undefined) {\r\n futureOrganizations.push(w.organizationOwner!);\r\n }\r\n });\r\n\r\n let counter = 0;\r\n let item = null;\r\n futureOrganizations?.forEach((org) => {\r\n workflows?.forEach((w) => {\r\n if ( w?.organizationOwnerId === org?.id && w.caseType?.code === CaseTypeCodeEnum.REPARATIE.toString()){\r\n counter ++;\r\n item = w;\r\n }\r\n })\r\n })\r\n\r\n if (counter > 1 || !item){\r\n setOrganizations(futureOrganizations)\r\n setWorkflows(workflows);\r\n }else if(counter === 1 && item){\r\n createCase(item)\r\n }\r\n }\r\n\r\n const createCase = async (item?:Workflow) => {\r\n if (isNullOrUndefined(selectedItem) && isNullOrUndefined(item)) {\r\n return;\r\n }\r\n setIsLoading(true);\r\n try {\r\n const res = await newAppointmentCase({ appointmentId: appAppointmentId, workflowId: selectedItem ? selectedItem.id : item?.id })\r\n const newCase = res.data as Case\r\n history.push('/cases/' + newCase!.id, 'Case xx');\r\n setIsLoading(false);\r\n } catch (ex:any) {\r\n setIsLoading(false);\r\n enqueueSnackbar(\r\n translatorService.Tranlate(ex.response.data, 'Eroare creare dosar!'),\r\n {\r\n variant: 'error',\r\n autoHideDuration: 5000\r\n }\r\n );\r\n console.log(ex.response.data);\r\n }\r\n };\r\n\r\n useEffect(()=>{\r\n loadData(); \r\n },[])\r\n\r\n return (<>\r\n {isLoading || !organizations?.length || !workflows?.length ? <>:\r\n {\r\n return;\r\n }}\r\n aria-labelledby=\"customized-dialog-title\"\r\n open={Boolean(appAppointmentId)}\r\n fullWidth\r\n maxWidth={'md'}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {organizations?.length > 0 && workflows?.length > 0 ? organizations?.map((org, index) => (\r\n \r\n \r\n {org?.displayName}\r\n \r\n \r\n {workflows\r\n .filter((w) => w.organizationOwnerId === org?.id)\r\n .map((item, index) => (\r\n \r\n \r\n {\r\n setSelectedItem(item);\r\n }}\r\n >\r\n {item.displayName}\r\n \r\n \r\n \r\n ))}\r\n \r\n )) :\r\n
\r\n \r\n
}\r\n \r\n \r\n \r\n\r\n \r\n}\r\n \r\n\r\n );\r\n};\r\n","import { Car, Client } from \"../components/agenda/agenda.types\";\r\nimport { ITranslation } from \"../interfaces/IReferential\";\r\n\r\nexport type AppointmentStatusType = {\r\n code: string;\r\n name: string,\r\n id: number;\r\n translations: ITranslation[];\r\n}\r\n\r\nexport type AppointmentHistoryType = {\r\n date:string;\r\n appointmentStatusId:number;\r\n userId:string;\r\n user?:any;\r\n appointmentStatus?: AppointmentStatusType;\r\n comment:string;\r\n\r\n}\r\n\r\nexport type AppointmentFiltersPayloadType = {\r\n appointmentIds: string[];\r\n formatedDateList: string[];\r\n formatedHourList: string[];\r\n makeList: string[];\r\n modelList: string[];\r\n plateNumberList: string[];\r\n formattedDateCreationList: string[];\r\n formattedHourCreationList: string[];\r\n appointmentStatuses: AppointmentStatusType[];\r\n appAppointmentIds: number[];\r\n appointmentCategoryTypes: AppointmentCategoryType[];\r\n}\r\n\r\nexport type AppointmentCategoryType = {\r\n code: string;\r\n name: string,\r\n id: number;\r\n translations: ITranslation[];\r\n}\r\n\r\nexport type AppointmentType = {\r\n id: number;\r\n appAppointmentId?:number;\r\n id_service: number;\r\n id_user: number;\r\n id_car: number;\r\n nr_km: number;\r\n type: string;\r\n datetime: string;\r\n confirmation: boolean;\r\n status: number;\r\n created_at: string;\r\n updated_at: string;\r\n reschedule: string;\r\n final: string;\r\n schedule_rem: number;\r\n schedule_notif: number;\r\n cancel: string;\r\n callresch: number;\r\n final_date_time: string;\r\n obs: string;\r\n contactp: string;\r\n date: string;\r\n appointmentStatus?: AppointmentStatusType\r\n appointmentClient?:Client\r\n vehicle: Car\r\n appointmentJobTypes: Option[];\r\n jobDetails?:string,\r\n appEmail?:string,\r\n appFirstName?:string,\r\n appLastName?:string,\r\n appPhone?:string,\r\n appUsername?:string\r\n appointmentStatusHistories?:AppointmentHistoryType[]\r\n caseId?:number;\r\n appointmentStatusId?:number;\r\n appointmentClientSelections: AppointmentClientSelection[],\r\n serviceId:number,\r\n parentId?:number;\r\n appointmentCategoryType: AppointmentCategoryType;\r\n hideCancelButton: boolean;\r\n};\r\n\r\nexport interface Option {\r\n name: string;\r\n id: number;\r\n jobTypeId?:number;\r\n translations: ITranslation[];\r\n}\r\nexport type AppointmentsFiltersType = {\r\n dateFilterStartDate?: string,\r\n datefilterEndDate?: string,\r\n text?: string,\r\n page?:number,\r\n pageSize?:number;\r\n formatedDateList?:string;\r\n includedAdditionalData?:boolean;\r\n}\r\n\r\nexport type ResponseAppointmentsData = {\r\n appointments: AppointmentType[];\r\n page: number;\r\n total: number;\r\n}\r\n\r\nexport type CarRequestType = {\r\n vin: string | null;\r\n firstPlateDate: string | null;\r\n plateNumber: string | null;\r\n numberOfKilometers: string | null;\r\n model: string | null;\r\n make: string | null\r\n}\r\n\r\nexport type AppointmentRequestPayload ={\r\n serviceId?: number,\r\n appointmentClient?: Client | null,\r\n vehicle: CarRequestType,\r\n date: string,\r\n appointmentJobTypes?: Array<{id:number, name:string}>,\r\n jobDetails?: string,\r\n appFirstName: string,\r\n appLastName: string,\r\n appEmail: string,\r\n appPhone: string,\r\n appUsername: string,\r\n inAppointment?: boolean,\r\n appointmentCategoryTypeId:number\r\n parentId?:number;\r\n workflowId?:number;\r\n caseId?:number\r\n\r\n}\r\n\r\nexport type ChangeAppointmentStatusPayload = {\r\n appointmentId:number,\r\n statusId:number,\r\n date?:string\r\n appointmentClientSelectionId?: number;\r\n comment?:string\r\n}\r\n\r\nexport interface AppointmentClientSelection {\r\n id: number;\r\n appointmentId: number;\r\n date: string;\r\n isSelected: boolean;\r\n isClientSelection: boolean;\r\n}\r\n\r\nexport enum AppointmentFilterStateKeys {\r\n appointmentIds = 0,\r\n formattedDateCreationList = 1,\r\n formattedHourCreationList = 2,\r\n makeList = 3,\r\n modelList = 4,\r\n plateNumberList = 5,\r\n formatedDateList = 6,\r\n formatedHourList = 7,\r\n appointmentStatuses = 8,\r\n appAppointmentIds = 9,\r\n appointmentCategoryTypes = 10\r\n}\r\n","import { FormControl, InputLabel, MenuItem, Select } from \"@material-ui/core\";\r\nimport React, { useContext } from 'react';\r\nimport { ApplicationContext } from \"../../context/Contexts\";\r\n\r\nconst MenuProps = {\r\n anchorOrigin: {\r\n vertical: \"bottom\",\r\n horizontal: \"left\"\r\n },\r\n transformOrigin: {\r\n vertical: \"top\",\r\n horizontal: \"left\"\r\n },\r\n getContentAnchorEl: null,\r\n PaperProps: {\r\n style: {\r\n maxHeight: 300,\r\n },\r\n },\r\n};\r\n\r\ninterface DropDownSelectProps { \r\n filterList: any, \r\n onChange: any, \r\n index: number, \r\n column: any, \r\n optionValues: any,\r\n name:string\r\n}\r\n\r\n\r\n\r\nexport const DropDownSelect = ({ filterList, onChange, index, column, optionValues, name }: DropDownSelectProps) => {\r\n const context = useContext(ApplicationContext);\r\n const translatorService = context.translatorService;\r\n const allValue = translatorService.Tranlate('APPOINTMENT_TABLE_ALL_VALUE', 'Toate');\r\n\r\n return \r\n {name}\r\n 0 ? filterList[index] : []}\r\n onChange={(e) => {\r\n let futureFilterList: any = e.target.value;\r\n if (futureFilterList?.length > 1 && futureFilterList[0] === allValue) {\r\n futureFilterList?.shift()\r\n filterList[index] = futureFilterList;\r\n }\r\n\r\n if (futureFilterList?.length > 1 && futureFilterList[futureFilterList?.length - 1] === allValue) {\r\n futureFilterList = [allValue];\r\n }\r\n onChange(futureFilterList, index, column);\r\n }}\r\n MenuProps={MenuProps}\r\n >\r\n {optionValues?.map((name: string) => (\r\n \r\n {name}\r\n \r\n ))}\r\n \r\n \r\n}\r\n","import React, { useContext, useEffect, useMemo, useState } from 'react';\r\nimport MUIDataTable, { MUIDataTableColumn, MUIDataTableColumnOptions, MUIDataTableMeta, SelectableRows } from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport { Box, Button, FormControl, IconButton, InputLabel, ListItemText, MenuItem, Select, Tooltip } from '@material-ui/core';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport moment from 'moment';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport { useAppSelector } from '../../store/configureStore';\r\nimport { getDay, getHour } from '../../utils/appointments';\r\nimport { useHistory } from 'react-router';\r\nimport { CreateNewFolder, Visibility } from '@material-ui/icons';\r\nimport { NewCaseAppointment } from './NewCaseAppointment';\r\nimport Folder from '@material-ui/icons/Folder';\r\nimport { AppointmentFilterStateKeys, AppointmentFiltersPayloadType, AppointmentType, AppointmentsFiltersType } from '../../types/Agenda';\r\nimport * as R from 'ramda';\r\nimport { getAppointmentFiltersRequest } from './agenda.requests';\r\nimport { DropDownSelect } from './DropDownSelect';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport {MuiThemeProvider, createMuiTheme } from '@material-ui/core';\r\n\r\nconst initialFilters: AppointmentFiltersPayloadType = {\r\n appointmentIds: [],\r\n formatedDateList: [],\r\n formatedHourList: [],\r\n makeList: [],\r\n modelList: [],\r\n plateNumberList: [],\r\n appointmentStatuses: [],\r\n formattedDateCreationList: [],\r\n formattedHourCreationList: [],\r\n appAppointmentIds: [],\r\n appointmentCategoryTypes: []\r\n}\r\n\r\ntype AppointmentTableProps = {\r\n appointments: AppointmentType[],\r\n getAppointment: (filter: AppointmentsFiltersType) => void,\r\n tableProps: any,\r\n setOpenModal:any\r\n}\r\n\r\nexport const AppointmentsTable = ({ appointments, getAppointment, tableProps, setOpenModal }: AppointmentTableProps) => {\r\n const context = useContext(ApplicationContext);\r\n const history = useHistory();\r\n const translatorService = context.translatorService;\r\n const language = useAppSelector((state) => state.app?.language)\r\n const statusList = useAppSelector((state) => state.agenda?.statusList)\r\n const [filters, setFilters] = useState();\r\n const [appointmentId, setAppointmentId] = useState(null);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [selectedfilters, setSelectedFilters] = useState(initialFilters)\r\n const allValue = translatorService.Tranlate('APPOINTMENT_TABLE_ALL_VALUE', 'Toate');\r\n const [formatedHours, setFormatedHours] = useState();\r\n const longDateFormat = useAppSelector((state) => state.app?.longDateFormat);\r\n const dateFormat = useAppSelector((state) => state.app?.dateFormat);\r\n\r\n const getAppointmentFilters = async () => {\r\n setIsLoading(false)\r\n const res = await getAppointmentFiltersRequest();\r\n const filters = res.data as AppointmentFiltersPayloadType\r\n if (res.error || !filters) {\r\n setIsLoading(false)\r\n return;\r\n }\r\n const formattedHourCreationListToLocal = filters?.formattedHourCreationList.map((item) => {\r\n return getHour(moment\r\n ?.utc(item)\r\n ?.local()\r\n ?.format(longDateFormat || 'DD/MM/YYYY HH:mm'))\r\n })\r\n setFormatedHours(formattedHourCreationListToLocal);\r\n setFilters(filters)\r\n setIsLoading(false)\r\n }\r\n\r\n const getStatusIds = (filterList: any) => {\r\n const statusList: any = [];\r\n const statusNameMap: { [key: string]: string } = {};\r\n filterList.appointmentStatuses?.forEach((selectedStatus: string) => {\r\n statusNameMap[selectedStatus] = selectedStatus;\r\n });\r\n filters?.appointmentStatuses?.forEach((status: any) => {\r\n const index = status.translations.findIndex((translation: any) => statusNameMap[translation.name]);\r\n if (index !== -1) {\r\n statusList.push(status.id);\r\n }\r\n });\r\n return statusList;\r\n };\r\n\r\n const getAppointmentCategoryTypeIds = (filterList: any) => {\r\n const appointmentCategoryTypeList: any = [];\r\n const appointmentCategoryTypeNameMap: { [key: string]: string } = {};\r\n filterList.appointmentCategoryTypes?.forEach((selectedAppointmentCategoryType: string) => {\r\n appointmentCategoryTypeNameMap[selectedAppointmentCategoryType] = selectedAppointmentCategoryType;\r\n });\r\n\r\n console.log(filters?.appointmentCategoryTypes);\r\n filters?.appointmentCategoryTypes?.forEach((status: any) => {\r\n const index = status.translations.findIndex((translation: any) => appointmentCategoryTypeNameMap[translation.name]);\r\n if (index !== -1) {\r\n appointmentCategoryTypeList.push(status.id);\r\n }\r\n });\r\n\r\n return appointmentCategoryTypeList;\r\n };\r\n\r\n const getFormatedHour = (selectedValue: string[]) => {\r\n const futureArray = selectedValue.map((hour) => {\r\n const index = formatedHours?.findIndex((val) => val === hour);\r\n return getHour(filters?.formattedHourCreationList[index])\r\n })\r\n return futureArray;\r\n }\r\n\r\n const applyFilters = (currentFilterList:any)=>{\r\n const futureFilterList: any = { ...selectedfilters };\r\n Object.keys(selectedfilters).map((key: string) => {\r\n const selectedValue = currentFilterList[AppointmentFilterStateKeys[key]];\r\n if (key === 'formattedHourCreationList') {\r\n futureFilterList[key] = selectedValue[0] === allValue ? [...new Set(formatedHours)] : getFormatedHour(selectedValue)\r\n } else {\r\n futureFilterList[key] = selectedValue[0] === allValue ? filters[key] : selectedValue\r\n }\r\n });\r\n\r\n const statusIds = futureFilterList.appointmentStatuses?.length > 0 ? getStatusIds(futureFilterList) :[];\r\n delete futureFilterList.appointmentStatuses\r\n\r\n const appointmentCategoryTypeIds = futureFilterList.appointmentCategoryTypes?.length > 0 ? getAppointmentCategoryTypeIds(futureFilterList) : [];\r\n delete futureFilterList.appointmentCategoryTypes;\r\n\r\n getAppointment({\r\n ...futureFilterList,\r\n statusIds: statusIds,\r\n appointmentCategoryTypeIds: appointmentCategoryTypeIds,\r\n includedAdditionalData:true\r\n })\r\n }\r\n\r\n useEffect(()=>{\r\n if(language){\r\n getAppointmentFilters();\r\n }\r\n },[])\r\n\r\n const options = {\r\n filter: true,\r\n serverSide: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n responsive: 'scroll',\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(translatorService),\r\n enableNestedDataAccess: '.',\r\n sort: false,\r\n count: tableProps?.total || 0,\r\n page: tableProps?.page || 0,\r\n rowsPerPage: tableProps?.rowsPerPage || 19,\r\n data: appointments,\r\n displayData: appointments,\r\n searchText: tableProps?.search || '',\r\n // responsive: \"stacked\",\r\n onTableChange: (action: string, tableState: any) => {\r\n if (action === 'changeRowsPerPage' || action === \"changePage\") {\r\n getAppointment({\r\n page: tableState?.page + 1,\r\n pageSize: tableState?.rowsPerPage,\r\n text: tableState?.searchText,\r\n includedAdditionalData:true,\r\n ...selectedfilters\r\n })\r\n } else if (action === 'search') {\r\n getAppointment({\r\n page: 1,\r\n pageSize: tableState?.rowsPerPage,\r\n text: tableState?.searchText,\r\n includedAdditionalData:true,\r\n ...selectedfilters\r\n })\r\n }\r\n\r\n },\r\n customToolbar: () => {\r\n return (<>\r\n \r\n {\r\n history.push('/appointment')\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n setOpenModal(true)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n },\r\n onFilterChange: (column, filterList, type) => {\r\n if(type === 'reset'){\r\n setSelectedFilters(initialFilters)\r\n }\r\n },\r\n\r\n customFilterDialogFooter: (currentFilterList:any, applyNewFilters:any) => {\r\n return (\r\n
\r\n { applyFilters(currentFilterList) }}\r\n >\r\n\r\n {translatorService.Tranlate('APPOINTMENT_TABLE_APPLY_FILTERS', 'Apply Filters')}\r\n \r\n
\r\n );\r\n },\r\n };\r\n\r\n const COLUMNS: MUIDataTableColumn[] = useMemo(\r\n () => [\r\n {\r\n name: 'id',\r\n label: translatorService.Tranlate('APPOINTMENT_TABLE_NO','No.'),\r\n options: {\r\n filter: true,\r\n display: 'true',\r\n filterType: 'custom',\r\n filterOptions: {\r\n display: (filterList, onChange, index, column) => {\r\n const optionValues = filters?.appointmentIds ? [allValue, ...filters?.appointmentIds] : [allValue];\r\n return \r\n },\r\n }\r\n }\r\n },\r\n {\r\n name: 'dateCreation',\r\n label: translatorService.Tranlate('APPOINTMENT_TABLE_DATE_CREATION','Creation Date'),\r\n options: {\r\n customBodyRender: (value: string) => getDay(new Date(value), dateFormat || 'DD/MM/YYYY'),\r\n filter: true,\r\n display: 'true',\r\n filterType: 'custom',\r\n filterOptions: {\r\n display: (filterList, onChange, index, column) => {\r\n \r\n const optionValues = filters?.formattedDateCreationList ? [allValue, ...filters?.formattedDateCreationList] : [allValue];\r\n return \r\n },\r\n }\r\n }\r\n },\r\n {\r\n name: 'dateCreation',\r\n label: translatorService.Tranlate('APPOINTMENT_TABLE_HOUR_CREATION','Creation Hour'),\r\n options: {\r\n customBodyRender: (value: string) => getHour(moment\r\n .utc(value)\r\n .local()\r\n .format(longDateFormat || 'DD/MM/YYYY HH:mm')),\r\n filter: true,\r\n display: 'true',\r\n filterType: 'custom',\r\n filterOptions: {\r\n display: (filterList, onChange, index, column) => {\r\n const uniqueArray = [...new Set(formatedHours)];\r\n const optionValues = uniqueArray ? [allValue, ...uniqueArray] : [allValue];\r\n return \r\n },\r\n }\r\n }\r\n },\r\n {\r\n name: \"vehicle.model.brand\",\r\n label: translatorService.Tranlate('VEHICLES_VEHICLE_MAKE','MARCA'),\r\n options: {\r\n sort: false,\r\n filter: true,\r\n display: 'true',\r\n filterType: 'custom',\r\n filterOptions: {\r\n display: (filterList, onChange, index, column) => {\r\n const optionValues = filters?.makeList ? [allValue, ...filters?.makeList] : [allValue];\r\n return \r\n },\r\n },\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const appointment = appointments.find((item) => item.id === tableMeta.rowData[0]);\r\n if (R.isNil(appointment)) {\r\n return;\r\n }\r\n\r\n return (\r\n
\r\n {appointment.vehicle?.identifiedMake || appointment.vehicle?.model?.brand || ''}\r\n
\r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'vehicle.model.name',\r\n label: translatorService.Tranlate('FRM_CAR_DATA_MODEL','Model'),\r\n options: {\r\n sort: false,\r\n filter: true,\r\n display: 'true',\r\n filterType: 'custom',\r\n filterOptions: {\r\n display: (filterList, onChange, index, column) => {\r\n const optionValues = filters?.modelList ? [allValue, ...filters?.modelList] : [allValue];\r\n return \r\n },\r\n },\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const appointment = appointments.find((item) => item.id === tableMeta.rowData[0]);\r\n if (R.isNil(appointment)) {\r\n return;\r\n }\r\n\r\n return (\r\n
\r\n {appointment.vehicle?.identifiedModel || appointment.vehicle?.model?.name || ''}\r\n
\r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'vehicle.plateNumber',\r\n label: translatorService.Tranlate('FRM_NOTICE_PLATE_NUMBER','Numar Inmatriculare'),\r\n options:{\r\n filter: true,\r\n display: 'true',\r\n filterType: 'custom',\r\n filterOptions: {\r\n display: (filterList, onChange, index, column) => {\r\n const optionValues = filters?.plateNumberList ? [allValue, ...filters?.plateNumberList] : [allValue];\r\n return \r\n },\r\n }\r\n }\r\n },\r\n {\r\n name: 'date',\r\n label: translatorService.Tranlate('APPOINTMENT_TABLE_DATE','Data'),\r\n options: {\r\n customBodyRender: (value: string) => value ? getDay(new Date(value), dateFormat || 'DD/MM/YYYY') : '',\r\n filter: true,\r\n display: 'true',\r\n filterType: 'custom',\r\n filterOptions: {\r\n display: (filterList, onChange, index, column) => {\r\n const optionValues = filters?.formatedDateList ? [allValue, ...filters?.formatedDateList] : [allValue];\r\n return \r\n },\r\n }\r\n }\r\n },\r\n {\r\n name: 'date',\r\n label: translatorService.Tranlate('APPOINTMENT_TABLE_TIME','Ora'),\r\n options: {\r\n customBodyRender: (value: string) => value ? getHour(new Date(value)) : '',\r\n filter: true,\r\n display: 'true',\r\n filterType: 'custom',\r\n filterOptions: {\r\n display: (filterList, onChange, index, column) => {\r\n const optionValues = filters?.formatedHourList ? [allValue, ...filters?.formatedHourList] : [allValue];\r\n return \r\n },\r\n }\r\n }\r\n },\r\n {\r\n name: 'appointmentStatus',\r\n label: translatorService.Tranlate('APPOINTMENT_TABLE_STATUS','Status'),\r\n options: {\r\n customBodyRender: (value: any) => {\r\n const indexLang = value.translations.findIndex((trans: any) => trans.language === language);\r\n return indexLang !== -1 ? value.translations[indexLang].name : value.name;\r\n },\r\n filter: true,\r\n display: 'true',\r\n filterType: 'custom',\r\n filterOptions: {\r\n display: (filterList, onChange, index, column) => {\r\n let optionValues:any = [allValue];\r\n if(filters?.appointmentStatuses){\r\n optionValues = filters?.appointmentStatuses.map(obj => {\r\n const status = obj.translations.find(translation => translation.language === language)\r\n return status ? status.name : ''\r\n });\r\n }\r\n \r\n return \r\n },\r\n }\r\n }\r\n },\r\n {\r\n name: 'appAppointmentId',\r\n label: translatorService.Tranlate('APPOINTMENT_TABLE_ID','ID'),\r\n options:{\r\n filter: true,\r\n display: 'true',\r\n filterType: 'custom',\r\n filterOptions: {\r\n display: (filterList, onChange, index, column) => {\r\n const optionValues = filters?.appAppointmentIds ? [allValue, ...filters?.appAppointmentIds] : [allValue];\r\n return \r\n },\r\n }\r\n }\r\n },\r\n {\r\n name: 'appointmentCategoryType',\r\n label: translatorService.Tranlate('APPOINTMENT_TABLE_CATEGORY_TYPE','Tip'),\r\n options: {\r\n customBodyRender: (value: any) => {\r\n const indexLang = value.translations.findIndex((trans: any) => trans.language === language);\r\n return indexLang !== -1 ? value.translations[indexLang].name : value.name;\r\n },\r\n filter: true,\r\n display: 'true',\r\n filterType: 'custom',\r\n filterOptions: {\r\n display: (filterList, onChange, index, column) => {\r\n let optionValues:any = [allValue];\r\n if(filters?.appointmentCategoryTypes){\r\n optionValues = filters?.appointmentCategoryTypes.map(obj => {\r\n const appointmentCategoryType = obj.translations.find(translation => translation.language === language)\r\n return appointmentCategoryType ? appointmentCategoryType.name : ''\r\n });\r\n }\r\n \r\n return \r\n },\r\n }\r\n }\r\n },\r\n {\r\n name: 'actions',\r\n label: translatorService.Tranlate(\r\n 'APPOINTMENT_TABLE_ACTIONS',\r\n 'Acțiuni'\r\n ),\r\n options: {\r\n filter:false,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n // If there is no value, return empty div\r\n\r\n return (\r\n \r\n \r\n {\r\n history.push(`/appointment/${appointments![tableMeta.rowIndex].id}`)\r\n }}\r\n >\r\n \r\n \r\n \r\n {appointments![tableMeta.rowIndex].appointmentStatus?.code === statusList.PAYMENT_CONFIRMATION?.code || appointments![tableMeta.rowIndex].caseId ?\r\n {\r\n if (appointments![tableMeta.rowIndex].caseId) {\r\n history.push('/cases/' + appointments![tableMeta.rowIndex].caseId, 'Case xx');\r\n }\r\n else {\r\n setAppointmentId(appointments![tableMeta.rowIndex].id);\r\n }\r\n }}\r\n >\r\n {appointments![tableMeta.rowIndex].caseId ? : }\r\n : null}\r\n \r\n );\r\n }\r\n }\r\n }\r\n ],\r\n [appointments, filters]\r\n );\r\n\r\n const getMuiTheme = () => createMuiTheme({\r\n overrides: {\r\n MuiTableCell: {\r\n root: {\r\n paddingLeft: \"5px\",\r\n paddingRight: \"5px\",\r\n paddingTop: \"5px\",\r\n paddingBottom: \"5px\"\r\n },\r\n },\r\n MUIDataTableBodyCell: {\r\n root: {\r\n paddingLeft: \"5px\",\r\n paddingRight: \"5px\",\r\n paddingTop: \"0px\",\r\n paddingBottom: \"0px\",\r\n height: \"50px !important\"\r\n }\r\n }\r\n } as any\r\n });\r\n \r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {appointmentId ? setAppointmentId(null)} /> : null}\r\n \r\n );\r\n};\r\n","import React, { useState } from 'react';\r\nimport 'react-calendar/dist/Calendar.css';\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\nimport { BigCalendar } from '../agenda/BigCalendar';\r\nimport { getAppointmentsRequest } from '../agenda/agenda.requests';\r\nimport { ResponseAppointmentsData } from '../../types/Agenda';\r\nimport { useAppDispatch, useAppSelector } from '../../store/configureStore';\r\nimport { AGENDA_SET_APPOINTMENTS } from '../../store/actions/ActionTypes';\r\n\r\nexport const AppointmentBigCalendar = () => {\r\n const translatorService = new TranslatorService();\r\n const [localAppointments, setLocalAppoitments] = useState>([]);\r\n const [localLoading, setLocalLoading] = useState(false);\r\n const [defaultView, setDefaultView] = useState<'month' | 'week' | 'day' | 'agenda'>('week');\r\n const [defaultDay, setDefaultDay] = useState()\r\n const dispatch = useAppDispatch();\r\n\r\n const fetchAppointments = async (filters: any, onlyOneDay?: boolean) => {\r\n !onlyOneDay && setLocalLoading(true)\r\n const response = await getAppointmentsRequest(filters);\r\n\r\n const responseData = response.data as ResponseAppointmentsData;\r\n\r\n if (!responseData?.appointments) {\r\n !onlyOneDay && setLocalLoading(false)\r\n return\r\n }\r\n\r\n if (onlyOneDay) {\r\n setLocalAppoitments(responseData?.appointments)\r\n } else {\r\n dispatch({\r\n type: AGENDA_SET_APPOINTMENTS,\r\n payload: responseData.appointments,\r\n });\r\n }\r\n\r\n !onlyOneDay && setLocalLoading(false)\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import React, { Fragment, useEffect, useState } from 'react';\r\nimport { Box, Modal } from '@material-ui/core';\r\nimport { SmallCalendar } from './SmallCalendar';\r\nimport { BigCalendar } from './BigCalendar';\r\nimport { useAppDispatch, useAppSelector } from '../../store/configureStore';\r\nimport { AppointmentsTable } from './AppointmentsTable';\r\nimport { AGENDA_SET_APPOINTMENTS, AGENDA_SET_CATEGORY_TYPE, AGENDA_SET_SELECTED_RANGE, AGENDA_SET_STATUS_LIST } from '../../store/actions/ActionTypes';\r\nimport { getAppointmentsRequest } from './agenda.requests';\r\nimport { AppointmentType, AppointmentsFiltersType, ResponseAppointmentsData } from '../../types/Agenda';\r\nimport { areDatesInSameWeek, getCategoryTypeList, getStatusList, formatDate } from '../../utils/appointments';\r\nimport moment from 'moment';\r\nimport { useSnackbar } from 'notistack';\r\nimport Loader from '../Loader';\r\nimport { AppointmentBigCalendar } from '../appointment/AppointmentBigCalendar';\r\n\r\nconst AgendaPage = () => {\r\n const [isLoading, setIsLoading] = React.useState(false);\r\n const { enqueueSnackbar } = useSnackbar();\r\n const selectedRange = useAppSelector((state)=>state.agenda?.selectedRange)\r\n const [localAppointments, setLocalAppoitments] = React.useState>([]);\r\n const [defaultView, setDefaultView] = React.useState<'month' | 'week' | 'day' | 'agenda'>('month'); \r\n const [defaultDay, setDefaultDay] = useState()\r\n const [modalOpen, setModalOpen] = React.useState(false);\r\n const [tableProps, setTabelProps] = useState({\r\n total: 0,\r\n page: 0,\r\n rowsPerPage: 10,\r\n search:''\r\n });\r\n const language = useAppSelector((state)=>state.app?.language)\r\n const dispatch = useAppDispatch();\r\n\r\n const changeBigCalendar = (appointments:any, dates:any) =>{\r\n dispatch({\r\n type: AGENDA_SET_APPOINTMENTS,\r\n payload: appointments,\r\n });\r\n const date = formatDate(dates[0])\r\n setDefaultDay(date)\r\n if (dates.length === 1){\r\n setDefaultView('day');\r\n return\r\n }\r\n if(dates.length > 7){\r\n setDefaultView('month')\r\n }else{\r\n areDatesInSameWeek(dates) ? setDefaultView('week'): setDefaultView('month')\r\n } \r\n }\r\n\r\n const fetchAppointments = async (filters: AppointmentsFiltersType, local=false) => {\r\n !local && setIsLoading(true);\r\n const response = await getAppointmentsRequest(filters);\r\n const responseData = response.data as ResponseAppointmentsData;\r\n if(!responseData?.appointments){\r\n !local && setIsLoading(false)\r\n return \r\n }\r\n if(local){\r\n setTabelProps({\r\n total:responseData?.total,\r\n page: (filters?.page || 1) -1,\r\n rowsPerPage: filters?.pageSize || 10,\r\n search:filters?.text || ''\r\n })\r\n setLocalAppoitments(responseData.appointments)\r\n filters['formatedDateList']?.length > 0 && changeBigCalendar(responseData.appointments, filters['formatedDateList'])\r\n }else{\r\n dispatch({\r\n type: AGENDA_SET_APPOINTMENTS,\r\n payload: responseData.appointments,\r\n });\r\n } \r\n !local && setIsLoading(false);\r\n };\r\n\r\n useEffect(()=>{\r\n setDefaultDay(null)\r\n },[selectedRange])\r\n \r\n\r\n const formatRangeValue = () =>{\r\n if (!selectedRange) {\r\n return\r\n }\r\n if(selectedRange.start_date !== selectedRange?.end_date){\r\n fetchAppointments({\r\n dateFilterStartDate: moment(selectedRange.start_date).format('YYYY-MM-DDTHH:mm:ss'),\r\n datefilterEndDate: moment(selectedRange.end_date).format('YYYY-MM-DDTHH:mm:ss')\r\n });\r\n }else{\r\n const endDate = new Date(selectedRange?.end_date)\r\n endDate.setHours(23, 59, 59, 999)\r\n fetchAppointments({\r\n dateFilterStartDate: moment(selectedRange.start_date).format('YYYY-MM-DDTHH:mm:ss'),\r\n datefilterEndDate: moment(endDate).format('YYYY-MM-DDTHH:mm:ss')\r\n });\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n if(!localAppointments.length){\r\n fetchAppointments({\r\n page:1,\r\n pageSize:10,\r\n includedAdditionalData:true\r\n }, true);\r\n }\r\n if(!selectedRange){\r\n const currentDate = new Date();\r\n const firstDayOfMonth = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1);\r\n const lastDayOfMonth = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0);\r\n lastDayOfMonth.setHours(23, 59, 59, 999);\r\n\r\n dispatch({\r\n type: AGENDA_SET_SELECTED_RANGE,\r\n payload: {\r\n start_date: firstDayOfMonth,\r\n end_date: lastDayOfMonth\r\n }\r\n });\r\n\r\n fetchAppointments({\r\n dateFilterStartDate: moment(firstDayOfMonth).format(),\r\n datefilterEndDate: moment(lastDayOfMonth).format()\r\n });\r\n }else{\r\n formatRangeValue()\r\n }\r\n getStatusList(setIsLoading, (value:any)=>{\r\n dispatch({\r\n type: AGENDA_SET_STATUS_LIST,\r\n payload: value\r\n });\r\n }, enqueueSnackbar)\r\n getCategoryTypeList(setIsLoading, (value:any)=>{\r\n dispatch({\r\n type:AGENDA_SET_CATEGORY_TYPE,\r\n payload:value\r\n })\r\n }, enqueueSnackbar)\r\n }, []);\r\n\r\n const renderModal = () => {\r\n return (\r\n
\r\n setModalOpen(false)}>\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n };\r\n return (\r\n \r\n {isLoading ? :<>\r\n {renderModal()}\r\n \r\n \r\n \r\n\r\n \r\n {\r\n fetchAppointments(filters, true)\r\n }}/>\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default AgendaPage;\r\n","import React, { ChangeEvent } from 'react';\r\nimport { Box, TextField, Button, Typography } from '@material-ui/core';\r\nimport { ContactFormData } from '../agenda/agenda.types';\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\nimport { InsuredTypeCode } from '../../helpers/Constants';\r\nimport * as R from 'ramda';\r\n\r\ninterface ContactFormProps {\r\n formData: ContactFormData;\r\n onChange?: (formData: ContactFormData) => void;\r\n disabled?: boolean;\r\n type?:string;\r\n}\r\n\r\nconst ContactForm: React.FC = ({ formData, onChange, disabled, type}) => {\r\n const translatorService = new TranslatorService();\r\n const handleInputChange = (\r\n event: ChangeEvent,\r\n field: keyof ContactFormData\r\n ) => {\r\n if(!onChange){\r\n return;\r\n }\r\n const { value } = event.target;\r\n const newFormData = { ...formData, [field]: value };\r\n onChange(newFormData);\r\n };\r\n\r\n const handleSendClick = () => {\r\n // TODO: send data to carfix\r\n };\r\n\r\n\r\n const ContactFormDetails = () => {\r\n return \r\n {!R.isNil(formData.personType!) && formData.personType!.code === InsuredTypeCode.PJ ? {`${translatorService.Tranlate('APPOINTMENT_CONTACT_FORM_COMPANY_NAME', 'Nume Companie') }: ${formData.companyName}`} \r\n : {`${translatorService.Tranlate('APPOINTMENT_CONTACT_FORM_FIRST_NAME', \"First Name\") }: ${formData.firstName}`}\r\n }\r\n {!R.isNil(formData.personType!) && formData.personType!.code === InsuredTypeCode.PJ ? {`${translatorService.Tranlate('APPOINTMENT_CONTACT_FORM_COMPANY_NUMBER', 'CUI') }: ${formData.companyNumber}`} \r\n : {`${translatorService.Tranlate('APPOINTMENT_CONTACT_FORM_LAST_NAME', \"Last Name\") }: ${formData.lastName}`}\r\n }\r\n {`${translatorService.Tranlate('APPOINTMENT_CONTACT_FORM_PHONE', \"Phone No.\") }: ${formData.phoneNo}`}\r\n {`${translatorService.Tranlate('APPOINTMENT_CONTACT_FORM_EMAIL', \"Email\") }: ${formData.email}`}\r\n {/* \r\n {translatorService.Tranlate('APPOINTMENT_CONTACT_FORM_SEND_CARFIX', \"Send to carfix\")}\r\n */}\r\n \r\n }\r\n\r\n const AddContactForm = () =>{\r\n return \r\n handleInputChange(e, 'firstName')}\r\n />\r\n handleInputChange(e, 'lastName')}\r\n />\r\n handleInputChange(e, 'phoneNo')}\r\n />\r\n handleInputChange(e, 'email')}\r\n />\r\n {/* \r\n {translatorService.Tranlate('APPOINTMENT_CONTACT_FORM_SEND_CARFIX1', \"Send to carfix\")}\r\n */}\r\n \r\n }\r\n\r\n return (\r\n \r\n {type === 'details' ? translatorService.Tranlate('APPOINTMENT_CLIENT_TITLE', 'Client') : translatorService.Tranlate('APPOINTMENT_CONTACT_TITLE', 'Contact')}\r\n \r\n {type === 'details' ? ContactFormDetails(): AddContactForm()}\r\n \r\n );\r\n};\r\n\r\nexport default ContactForm;\r\n","export enum AppointmentActionStatus {\r\n CONFIRMEDSERVICE = 'CONFIRMAT_SERVICE'\r\n}\r\n","import React from 'react';\r\nimport { Button, IconButton, Modal, TextField, Typography } from '@material-ui/core';\r\nimport 'react-calendar/dist/Calendar.css';\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { AppointmentCalendar } from './AppointmentCalendar';\r\n\r\n\r\ninterface ConfirmAppointmentProps {\r\n visible: boolean;\r\n setIsVisible: (val:boolean) => void,\r\n title:string;\r\n comment?: string;\r\n setComment?: (val:any) => void\r\n date: Date | null;\r\n setDate: any;\r\n hour: string | null\r\n setHour: any,\r\n onClickButton:any,\r\n calendarText?:string,\r\n buttonText:string;\r\n}\r\n\r\nexport const ConfirmAppointment = ({ visible, setIsVisible, title, comment, setComment, date, setDate, hour, setHour, onClickButton, calendarText, buttonText }: ConfirmAppointmentProps) => {\r\n\r\n const translatorService = new TranslatorService();\r\n\r\n return (\r\n
\r\n { setIsVisible(false) }}>\r\n\r\n
\r\n
\r\n { setIsVisible(false) }}>\r\n \r\n \r\n
\r\n \r\n {title}\r\n \r\n\r\n
\r\n \r\n {translatorService.Tranlate('APPOINTMENT_RESCHEDULE_MESSAGE', 'Select a new date for scheduling')}\r\n \r\n \r\n {calendarText ?\r\n {calendarText}\r\n :null}\r\n { setComment ? setComment(e.target.value)}\r\n />:null}\r\n
\r\n \r\n {buttonText}\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import React, { useMemo, useState } from 'react';\r\nimport MUIDataTable, { MUIDataTableColumnOptions, MUIDataTableMeta, SelectableRows } from 'mui-datatables';\r\n\r\nimport { AppointmentCategoryType, AppointmentClientSelection, AppointmentStatusType, ChangeAppointmentStatusPayload, ResponseAppointmentsData } from '../../types/Agenda';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\nimport { useAppDispatch, useAppSelector } from '../../store/configureStore';\r\nimport { formatAppointmentForCalendar, getDay, getHour } from '../../utils/appointments';\r\nimport { Box, Button, CircularProgress, IconButton, Modal, Typography } from '@material-ui/core'; \r\nimport { AppointmentCategoryTypeCodeEnum, AppointmentStatusCodeEnum } from '../../helpers/Constants';\r\nimport _ from 'lodash';\r\nimport { Calendar, momentLocalizer } from 'react-big-calendar';\r\nimport { changeAppointmentStatus, getAppointmentsRequest } from '../agenda/agenda.requests';\r\nimport { BigCalendar, CustomEvent } from '../agenda/BigCalendar';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport moment from 'moment';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { AppointmentActionStatus } from '../../enums/Status';\r\nimport { useHistory } from 'react-router';\r\nimport { AGENDA_SET_APPOINTMENTS, AGENDA_SET_SELECTED_RANGE } from '../../store/actions/ActionTypes';\r\nimport { useSnackbar } from 'notistack';\r\nimport { ConfirmAppointment } from './ConfirmAppointment';\r\n\r\ninterface AppointmentClientSelectionProps {\r\n clientDateSelections: AppointmentClientSelection[];\r\n status: AppointmentStatusType | null;\r\n appointmentId: number | null;\r\n getSelectedAppointment: () => void;\r\n setIsLoading: (loading: boolean) => void;\r\n changeStatus: (status:number, commnet?:string)=>void;\r\n date: Date | null;\r\n setDate:any;\r\n hour: string | null\r\n setHour:any\r\n caseId: number | null;\r\n appointmentCategoryType: AppointmentCategoryType;\r\n plateNumber: string | null;\r\n}\r\n\r\nconst AppointmentClientSelectionDetails: React.FC = ({ clientDateSelections, status, appointmentId, getSelectedAppointment, setIsLoading, changeStatus, date, setDate, hour, setHour, caseId , appointmentCategoryType, plateNumber}) => {\r\n const translatorService = new TranslatorService();\r\n const localizer = momentLocalizer(moment);\r\n const statusList = useAppSelector((state)=>state.agenda?.statusList)\r\n const [localLoading, setLocalLoading] = useState(false);\r\n const [openViewCalendar, setOpenViewCalendar] = useState(false);\r\n const [defaultView, setDefaultView] = useState<'month' | 'week' | 'day' | 'agenda'>('week');\r\n const [defaultDay, setDefaultDay] = useState()\r\n const [openRescheduleModal, setOpenRescheduleModal] = useState(false)\r\n const [openRescheduleCalendarModal, setOpenRescheduleCalendarModal] = useState(false)\r\n const language = useAppSelector((state) => state.app?.language)\r\n const [comment, setComment] = useState('');\r\n const [localAppointments, setLocalAppoitments] = useState>([]);\r\n const [selectedHour, setSelectedHour] = useState();\r\n const { enqueueSnackbar } = useSnackbar();\r\n const history = useHistory();\r\n const dispatch = useAppDispatch();\r\n const dateFormat = useAppSelector((state) => state.app?.dateFormat);\r\n\r\n const fetchAppointments = async (filters: any, onlyOneDay?: boolean) => {\r\n !onlyOneDay && setLocalLoading(true)\r\n const response = await getAppointmentsRequest(filters);\r\n\r\n const responseData = response.data as ResponseAppointmentsData;\r\n\r\n if (!responseData?.appointments) {\r\n !onlyOneDay && setLocalLoading(false)\r\n return\r\n }\r\n\r\n if(onlyOneDay){\r\n setLocalAppoitments(responseData?.appointments)\r\n }else{\r\n dispatch({\r\n type: AGENDA_SET_APPOINTMENTS,\r\n payload: responseData.appointments,\r\n }); \r\n }\r\n\r\n !onlyOneDay && setLocalLoading(false)\r\n };\r\n\r\n\r\n const CustomToolbar = (toolbar:any) => {\r\n return (\r\n
\r\n {toolbar.label}\r\n
\r\n );\r\n };\r\n\r\n const formatedAppointments = useMemo(() => {\r\n if (!localAppointments) {\r\n return [];\r\n }\r\n\r\n return localAppointments.filter((appointment) => appointment?.appointmentStatus?.code !== AppointmentStatusCodeEnum.CANCELED.toString()).map((e) => formatAppointmentForCalendar(e, dateFormat || 'DD/MM/YYYY'));\r\n }, [localAppointments]);\r\n\r\n const renderModal = () => {\r\n return (\r\n
\r\n {setOpenViewCalendar(false); setSelectedHour('')}}>\r\n\r\n
\r\n
\r\n { setOpenViewCalendar(false); setSelectedHour('') }}>\r\n \r\n \r\n
\r\n ,\r\n toolbar: CustomToolbar\r\n }}\r\n messages={{\r\n noEventsInRange: translatorService.Tranlate('TABLE_NO_EVENTS_IN_RANGE', 'Nu există rezervări în această perioadă'),\r\n showMore: (total: any) => `${translatorService.Tranlate('TABLE_TOTAL', 'Încă')} ${total}`\r\n }}\r\n value={selectedHour ? new Date(selectedHour) : new Date()}\r\n defaultDate={selectedHour ? new Date(selectedHour) : new Date()}\r\n popup\r\n startAccessor=\"start\"\r\n endAccessor=\"end\"\r\n style={{ width: '100%', heigth: '80vh' }}\r\n />\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n const handleApprove = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n const payload: ChangeAppointmentStatusPayload = {\r\n appointmentId: appointmentId!,\r\n statusId: statusList.CONFIRMED.id,\r\n appointmentClientSelectionId: id\r\n }\r\n\r\n setIsLoading(true);\r\n const res = await changeAppointmentStatus(payload);\r\n\r\n if (res.error) {\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n if (caseId && (appointmentCategoryType?.code == AppointmentCategoryTypeCodeEnum.MAINTENANCE || appointmentCategoryType?.code == AppointmentCategoryTypeCodeEnum.REPAIR)) {\r\n history.push('/cases/' + caseId, 'Case xx');\r\n return;\r\n }\r\n\r\n getSelectedAppointment();\r\n \r\n } catch (error) {\r\n \r\n }\r\n };\r\n\r\n const handleSlotSelect = (slotInfo: any) => {\r\n const selectedDate = new Date(slotInfo.start);\r\n if (defaultView === 'month') {\r\n setDefaultDay(selectedDate);\r\n setDefaultView('day')\r\n } else {\r\n const currentDate = new Date();\r\n if (selectedDate < currentDate) {\r\n enqueueSnackbar(translatorService.Tranlate('PAST_DATE', 'You cannot select a date from the past for scheduling'), {\r\n variant: 'error'\r\n });\r\n return;\r\n }\r\n const selectedHour = selectedDate.getHours();\r\n const selectedMinute = selectedDate.getMinutes();\r\n setDate(selectedDate);\r\n setHour(`${selectedHour < 10 ? `0${selectedHour}` : selectedHour}:${selectedMinute < 10 ? `0${selectedMinute}` : selectedMinute}`);\r\n setOpenRescheduleModal(true)\r\n }\r\n }\r\n\r\n const renderRescheduleCalendarModal = () =>{\r\n return
\r\n { setOpenRescheduleCalendarModal(false) }}>\r\n
\r\n
\r\n { setOpenRescheduleCalendarModal(false) }}>\r\n \r\n \r\n
\r\n \r\n {translatorService.Tranlate('APPOINTMENT_RESCHUDELE_CALENDAR_TITLE', 'Select the date and time for rescheduling')}\r\n \r\n \r\n {`${appointmentId}${plateNumber ? ` - ${plateNumber}` : ''}`}\r\n \r\n \r\n
\r\n
\r\n
\r\n }\r\n \r\n const getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'date',\r\n label: translatorService.Tranlate(\r\n 'APPOINTMENT_TABLE_DATE',\r\n 'Data'\r\n ),\r\n options: {\r\n customBodyRender: (value: string | null) => value != null ?
\r\n \r\n
{getDay(new Date(value), dateFormat || 'DD/MM/YYYY')}
\r\n
: null\r\n }\r\n },\r\n {\r\n name: 'date',\r\n label: translatorService.Tranlate(\r\n 'APPOINTMENT_TABLE_TIME',\r\n 'Ora'\r\n ),\r\n options: {\r\n customBodyRender: (value: string | null) => value != null ?
\r\n \r\n
{getHour(new Date(value))}
\r\n
: null\r\n }\r\n },\r\n {\r\n name: 'appointmentDetailsType',\r\n label: translatorService.Tranlate(\r\n 'APPOINTMENT_TABLE_CLIENT_DETAILS',\r\n 'Detalii'\r\n ),\r\n options: {\r\n customBodyRender: (value: any) => {\r\n const indexLang = value?.translations?.findIndex((trans: any) => trans?.language === language);\r\n return indexLang !== -1 ? value?.translations[indexLang]?.name : value?.displayName;\r\n }\r\n }\r\n },\r\n {\r\n name: 'appointmentActionType',\r\n label: translatorService.Tranlate(\r\n 'APPOINTMENT_TABLE_ACTIONS',\r\n 'Actions'\r\n ),\r\n options: {\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n if (!value && (status?.code === AppointmentStatusCodeEnum.INITIATA || status?.code === AppointmentStatusCodeEnum.RESCHEDULED)){\r\n return (\r\n handleApprove(e, tableMeta)}\r\n >\r\n {translatorService.Tranlate('APPOINTMENT_CLIENT_SELECTION_CONFIRM', 'Confirm')}\r\n \r\n {\r\n const currentDate = new Date(tableMeta.rowData[1]);\r\n setDefaultDay(currentDate);\r\n \r\n const firstDayOfMonth = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1);\r\n const lastDayOfMonth = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0);\r\n lastDayOfMonth.setHours(23, 59, 59, 999);\r\n \r\n dispatch({\r\n type: AGENDA_SET_SELECTED_RANGE,\r\n payload: {\r\n start_date: firstDayOfMonth,\r\n end_date: lastDayOfMonth\r\n }\r\n });\r\n\r\n await fetchAppointments({\r\n dateFilterStartDate: moment(firstDayOfMonth).format('YYYY-MM-DDTHH:mm:ss'),\r\n datefilterEndDate: moment(lastDayOfMonth).format('YYYY-MM-DDTHH:mm:ss')\r\n });\r\n setOpenRescheduleCalendarModal(true)\r\n setDefaultView('week')\r\n }}\r\n >\r\n
\r\n {localLoading && }\r\n {translatorService.Tranlate('APPOINTMENT_DETAILS_RESCHEDULE_BUTTON', 'Reschedule')}\r\n
\r\n \r\n {\r\n setSelectedHour(tableMeta.rowData[1])\r\n const startDate = new Date(tableMeta.rowData[1])\r\n startDate.setUTCHours(0, 0, 0, 0);\r\n const endDate = new Date(tableMeta.rowData[1])\r\n endDate.setUTCHours(23, 59, 59, 999);\r\n await fetchAppointments({\r\n dateFilterStartDate: moment(startDate).format(),\r\n datefilterEndDate: moment(endDate).format()\r\n }, true)\r\n setOpenViewCalendar(true)\r\n }}\r\n >\r\n {translatorService.Tranlate('APPOINTMENT_CLIENT_SELECTION_OPEN_CALENDAR', 'Open calendar')}\r\n \r\n\r\n
\r\n\r\n );\r\n }\r\n const indexLang = value?.translations?.findIndex((trans: any) => trans?.language === language);\r\n const text = indexLang !== -1 ? value?.translations[indexLang]?.name : value?.displayName;\r\n return
\r\n \r\n
\r\n }\r\n }\r\n }\r\n ];\r\n return columns;\r\n };\r\n\r\n const options = {\r\n filter: false,\r\n search: false,\r\n sort: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(translatorService),\r\n elevation: 0,\r\n pagination: false,\r\n };\r\n\r\n return (\r\n \r\n \r\n {renderModal()}\r\n {openRescheduleModal ? {\r\n changeStatus(statusList.RESCHEDULED.id, comment)\r\n setOpenRescheduleCalendarModal(false);\r\n setOpenRescheduleCalendarModal(false);\r\n }}\r\n calendarText= {translatorService.Tranlate('APPOINTMENT_RESCHEDULE_MESSAGE', 'Select a new date for scheduling')}\r\n buttonText={translatorService.Tranlate('APPOINTMENT_DETAILS_RESCHEDULE_BUTTON', 'Reschedule')}\r\n />:null}\r\n {renderRescheduleCalendarModal()}\r\n \r\n );\r\n};\r\n\r\n\r\n\r\n\r\nexport default AppointmentClientSelectionDetails;\r\n","import React from 'react';\r\nimport { useAppSelector } from '../../store/configureStore';\r\nimport { Box, Button, Grid, IconButton, Modal, TextField, Typography } from '@material-ui/core';\r\n// Components\r\nimport CarDetails from './CarDetails';\r\nimport JobDetails from './JobDetails';\r\nimport JobsMultipleSelection from './JobsMultipleSelection';\r\nimport ContactForm from './ContactForm';\r\nimport moment from 'moment';\r\nimport { getHour, getStatusData } from '../../utils/appointments';\r\nimport { AppointmentType, ChangeAppointmentStatusPayload } from '../../types/Agenda';\r\nimport { changeAppointmentStatus } from '../agenda/agenda.requests';\r\nimport { ContactFormData } from '../agenda/agenda.types';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\nimport AppointmentClientSelectionDetails from './AppointmentClientSelectionDetails';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\n\r\nconst AppointmentDetails = ({appointment, setIsLoading, getSelectedAppointment}:{appointment?:AppointmentType , setIsLoading:any, getSelectedAppointment: any}) => {\r\n const [date, setDate] = React.useState(null);\r\n const [hour, setHour] = React.useState(null);\r\n const [contactFormData, setContactFormData] = React.useState(null);\r\n const [comment, setComment] = React.useState('');\r\n const statusList = useAppSelector((state)=>state.agenda?.statusList)\r\n const language = useAppSelector((state) => state.app?.language)\r\n const [openCommentModal, setOpenCommentModal] = React.useState(false);\r\n const translatorService = new TranslatorService();\r\n\r\n const renderLastStatus = () =>{\r\n const { text, color } = getStatusData(appointment?.appointmentStatus?.code || '', statusList, language || 'ro');\r\n return \r\n
\r\n \r\n \r\n {text}\r\n \r\n \r\n
\r\n {appointment?.appointmentStatus?.code !== statusList?.CANCELED?.code && !appointment?.hideCancelButton ? setOpenCommentModal(true)}\r\n >\r\n {translatorService.Tranlate('APPOINTMENT_CLIENT_SELECTION_CANCEL', 'Cancel')}\r\n :<>}\r\n
\r\n }\r\n\r\n const changeStatus = async (status: number, comment?:string) => {\r\n setIsLoading(true)\r\n if (!appointment) {\r\n setIsLoading(false)\r\n return;\r\n }\r\n\r\n const payload: ChangeAppointmentStatusPayload = {\r\n appointmentId: appointment?.id,\r\n statusId: status,\r\n comment:comment\r\n }\r\n\r\n if (status === statusList.RESCHEDULED.id) {\r\n const finalDate = date;\r\n const splitHour = hour != null ? hour.split(':') : null;\r\n if (finalDate && splitHour) {\r\n finalDate.setHours(parseInt(splitHour[0]));\r\n finalDate.setMinutes(parseInt(splitHour[1]));\r\n payload.date = moment(finalDate).format();\r\n }\r\n }\r\n\r\n const res = await changeAppointmentStatus(payload)\r\n\r\n if (res.error) {\r\n setIsLoading(false)\r\n return;\r\n }\r\n\r\n\r\n getSelectedAppointment(true);\r\n setIsLoading(false);\r\n }\r\n\r\n React.useEffect(() => {\r\n if(appointment?.date){\r\n setDate(new Date(appointment.date))\r\n setHour(getHour(new Date(appointment.date)))\r\n setContactFormData({\r\n firstName: appointment?.appointmentClient?.firstName || '',\r\n lastName: appointment?.appointmentClient?.lastName || '',\r\n phoneNo: appointment?.appointmentClient?.phone || '',\r\n email: appointment?.appointmentClient?.email || '',\r\n username: appointment?.appUsername || '',\r\n personTypeId: appointment?.appointmentClient?.personTypeId || 1,\r\n personType: appointment?.appointmentClient?.personType || null,\r\n companyName: appointment?.appointmentClient?.companyName || '',\r\n companyNumber: appointment?.appointmentClient?.companyNumber || ''\r\n })\r\n }\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n if(appointment?.date){\r\n setDate(new Date(appointment.date));\r\n setHour(getHour(new Date(appointment.date)));\r\n }\r\n }, [appointment?.date]);\r\n\r\n const renderCancelForm = () => {\r\n return (\r\n {\r\n changeStatus(statusList.CANCELED.id, comment);\r\n setOpenCommentModal(false)\r\n }}\r\n > \r\n
\r\n \r\n {translatorService.Tranlate('APPOINTMENT_ADD_SERVICE_COMMENT_INFO', 'This message will be displayed to the user')}\r\n \r\n setComment(e.target.value)}\r\n validators={['required']}\r\n errorMessages={[\r\n translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={translatorService.Tranlate('APPOINTMENT_COMMENT', \"Comment\")}\r\n />\r\n
\r\n
\r\n \r\n {translatorService.Tranlate('APPOINTMENT_CLIENT_SEND', 'Send')}\r\n \r\n
\r\n \r\n );\r\n }\r\n\r\n const addComment = () => {\r\n return (\r\n
\r\n { setOpenCommentModal(false); }}>\r\n
\r\n
\r\n { setOpenCommentModal(false); }}>\r\n \r\n \r\n
\r\n \r\n {translatorService.Tranlate('APPOINTMENT_ADD_SERVICE_COMMENT_TITLE', 'Add service comment')}\r\n \r\n {renderCancelForm()}\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n return (
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n {translatorService.Tranlate('APPOINTMENT_CAR_TITLE', 'Car')}\r\n \r\n {appointment?.vehicle && }\r\n \r\n
\r\n {contactFormData ?
\r\n \r\n
: null}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n {translatorService.Tranlate('APPOINTMENT_LAST_STATUS', 'Last status:')}\r\n \r\n {renderLastStatus()}\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n {translatorService.Tranlate('APPOINTMENT_CLIENT_DATE_SELECTIONS', 'Client Selections + Reschedule')}\r\n \r\n {\r\n setIsLoading(true);\r\n getSelectedAppointment(true);\r\n }\r\n }\r\n caseId={appointment?.caseId || null}\r\n appointmentCategoryType={appointment?.appointmentCategoryType || null}\r\n setIsLoading={setIsLoading}\r\n />\r\n \r\n {addComment()}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AppointmentDetails;\r\n","import React, { Fragment, useEffect, useState } from 'react';\r\nimport { Box, CardContent} from '@material-ui/core';\r\nimport { Card } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport { AppointmentHistoryType } from '../../types/Agenda';\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\nimport { useAppSelector } from '../../store/configureStore';\r\n\r\nconst AppointmentHistory = ({ appointmentHistory, isLoading }: { appointmentHistory?: AppointmentHistoryType[], isLoading: boolean}) => {\r\n const translatorService = new TranslatorService();\r\n const language = useAppSelector((state)=>state.app?.language);\r\n const longDateFormat = useAppSelector((state)=>state.app?.longDateFormat);\r\n\r\n const checkDate = (a, b) => {\r\n const dataA = new Date(a.date).getTime();\r\n const dataB = new Date(b.date).getTime();\r\n if (dataA > dataB) {\r\n return -1;\r\n } else if (dataA < dataB) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n const showTimeline = () => {\r\n if (appointmentHistory?.length === 0 || !appointmentHistory) {\r\n return (\r\n \r\n {translatorService.Tranlate(\r\n 'TARIFF_EDIT_LABOR_TAB_NO_DATA',\r\n 'Nu exista date de afisat!'\r\n )}\r\n \r\n );\r\n }\r\n\r\n const getTranslations = (status:any) =>{\r\n console.log(status.translations, language)\r\n const indexLang = status.translations.findIndex((trans: any) => trans.language === language);\r\n return indexLang !== -1 ? status.translations[indexLang].name : status.name;\r\n }\r\n\r\n return <>{appointmentHistory.sort(checkDate).map((appointmenObj: AppointmentHistoryType) => (\r\n
\r\n
\r\n
\r\n

\r\n {getTranslations(appointmenObj.appointmentStatus) + ' (' + appointmenObj?.user?.userName + ')'}\r\n

\r\n

{appointmenObj.comment}

\r\n

\r\n {moment\r\n .utc(appointmenObj?.date)\r\n .local()\r\n .format(longDateFormat)}\r\n

\r\n
\r\n
\r\n ))}\r\n };\r\n\r\n return (\r\n {!isLoading ? (\r\n \r\n \r\n \r\n
\r\n
\r\n {' '}\r\n {showTimeline()}{' '}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nexport default AppointmentHistory;\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n AppState\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n CardContent,\r\n Button,\r\n IconButton,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n Box,\r\n Dialog,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { Card, CardFooter } from 'reactstrap';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport { AttachmentTypeCode, ReferentialCode } from '../../helpers/Constants';\r\nimport VisibilityIcon from '@material-ui/icons/Visibility';\r\nimport DescriptionIcon from '@material-ui/icons/Description';\r\nimport FileSaver from 'file-saver';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-ignore\r\nimport FileViewer from 'react-file-viewer';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport GetAppIcon from '@material-ui/icons/GetApp';\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-ignore\r\nimport 'react-html5-camera-photo/build/css/index.css';\r\nimport _, { at } from 'lodash';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport { CaseAttachment, CaseSelectedAttachment } from '../../interfaces/Case';\r\n\r\ninterface IAppointmentTabDocumentsFormState {\r\n appointmentAttachments: CaseAttachment[];\r\n attachmentTypeList: IReferential[];\r\n isLoading: boolean;\r\n hasRights: boolean;\r\n executing: boolean;\r\n isDialogOpen: boolean;\r\n previewAttachFile: any;\r\n previewAttachFileExtension: string;\r\n isOpen: boolean;\r\n dialogVisible: boolean;\r\n selectedAttachment: CaseSelectedAttachment;\r\n}\r\n\r\nexport interface ExternalAppointmentTabDocumentsFormProps {\r\n appointmentId: number;\r\n}\r\n\r\ntype IAppointmentTabDocumentsFormProps = ExternalAppointmentTabDocumentsFormProps & {\r\n appState: AppState;\r\n} & ProviderContext;\r\nexport const imageExtensions = ['png', 'jpeg', 'jpg', 'bmp'];\r\n\r\nclass AppointmentTabDocumentsForm extends React.PureComponent<\r\n IAppointmentTabDocumentsFormProps,\r\n IAppointmentTabDocumentsFormState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n private organizationService!: IOrganizationService;\r\n static contextType = ApplicationContext;\r\n state = {\r\n appointmentAttachments: [],\r\n attachmentTypeList: [],\r\n isLoading: false,\r\n hasRights: false,\r\n executing: false,\r\n isDialogOpen: false,\r\n previewAttachFile: '',\r\n previewAttachFileExtension: '',\r\n showUploadMessage: false,\r\n isOpen: false,\r\n dialogVisible: false,\r\n selectedAttachment: {\r\n id: -1,\r\n fileName: ''\r\n }\r\n } as IAppointmentTabDocumentsFormState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadAppointmentDocumentsForm();\r\n }\r\n );\r\n }\r\n\r\n loadAppointmentDocumentsForm = async () => {\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.AttachmentType\r\n );\r\n const [attachmentTypes] = await Promise.all([\r\n (await (this.appReferentialService.Get(ref!.baseUrl))).filter(x => x.code == AttachmentTypeCode.OTHER)\r\n ]);\r\n\r\n const appointmentAttachments = await this.caseService.GetAppointmentAttachments(\r\n this.props.appointmentId,\r\n attachmentTypes.map((item) => item!.code!)\r\n )\r\n \r\n this.setState({\r\n appointmentAttachments: appointmentAttachments.sort(function (a: any, b: any) {\r\n return b.uploadDate - a.uploadDate;\r\n }),\r\n attachmentTypeList: attachmentTypes.map((item) => ({...item, isLoading: false})),\r\n isLoading: false,\r\n hasRights: false\r\n });\r\n };\r\n\r\n setAttachmentTypeList = (attachmentType: IReferential, value: boolean) => {\r\n const attachmentTypeList = _.cloneDeep(this.state.attachmentTypeList);\r\n for (let i = 0; i < attachmentTypeList.length; i++) {\r\n if (attachmentTypeList[i].id === attachmentType.id) {\r\n attachmentTypeList[i].isLoading = value;\r\n }\r\n }\r\n\r\n return attachmentTypeList;\r\n };\r\n\r\n handleCloseConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n\r\n handleOpenConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: true,\r\n dialogVisible: true\r\n });\r\n };\r\n\r\n handleCloseModal = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n\r\n handlePreviewAttachment = async (originalFileName: string, filename: string) => {\r\n try {\r\n const fileBlob = await this.caseService.GetCaseAttachment(filename);\r\n const url = URL.createObjectURL(fileBlob);\r\n const extension = originalFileName.split('.').pop();\r\n\r\n if (isNullOrUndefined(extension)) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n previewAttachFile: url,\r\n previewAttachFileExtension: extension!.toLowerCase(),\r\n isDialogOpen: true\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n renderPreviewAttachment = () => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n renderPreviewImage = (file: any, fileName: string) => {\r\n const url = URL.createObjectURL(file);\r\n\r\n return {fileName};\r\n };\r\n\r\n renderAttachments = (attachmentType: IReferential) => {\r\n const attachments = this.state.appointmentAttachments.filter(\r\n (item) => item.attachmentTypeId === attachmentType.id\r\n );\r\n const attachmentsToRender = [] as any[];\r\n\r\n attachments.forEach((attach, index) => {\r\n attachmentsToRender.push(\r\n \r\n \r\n \r\n
\r\n \r\n this.handlePreviewAttachment(attach.originalFileName, attach.fileName)\r\n }\r\n >\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n this.downloadFile(attach.fileName, attach.originalFileName)}\r\n >\r\n {attach.originalFileName}\r\n {' '}\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n this.downloadFile(attach.fileName, attach.originalFileName)}\r\n >\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n });\r\n return attachmentsToRender;\r\n };\r\n\r\n downloadFile = async (fileName: string, origFileName: string) => {\r\n const fileBlob = await this.caseService.GetCaseAttachment(fileName);\r\n FileSaver.saveAs(fileBlob, origFileName);\r\n };\r\n\r\n renderAttachmentTypes = () => {\r\n const attachmentTypes = [] as any[];\r\n const attachmentTypeList = this.state.attachmentTypeList;\r\n if (attachmentTypeList.length !== 0) {\r\n attachmentTypeList.forEach((attach, index) => {\r\n attach.fileInputKey = Date.now();\r\n attachmentTypes.push(\r\n
\r\n \r\n
\r\n
\r\n \r\n {attach!.displayName}\r\n item.attachmentTypeId === attach.id\r\n ).length === 0\r\n }\r\n onClick={(e) => {\r\n this.downloadBasedOnAttachmentType(attach);\r\n }}\r\n >\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n {!attach.isLoading ? (\r\n
\r\n {this.state.appointmentAttachments.filter(\r\n (item) => item.attachmentTypeId === attach.id\r\n ).length !== 0 ? (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
{this.renderAttachments(attach)}
\r\n
\r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n });\r\n }\r\n return attachmentTypes;\r\n };\r\n\r\n downloadBasedOnAttachmentType = async (item: IReferential) => {\r\n this.setState({\r\n attachmentTypeList: this.setAttachmentTypeList(item, true)\r\n });\r\n\r\n const fileBlob = await this.caseService.GetAppointmentAttachmentsArchive(\r\n this.props.appointmentId,\r\n [item.code!]\r\n );\r\n\r\n this.setState({\r\n attachmentTypeList: this.setAttachmentTypeList(item, false)\r\n });\r\n \r\n FileSaver.saveAs(\r\n fileBlob,\r\n this.props.appointmentId + '_' + item!.displayName + '.zip'\r\n );\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState({\r\n isDialogOpen: false\r\n });\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n
\r\n
{this.renderAttachmentTypes()}
\r\n
\r\n ) : null}\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {this.translatorService.Tranlate('CASE_PREVIEW_DOC', 'Previzualizare document')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderPreviewAttachment()}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalAppointmentTabDocumentsFormProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null,\r\n mergeProps\r\n)(withSnackbar(AppointmentTabDocumentsForm as any));\r\n","import React, { Fragment, useState } from 'react';\r\nimport { useAppDispatch, useAppSelector } from '../../store/configureStore';\r\nimport { AGENDA_SET_STATUS_LIST } from '../../store/actions/ActionTypes';\r\nimport { Box, Button, IconButton, Tab, Tabs } from '@material-ui/core';\r\nimport { Card } from 'reactstrap';\r\n// Components\r\nimport { getStatusList } from '../../utils/appointments';\r\nimport { AppointmentHistoryType, AppointmentStatusType, AppointmentType } from '../../types/Agenda';\r\nimport { getAppointment } from '../agenda/agenda.requests';\r\nimport { useHistory, useParams } from 'react-router';\r\nimport Loader from '../Loader';\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\nimport { PageTitle } from '../../layout-components';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport { AppUserService } from '../../services/AppUserService';\r\nimport { useSnackbar } from 'notistack';\r\nimport AppointmentDetails from './AppointmentDetails';\r\nimport AppointmentHistory from './AppointmentHistory';\r\nimport { CreateNewFolder, Folder } from '@material-ui/icons';\r\nimport { NewCaseAppointment } from '../agenda/NewCaseAppointment';\r\nimport AppointmentTabDocumentsForm from './AppointmentTabDocumentsForm';\r\n\r\nconst AppointmentPage = () => {\r\n const [isLoading, setIsLoading] = React.useState(false);\r\n const { id } = useParams();\r\n const history = useHistory();\r\n const dispatch = useAppDispatch();\r\n const { enqueueSnackbar } = useSnackbar();\r\n const translatorService = new TranslatorService();\r\n const statusList = useAppSelector((state) => state.agenda?.statusList)\r\n const [appointment, setAppointment] = React.useState();\r\n const [selectedTab, setSelectedTab] = useState(0)\r\n const [appointmentHistory, setAppointmentHistory] = useState>()\r\n const [appointmentId, setAppointmentId] = useState(null);\r\n\r\n const loadAppointmentStatusHistory = async (appointmentHistoryList?:Array) => {\r\n if (!appointmentHistoryList) {\r\n return;\r\n }\r\n const appUserServiceInstance = new AppUserService();\r\n const futureAppointmentHistory: Array = [];\r\n appointmentHistoryList?.forEach(async (appointmentObj:AppointmentHistoryType)=>{\r\n const user = await appUserServiceInstance.GetUserInfo(appointmentObj.userId);\r\n const arrayOfStatus: Array = Object.values(statusList);\r\n const desiredStatus: AppointmentStatusType | undefined = arrayOfStatus.find((status: any) => status.id === appointmentObj.appointmentStatusId);\r\n futureAppointmentHistory.push({\r\n ...appointmentObj,\r\n user:user,\r\n appointmentStatus:desiredStatus\r\n })\r\n })\r\n setAppointmentHistory(futureAppointmentHistory);\r\n };\r\n\r\n const getSelectedAppointment = async () =>{\r\n const res = await getAppointment(id);\r\n const appointment = res.data as AppointmentType\r\n if(res.error || !appointment){\r\n setIsLoading(false);\r\n return;\r\n }\r\n loadAppointmentStatusHistory(appointment?.appointmentStatusHistories);\r\n setAppointment(appointment);\r\n setIsLoading(false);\r\n }\r\n\r\n React.useEffect(() => {\r\n if(!statusList.INITIATA){\r\n getStatusList(setIsLoading, (value:any)=>{\r\n dispatch({\r\n type: AGENDA_SET_STATUS_LIST,\r\n payload: value,\r\n });\r\n }, enqueueSnackbar)\r\n }else if (id) {\r\n setIsLoading(true);\r\n getSelectedAppointment();\r\n }\r\n }, [statusList]);\r\n\r\n const onTabChange = (event: any, newValue: number) => {\r\n setSelectedTab(newValue);\r\n };\r\n\r\n\r\n return (\r\n <>{isLoading ? :\r\n {history.push('/agenda')}}\r\n actionButton={appointment && appointment?.appointmentStatus?.code === statusList.PAYMENT_CONFIRMATION?.code || appointment?.caseId ?\r\n {\r\n if (appointment?.caseId) {\r\n history.push('/cases/' + appointment?.caseId, 'Case xx');\r\n }\r\n else {\r\n setAppointmentId(appointment?.id);\r\n }\r\n }}\r\n >\r\n {appointment?.caseId ? : }\r\n {appointment?.caseId ? translatorService.Tranlate('APPOINTMENT_VIEW_CASE', 'Vezi dosar') : translatorService.Tranlate('APPOINTMENT_CREATE_CASE', 'Creeaza dosar') }\r\n : null}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {appointmentId ? setAppointmentId(null)} /> : null}\r\n
\r\n }\r\n );\r\n};\r\n\r\nexport default AppointmentPage;\r\n","import React, { useEffect, useState } from 'react';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { Typography, Box } from '@material-ui/core';\r\nimport { getCarListRequest } from '../agenda/agenda.requests';\r\nimport { Car } from '../agenda/agenda.types';\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\n\r\ninterface CarAutocompleteProps {\r\n value: Car |null\r\n onChange: (event: React.ChangeEvent, newValue: Car | null) => void;\r\n error?: boolean\r\n}\r\n\r\nconst CarAutocomplete: React.FC = ({value, onChange, error }) => {\r\n const [cars, setCars] = useState([]);\r\n const translatorService = new TranslatorService();\r\n\r\n const getCarList = async () => {\r\n const response = await getCarListRequest();\r\n const responseData = response.data as Car[];\r\n const mappedCars: Car[] = responseData?.map((carData) => {\r\n return {\r\n vin: carData?.vin,\r\n plateNumber: carData?.plateNumber,\r\n numberOfKilometers: carData?.numberOfKilometers,\r\n firstPlateDate: carData?.firstPlateDate,\r\n model: {\r\n name: carData?.model?.name,\r\n brand: carData?.model?.brand,\r\n carBody: carData?.model?.carBody,\r\n description: carData?.model?.description\r\n // TODO: add other properties\r\n }\r\n };\r\n });\r\n\r\n if (value && value.addManual) {\r\n setCars([...mappedCars, value])\r\n } else {\r\n setCars(mappedCars);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if(cars?.length ===0 || value?.addManual){\r\n getCarList();\r\n } \r\n }, [value]);\r\n \r\n return (\r\n \r\n \r\n {translatorService.Tranlate('APPOINTMENT_CAR_TITLE', 'Car')}\r\n \r\n \r\n car.plateNumber ?? ''}\r\n onChange={onChange}\r\n value={value}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default CarAutocomplete;\r\n","import React, { ChangeEvent } from 'react';\r\nimport { Box, Typography, TextField } from '@material-ui/core';\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\n\r\ninterface MileageInputProps {\r\n onChange: (mileage: string) => void;\r\n error?:boolean\r\n}\r\n\r\nconst MileageInput: React.FC = ({ onChange, error }) => {\r\n const translatorService = new TranslatorService();\r\n const handleMileageChange = (event: ChangeEvent) => {\r\n onChange(event.target.value);\r\n };\r\n\r\n return (\r\n \r\n \r\n Mileage (km)\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MileageInput;\r\n","import React, { useState } from 'react';\r\nimport {\r\n Dialog,\r\n DialogContent,\r\n DialogTitle,\r\n DialogActions,\r\n Button,\r\n TextField\r\n} from '@material-ui/core';\r\nimport { Client } from '../agenda/agenda.types';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\n\r\ninterface AddNewClientModalProps {\r\n open: boolean;\r\n onClose: () => void;\r\n onSave: (client:Client) => void;\r\n}\r\n\r\nconst initialState = {\r\n firstName: '',\r\n lastName: '',\r\n phone: '',\r\n email: '',\r\n}\r\n\r\ninterface FormType extends Client{\r\n [key: string]: any;\r\n}\r\n\r\nconst AddNewClientModal: React.FC = ({ open, onClose, onSave }) => {\r\n const [formData, setFormData] = useState({...initialState});\r\n const [formError,setFormError] = useState({...initialState});\r\n const translatorService = new TranslatorService()\r\n\r\n const handleChange = (e: React.ChangeEvent) => {\r\n const { name, value } = e.target;\r\n setFormData((prevData) => ({\r\n ...prevData,\r\n [name]: value,\r\n }));\r\n };\r\n\r\n const closeModal = ( )=>{\r\n onClose();\r\n setFormError({...initialState})\r\n setFormData({ ...initialState })\r\n }\r\n\r\n const handleSave = () => {\r\n const payload = { ...formData, personTypeId:1}\r\n onSave(payload)\r\n closeModal()\r\n };\r\n\r\n const validateForm = () =>{\r\n const errors = {...formError};\r\n let canContinue = true\r\n for (const key in formData) {\r\n if (formData.hasOwnProperty(key) && !formData[key]) {\r\n canContinue = false;\r\n errors[key] = translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n )\r\n }else{\r\n errors[key] = ''\r\n }\r\n }\r\n if(canContinue){\r\n handleSave();\r\n }else{\r\n setFormError(errors)\r\n }\r\n\r\n }\r\n\r\n return (\r\n \r\n Add new client\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AddNewClientModal;","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nexport const LinkButton = ({ onClickMethod, text }: {onClickMethod:()=>void, text:string}) => {\r\n return (\r\n \r\n );\r\n};\r\n","import { useContext, useState } from 'react';\r\nimport {\r\n Dialog,\r\n DialogContent,\r\n DialogTitle,\r\n Button,\r\n IconButton,\r\n} from '@material-ui/core';\r\nimport { Car } from '../agenda/agenda.types';\r\nimport { isNullOrUndefined } from 'util';\r\nimport React from 'react';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport { Model, ModelData } from '../../interfaces/Case';\r\nimport Form from '@rjsf/material-ui';\r\nimport { IChangeEvent, ISubmitEvent } from '@rjsf/core';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { GTErrorCode, ReferentialCode } from '../../helpers/Constants';\r\nimport Referentials from '../../helpers/Referentials.json';\r\nimport * as R from 'ramda';\r\nimport Loader from '../Loader';\r\nimport { useSnackbar } from 'notistack';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\n\r\nconst FORM_JSON = {\r\n type: \"object\",\r\n required:['plateNumber', 'vin', 'brandId', 'modelId'],\r\n properties: {\r\n plateNumber: {\r\n type: \"string\",\r\n title: \"Plate Number\",\r\n tag: \"FRM_CAR_DATA_PLATE_NUMBER\"\r\n },\r\n vin: {\r\n type: \"string\",\r\n title: \"Vin\",\r\n tag: \"FRM_CAR_DATA_VIN\",\r\n minLength: 17,\r\n maxLength: 17\r\n\r\n },\r\n brandId: {\r\n type: \"number\",\r\n title: \"Brand\",\r\n tag: \"FRM_CAR_DATA_BRAND\",\r\n anyOf: [\r\n {\r\n type: \"number\",\r\n title: \"CAR_BRAND_ENUM\",\r\n enum: [\r\n 1\r\n ]\r\n }\r\n ]\r\n },\r\n modelId: {\r\n type: \"number\",\r\n title: \"Model\",\r\n tag: \"FRM_CAR_DATA_MODEL\",\r\n anyOf: [\r\n {\r\n type: \"number\",\r\n title: \"CAR_MODEL_ENUM\",\r\n enum: [\r\n 1\r\n ]\r\n }\r\n ]\r\n }\r\n }\r\n}\r\n\r\ninterface AddNewCarModalProps {\r\n open: boolean;\r\n onClose: () => void;\r\n onSave: (vehicle:Car) => void;\r\n}\r\n\r\ninterface FormType {\r\n plateNumber:string;\r\n vin:string;\r\n brandId:number;\r\n modelId?:number;\r\n modelList:Model[],\r\n brandList:IReferential[]\r\n}\r\n\r\nconst AddNewCarModal: React.FC = ({ open, onClose, onSave }) => {\r\n const [formData, setFormData] = useState({} as FormType);\r\n const { enqueueSnackbar } = useSnackbar();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isDialogOpen, setIsDialogOpen] = useState(false);\r\n const [modelData, setModelData] = useState([]);\r\n const [selectedModelData, setSelectedModelData] = useState();\r\n const context = useContext(ApplicationContext);\r\n\r\n const loadData = async () => {\r\n setIsLoading(true);\r\n const refCarBrand = Referentials.referential.find(\r\n (item) => item?.code === ReferentialCode.CarBrands\r\n );\r\n\r\n const futureBrandList = await context.referentialService.Get(refCarBrand!.baseUrl)\r\n let futureModelList: Model[] = [];\r\n futureModelList = await context.caseService.GetCarModelsByBrand(futureBrandList[0].id);\r\n setFormData((prevState) => ({\r\n ...prevState,\r\n modelList: futureModelList,\r\n brandList:futureBrandList\r\n }));\r\n setIsLoading(false)\r\n };\r\n React.useEffect(()=>{\r\n loadData()\r\n },[])\r\n\r\n const closeModal = () => {\r\n onClose();\r\n setFormData({} as FormType)\r\n }\r\n\r\n\r\n const handleArraySchema = (schema: any) => {\r\n if (isNullOrUndefined(schema.properties)) {\r\n return schema;\r\n }\r\n\r\n for (const key of Object.keys(schema.properties)) {\r\n if (schema.properties[key].anyOf === undefined) {\r\n continue;\r\n }\r\n if (schema.properties[key].anyOf.length === 0) {\r\n continue;\r\n }\r\n if (\r\n !!formData?.brandList?.length &&\r\n schema.properties[key].anyOf !== undefined &&\r\n schema.properties[key].anyOf.length != 0 &&\r\n schema.properties[key].anyOf[0].title === 'CAR_BRAND_ENUM'\r\n ) {\r\n schema.properties[key].anyOf = formData?.brandList?.map((item) => {\r\n return {\r\n type: 'number',\r\n title: item.displayName,\r\n enum: [item.id]\r\n };\r\n });\r\n }\r\n if (\r\n !!formData?.modelList?.length &&\r\n schema.properties[key].anyOf !== undefined &&\r\n schema.properties[key].anyOf.length != 0 &&\r\n schema.properties[key].tag === 'FRM_CAR_DATA_MODEL'\r\n ) {\r\n const models = formData?.modelList?.map((item) => {\r\n return {\r\n type: 'number',\r\n title: item.displayName,\r\n enum: [item.id]\r\n };\r\n });\r\n schema.properties[key].anyOf = models;\r\n }\r\n }\r\n return schema;\r\n };\r\n\r\n const handleAutocompleteModelDataChange = async (newValue: ModelData | null) => {\r\n setSelectedModelData(newValue);\r\n };\r\n\r\n const renderAddModelForm = () => {\r\n return (\r\n \r\n
\r\n handleAutocompleteModelDataChange(newValue)}\r\n getOptionLabel={(option: ModelData) => option.modelDescription || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n
\r\n
\r\n {setIsDialogOpen(false)}}\r\n >\r\n {context.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n const submitSelectedModelData = async () => {\r\n try {\r\n const model = formData.modelList.find(\r\n (item:Model) => item.code === selectedModelData!.umc\r\n );\r\n if (isNullOrUndefined(model)) {\r\n return;\r\n }\r\n setFormData({\r\n ...formData,\r\n modelId: model.id\r\n })\r\n setIsDialogOpen(false);\r\n\r\n } catch (ex) {\r\n enqueueSnackbar(context.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n const onBlur = async (id: string, value: any) => {\r\n if (id === 'root_vin') {\r\n if (R.test(/^(?=.*[0-9])(?=.*[abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ])[0-9abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ-]{17}$/, value)) {\r\n const result = await context.caseService.DecodeVin(value);\r\n if (result.error !== null) {\r\n if (result.error.errorInfo.code == GTErrorCode.THE_VIN_NUMBER_SENT_DOES_NOT_DECODE_ANY_MODEL) {\r\n enqueueSnackbar(context.translatorService.Tranlate('THE_VIN_NUMBER_SENT_DOES_NOT_DECODE_ANY_MODEL', 'Din păcate autovehiculul selectat nu poate fi identificat în aplicație !'), {\r\n variant: 'warning',\r\n autoHideDuration: 5000\r\n });\r\n }\r\n return;\r\n }\r\n if (result.responseInfo.vehicleInfoDec.modelList.modelData.length === 0) {\r\n return;\r\n }\r\n const makeCode = result.responseInfo.vehicleInfoDec.modelList.modelData[0].makeCode;\r\n const brand = formData?.brandList?.find((item:any) => makeCode.startsWith(item.code!, 0));\r\n if (isNullOrUndefined(brand)) {\r\n return;\r\n }\r\n const futureModelList = await context.caseService.GetCarModelsByBrand(brand.id);\r\n if (result.responseInfo.vehicleInfoDec.modelList.modelData.length > 1) {\r\n enqueueSnackbar(context.translatorService.Tranlate('SELECT_MODEL_DIALOG', 'Va rugam selectati modelul auto!'), {\r\n variant: 'warning',\r\n autoHideDuration: 5000\r\n });\r\n setIsDialogOpen(true);\r\n setFormData((prevState) => {\r\n const newState = {...prevState};\r\n delete newState.modelId;\r\n newState.modelList=[...futureModelList];\r\n newState.brandId= brand.id;\r\n newState.vin= value;\r\n return newState;\r\n });\r\n setModelData(result.responseInfo.vehicleInfoDec.modelList.modelData)\r\n } else {\r\n const model = futureModelList.find(\r\n (item) => item.code === result.responseInfo.vehicleInfoDec.modelList.modelData[0].umc\r\n );\r\n if (isNullOrUndefined(model)) {\r\n setFormData((prevState) => ({\r\n ...prevState,\r\n modelList: [...futureModelList],\r\n brandId: brand.id,\r\n vin: value,\r\n }));\r\n return;\r\n }\r\n setFormData((prevState) => ({\r\n ...prevState,\r\n modelList: [...futureModelList],\r\n brandId: brand.id,\r\n modelId: model.id, \r\n vin: value,\r\n }));\r\n }\r\n } else {\r\n enqueueSnackbar(context.translatorService.Tranlate('INVALID_CAR_VIN_IDENTIFICATOR', \"Te rugăm să te asiguri că seria de șasiu introdusă are 17 caractere alfanumerice și nu conține spații sau literele 'O' sau 'I'!\"), {\r\n variant: 'warning',\r\n autoHideDuration: 6000\r\n });\r\n }\r\n }\r\n };\r\n\r\n const onFormChange = async (e: IChangeEvent) => {\r\n if (\r\n e.formData.brandId !== formData.brandId &&\r\n !isNullOrUndefined(e.formData.brandId)\r\n ) {\r\n const futureModelList = await context.caseService.GetCarModelsByBrand(e.formData.brandId);\r\n const futureFormData = e.formData;\r\n if (futureModelList.length != 0) {\r\n futureFormData.modelId = futureModelList[0].id;\r\n }\r\n setFormData({\r\n ...futureFormData,\r\n modelList: [...futureModelList],\r\n });\r\n return;\r\n }\r\n\r\n setFormData(e.formData)\r\n };\r\n\r\n const onSubmit = (e:any) =>{\r\n const indexModel = formData.modelList.findIndex((model)=>model.id === e.formData.modelId);\r\n const indexBrand = formData.brandList.findIndex((brand)=>brand.id === e.formData.brandId);\r\n onSave({\r\n vin: e?.formData.vin || null,\r\n plateNumber: e?.formData.plateNumber || null,\r\n model:{\r\n brand: indexBrand !== -1 ? formData.brandList[indexBrand].displayName : null,\r\n description: indexModel !== -1 ? formData.modelList[indexModel].description : null,\r\n name: indexModel !== -1 ? formData.modelList[indexModel]?.description?.split('(')[0] :'',\r\n carBody:null\r\n },\r\n firstPlateDate:null,\r\n numberOfKilometers:null,\r\n addManual:true\r\n })\r\n onClose()\r\n }\r\n\r\n const renderFormData = (form: any) => {\r\n const jsonSchema = form;\r\n let schema = context.translatorService.TranslateSchema(jsonSchema);\r\n schema = handleArraySchema(schema);\r\n return (\r\n
\r\n await onFormChange(e)}\r\n onSubmit={async (e: ISubmitEvent) => await onSubmit(e)}\r\n transformErrors={context.translatorService.TranslateErrors}\r\n >\r\n
\r\n \r\n \r\n
\r\n \r\n {isDialogOpen ? (\r\n {setIsDialogOpen(false)}}\r\n aria-labelledby=\"customized-dialog-title\"\r\n open={isDialogOpen}\r\n fullScreen={false}\r\n disableBackdropClick\r\n fullWidth={true}\r\n >\r\n \r\n {context.translatorService.Tranlate('FRM_CAR_DATA_MODEL', 'Model Autovehicul')}\r\n {setIsDialogOpen(false)}}\r\n size={'small'}\r\n >\r\n \r\n \r\n \r\n \r\n {renderAddModelForm()}\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n
\r\n );\r\n };\r\n\r\n return (\r\n \r\n Add new car\r\n \r\n {isLoading && !formData.modelList?.length && !formData.brandList?.length ? : renderFormData(FORM_JSON)}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default AddNewCarModal;","import React, { Fragment, useState } from 'react';\r\nimport { useAppDispatch, useAppSelector } from '../../store/configureStore';\r\nimport { AGENDA_SET_APPOINTMENTS, AGENDA_SET_CATEGORY_TYPE } from '../../store/actions/ActionTypes';\r\nimport { Box, } from '@material-ui/core';\r\nimport { Button } from 'reactstrap';\r\n// Components\r\nimport ClientAutocomplete from './ClientAutocomplete';\r\nimport CarAutocomplete from './CarAutocomplete';\r\nimport CarDetails from './CarDetails';\r\nimport JobDetails from './JobDetails';\r\nimport JobsMultipleSelection from './JobsMultipleSelection';\r\nimport ContactForm from './ContactForm';\r\nimport MileageInput from './MileageInput';\r\nimport moment from 'moment';\r\nimport AddNewClientModal from './AddNewClientModal';\r\nimport { AppointmentCalendar } from './AppointmentCalendar';\r\nimport { getCategoryTypeList, getHour, getHourForAppointment } from '../../utils/appointments';\r\nimport { ResponseAppointmentsData } from '../../types/Agenda';\r\nimport { addAppointment, getAppointmentsRequest } from '../agenda/agenda.requests';\r\nimport { Car, Client, ContactFormData } from '../agenda/agenda.types';\r\nimport { useHistory } from 'react-router';\r\nimport Loader from '../Loader';\r\nimport { TranslatorService } from '../../services/TranslatorService';\r\nimport { PageTitle } from '../../layout-components';\r\nimport { useSnackbar } from 'notistack';\r\nimport { LinkButton } from './LinkButton';\r\nimport AddNewCarModal from './AddNewCarModal';\r\n\r\nconst AddNewAppointmentPage = () => {\r\n const [isLoading, setIsLoading] = React.useState(false);\r\n const history = useHistory();\r\n const dispatch = useAppDispatch();\r\n const { enqueueSnackbar } = useSnackbar();\r\n const translatorService = new TranslatorService();\r\n const selectedRange = useAppSelector((state) => state.agenda?.selectedRange)\r\n const categoryType = useAppSelector((state)=>state.agenda?.categoryType)\r\n const user = useAppSelector((state) => state.app?.user)\r\n const [selectedClient, setSelectedClient] = React.useState(null);\r\n const [selectedCar, setSelectedCar] = React.useState(null);\r\n const [carMileage, setCarMileage] = React.useState('');\r\n const [selectedJobs, setSelectedJobs] = React.useState([]);\r\n const [jobDetails, setJobDetails] = React.useState('');\r\n const [openModal, setOpenModal] = React.useState(false)\r\n const [addCarModal, setAddCarModal] = React.useState(false)\r\n const [date, setDate] = React.useState(new Date());\r\n const [hour, setHour] = React.useState(getHourForAppointment())\r\n const [canContinue, setCanContinue] = useState(true);\r\n const [contactFormData, setContactFormData] = React.useState({\r\n firstName: '',\r\n lastName: '',\r\n phoneNo: '',\r\n email: '',\r\n username: ''\r\n });\r\n\r\n React.useEffect(() => { \r\n if(categoryType?.length === 0){\r\n getCategoryTypeList(setIsLoading, (value: any) => {\r\n dispatch({\r\n type: AGENDA_SET_CATEGORY_TYPE,\r\n payload: value\r\n })\r\n }, enqueueSnackbar)\r\n }\r\n }, []);\r\n\r\n const fetchAppointments = async (filters: any) => {\r\n setIsLoading(true);\r\n\r\n const response = await getAppointmentsRequest(filters);\r\n\r\n const responseData = response.data as ResponseAppointmentsData;\r\n\r\n if (!responseData.appointments) {\r\n return\r\n }\r\n\r\n dispatch({\r\n type: AGENDA_SET_APPOINTMENTS,\r\n payload: responseData.appointments\r\n });\r\n setIsLoading(false);\r\n };\r\n\r\n const handleClientChange = (e: any, newValue: Client | null) => {\r\n setSelectedClient(newValue);\r\n };\r\n\r\n const handleCarChange = (e: any, newValue: Car | null) => {\r\n setSelectedCar(newValue);\r\n };\r\n\r\n const handleMileageChange = (mileage: string) => {\r\n setCarMileage(mileage);\r\n };\r\n\r\n const handelDescriptionChange = (event: React.ChangeEvent) => {\r\n const newValue = event.target.value;\r\n setJobDetails(newValue);\r\n };\r\n\r\n const handleContactFormChange = (formData: ContactFormData) => {\r\n setContactFormData(formData);\r\n };\r\n const getRequestPayload = async () => {\r\n const finalDate = date;\r\n const splitHour = hour.split(':');\r\n const indexCategory = categoryType.findIndex((categoryItem: any) => categoryItem.code ==='EVALUATION')\r\n finalDate.setHours(parseInt(splitHour[0]));\r\n finalDate.setMinutes(parseInt(splitHour[1]))\r\n const payload = {\r\n serviceId: parseInt(user?.profile.organization_id),\r\n appointmentClient: selectedClient,\r\n vehicle: {\r\n vin: selectedCar?.vin || null,\r\n plateNumber: selectedCar?.plateNumber || null,\r\n make: selectedCar?.model.brand || null,\r\n model: selectedCar?.model.description || null,\r\n numberOfKilometers: carMileage,\r\n firstPlateDate: selectedCar?.firstPlateDate || null\r\n },\r\n date: moment(finalDate).format(),\r\n appointmentJobTypes: selectedJobs,\r\n jobDetails: jobDetails,\r\n appFirstName: contactFormData.firstName,\r\n appLastName: contactFormData.lastName,\r\n appEmail: contactFormData.email,\r\n appPhone: contactFormData.phoneNo,\r\n appUsername: contactFormData.username,\r\n appointmentCategoryTypeId: indexCategory !==-1 ? categoryType[indexCategory].id : 0\r\n }\r\n return payload;\r\n }\r\n\r\n const validateForm = () => {\r\n let futureCanContinue = true;\r\n if (!selectedCar || !selectedClient) {\r\n futureCanContinue = false;\r\n }\r\n setCanContinue(futureCanContinue)\r\n if (futureCanContinue) {\r\n saveData();\r\n }\r\n\r\n }\r\n\r\n const saveData = async () => {\r\n const payload = await getRequestPayload();\r\n const res = await addAppointment(payload)\r\n if (res.error) {\r\n return;\r\n }\r\n fetchAppointments({\r\n dateFilterStartDate: selectedRange?.start_date,\r\n datefilterEndDate: selectedRange?.end_date\r\n })\r\n history.goBack();\r\n }\r\n return (<>{isLoading ? :\r\n \r\n { history.push('/agenda') }} />\r\n \r\n \r\n \r\n setOpenModal(true)} text='add new client' />\r\n \r\n \r\n \r\n \r\n \r\n {!selectedCar ? setAddCarModal(true)} text='add new car' /> :null}\r\n \r\n \r\n \r\n {selectedCar && }\r\n \r\n \r\n {\r\n setSelectedJobs(selectedValues);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n\r\n \r\n {translatorService.Tranlate('CASE_COMMENT_SEND', 'Save')}\r\n \r\n \r\n setSelectedClient(client)} open={openModal} onClose={() => { setOpenModal(false) }} />\r\n {addCarModal ? setSelectedCar(car)} open={addCarModal} onClose={() => { setAddCarModal(false) }} /> :null}\r\n \r\n }\r\n );\r\n};\r\n\r\nexport default AddNewAppointmentPage;\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport {\r\n Tooltip,\r\n Box,\r\n Button,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableMeta,\r\n MUIDataTableColumnOptions\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { ICaseService } from '../../../services/Interfaces/ICaseService';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport moment from 'moment';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport EditOutlinedIcon from '@material-ui/icons/EditOutlined';\r\nimport * as R from 'ramda';\r\nimport { MaintenanceProducer } from '../../../interfaces/Case';\r\n\r\ninterface IMaintenanceProducerComponentState {\r\n newMaintenanceProducer: MaintenanceProducer;\r\n maintenancePackageList: IReferential[];\r\n maintenanceProducerList: MaintenanceProducer[];\r\n isLoading: boolean;\r\n isDialogOpen: boolean;\r\n newMaintenanceProducerId: number | null;\r\n countryList: IReferential[];\r\n}\r\ntype IMaintenanceProducerComponentProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\nclass MaintenanceProducerComponent extends React.PureComponent<\r\n IMaintenanceProducerComponentProps,\r\n IMaintenanceProducerComponentState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private appReferentialService!: IReferentialService;\r\n static contextType = ApplicationContext;\r\n private newMaintenanceProducer = {\r\n id: 0,\r\n countryId: 0,\r\n country: null,\r\n countryCode: '',\r\n maintenancePackageId: 0,\r\n maintenancePackage: null,\r\n producer: ''\r\n } as MaintenanceProducer;\r\n\r\n state = {\r\n maintenanceProducerList: [],\r\n isLoading: false,\r\n selectedFilter: 0,\r\n isDialogOpen: false,\r\n newMaintenanceProducer: this.newMaintenanceProducer,\r\n maintenancePackageList: [],\r\n newMaintenanceProducerId: null,\r\n countryList: [] as IReferential[]\r\n } as IMaintenanceProducerComponentState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadMaintenanceProducerList();\r\n }\r\n );\r\n }\r\n\r\n loadMaintenanceProducerList = async () => {\r\n const maintenanceProducerList = await this.caseService.MaintenanceProducerList();\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.MaintenancePackage\r\n );\r\n const countryRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.Country\r\n );\r\n const [maintenancePackageList, countryList] = await Promise.all([\r\n await this.appReferentialService.Get(ref!.baseUrl),\r\n this.appReferentialService.Get(countryRef!.baseUrl)\r\n ]);\r\n\r\n maintenanceProducerList.forEach(item => {\r\n const maintenancePackage = maintenancePackageList.find(packageItem => !R.isNil(item.maintenancePackageId) && packageItem.id === item.maintenancePackageId);\r\n const country = countryList.find(countryItem => !R.isNil(item.countryId) && countryItem.id === item.countryId);\r\n item.country = R.isNil(country) ? null : country;\r\n item.maintenancePackage = R.isNil(maintenancePackage) ? null : maintenancePackage;\r\n }); \r\n\r\n this.setState({\r\n maintenanceProducerList: maintenanceProducerList,\r\n isLoading: false,\r\n maintenancePackageList: maintenancePackageList,\r\n newMaintenanceProducer: { ...this.newMaintenanceProducer },\r\n countryList: countryList\r\n });\r\n };\r\n private handleCountryChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n newMaintenanceProducer: {\r\n ...this.state.newMaintenanceProducer,\r\n country: newValue,\r\n countryId: newValue !== null ? newValue!.id : 0,\r\n countryCode: newValue !== null ? newValue!.code ?? '' : ''\r\n }\r\n });\r\n };\r\n private handleMaintenancePackageChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n newMaintenanceProducer: {\r\n ...this.state.newMaintenanceProducer,\r\n maintenancePackage: newValue,\r\n maintenancePackageId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n private handleProducerChange = (value: string) => {\r\n this.setState({\r\n newMaintenanceProducer: {\r\n ...this.state.newMaintenanceProducer,\r\n producer: value\r\n }\r\n });\r\n };\r\n \r\n\r\n public saveMaintenanceProducer = async () => {\r\n if (this.state.newMaintenanceProducerId === null) {\r\n try {\r\n await this.caseService.AddMaintenanceProducer(this.state.newMaintenanceProducer);\r\n await this.loadMaintenanceProducerList();\r\n this.closeDialog();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n } else {\r\n try {\r\n await this.caseService.UpdateMaintenanceProducer(this.state.newMaintenanceProducer);\r\n await this.loadMaintenanceProducerList();\r\n this.closeDialog();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n this.handleCountryChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n this.handleMaintenancePackageChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n this.handleProducerChange(e.target.value)}\r\n label={this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_PRODUCER_HEADER',\r\n 'Producator'\r\n )}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'country',\r\n label: this.translatorService.Tranlate('ORGANIZATIONS_COUNTRY_HEADER', 'Tara'),\r\n options: {\r\n sort: true,\r\n customSort: (a: IReferential, b: IReferential) => {\r\n debugger;\r\n return a.name!.localeCompare(b.name!);\r\n },\r\n customBodyRender: (value: IReferential) => {\r\n return value ? value.displayName : '';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'maintenancePackage',\r\n label: this.translatorService.Tranlate(\r\n 'ORGANIZATIONS_TAB_MAINTENANCE_PACKAGE',\r\n 'Pachet Mentenanta'\r\n ),\r\n options: {\r\n sort: true,\r\n customSort: (a: IReferential, b: IReferential) => {\r\n return a.name!.localeCompare(b.displayName!);\r\n },\r\n customBodyRender: (value: IReferential) => {\r\n return value ? value.displayName : '';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'producer',\r\n label: this.translatorService.Tranlate(\r\n 'CALCULATION_DETAILS_PRODUCER_HEADER',\r\n 'Producator'\r\n ) \r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate('USERS_DATE_MODIFICATION_HEADER', 'Data Modificare'),\r\n options: {\r\n filter: false,\r\n sortDirection: 'desc',\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n <>\r\n this.newMaintenanceProducerPopup(tableMeta.rowData[0])}\r\n >\r\n \r\n \r\n this.deleteMaintenanceProducer(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n }];\r\n return columns;\r\n };\r\n\r\n deleteMaintenanceProducer = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n await this.caseService.RemoveMaintenanceProducer(id);\r\n await this.loadMaintenanceProducerList();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n newMaintenanceProducerPopup = async (maintenanceProducerId: number | null) => {\r\n let newMaintenanceProducer: MaintenanceProducer;\r\n if (maintenanceProducerId == null) {\r\n newMaintenanceProducer = { ...this.state.newMaintenanceProducer } as MaintenanceProducer;\r\n } else {\r\n newMaintenanceProducer = this.state.maintenanceProducerList.find((item) => item.id === maintenanceProducerId)!;\r\n }\r\n this.setState({\r\n isDialogOpen: true,\r\n newMaintenanceProducer: newMaintenanceProducer,\r\n newMaintenanceProducerId: maintenanceProducerId\r\n });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState(\r\n { \r\n isDialogOpen: false, \r\n newMaintenanceProducer: this.newMaintenanceProducer \r\n }\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n // responsive: \"stacked\",\r\n customToolbar: () => {\r\n return (\r\n \r\n this.newMaintenanceProducerPopup(null)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n {this.state.isDialogOpen ? (\r\n \r\n \r\n \r\n \r\n \r\n {!this.state.newMaintenanceProducerId ? \r\n this.translatorService.Tranlate(\r\n 'MAINTENANCE_PRODUCER_ADD_MODAL_TITLE',\r\n 'Adauga Producator Mentenanta'\r\n ) : this.translatorService.Tranlate(\r\n 'MAINTENANCE_PRODUCER_UPDATE_MODAL_TITLE',\r\n 'Actualizeaza Producator Mentenanta'\r\n )} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(MaintenanceProducerComponent as any));","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n ApplicationState,\r\n CaseSettingsState,\r\n AppState,\r\n CaseSettingsActionCreators,\r\n VehicleState\r\n} from '../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Button,\r\n Grid,\r\n Card,\r\n CardContent,\r\n FormControlLabel,\r\n Switch,\r\n CardMedia,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport {\r\n ValuationExtraOption,\r\n ValuationRequest,\r\n ValuationVehicle,\r\n ValuationVehicleOptions,\r\n ValuationVehicles\r\n} from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport MUIDataTable, { MUIDataTableColumnOptions, SelectableRows } from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport { Label } from 'reactstrap';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport NumberFormat from 'react-number-format';\r\nimport * as R from 'ramda';\r\nimport { IReferential } from '../../interfaces/IReferential';\r\nimport ValuationFiltersWizardContainer from '../cases/ValuationFiltersWizard/ValuationFiltersWizardContainer';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport ImageNotAvailable from '../../assets/images/car-image-not-available.jpg';\r\nimport moment from 'moment';\r\nimport Loader from '../Loader';\r\n\r\ntype ParsedConditions = {\r\n mandatory: number[];\r\n atLeastOne: number[];\r\n};\r\n\r\ninterface ICaseDetailsValuationState {\r\n vehicles: ValuationVehicle[];\r\n isLoading: boolean;\r\n viewOptions: boolean;\r\n selectedVehicle: ValuationVehicle | null;\r\n options: ValuationVehicleOptions | null;\r\n optionCodes: string[];\r\n optionsValue: number;\r\n selectedOptionIndexes: number[];\r\n excludedOptionsIndexes: number[];\r\n includedOptionsIndexes: number[];\r\n requiredOptionsIndexes: number[];\r\n showOtionalRequiredOptions: boolean;\r\n optinalRequiredOptionsIndexes: number[];\r\n isloadingIncludeExcludeOptions: boolean;\r\n tireWear: number;\r\n bodyDamage: number;\r\n hasGpl: boolean;\r\n valuationLoading: boolean;\r\n showWizard: boolean;\r\n hideVehicleSelection: boolean;\r\n kmNo: number;\r\n color: string | null;\r\n showCarTable: boolean;\r\n hideValuationWizzard: boolean;\r\n}\r\n\r\nexport interface ExternalCaseDetailsValuationProps {\r\n vin: string | null;\r\n firstRegistrationDate: Date | null;\r\n onSelectedVehicle?: (selectedVehicle: any, options: string[]) => void;\r\n valuationVehicles?: ValuationVehicle[];\r\n optionCodes?: string[] | null;\r\n brandTypes?: IReferential[];\r\n modelTypes?: IReferential[];\r\n bodyTypes?: IReferential[];\r\n fuelTypes?: IReferential[];\r\n tractionTypes?: IReferential[];\r\n transmissionTypes?: IReferential[];\r\n colorTypes?: IReferential[];\r\n onChangeFirstRegistrationDate?: (date: Date | null) => void;\r\n}\r\n\r\nexport const standardOptionsSchemaIds = [\r\n 301, 2501, 3501, 3601, 23501, 23601, 23701, 23801, 23901, 24001, 31001, 32601, 34801, 38001,\r\n 38701, 38801, 42101, 42901, 44501, 48401, 49001, 50001, 55601, 57901, 58201, 58301, 58401, 58501,\r\n 58601, 59201, 59301, 59801, 63601, 63901\r\n];\r\n\r\ntype ICCaseDetailsValuationProps = ExternalCaseDetailsValuationProps & {\r\n caseSettingsState: CaseSettingsState;\r\n appState: AppState;\r\n vehicleState: VehicleState;\r\n} & typeof CaseSettingsActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string; calcId: string | undefined; formId: string | undefined }>;\r\n\r\nclass DetailsValuation extends React.PureComponent<\r\n ICCaseDetailsValuationProps,\r\n ICaseDetailsValuationState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n\r\n static contextType = ApplicationContext;\r\n state = {\r\n isLoading: true,\r\n vehicles: [],\r\n viewOptions: false,\r\n selectedVehicle: null,\r\n options: null,\r\n optionCodes: [],\r\n optionsValue: 0,\r\n selectedOptionIndexes: [],\r\n excludedOptionsIndexes: [],\r\n includedOptionsIndexes: [],\r\n requiredOptionsIndexes: [],\r\n showOtionalRequiredOptions: false,\r\n optinalRequiredOptionsIndexes: [],\r\n isloadingIncludeExcludeOptions: false,\r\n tireWear: 0,\r\n bodyDamage: 0,\r\n hasGpl: false,\r\n valuationLoading: false,\r\n showWizard: false,\r\n hideVehicleSelection: true,\r\n kmNo: 0,\r\n color: null,\r\n showCarTable: false,\r\n hideValuationWizzard: false\r\n } as ICaseDetailsValuationState;\r\n\r\n public async componentDidMount() {\r\n await this.loadData();\r\n }\r\n\r\n onWizardCallback = async (\r\n make: string,\r\n model: string,\r\n body: string,\r\n firstRegistrationDate: Date,\r\n generation: number\r\n ) => {\r\n try {\r\n this.setState({ isLoading: true });\r\n const result = await this.caseService.GetValuationVehiclesWithoutVin(\r\n make,\r\n model,\r\n body,\r\n R.isNil(firstRegistrationDate) ? new Date() : firstRegistrationDate,\r\n generation\r\n );\r\n\r\n if (result && !R.isEmpty(result.vehicles)) {\r\n this.setState({\r\n isLoading: false,\r\n showWizard: false,\r\n vehicles: result.vehicles,\r\n optionCodes: result.extraOptionCodes\r\n });\r\n } else {\r\n this.setState({\r\n isLoading: false,\r\n showWizard: false,\r\n vehicles: result.vehicles,\r\n optionCodes: result.extraOptionCodes\r\n });\r\n }\r\n return result.vehicles;\r\n } catch (error) {\r\n this.setState({ isLoading: false, vehicles: [] });\r\n return [];\r\n }\r\n };\r\n\r\n onShowCarList = (show: boolean) => {\r\n this.setState({ showCarTable: show });\r\n };\r\n\r\n onChangeFirstRegistrationDate = (date: Date | null) => {\r\n if (this.props.onChangeFirstRegistrationDate) {\r\n this.props.onChangeFirstRegistrationDate(date);\r\n }\r\n };\r\n\r\n onFilterChanged = (vehicles: ValuationVehicle[]) => {\r\n this.setState({ vehicles: vehicles });\r\n };\r\n\r\n loadData = async () => {\r\n const firstRegistrationDate = this.props.firstRegistrationDate;\r\n const vin = this.props.vin;\r\n const carOptionalSelectedOptions =\r\n this.props.vehicleState.vehicle?.vehicleOptions.filter(\r\n (o) => !o.isStandard && o.isSelected\r\n ) ?? [];\r\n const carSelectedOptionalCodes = carOptionalSelectedOptions.map((x) => x.code);\r\n const valuationVehicleId = !R.isNil(this.props.vehicleState.vehicle)\r\n ? this.props.vehicleState.vehicle!.valuationVehicleId\r\n : null;\r\n if (!R.isNil(valuationVehicleId)) {\r\n const valuationVehicle = await this.caseService.GetValuationVehicle(valuationVehicleId);\r\n this.setState(\r\n {\r\n vehicles: [valuationVehicle],\r\n selectedVehicle: valuationVehicle,\r\n optionCodes: carSelectedOptionalCodes,\r\n viewOptions: true,\r\n showWizard: false,\r\n hideVehicleSelection: true\r\n },\r\n this.loadOptions\r\n );\r\n } else {\r\n let result = {\r\n vehicles: this.props.valuationVehicles,\r\n extraOptionCodes: this.props.optionCodes ?? []\r\n } as ValuationVehicles;\r\n\r\n if (R.isNil(this.props.valuationVehicles) && !R.isNil(vin)) {\r\n const body = {\r\n registration_date: R.isNil(firstRegistrationDate) ? new Date() : firstRegistrationDate,\r\n ignore_date: false,\r\n override_existing_match: false\r\n };\r\n\r\n result = await this.caseService.GetValuationVehiclesInfo(vin, null, body);\r\n }\r\n\r\n const vehicleState = this.props.vehicleState;\r\n if (!isNullOrUndefined(vehicleState)) {\r\n const valuationVehicles = result.vehicles.filter((v) => {\r\n return v.version === vehicleState.vehicle?.version;\r\n });\r\n if (valuationVehicles.length !== 0) {\r\n result.vehicles = valuationVehicles;\r\n } else {\r\n // vehicle is not found on GTValuation by VIN so we have to get a list of results by make/model/body and version\r\n const resultCustomValuationVehicles =\r\n await this.caseService.GetValuationVehiclesWithoutVin(\r\n vehicleState.vehicle?.make?.name || undefined,\r\n vehicleState.vehicle?.model?.name || undefined,\r\n vehicleState.vehicle?.bodyType?.name || undefined,\r\n !vehicleState.vehicle?.firstRegistrationDate\r\n ? new Date()\r\n : new Date(vehicleState.vehicle.firstRegistrationDate),\r\n vehicleState.vehicle?.generation || undefined\r\n );\r\n const perfectMatchFoundByVersionList = resultCustomValuationVehicles.vehicles.filter(\r\n (v) => {\r\n return v.version === vehicleState.vehicle?.version;\r\n }\r\n );\r\n if (perfectMatchFoundByVersionList.length === 1) {\r\n result.vehicles = perfectMatchFoundByVersionList;\r\n }\r\n }\r\n }\r\n\r\n if (result && R.isEmpty(result.vehicles)) {\r\n this.setState({\r\n isLoading: false,\r\n showWizard: true,\r\n hideVehicleSelection: false,\r\n hideValuationWizzard: false\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (result) {\r\n if (result.vehicles.length === 1) {\r\n this.setState(\r\n {\r\n vehicles: result.vehicles,\r\n selectedVehicle: result.vehicles[0],\r\n optionCodes: result.extraOptionCodes,\r\n viewOptions: true,\r\n showWizard: false,\r\n hideVehicleSelection: true,\r\n hideValuationWizzard: true\r\n },\r\n this.loadOptions\r\n );\r\n } else {\r\n this.setState({\r\n vehicles: result.vehicles,\r\n isLoading: false,\r\n hideVehicleSelection: false,\r\n optionCodes: result.extraOptionCodes,\r\n hideValuationWizzard: true\r\n });\r\n this.onShowCarList(true);\r\n }\r\n }\r\n }\r\n };\r\n\r\n checkIfImageExists = (url: string | undefined) => {\r\n if (url === undefined || url.includes('undefined') || url.includes('null')) {\r\n return ImageNotAvailable;\r\n }\r\n\r\n return url;\r\n };\r\n\r\n getVehicleColumns = () => {\r\n const columns = [\r\n {\r\n name: 'vehicleId',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'manufacturer',\r\n label: this.translatorService.Tranlate('CASE_VALUATION_BRAND_LABEL', 'Marca'),\r\n options: { filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'model',\r\n label: this.translatorService.Tranlate('CASE_VALUATION_MODEL_LABEL', 'Model'),\r\n options: { filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'version',\r\n label: this.translatorService.Tranlate('CASE_VALUATION_VERSION_LABEL', 'Versiune'),\r\n options: { filter: true } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'trimLevel',\r\n label: this.translatorService.Tranlate('CASE_VALUATION_TRIMLEVEL_LABEL', 'Nivel echipare'),\r\n options: { filter: true } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'modelYear',\r\n label: this.translatorService.Tranlate('MODEL_YEAR', 'An model'),\r\n options: {\r\n filter: true\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'fuelType',\r\n label: this.translatorService.Tranlate('CASE_VALUATION_FUEL_TYPE_LABEL', 'Combustibil'),\r\n options: { filter: true } as MUIDataTableColumnOptions\r\n },\r\n //{\r\n // name: 'transmission',\r\n // label: this.translatorService.Tranlate(\r\n // 'CASE_VALUATION_GEARBOX_TYPE_LABEL',\r\n // 'Cutie de viteze'\r\n // ),\r\n // options: { filter: false } as MUIDataTableColumnOptions\r\n //},\r\n {\r\n name: 'powerHP',\r\n label: this.translatorService.Tranlate('CASE_VALUATION_KW_HP_TYPE_LABEL', 'Putere KW/HP'),\r\n options: {\r\n display: 'false',\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'kw',\r\n label: this.translatorService.Tranlate('CASE_VALUATION_KW_HP_TYPE_LABEL', 'Putere KW/HP'),\r\n options: {\r\n filter: true,\r\n customBodyRender: (value, tableMeta) => {\r\n return
{value + '/' + tableMeta.rowData[7]}
;\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'transmission',\r\n label: this.translatorService.Tranlate(\r\n 'CASE_VALUATION_FUEL_TRANSMISSION_LABEL',\r\n 'Transmisie'\r\n ),\r\n options: { filter: true } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'drivenWheels',\r\n label: this.translatorService.Tranlate('CASE_VALUATION_DRIVEN_WHEELS_LABEL', 'Tractiune'),\r\n options: { filter: true } as MUIDataTableColumnOptions\r\n },\r\n\r\n {\r\n name: 'cc',\r\n label: this.translatorService.Tranlate(\r\n 'CASE_VALUATION_CC_TYPE_LABEL',\r\n 'Capacitate cilindrica'\r\n ),\r\n options: { filter: true } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'convertedStartSellingDate',\r\n label: this.translatorService.Tranlate(\r\n 'CASE_VALUATION_DATE_OF_FABRICATION_LABELssss',\r\n 'data start comerc'\r\n ),\r\n options: { filter: false, display: 'excluded' } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'convertedEndSellingDate',\r\n label: this.translatorService.Tranlate(\r\n 'CASE_VALUATION_CAR_SALES_INTERVAL_LABEL',\r\n 'Interval comercializare'\r\n ),\r\n options: {\r\n filter: false,\r\n customBodyRender: (value, tableMeta) => {\r\n const startSellingDate = tableMeta.rowData[12];\r\n const endSellingDate =\r\n value == '9999-12-31'\r\n ? this.translatorService.Tranlate('VALUATION_ON_GOING_LABEL', 'prezent')\r\n : value;\r\n return (\r\n
\r\n {startSellingDate} -\r\n
\r\n {endSellingDate}\r\n
\r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'basePrice',\r\n label: this.translatorService.Tranlate(\r\n 'VALUATION_BASE_PRICE_LABEL',\r\n 'Pret de Baza (incl. TVA)'\r\n ),\r\n options: { filter: false } as MUIDataTableColumnOptions\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n geOptionsColumns = () => {\r\n const columns = [\r\n {\r\n name: 'optionCode',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'description',\r\n label: ' ',\r\n options: {\r\n filter: false,\r\n sort: false,\r\n customBodyRender: (value, tableMeta, updateValue) => {\r\n const rowData = tableMeta.rowData;\r\n const rowIndex = tableMeta.rowIndex;\r\n const optionCode = rowData[0];\r\n const description = rowData[1];\r\n const price = rowData[2];\r\n const isExcluded = this.state.excludedOptionsIndexes.includes(rowIndex);\r\n const isIncluded = this.state.includedOptionsIndexes.includes(rowIndex);\r\n const isRequired = this.state.requiredOptionsIndexes.includes(rowIndex);\r\n const style = {\r\n color: '#fff',\r\n borderRadius: '0.15rem',\r\n padding: '2px 5px',\r\n marginLeft: '7px',\r\n fontSize: '12px',\r\n fontWeight: 'bold'\r\n };\r\n const excludedStyle = {\r\n backgroundColor: '#6c757d'\r\n };\r\n const includedStyle = {\r\n backgroundColor: '#28a745'\r\n };\r\n const mandatoryStyle = {\r\n backgroundColor: '#007bff'\r\n };\r\n\r\n return (\r\n \r\n {`[${optionCode}] ${description} - ${price} €`}\r\n {isExcluded && Indisponibila}\r\n {isIncluded && (\r\n Inclusa in alt pachet\r\n )}\r\n {isRequired && (\r\n Obligatorie din alt pachet\r\n )}\r\n
\r\n );\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'price',\r\n options: { display: 'excluded', filter: false, sort: false } as MUIDataTableColumnOptions\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n getStandardOptionsColumns = () => {\r\n const columns = [\r\n {\r\n name: 'content',\r\n label: ' ',\r\n options: {\r\n filter: false,\r\n sort: false\r\n } as MUIDataTableColumnOptions\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n loadOptions = async () => {\r\n if (this.state.selectedVehicle === null) {\r\n return;\r\n }\r\n const options = await this.caseService.GetValuationVehicleOptions(\r\n this.state.selectedVehicle!.vehicleId\r\n );\r\n\r\n const selectedOptionIndexes = this.getSelectedRows(options.extraOptions);\r\n\r\n const valLanguageId = Utils.GetValuationLanguageId(this.props.appState.language);\r\n\r\n options.standardOptions = options.standardOptions.filter(\r\n (option) =>\r\n option.languageId === valLanguageId && !standardOptionsSchemaIds.includes(option.schemaId)\r\n );\r\n\r\n this.setState({\r\n isLoading: false,\r\n options: options,\r\n selectedOptionIndexes: selectedOptionIndexes,\r\n optionsValue: this.getExtraOptionsPrice(options, selectedOptionIndexes)\r\n });\r\n };\r\n\r\n getSelectedRows = (extraoptions: ValuationExtraOption[]) => {\r\n const indexArray: number[] = [];\r\n this.state.optionCodes.forEach((item) => {\r\n const index = extraoptions.findIndex((o) => o.optionCode === item);\r\n if (index !== undefined && index !== -1) {\r\n indexArray.push(index);\r\n }\r\n });\r\n\r\n return indexArray;\r\n };\r\n\r\n getVehicleOptions = () => {\r\n return {\r\n viewColumns: false,\r\n filter: true,\r\n search: false,\r\n pagination: false,\r\n selectableRows: 'single' as SelectableRows,\r\n selectableRowsHeader: false,\r\n disableToolbarSelect: true,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1,\r\n onRowClick: (rowData: any, rowMeta: any) => {\r\n if (this.props.vin !== null && !R.isNil(this.props.onSelectedVehicle)) {\r\n this.props.onSelectedVehicle(\r\n this.state.vehicles[rowMeta.dataIndex],\r\n this.state.optionCodes\r\n );\r\n // return;\r\n }\r\n\r\n this.setState(\r\n {\r\n hideVehicleSelection: true,\r\n viewOptions: true,\r\n isLoading: true,\r\n selectedVehicle: this.state.vehicles[rowMeta.dataIndex]\r\n },\r\n this.loadOptions\r\n );\r\n },\r\n onRowsSelect: (rowSelected: any) => {\r\n if (this.props.vin !== null && !R.isNil(this.props.onSelectedVehicle)) {\r\n this.props.onSelectedVehicle(\r\n this.state.vehicles[rowSelected[0].dataIndex],\r\n this.state.optionCodes\r\n );\r\n // return;\r\n }\r\n\r\n this.setState(\r\n {\r\n hideVehicleSelection: true,\r\n viewOptions: true,\r\n isLoading: true,\r\n selectedVehicle: this.state.vehicles[rowSelected[0].dataIndex]\r\n },\r\n this.loadOptions\r\n );\r\n },\r\n customToolbar: () => {\r\n return (\r\n \r\n {this.translatorService.Tranlate('FILTER_TABLE', 'Filtreaza')}\r\n \r\n );\r\n }\r\n };\r\n };\r\n\r\n getExtraOptionsPrice = (options: ValuationVehicleOptions | null, selectedIndexes: number[]) => {\r\n if (options === null) {\r\n return 0;\r\n }\r\n if (options.extraOptions === null) {\r\n return 0;\r\n }\r\n\r\n const vatValue = 0;\r\n let sum = 0;\r\n selectedIndexes.forEach((item) => {\r\n sum += options.extraOptions[item].price;\r\n });\r\n\r\n return Utils.getPriceWithVat(sum, vatValue);\r\n };\r\n\r\n getOptionsOptions = () => {\r\n return {\r\n viewColumns: false,\r\n filter: false,\r\n search: false,\r\n pagination: false,\r\n selectableRows: 'multiple' as SelectableRows,\r\n rowsSelected: this.state.selectedOptionIndexes,\r\n selectableRowsHeader: false,\r\n disableToolbarSelect: true,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1,\r\n\r\n onRowsSelect: async (rowSelected: any, rowsSelected: any[]) => {\r\n const selected = rowsSelected.map((item) => item.index).filter((item) => item !== -1);\r\n const lastSelectedIndex = rowSelected[0].dataIndex;\r\n const lastSelectedOptionIndex =\r\n this.state.options!.extraOptions[lastSelectedIndex].optionId;\r\n const { includedOptionIds, excludedOptionIds, requiredOptionIds } =\r\n await this.fetchIncludeAndExcludeOptions(\r\n lastSelectedOptionIndex,\r\n this.state.selectedVehicle!.vehicleId\r\n );\r\n let finalSelectedIndexes = [...selected];\r\n let finalIncludedIndexes = Array.from(new Set([...this.state.includedOptionsIndexes]));\r\n let finalExcludedIndexes = Array.from(new Set([...this.state.excludedOptionsIndexes]));\r\n let finalRequiredIndexes = Array.from(new Set([...this.state.requiredOptionsIndexes]));\r\n\r\n // if the selected option is selected\r\n if (selected.includes(lastSelectedIndex)) {\r\n if (includedOptionIds) {\r\n const includedIndexes = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n includedOptionIds\r\n );\r\n\r\n finalIncludedIndexes = Array.from(\r\n new Set([...finalIncludedIndexes, ...includedIndexes])\r\n );\r\n\r\n finalSelectedIndexes = this.removeIndexes(finalSelectedIndexes, includedIndexes);\r\n }\r\n\r\n if (requiredOptionIds) {\r\n // if there are mandatory options\r\n if (requiredOptionIds.mandatory.length > 0) {\r\n const mandatoryIndexes = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n requiredOptionIds.mandatory\r\n );\r\n\r\n finalRequiredIndexes = Array.from(\r\n new Set([...finalRequiredIndexes, ...mandatoryIndexes])\r\n );\r\n finalSelectedIndexes = Array.from(\r\n new Set([...finalSelectedIndexes, ...mandatoryIndexes])\r\n );\r\n }\r\n\r\n // if user has to select at least one option from the mandatory ones\r\n if (requiredOptionIds.atLeastOne.length > 0) {\r\n this.setState({\r\n showOtionalRequiredOptions: true,\r\n optinalRequiredOptionsIndexes: requiredOptionIds.atLeastOne\r\n });\r\n }\r\n }\r\n\r\n if (excludedOptionIds) {\r\n const excludedIndexes = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n excludedOptionIds\r\n );\r\n\r\n finalExcludedIndexes = Array.from(\r\n new Set([...finalExcludedIndexes, ...excludedIndexes])\r\n );\r\n\r\n finalSelectedIndexes = this.removeIndexes(finalSelectedIndexes, excludedIndexes);\r\n }\r\n }\r\n // if the selected option is deselected\r\n else {\r\n if (includedOptionIds) {\r\n const includedIndexes = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n includedOptionIds\r\n );\r\n\r\n finalIncludedIndexes = this.removeIndexes(finalIncludedIndexes, includedIndexes);\r\n finalSelectedIndexes = this.removeIndexes(finalSelectedIndexes, includedIndexes);\r\n }\r\n\r\n if (requiredOptionIds) {\r\n if (requiredOptionIds.mandatory.length > 0) {\r\n const mandatoryIndexes = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n requiredOptionIds.mandatory\r\n );\r\n\r\n finalRequiredIndexes = this.removeIndexes(finalRequiredIndexes, mandatoryIndexes);\r\n finalSelectedIndexes = this.removeIndexes(finalSelectedIndexes, mandatoryIndexes);\r\n finalExcludedIndexes = this.removeIndexes(finalExcludedIndexes, mandatoryIndexes);\r\n }\r\n\r\n if (requiredOptionIds.atLeastOne.length > 0) {\r\n const atLeastOneIndexes = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n requiredOptionIds.atLeastOne\r\n );\r\n\r\n finalRequiredIndexes = this.removeIndexes(finalRequiredIndexes, atLeastOneIndexes);\r\n finalSelectedIndexes = this.removeIndexes(finalSelectedIndexes, atLeastOneIndexes);\r\n finalExcludedIndexes = this.removeIndexes(finalExcludedIndexes, atLeastOneIndexes);\r\n }\r\n }\r\n\r\n if (excludedOptionIds) {\r\n const excludedIndexes = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n excludedOptionIds\r\n );\r\n\r\n finalExcludedIndexes = this.removeIndexes(finalExcludedIndexes, excludedIndexes);\r\n finalSelectedIndexes = this.removeIndexes(finalSelectedIndexes, excludedIndexes);\r\n }\r\n }\r\n\r\n finalSelectedIndexes = this.removeIndexes(finalSelectedIndexes, finalExcludedIndexes);\r\n finalSelectedIndexes = Array.from(\r\n new Set([...finalSelectedIndexes, ...finalRequiredIndexes])\r\n );\r\n finalExcludedIndexes = this.removeIndexes(finalExcludedIndexes, finalRequiredIndexes);\r\n finalIncludedIndexes = this.removeIndexes(finalIncludedIndexes, finalRequiredIndexes);\r\n\r\n this.setState({\r\n selectedOptionIndexes: finalSelectedIndexes,\r\n optionsValue: this.getExtraOptionsPrice(this.state.options, finalSelectedIndexes),\r\n excludedOptionsIndexes: finalExcludedIndexes,\r\n includedOptionsIndexes: finalIncludedIndexes,\r\n requiredOptionsIndexes: finalRequiredIndexes\r\n });\r\n },\r\n isRowSelectable: (dataIndex: any) =>\r\n !this.state.excludedOptionsIndexes.includes(dataIndex) &&\r\n !this.state.includedOptionsIndexes.includes(dataIndex) &&\r\n !this.state.requiredOptionsIndexes.includes(dataIndex)\r\n };\r\n };\r\n\r\n fetchIncludeOptions = async (optionId: number, vehicleId: number): Promise => {\r\n let includeOptionsRequest = null;\r\n\r\n try {\r\n includeOptionsRequest = await this.caseService.GetIncludeOptions(optionId, vehicleId);\r\n } catch (error) {}\r\n\r\n if (includeOptionsRequest) {\r\n const extractedIndexes = this.extractIndexes(includeOptionsRequest.rule);\r\n return extractedIndexes;\r\n }\r\n\r\n return includeOptionsRequest;\r\n };\r\n\r\n fetchExcludeOptions = async (optionId: number, vehicleId: number): Promise => {\r\n let excludeOptionsRequest = null;\r\n\r\n try {\r\n excludeOptionsRequest = await this.caseService.GetExcludeOptions(optionId, vehicleId);\r\n } catch (error) {}\r\n\r\n if (excludeOptionsRequest) {\r\n const extractedIndexes = this.extractIndexes(excludeOptionsRequest.rule);\r\n return extractedIndexes;\r\n }\r\n\r\n return excludeOptionsRequest;\r\n };\r\n\r\n fetchRequiredOptions = async (\r\n optionId: number,\r\n vehicleId: number\r\n ): Promise => {\r\n let requiredOptionsRequest = null;\r\n\r\n try {\r\n requiredOptionsRequest = await this.caseService.GetRequiredOptions(optionId, vehicleId);\r\n } catch (error) {}\r\n\r\n if (requiredOptionsRequest) {\r\n const parsedConditions = this.parseRequiredConditions(requiredOptionsRequest.rule);\r\n return parsedConditions;\r\n }\r\n\r\n return requiredOptionsRequest;\r\n };\r\n\r\n fetchIncludeAndExcludeOptions = async (optionId: number, vehicleId: number) => {\r\n let includedOptionIds = null;\r\n let excludedOptionIds = null;\r\n let requiredOptionIds = null;\r\n\r\n try {\r\n this.setState({ isloadingIncludeExcludeOptions: true });\r\n\r\n includedOptionIds = await this.fetchIncludeOptions(optionId, vehicleId);\r\n excludedOptionIds = await this.fetchExcludeOptions(optionId, vehicleId);\r\n requiredOptionIds = await this.fetchRequiredOptions(optionId, vehicleId);\r\n } catch (error) {\r\n this.setState({ isloadingIncludeExcludeOptions: false });\r\n }\r\n\r\n this.setState({ isloadingIncludeExcludeOptions: false });\r\n return {\r\n includedOptionIds,\r\n excludedOptionIds,\r\n requiredOptionIds\r\n };\r\n };\r\n\r\n findIndexes = (extraOptions: ValuationExtraOption[] | null, codes: number[]): number[] => {\r\n if (extraOptions === null) return [];\r\n const indexes: number[] = [];\r\n\r\n extraOptions.forEach((object, index) => {\r\n if (codes.includes(object.optionId)) {\r\n indexes.push(index);\r\n }\r\n });\r\n\r\n return indexes;\r\n };\r\n\r\n removeIndexes(excludedOptionsIndexes: number[], excludedIndexes: number[]): number[] {\r\n return excludedOptionsIndexes.filter((item) => !excludedIndexes.includes(item));\r\n }\r\n\r\n extractIndexes = (input: string): number[] => {\r\n // Use regular expression to match all numbers within braces\r\n const matches = input.match(/\\{(\\d+)\\}/g);\r\n\r\n // If no matches found, return an empty array\r\n if (!matches) {\r\n return [];\r\n }\r\n\r\n // Extract the numbers and convert them to integers\r\n const indexes = matches.map((match) => parseInt(match.replace(/[{}]/g, ''), 10));\r\n\r\n return indexes;\r\n };\r\n\r\n parseRequiredConditions(input: string): ParsedConditions {\r\n const mandatory: number[] = [];\r\n const atLeastOne: number[] = [];\r\n\r\n // Regex for extracting all conditions (e.g., {1234})\r\n const allConditionsRegex = /{(\\d+)}/g;\r\n let match;\r\n\r\n // Collect all numbers within curly braces\r\n const allConditions: number[] = [];\r\n while ((match = allConditionsRegex.exec(input)) !== null) {\r\n allConditions.push(parseInt(match[1], 10));\r\n }\r\n\r\n // Check if the input contains 'AND' or 'OR'\r\n if (input.includes('AND')) {\r\n // Regex for extracting mandatory conditions before 'AND'\r\n const mandatoryPart = input.split(' AND ')[0];\r\n const mandatoryRegex = /{(\\d+)}/g;\r\n let mandatoryMatch;\r\n while ((mandatoryMatch = mandatoryRegex.exec(mandatoryPart)) !== null) {\r\n mandatory.push(parseInt(mandatoryMatch[1], 10));\r\n }\r\n\r\n // Regex for extracting optional conditions within parentheses\r\n const optionalPartMatch = input.match(/\\(([^)]+)\\)/);\r\n if (optionalPartMatch) {\r\n const optionalRegex = /{(\\d+)}/g;\r\n let optionalMatch;\r\n while ((optionalMatch = optionalRegex.exec(optionalPartMatch[1])) !== null) {\r\n atLeastOne.push(parseInt(optionalMatch[1], 10));\r\n }\r\n }\r\n } else if (input.includes('OR')) {\r\n // If there are no 'AND' conditions, treat all as optional\r\n for (const num of allConditions) {\r\n atLeastOne.push(num);\r\n }\r\n } else {\r\n // If no logical operator is present, all conditions are mandatory\r\n mandatory.push(...allConditions);\r\n }\r\n\r\n return {\r\n mandatory,\r\n atLeastOne\r\n };\r\n }\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n isNumericString\r\n />\r\n );\r\n };\r\n handleBodyDamageTextChange = (event: React.ChangeEvent) => {\r\n this.setState({\r\n bodyDamage: event.target.value === null ? 0 : parseFloat(event.target.value)\r\n });\r\n };\r\n\r\n handleTireWearTextChange = (event: React.ChangeEvent) => {\r\n this.setState({\r\n tireWear: event.target.value === null ? 0 : parseFloat(event.target.value)\r\n });\r\n };\r\n\r\n handleKmNoTextChange = (event: React.ChangeEvent) => {\r\n this.setState({\r\n kmNo:\r\n event.target.value === null || isNaN(Number(event.target.value))\r\n ? 0\r\n : parseFloat(event.target.value)\r\n });\r\n };\r\n\r\n handleGplChange = (checked: boolean) => {\r\n this.setState({\r\n hasGpl: checked\r\n });\r\n };\r\n\r\n handleColorChange = (\r\n event: React.ChangeEvent>,\r\n value: IReferential | null\r\n ) => {\r\n if (value) {\r\n this.setState({\r\n color: value?.code\r\n });\r\n } else {\r\n this.setState({\r\n color: ''\r\n });\r\n }\r\n };\r\n\r\n checkIfIsValidDate = (date: Date | null) => {\r\n const registrationTimestamp = date!.getTime();\r\n\r\n if (isNaN(registrationTimestamp)) {\r\n const newDate = new Date();\r\n return moment(newDate).format('YYYY-MM-DD');\r\n }\r\n\r\n return date;\r\n };\r\n\r\n performValuation = async () => {\r\n try {\r\n const options: ValuationExtraOption[] = [];\r\n\r\n this.state.selectedOptionIndexes.forEach((index) =>\r\n options.push(this.state.options!.extraOptions[index])\r\n );\r\n const valuationRequest = {\r\n attritionValue: this.state.tireWear,\r\n bodyDamageValue: this.state.bodyDamage,\r\n extraOptionsPrice: this.state.optionsValue,\r\n gpl: this.state.hasGpl,\r\n numberOfKilometers: this.state.kmNo,\r\n priceAsNew: this.state.selectedVehicle!.basePrice,\r\n vehicleId: this.state.selectedVehicle!.vehicleId,\r\n options: options,\r\n registrationDate: moment(this.props.firstRegistrationDate).isValid()\r\n ? moment(this.props.firstRegistrationDate).startOf('month').format('YYYY-MM-DD')\r\n : null,\r\n fabricationDate: this.state.selectedVehicle?.fabricationDate\r\n ? this.state.selectedVehicle?.fabricationDate\r\n : null,\r\n imageUrl: this.state.selectedVehicle?.imageUrl ? this.state.selectedVehicle?.imageUrl : '',\r\n vin: this.props.vin,\r\n version: this.state.selectedVehicle!.version,\r\n color: this.state.color,\r\n equipmentVersion: this.state.selectedVehicle!.trimLevel,\r\n make: this.state.selectedVehicle!.manufacturer,\r\n model: this.state.selectedVehicle!.model,\r\n fuelType: this.state.selectedVehicle!.fuelType,\r\n bodyType: this.state.selectedVehicle!.body,\r\n horsePower: this.state.selectedVehicle!.powerHP,\r\n nrOfDoors: this.state.selectedVehicle!.noOfDoors,\r\n transmissionType: this.state.selectedVehicle!.transmission\r\n } as ValuationRequest;\r\n\r\n this.setState({ valuationLoading: true });\r\n\r\n const result = await this.caseService.PerformValuation(valuationRequest, null);\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n\r\n this.setState({ valuationLoading: false });\r\n document.getElementById('valuation-dialog-close-button')?.click();\r\n\r\n if (result) this.props.history.push(`/valuation/file/${result.id}`);\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n this.setState({ valuationLoading: false });\r\n }\r\n };\r\n\r\n renderOptions = () => {\r\n const basePrice = this.state.selectedVehicle?.basePrice || 0;\r\n const optionsPrice = this.state.optionsValue;\r\n const totalPrice = basePrice + optionsPrice;\r\n\r\n const basePriceLabel = this.translatorService.Tranlate(\r\n 'VALUATION_BASE_PRICE_LABEL',\r\n 'Pret de Baza (incl. TVA)'\r\n );\r\n const optionsPriceLabel = this.translatorService.Tranlate(\r\n 'VALUATION_OPTIONS_PRICE_LABEL',\r\n 'Pret Optionale (incl. TVA)'\r\n );\r\n const totalPriceLabel = this.translatorService.Tranlate(\r\n 'VALUATION_TOTAL_LABEL',\r\n 'Total (incl. TVA)'\r\n );\r\n\r\n return (\r\n
\r\n

\r\n {`${this.state.selectedVehicle!.manufacturer} ${this.state.selectedVehicle!.model} ${\r\n this.state.selectedVehicle!.version\r\n }`}\r\n

\r\n

\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
{basePrice.toFixed(2)} €
\r\n
{optionsPrice.toFixed(2)} €
\r\n
{totalPrice.toFixed(2)} €
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n {this.state.selectedVehicle?.fabricationDate ? (\r\n \r\n ) : null}\r\n {moment(this.props.firstRegistrationDate).isValid() ? (\r\n \r\n ) : null}\r\n \r\n \r\n \r\n option.displayName || ''}\r\n onChange={this.handleColorChange}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n {\r\n this.handleGplChange(checked);\r\n }}\r\n color=\"primary\"\r\n id=\"hasGpl\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={this.translatorService.Tranlate('VALUATION_GPL_LABEL', 'GPL')}\r\n />\r\n
\r\n {this.state.vehicles.length > 1 ? (\r\n {\r\n this.setState({\r\n isLoading: false,\r\n hideVehicleSelection: false,\r\n hideValuationWizzard: true,\r\n viewOptions: false,\r\n selectedVehicle: null,\r\n kmNo: 0,\r\n tireWear: 0,\r\n bodyDamage: 0,\r\n hasGpl: false,\r\n color: null,\r\n options: null,\r\n selectedOptionIndexes: [],\r\n includedOptionsIndexes: [],\r\n excludedOptionsIndexes: []\r\n });\r\n this.onShowCarList(true);\r\n }}\r\n >\r\n {this.translatorService.Tranlate(\r\n 'VALUATION_FILE_CHANGE_VEHICLE_LABEL',\r\n 'Schimba vehicul'\r\n )}\r\n \r\n ) : null}\r\n \r\n {this.translatorService.Tranlate('VALUATION_ACTION_START_LABEL', 'Evalueaza')}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.showOtionalRequiredOptions && this.renderMandatoryOptionsDialog()}\r\n
\r\n \r\n \r\n {this.state.isloadingIncludeExcludeOptions ? : null}\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n renderMandatoryOptionsDialog = () => {\r\n const data = this.state.options?.extraOptions.filter((option) => {\r\n return this.state.optinalRequiredOptionsIndexes.includes(option.optionId);\r\n });\r\n\r\n return (\r\n \r\n \r\n {'Pentru selectia anterioara este necesara adaugarea unei optiuni din lista'}\r\n \r\n \r\n {\r\n const rowData = tableMeta.rowData;\r\n\r\n return `[${rowData[0]}] ${value} - ${rowData[2]} €`;\r\n }\r\n }\r\n },\r\n {\r\n name: 'price',\r\n label: 'Pret',\r\n options: {\r\n display: 'excluded',\r\n filter: false,\r\n sort: false\r\n }\r\n }\r\n ]}\r\n options={{\r\n viewColumns: false,\r\n filter: false,\r\n search: false,\r\n pagination: false,\r\n selectableRows: 'single' as SelectableRows,\r\n selectableRowsHeader: false,\r\n disableToolbarSelect: true,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n elevation: 1,\r\n\r\n onRowsSelect: (rowSelected: any, allRows: any) => {\r\n const { dataIndex } = rowSelected[0];\r\n const rowData = this.state.options?.extraOptions.filter((option) => {\r\n return this.state.optinalRequiredOptionsIndexes.includes(option.optionId);\r\n })[dataIndex];\r\n const selectedOptionIndexInExtraOptions = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n [rowData!.optionId]\r\n );\r\n const unselectedOptionsToBeRemoved =\r\n this.state.optinalRequiredOptionsIndexes.filter(\r\n (item) => item !== rowData!.optionId\r\n );\r\n const findOptionsToBeExcluded = this.findIndexes(\r\n this.state.options!.extraOptions,\r\n unselectedOptionsToBeRemoved\r\n );\r\n let finalSelectedIndexes = Array.from(\r\n new Set([\r\n ...this.state.selectedOptionIndexes,\r\n ...selectedOptionIndexInExtraOptions\r\n ])\r\n );\r\n const finalRequiredIndexes = Array.from(\r\n new Set([\r\n ...this.state.requiredOptionsIndexes,\r\n ...selectedOptionIndexInExtraOptions\r\n ])\r\n );\r\n let finalExcludedIndexes = Array.from(\r\n new Set([...this.state.excludedOptionsIndexes, ...findOptionsToBeExcluded])\r\n );\r\n let finalIncludedIndexes = Array.from(\r\n new Set([...this.state.includedOptionsIndexes])\r\n );\r\n\r\n finalSelectedIndexes = this.removeIndexes(\r\n finalSelectedIndexes,\r\n finalExcludedIndexes\r\n );\r\n finalSelectedIndexes = Array.from(\r\n new Set([...finalSelectedIndexes, ...finalRequiredIndexes])\r\n );\r\n finalExcludedIndexes = this.removeIndexes(\r\n finalExcludedIndexes,\r\n finalRequiredIndexes\r\n );\r\n finalIncludedIndexes = this.removeIndexes(\r\n finalIncludedIndexes,\r\n finalRequiredIndexes\r\n );\r\n\r\n this.setState({\r\n ...this.state,\r\n showOtionalRequiredOptions: false,\r\n selectedOptionIndexes: finalSelectedIndexes,\r\n requiredOptionsIndexes: finalRequiredIndexes,\r\n optionsValue: this.getExtraOptionsPrice(this.state.options, finalSelectedIndexes),\r\n excludedOptionsIndexes: finalExcludedIndexes,\r\n includedOptionsIndexes: finalIncludedIndexes,\r\n optinalRequiredOptionsIndexes: []\r\n });\r\n }\r\n }}\r\n />\r\n \r\n \r\n );\r\n };\r\n\r\n renderVehicleSelection = () => {\r\n return (\r\n
\r\n {!this.state.hideValuationWizzard && (\r\n \r\n )}\r\n\r\n {this.state.showCarTable && !this.state.isLoading ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n
\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n\r\n return (\r\n \r\n {this.state.hideVehicleSelection ? null : this.renderVehicleSelection()}\r\n
\r\n \r\n
\r\n {!this.state.isLoading &&\r\n this.state.viewOptions &&\r\n this.state.options &&\r\n !this.state.showWizard\r\n ? this.renderOptions()\r\n : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mergeProps = (\r\n stateProps: any,\r\n dispatchProps: any,\r\n ownProps: ExternalCaseDetailsValuationProps\r\n) => ({\r\n ...ownProps,\r\n ...stateProps,\r\n ...dispatchProps\r\n});\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle\r\n }),\r\n CaseSettingsActionCreators,\r\n mergeProps\r\n)(withSnackbar(DetailsValuation as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router';\r\nimport { ApplicationState, CaseSettingsActionCreators, VehicleActionCreators } from '../../store';\r\nimport { withSnackbar } from 'notistack';\r\nimport {\r\n Button,\r\n IconButton,\r\n Grid,\r\n Dialog,\r\n DialogTitle,\r\n Typography,\r\n DialogContent,\r\n Tooltip,\r\n InputAdornment,\r\n Modal,\r\n DialogActions,\r\n DialogContentText,\r\n FormControlLabel,\r\n Switch\r\n} from '@material-ui/core';\r\nimport { AppContext, ApplicationContext } from '../../context/Contexts';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport {\r\n ValuationVehicle,\r\n ValuationExtraOption,\r\n ValuationModel,\r\n ValuationBody,\r\n PlateNumber\r\n} from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { RefConstants } from '../../helpers/Constants';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { IReferential, IReferentialModel } from '../../interfaces/IReferential';\r\nimport { DatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport moment from 'moment';\r\nimport MomentUtils from '@date-io/moment';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DetailsValuation from './DetailsValuation';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { Column } from 'material-table';\r\nimport { Cost, Vehicle, VehicleOption } from '../../interfaces/Vehicle';\r\nimport { IVehicleService } from '../../services/Interfaces/IVehicleService';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport * as R from 'ramda';\r\nimport { ICaseDetailsCaseTabCarDetailsExtendedContainerState } from '../cases/vehicleDetails/ICaseDetailsCaseTabCarDetailsExtendedContainerState';\r\nimport { ExternalCaseDetailsCaseTabCarDetailsExtendedContainerProps } from '../cases/vehicleDetails/ExternalCaseDetailsCaseTabCarDetailsExtendedContainerProps';\r\nimport { ICaseDetailsCaseTabCarDetailsExtendedContainerProps } from '../cases/vehicleDetails/ICaseDetailsCaseTabCarDetailsExtendedContainerProps';\r\nimport _ from 'lodash';\r\nimport manualVinIdentification from '../../assets/images/vin/hand-pen-01.svg';\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\nexport const standardOptionsSchemaIds = [\r\n 301, 2501, 3501, 3601, 23501, 23601, 23701, 23801, 23901, 24001, 31001, 32601, 34801, 38001,\r\n 38701, 38801, 42101, 42901, 44501, 48401, 49001, 50001, 55601, 57901, 58201, 58301, 58401, 58501,\r\n 58601, 59201, 59301, 59801, 63601, 63901\r\n];\r\n\r\nclass DetailsValuationContainer extends React.PureComponent<\r\n ICaseDetailsCaseTabCarDetailsExtendedContainerProps,\r\n ICaseDetailsCaseTabCarDetailsExtendedContainerState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n private vehicleService!: IVehicleService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n static displayName = 'CaseDetailsCaseTabCarDetailsExtendedForm';\r\n\r\n state = {\r\n isLoading: false,\r\n hasRights: false,\r\n executing: false,\r\n isUserHidden: false,\r\n isValuationOpen: false,\r\n selectedVehicle: null,\r\n valuationVehicles: [] as ValuationVehicle[],\r\n valuationBodies: [] as ValuationBody[],\r\n valuationModels: [] as ValuationModel[],\r\n showWizard: false,\r\n attachType: {} as IReferential,\r\n personTypes: [] as IReferential[],\r\n brandTypes: [] as IReferential[],\r\n modelTypes: [] as IReferentialModel[],\r\n bodyTypes: [] as IReferential[],\r\n versionTypes: [] as IReferential[],\r\n fuelTypes: [] as IReferential[],\r\n vehicleTypes: [] as IReferential[],\r\n refurbishedList: [] as IReferential[],\r\n mvoDvBattypList: [] as IReferential[],\r\n polutionNormTypes: [] as IReferential[],\r\n transmissionTypes: [] as IReferential[],\r\n tractionTypes: [] as IReferential[],\r\n paintTypes: [] as IReferential[],\r\n tiresTypes: [] as IReferential[],\r\n rimsTypes: [] as IReferential[],\r\n colorTypes: [] as IReferential[],\r\n carInteriorStateTypes: [] as IReferential[],\r\n carExteriorStateTypes: [] as IReferential[],\r\n carMechanicalStateTypes: [] as IReferential[],\r\n carStandardOptions: [] as VehicleOption[],\r\n carOptionalOptions: [] as VehicleOption[],\r\n workflowCalculation: null,\r\n datePickerFirstRegistrationError: '',\r\n showRequiredVinError: false,\r\n optionCodes: [] as string[],\r\n costValues: [] as Cost[],\r\n carDetailsExtendedData: {\r\n id: 0,\r\n caseId: this.props.caseSettingsState.case ? this.props.caseSettingsState.case!.id : 0,\r\n plateNumber: '',\r\n vin: '',\r\n makeId: null,\r\n model: null,\r\n modelId: null,\r\n version: '',\r\n makeDate: '',\r\n firstRegistrationDate: '',\r\n kilometersNr: null,\r\n power: null,\r\n horsePower: null,\r\n engineSize: null,\r\n co2: null,\r\n inConditionComments: null,\r\n outConditionComments: null,\r\n technicalConditionComments: null,\r\n fuelTypeId: null,\r\n vehicleTypeId: null,\r\n pollutionNormId: null,\r\n transmissionTypeId: null,\r\n tractionTypeId: null,\r\n color: null,\r\n colorId: null,\r\n equipmentVersion: '',\r\n wheelsTypeId: null,\r\n tiresTypeId: null,\r\n paintTypeId: null,\r\n bodyTypeId: null,\r\n inConditionId: null,\r\n outConditionId: null,\r\n technicalConditionId: null,\r\n make: null,\r\n fuelType: null,\r\n vehicleType: null,\r\n pollutionNorm: null,\r\n transmissionType: null,\r\n tractionType: null,\r\n wheelsType: null,\r\n tiresType: null,\r\n paintType: null,\r\n bodyType: null,\r\n inCondition: null,\r\n outCondition: null,\r\n technicalCondition: null,\r\n vehicleOptions: [] as VehicleOption[],\r\n location: '',\r\n nrOfDoors: null,\r\n radioCode: '',\r\n engineManufactureCode: '',\r\n purchasePrice: '',\r\n refurbished: null,\r\n refurbishedId: null\r\n } as Vehicle,\r\n carDetailsFetchedData: {} as Partial,\r\n isOpen: false,\r\n dialogVisible: false,\r\n ignoreTimeStampSwitch: false,\r\n ignoreExistingMappingSwitch: false,\r\n showSearchingLoader: false\r\n } as ICaseDetailsCaseTabCarDetailsExtendedContainerState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n this.props.resetVehicleState();\r\n await this.loadData();\r\n }\r\n );\r\n }\r\n\r\n submitForm = async () => {\r\n console.log('');\r\n };\r\n\r\n submitVehicleData = async (e: any) => {\r\n let newVehicle = { ...this.state.carDetailsExtendedData } as Vehicle;\r\n newVehicle.vehicleOptions = [];\r\n\r\n this.state.carStandardOptions.forEach((standardOption) => {\r\n standardOption.isSelected = standardOption.checked;\r\n });\r\n this.state.carOptionalOptions.forEach((optionalOption) => {\r\n optionalOption.isSelected = optionalOption.checked;\r\n });\r\n\r\n newVehicle.vehicleOptions.push(...this.state.carStandardOptions);\r\n newVehicle.vehicleOptions.push(...this.state.carOptionalOptions);\r\n\r\n newVehicle = {\r\n ...newVehicle\r\n };\r\n\r\n try {\r\n if (newVehicle.valuationVehicleId && newVehicle.vin) {\r\n await this.caseService.ValuationSaveMapping(newVehicle.vin, newVehicle.valuationVehicleId);\r\n }\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n onChange =\r\n (fieldName: string, fieldNameId?: string) => (e: any, newValue?: IReferential | null) => {\r\n if (fieldName === 'plateNumber') {\r\n const newValue = e.target.value.toUpperCase().replace(/[^a-zA-Z0-9]/g, ''); // Remove special characters from plate number input\r\n const updatedState = {\r\n ...this.state.carDetailsExtendedData,\r\n [fieldName]: newValue\r\n };\r\n\r\n if (fieldNameId) {\r\n updatedState[fieldNameId] = Utils.GetIdOrNull(newValue);\r\n }\r\n\r\n this.setState({\r\n carDetailsExtendedData: updatedState\r\n });\r\n } else {\r\n !R.isNil(fieldNameId)\r\n ? this.setState({\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n [fieldName]: newValue || e.target.value,\r\n [fieldNameId]: Utils.GetIdOrNull(newValue)\r\n }\r\n })\r\n : this.setState({\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n [fieldName]: newValue || e.target.value\r\n }\r\n });\r\n }\r\n };\r\n\r\n validateFirstRegistrationDate = (selectedDate?: string): string => {\r\n let error = '';\r\n\r\n if (!selectedDate) {\r\n error = this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu');\r\n }\r\n\r\n this.setState({\r\n datePickerFirstRegistrationError: error,\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n firstRegistrationDate: selectedDate || ''\r\n }\r\n });\r\n\r\n return error;\r\n };\r\n\r\n handleFirstRegistrationDateChange = (\r\n date: MaterialUiPickersDate | null,\r\n value?: string | null\r\n ) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n\r\n const selectedDate = date ? date.format('YYYY-MM') : undefined;\r\n this.validateFirstRegistrationDate(selectedDate);\r\n };\r\n\r\n setSelectedOptions = (extraoptions: ValuationExtraOption[], optionCodes: string[]) => {\r\n const indexArray: number[] = [];\r\n optionCodes.forEach((item) => {\r\n const index = extraoptions.findIndex((o) => o.optionCode === item);\r\n if (index !== undefined && index !== -1) {\r\n indexArray.push(index);\r\n\r\n (extraoptions[index] as any).tableData = { checked: true };\r\n extraoptions[index].checked = true;\r\n }\r\n });\r\n\r\n return indexArray;\r\n };\r\n\r\n getValuationInfoConfirmation = async () => {\r\n if (R.isEmpty(this.state.carDetailsExtendedData.vin)) {\r\n this.setState({\r\n showRequiredVinError: true\r\n });\r\n return;\r\n }\r\n\r\n if (\r\n !R.test(\r\n /^(?=.*[0-9])(?=.*[abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ])[0-9abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ-]{17}$/,\r\n this.state.carDetailsExtendedData.vin\r\n )\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'INVALID_CAR_VIN_IDENTIFICATOR',\r\n \"Te rugăm să te asiguri că seria de șasiu introdusă are 17 caractere alfanumerice și nu conține spații sau literele 'O' sau 'I'!\"\r\n ),\r\n {\r\n variant: 'warning'\r\n }\r\n );\r\n return;\r\n }\r\n\r\n this.setState({ selectedVehicle: null, isOpen: true, dialogVisible: true }); //reset the vehicle brought from valuation\r\n };\r\n\r\n getValuationInfo = async () => {\r\n this.setState({ selectedVehicle: null, isOpen: false, dialogVisible: false });\r\n try {\r\n this.setState({ showSearchingLoader: true });\r\n\r\n const body = {\r\n registration_date:\r\n this.state.carDetailsExtendedData.firstRegistrationDate !== ''\r\n ? this.state.carDetailsExtendedData.firstRegistrationDate\r\n : null,\r\n ignore_date: this.state.ignoreTimeStampSwitch,\r\n override_existing_match: this.state.ignoreExistingMappingSwitch\r\n };\r\n\r\n const result = await this.caseService.GetValuationVehiclesInfo(\r\n this.state.carDetailsExtendedData.vin,\r\n null,\r\n body\r\n );\r\n\r\n if (result.vehicles.length === 1) {\r\n result.vehicles[0].vinQuery = true;\r\n this.selectedVehicleHandler(result.vehicles[0], result.extraOptionCodes);\r\n\r\n this.setState({\r\n ...this.state,\r\n valuationVehicles: result.vehicles,\r\n optionCodes: result.extraOptionCodes,\r\n isValuationOpen: true,\r\n showSearchingLoader: false\r\n });\r\n } else {\r\n if (result.vehicles.length == 0) {\r\n this.setState({\r\n // reset vin if no vehicle found\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n vin: ''\r\n }\r\n });\r\n\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'VIN_IDENTIFICATION_NOT_FOUND',\r\n 'Identificarea VIN nu este posibilă , vă rugăm să continuaţi cu selectia manuală a autovehiculului!'\r\n ),\r\n {\r\n variant: 'warning',\r\n autoHideDuration: 5000\r\n }\r\n );\r\n }\r\n\r\n for (let i = 0; i < result.vehicles.length; i++) {\r\n result.vehicles[i].vinQuery = true;\r\n }\r\n\r\n this.setState({\r\n ...this.state,\r\n valuationVehicles: result.vehicles,\r\n optionCodes: result.extraOptionCodes,\r\n isValuationOpen: true,\r\n showSearchingLoader: false\r\n });\r\n }\r\n } catch (err) {\r\n this.setState({ showSearchingLoader: false });\r\n\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'VEHICLE_NOT_IDENTIFIED',\r\n 'Masina nu se poate identifica dupa VIN si data primei inmatriculari. Va rugam incercati identificarea manuala'\r\n ),\r\n { variant: 'error' }\r\n );\r\n }\r\n };\r\n\r\n handleCloseConfirmationDialog = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n\r\n handleCloseModal = () => {\r\n this.setState({\r\n isOpen: false,\r\n dialogVisible: false\r\n });\r\n };\r\n\r\n getManualValuationInfo = async () => {\r\n if (\r\n this.state.carDetailsExtendedData.vin &&\r\n !R.test(\r\n /^(?=.*[0-9])(?=.*[abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ])[0-9abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ-]{17}$/,\r\n this.state.carDetailsExtendedData.vin\r\n )\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'INVALID_CAR_VIN_IDENTIFICATOR',\r\n \"Te rugăm să te asiguri că seria de șasiu introdusă are 17 caractere alfanumerice și nu conține spații sau literele 'O' sau 'I'!\"\r\n ),\r\n {\r\n variant: 'warning'\r\n }\r\n );\r\n return;\r\n }\r\n this.setState({ selectedVehicle: null }); //reset the vehicle brought from valuation\r\n\r\n try {\r\n this.setState({\r\n ...this.state,\r\n valuationVehicles: [],\r\n optionCodes: [],\r\n isValuationOpen: true,\r\n showRequiredVinError: false,\r\n // if manual identification clicke then reset VIN\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n vin: ''\r\n }\r\n });\r\n } catch (err) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'VEHICLE_NOT_IDENTIFIED',\r\n 'Masina nu se poate identifica dupa VIN si data primei inmatriculari. Va rugam incercati identificarea manuala'\r\n ),\r\n { variant: 'error' }\r\n );\r\n }\r\n };\r\n\r\n goToValuationHistory = () => {\r\n this.props.history.push('valuation/history');\r\n };\r\n\r\n private resetVehicleState() {\r\n this.setState({\r\n ...this.state,\r\n isValuationOpen: false,\r\n selectedVehicle: null,\r\n carStandardOptions: [],\r\n carOptionalOptions: [],\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n fuelType: null,\r\n fuelTypeId: null,\r\n vehicleType: null,\r\n vehicleTypeId: null,\r\n mvoDvBattypId: null,\r\n mvoDvBattyp: null,\r\n model: null,\r\n modelId: null,\r\n transmissionType: null,\r\n transmissionTypeId: null,\r\n bodyType: null,\r\n bodyTypeId: null,\r\n make: null,\r\n makeId: null,\r\n version: '',\r\n equipmentVersion: '',\r\n kilometersNr: null,\r\n power: null,\r\n horsePower: null,\r\n engineSize: null,\r\n co2: null,\r\n inConditionComments: null,\r\n outConditionComments: null,\r\n technicalConditionComments: null,\r\n makeDate: '',\r\n engineManufactureCode: '',\r\n nrOfDoors: null,\r\n tractionType: null,\r\n tractionTypeId: null,\r\n color: null,\r\n colorId: null,\r\n paintType: null,\r\n paintTypeId: null,\r\n pollutionNorm: null,\r\n pollutionNormId: null,\r\n firstRegistrationDate: '',\r\n valuationVehicleId: null,\r\n propulsionSystem: ''\r\n }\r\n });\r\n }\r\n\r\n selectedVehicleHandler = async (selectedVehicle: any, optionsCodes: string[]) => {\r\n if (R.isNil(selectedVehicle)) return;\r\n\r\n const model = this.state.modelTypes.find((m) => m.code === selectedVehicle.model);\r\n const bodyType = this.state.bodyTypes.find((b) => b.code === selectedVehicle.body);\r\n const options = await this.caseService.GetValuationVehicleOptions(selectedVehicle.vehicleId);\r\n\r\n const fuelType = this.state.fuelTypes.find(\r\n (fuelType) => fuelType.name === selectedVehicle.fuelType\r\n );\r\n\r\n const vehicleType = this.state.vehicleTypes.find(\r\n (vehicleType) => vehicleType.name === selectedVehicle.vehicleType\r\n );\r\n\r\n const mvoDvBattyp = this.state.mvoDvBattypList.find(\r\n (mvoDvBattyp) => mvoDvBattyp.name === selectedVehicle.mvoDvBattyp\r\n );\r\n\r\n const refurbished = this.state.refurbishedList.find(\r\n (refurbishedItem) => refurbishedItem.name === selectedVehicle.refurbished\r\n );\r\n\r\n const transmissionType = this.state.transmissionTypes.find(\r\n (transmissionType) => transmissionType.code === selectedVehicle.transmission[0]\r\n );\r\n\r\n const make = this.state.brandTypes.find((make) => make.name! === selectedVehicle.manufacturer);\r\n\r\n const traction = this.state.tractionTypes.find(\r\n (tractionType) => tractionType.code === selectedVehicle.drivenWheels[0]\r\n );\r\n\r\n const pollutionNorm = this.state.polutionNormTypes.find(\r\n (x) => x.code === selectedVehicle.pollution\r\n );\r\n\r\n this.setSelectedOptions(options.extraOptions, optionsCodes);\r\n\r\n const valLanguageId = Utils.GetValuationLanguageId(this.props.appState.language);\r\n\r\n const carDetailsExtendedData = {\r\n ...this.state.carDetailsExtendedData,\r\n tractionType: traction || null,\r\n tractionTypeId: Utils.GetIdOrNull(traction),\r\n fuelType: fuelType || null,\r\n fuelTypeId: Utils.GetIdOrNull(fuelType),\r\n vehicleType: vehicleType || null,\r\n vehicleTypeId: Utils.GetIdOrNull(vehicleType),\r\n refurbishedId: Utils.GetIdOrNull(refurbished),\r\n refurbished: refurbished || null,\r\n mvoDvBattypId: Utils.GetIdOrNull(mvoDvBattyp),\r\n mvoDvBattyp: mvoDvBattyp || null,\r\n model: model || null,\r\n modelId: Utils.GetIdOrNull(model),\r\n transmissionType: transmissionType || null,\r\n transmissionTypeId: Utils.GetIdOrNull(transmissionType),\r\n make: make || null,\r\n makeId: Utils.GetIdOrNull(make),\r\n version: selectedVehicle.version || null,\r\n equipmentVersion: selectedVehicle.trimLevel !== undefined ? selectedVehicle.trimLevel : null,\r\n horsePower: selectedVehicle.powerHP || null,\r\n power: selectedVehicle.kw || null,\r\n engineSize: selectedVehicle.cc ?? 0,\r\n co2: selectedVehicle.co2 || 0,\r\n makeDate: selectedVehicle.fabricationDate,\r\n engineManufactureCode: selectedVehicle.engineManufactureCode ?? '',\r\n nrOfDoors: selectedVehicle.noOfDoors,\r\n bodyType: bodyType || null,\r\n bodyTypeId: Utils.GetIdOrNull(bodyType),\r\n pollutionNorm: pollutionNorm || null,\r\n pollutionNormId: Utils.GetIdOrNull(pollutionNorm),\r\n valuationVehicleId: selectedVehicle.vehicleId || null,\r\n vinQuery: selectedVehicle.vinQuery || false,\r\n propulsionSystem: selectedVehicle.propulsionSystem || null,\r\n imgUrl: selectedVehicle.imgUrl || null\r\n };\r\n // Since we need to make the fields that come from Vehicle Info API readonly after they are set\r\n // use a second state in order to allow the user edit the missing fields\r\n this.setState({\r\n carDetailsExtendedData,\r\n carDetailsFetchedData: {\r\n ...carDetailsExtendedData\r\n },\r\n isValuationOpen: true,\r\n selectedVehicle: selectedVehicle,\r\n carStandardOptions: options.standardOptions\r\n .filter(\r\n (item) =>\r\n item.languageId === valLanguageId && !standardOptionsSchemaIds.includes(item.schemaId)\r\n )\r\n .map((op) => {\r\n return {\r\n id: 0,\r\n code: '',\r\n name: op.content,\r\n isStandard: true,\r\n vehicleId: this.state.carDetailsExtendedData.id,\r\n checked: true\r\n } as VehicleOption;\r\n }),\r\n carOptionalOptions: options.extraOptions.map((op) => {\r\n return {\r\n id: 0,\r\n code: op.optionCode,\r\n name: op.description,\r\n isStandard: false,\r\n vehicleId: this.state.carDetailsExtendedData.id,\r\n checked: op.checked\r\n } as VehicleOption;\r\n })\r\n });\r\n\r\n // added this to have the selected vehicle in the vehicle state\r\n this.props.vehicleState.vehicle = this.state.carDetailsExtendedData;\r\n };\r\n\r\n getCarStandardOptionsColumns = () => {\r\n return [\r\n {\r\n field: 'name',\r\n title: this.translatorService.Tranlate('CAR_DETAILS_CAR_STANDARD_OPTION', 'Nume'),\r\n searchable: true\r\n } as Column\r\n ];\r\n };\r\n\r\n getCarOptionalOptionsColumns = () => {\r\n return [\r\n {\r\n field: 'name',\r\n title: this.translatorService.Tranlate('CAR_DETAILS_CAR_OPTIONAL_OPTION', 'Nume'),\r\n searchable: true\r\n } as Column,\r\n {\r\n field: 'code',\r\n title: this.translatorService.Tranlate('CAR_DETAILS_CAR_OPTIONAL_CODE', 'Cod'),\r\n searchable: true\r\n } as Column\r\n ];\r\n };\r\n\r\n loadData = async () => {\r\n const {\r\n vehicleMakeRef,\r\n bodyTypeRef,\r\n tractionTypeRef,\r\n transmissionTypeRef,\r\n fuelTypeRef,\r\n paintTypeRef,\r\n modelRef,\r\n colorRef,\r\n vehicleTypeRef\r\n } = RefConstants;\r\n\r\n const [\r\n vehicleMakeList,\r\n bodyTypeList,\r\n tractionTypeList,\r\n transmissionTypeList,\r\n fuelTypeList,\r\n paintTypeList,\r\n modelTypesList,\r\n colorTypeList,\r\n vehicleTypeList\r\n ] = await Promise.all([\r\n this.appReferentialService.Get(vehicleMakeRef?.baseUrl),\r\n this.appReferentialService.Get(bodyTypeRef!.baseUrl),\r\n this.appReferentialService.Get(tractionTypeRef!.baseUrl),\r\n this.appReferentialService.Get(transmissionTypeRef!.baseUrl),\r\n this.appReferentialService.Get(fuelTypeRef!.baseUrl),\r\n this.appReferentialService.Get(paintTypeRef!.baseUrl),\r\n this.appReferentialService.Get(modelRef!.baseUrl),\r\n this.appReferentialService.Get(colorRef!.baseUrl),\r\n this.appReferentialService.Get(vehicleTypeRef!.baseUrl)\r\n ]);\r\n\r\n this.setState({\r\n isLoading: false,\r\n brandTypes: vehicleMakeList,\r\n bodyTypes: bodyTypeList,\r\n tractionTypes: tractionTypeList,\r\n transmissionTypes: transmissionTypeList,\r\n fuelTypes: fuelTypeList,\r\n paintTypes: paintTypeList,\r\n modelTypes: modelTypesList as IReferentialModel[],\r\n colorTypes: colorTypeList,\r\n vehicleTypes: vehicleTypeList\r\n });\r\n };\r\n\r\n onChangeFirstRegistrationDate = (date: Date | null) => {\r\n if (date === null) {\r\n return;\r\n }\r\n const selectedDate = date ? moment(date).format('YYYY-MM-DD') : '';\r\n\r\n this.setState({\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n firstRegistrationDate: selectedDate\r\n }\r\n });\r\n };\r\n\r\n handleChassisNumberChange = (e: any) => {\r\n const vin = e.target.value;\r\n\r\n this.setState(\r\n (prevState) => ({\r\n carDetailsExtendedData: {\r\n ...prevState.carDetailsExtendedData,\r\n vin: vin\r\n }\r\n }),\r\n () => {\r\n if (this.state.carDetailsExtendedData.vin !== '') {\r\n this.setState({ showRequiredVinError: false });\r\n }\r\n\r\n const isValidVin =\r\n /^(?=.*[0-9])(?=.*[abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ])[0-9abcdefghjklmnprstuvwxyzABCDEFGHJKLMNPRSTUVWXYZ-]{17}$/.test(\r\n this.state.carDetailsExtendedData.vin\r\n );\r\n }\r\n );\r\n };\r\n\r\n handlePlateNumberBlur = async (plateNumber: PlateNumber) => {\r\n if (!Utils.validatePlateNumber(plateNumber.PlateNumber)) return;\r\n\r\n try {\r\n const vinRequest = await this.caseService.GetVinByPlateNumberRequest(plateNumber);\r\n\r\n if (vinRequest.success) {\r\n this.setState({\r\n carDetailsExtendedData: {\r\n ...this.state.carDetailsExtendedData,\r\n vin: vinRequest.vin\r\n }\r\n });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } else {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('ERROR_MSG_VIN', 'Eroare la obtinerea VIN'),\r\n {\r\n variant: 'error'\r\n }\r\n );\r\n }\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n renderClientDataForm = () => {\r\n return (\r\n {\r\n this.submitVehicleData(e);\r\n }}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {!this.state.showSearchingLoader ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n )\r\n }}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n {\r\n this.onChange('plateNumber')(e);\r\n }}\r\n onBlur={async (e: any) => {\r\n const plateNumberObject: PlateNumber = {\r\n PlateNumber: e.target.value,\r\n externalClient: false\r\n };\r\n await this.handlePlateNumberBlur(plateNumberObject);\r\n }}\r\n error={\r\n this.state.carDetailsExtendedData.plateNumber !== '' &&\r\n !Utils.validatePlateNumber(this.state.carDetailsExtendedData.plateNumber)\r\n }\r\n helperText={\r\n this.state.carDetailsExtendedData.plateNumber !== ''\r\n ? Utils.validatePlateNumber(this.state.carDetailsExtendedData.plateNumber)\r\n ? ''\r\n : this.translatorService.Tranlate(\r\n 'CAR_DETAILS_PLATE_NUMBER_ERROR',\r\n 'Numarul de inmatriculare nu este valid'\r\n )\r\n : ''\r\n }\r\n validators={['matchRegexp:^[A-Z]{1,2}[0-9]{2,3}[A-Z]{3}$']}\r\n errorMessages={[\r\n this.translatorService.Tranlate(\r\n 'CAR_DETAILS_PLATE_NUMBER_ERROR',\r\n 'Numarul de inmatriculare nu este valid'\r\n )\r\n ]}\r\n label={this.translatorService.Tranlate(\r\n 'CAR_DETAILS_PLATE_NUMBER',\r\n 'Numar inmatriculare'\r\n )}\r\n />\r\n \r\n {this.translatorService.Tranlate(\r\n 'CAR_DETAILS_TRY_WITH_PLATE_NUMBER',\r\n '*Nu ai VIN-ul la indemana? Incearca cu nr de inmatriculare'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {\r\n this.setState({\r\n ignoreTimeStampSwitch: !this.state.ignoreTimeStampSwitch\r\n });\r\n if (!this.state.ignoreTimeStampSwitch) {\r\n this.setState({\r\n datePickerFirstRegistrationError: ''\r\n });\r\n }\r\n }}\r\n color=\"primary\"\r\n />\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'IGNORE_TIME_STAMP_SWITCH',\r\n 'Ignora orice reper temporal'\r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n this.setState({\r\n ignoreExistingMappingSwitch: !this.state.ignoreExistingMappingSwitch\r\n });\r\n }}\r\n color=\"primary\"\r\n />\r\n }\r\n label={this.translatorService.Tranlate(\r\n 'IGNORE_EXISTING_MAPPING',\r\n 'Ignora maparea existenta'\r\n )}\r\n />\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {this.translatorService.Tranlate('VALUATION_DIALOG_HEADER', 'Selectare vehicul')}\r\n \r\n {\r\n this.setState({ isValuationOpen: false, isOpen: false, dialogVisible: false });\r\n\r\n !R.isNil(this.state.selectedVehicle)\r\n ? (this.props.vehicleState.vehicle = null)\r\n : null;\r\n\r\n this.resetVehicleState();\r\n this.props.resetVehicleState();\r\n }}\r\n size={'small'}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n {`${this.translatorService.Tranlate(\r\n 'VIN_IDENTIFICATION_CONFIRMATION_MESSAGE',\r\n 'Identificarea conform VIN presupune un cost suplimentar - Doriţi să continuaţi ?'\r\n )} `}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n }\r\n onClick={this.getManualValuationInfo}\r\n >\r\n {this.translatorService.Tranlate(\r\n 'EVALUATION_MANUAL_IDENTIFICATION_BUTTON_LABEL',\r\n 'Identificare manuala'\r\n )}\r\n \r\n \r\n }\r\n onClick={this.getValuationInfoConfirmation}\r\n >\r\n {this.translatorService.Tranlate(\r\n 'VIN_QUERY_IDENTIFICATION',\r\n 'Identificare cu VIN Query'\r\n )}\r\n \r\n \r\n \r\n {this.translatorService.Tranlate(\r\n 'CAR_DETAILS_HISTORY_BUTTON_LABEL',\r\n 'Istoric evaluari'\r\n )}\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n this.vehicleService = (this.context as AppContext).vehicleService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ?
{this.renderClientDataForm()}
: null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nconst ConnectedComponent = connect(\r\n (\r\n state: ApplicationState,\r\n ownProps: ExternalCaseDetailsCaseTabCarDetailsExtendedContainerProps\r\n ) => ({\r\n caseSettingsState: state.caseSettings,\r\n appState: state.app,\r\n vehicleState: state.vehicle,\r\n ...ownProps\r\n }),\r\n { ...CaseSettingsActionCreators, ...VehicleActionCreators }\r\n)(DetailsValuationContainer);\r\n\r\nexport default withRouter(withSnackbar(ConnectedComponent));\r\n","import React, { Fragment, useState } from 'react';\r\nimport { Box } from '@material-ui/core';\r\nimport { useAppSelector } from '../../store/configureStore';\r\n\r\nimport DetailsValuationContainer from './DetailsValuationContainer';\r\nimport moment from 'moment';\r\nimport { useSnackbar } from 'notistack';\r\nimport Loader from '../Loader';\r\n\r\nconst EvaluationPage = () => {\r\n const [isLoading, setIsLoading] = React.useState(false);\r\n\r\n const language = useAppSelector((state) => state.app?.language);\r\n\r\n return (\r\n \r\n {isLoading ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default EvaluationPage;\r\n","export default __webpack_public_path__ + \"static/media/logo_carfix_partner.418906c6.png\";","import React, { Fragment, useContext } from 'react';\r\nimport {\r\n Typography,\r\n Grid,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableRow,\r\n ListItemIcon\r\n} from '@material-ui/core';\r\nimport projectLogo from '../../assets/images/logo_carfix_partner.png';\r\nimport { FiberManualRecord } from '@material-ui/icons';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport * as R from 'ramda';\r\nimport ImageNotAvailable from '../../assets/images/car-image-not-available.jpg';\r\nimport moment from 'moment';\r\n\r\nconst EvaluationReportFile = (reportData: any) => {\r\n const { carDetails } = reportData;\r\n const context = useContext(ApplicationContext);\r\n const translatorService = context.translatorService;\r\n const basicTableCellStyle = {\r\n fontSize: '13px',\r\n padding: '0 0 0 16px'\r\n };\r\n const leftTableCellStyle = {\r\n width: '40%',\r\n fontWeight: 'bold'\r\n };\r\n\r\n const checkIfImageExists = (url: string | undefined) => {\r\n if (R.isNil(url) || url.includes('undefined') || url.includes('null') || url === '') {\r\n return ImageNotAvailable;\r\n }\r\n return url;\r\n };\r\n\r\n function formatDateTime(dateTimeString: string) {\r\n const date = new Date(dateTimeString);\r\n\r\n const day = String(date.getDate()).padStart(2, '0');\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const year = date.getFullYear();\r\n\r\n const hours = String(date.getHours()).padStart(2, '0');\r\n const minutes = String(date.getMinutes()).padStart(2, '0');\r\n\r\n const formattedDate = `${day}-${month}-${year}`;\r\n const formattedTime = `${parseInt(hours) + 3}:${minutes}`;\r\n\r\n const formattedDateTime = `${formattedDate} ${formattedTime}`;\r\n\r\n return formattedDateTime;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate('VALUATION_REPORT_TITLE', 'Raport evaluare')}\r\n \r\n \r\n \r\n \r\n {`${!R.isNil(carDetails?.make) ? carDetails.make : ''} \r\n ${!R.isNil(carDetails?.model) ? carDetails.model : ''}\r\n ${!R.isNil(carDetails?.version) ? carDetails.version : ''},\r\n ${carDetails?.numberOfKilometers ? carDetails.numberOfKilometers : 0} km\r\n `}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {translatorService.Tranlate(\r\n 'VALUATION_REPORT_CAR_DETAILS_LABEL',\r\n 'Specificatii autovehicul'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate('CAR_DETAILS_CHASIS_CODE', 'Serie sasiu')}\r\n \r\n \r\n {carDetails.vin ? carDetails.vin : '-'}\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate('VALUATION_REPORT_MAKE_LABEL', 'Producator')}\r\n \r\n \r\n {carDetails.make ? carDetails.make : '-'}\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate('VALUATION_REPORT_MODEL_LABEL', 'Model')}\r\n \r\n \r\n {carDetails.model ? carDetails.model : '-'}\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate('VALUATION_REPORT_VERSION_LABEL', 'Versiune')}\r\n \r\n \r\n {carDetails.version ? carDetails.version : '-'}\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate('VALUATION_REPORT_EQUIP_LABEL', 'Echipare')}\r\n \r\n \r\n {carDetails.equipmentVersion ? carDetails.equipmentVersion : '-'}\r\n \r\n \r\n\r\n \r\n \r\n {translatorService.Tranlate('VALUATION_REPORT_FUEL_LABEL', 'Combustibil')}\r\n \r\n \r\n {carDetails.fuelType ? carDetails.fuelType : '-'}\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate(\r\n 'VALUATION_REPORT_GEARBOX_LABEL',\r\n 'Cutie de viteze'\r\n )}\r\n \r\n \r\n {carDetails.transmissionType ? carDetails.transmissionType : '-'}\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate('VALUATION_REPORT_HORSE_POWER_LABEL', 'Cai putere')}\r\n \r\n \r\n {carDetails.horsePower ? carDetails.horsePower : '-'}\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate('VALUATION_REPORT_BODY_TYPE_LABEL', 'Caroserie')}\r\n \r\n \r\n {carDetails.bodyType ? carDetails.bodyType : '-'}\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate('VALUATION_REPORT_DOORS_NUMBER_LABEL', 'Numar usi')}\r\n \r\n \r\n {carDetails.nrOfDoors ? carDetails.nrOfDoors : '-'}\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate('CAR_DETAILS_COLOR', 'Culoare')}\r\n \r\n \r\n {carDetails.color ? carDetails.color : '-'}\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate(\r\n 'CAR_DETAILS_DATE_OF_FABRICATION',\r\n 'Data fabricatie'\r\n )}\r\n \r\n \r\n {carDetails.fabricationDate\r\n ? new Date(carDetails.fabricationDate).toLocaleDateString('en-GB')\r\n : '-'}\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate(\r\n 'VALUATION_REGISTRATION_DATE_LABEL',\r\n 'Data primei inmatriculari'\r\n )}\r\n \r\n \r\n {carDetails.registrationDate\r\n ? moment(carDetails.registrationDate).format('MM/YYYY')\r\n : '-'}\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n {translatorService.Tranlate('VALUATION_REPORT_CAR_PRICES_LABEL', 'Detalii evaluare')}\r\n \r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate('VALUATION_REPORT_VALUATIO_NUMBER', 'Nr. evaluare')}\r\n \r\n \r\n {carDetails.id ? `VALUATION-${carDetails.id}` : ''}\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate('VALUATION_REPORT_VALUATION_DATE', 'Data evaluare')}\r\n \r\n \r\n {carDetails.dateCreation ? formatDateTime(carDetails.dateCreation) : ''}\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate(\r\n 'VALUATION_REPORT_BASE_PRICE_LABEL',\r\n 'Pret masina noua'\r\n )}\r\n \r\n \r\n {carDetails.priceAsNew ? carDetails.priceAsNew.toFixed(2) : '0.00'} €{' '}\r\n {translatorService.Tranlate('VALUATION_REPORT_INCLUDING_VAT_LABEL', 'brut')}\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate(\r\n 'VALUATION_REPORT_OPTIONS_PRICE_LABEL',\r\n 'Pret optionale extra'\r\n )}\r\n \r\n \r\n {carDetails.extraOptionsPrice\r\n ? carDetails.extraOptionsPrice.toFixed(2)\r\n : '0.00'}{' '}\r\n € {translatorService.Tranlate('VALUATION_REPORT_INCLUDING_VAT_LABEL', 'brut')}\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate(\r\n 'VALUATION_REPORT_TOTAL_LABEL',\r\n 'Pret total masina noua'\r\n )}\r\n \r\n \r\n {carDetails.priceAsNew >= 0 && carDetails.extraOptionsPrice >= 0\r\n ? (carDetails.priceAsNew + carDetails.extraOptionsPrice).toFixed(2)\r\n : '0.00'}{' '}\r\n € {translatorService.Tranlate('VALUATION_REPORT_INCLUDING_VAT_LABEL', 'brut')}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {translatorService.Tranlate(\r\n 'VALUATION_REPORT_CAR_DETAILS_ESTIMATIONS_LABEL',\r\n 'Valori estimate'\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate(\r\n 'VALUATION_REPORT_TRADE_IN_PRICE_LABEL',\r\n 'Trade-in price'\r\n )}\r\n \r\n \r\n {carDetails.tradeInPrice ? carDetails.tradeInPrice.toFixed(2) : '0.00'} €{' '}\r\n {translatorService.Tranlate('VALUATION_REPORT_INCLUDING_VAT_LABEL', 'brut')}\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate(\r\n 'VALUATION_REPORT_OFFER_PRICE_LABEL',\r\n 'Offer price'\r\n )}\r\n \r\n \r\n {carDetails.offerPrice ? carDetails.offerPrice.toFixed(2) : '0.00'} €{' '}\r\n {translatorService.Tranlate('VALUATION_REPORT_INCLUDING_VAT_LABEL', 'brut')}\r\n \r\n \r\n \r\n \r\n {translatorService.Tranlate(\r\n 'VALUATION_REPORT_RETAIL_PRICE_LABEL',\r\n 'Retail price'\r\n )}\r\n \r\n \r\n {carDetails.retailPrice ? carDetails.retailPrice.toFixed(2) : '0.00'} €{' '}\r\n {translatorService.Tranlate('VALUATION_REPORT_INCLUDING_VAT_LABEL', 'brut')}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n {`${translatorService.Tranlate(\r\n 'VALUATION_CAR_FILE_STANDARD_OPTIONS',\r\n 'Optionale standard selectate'\r\n )}:`}\r\n \r\n {R.isNil(carDetails.options) ||\r\n R.isNil(carDetails.options.standardOptions) ||\r\n carDetails.options.standardOptions.length === 0 ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n {carDetails.options?.standardOptions.map((item: any, index: any) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n \r\n \r\n \r\n {`${translatorService.Tranlate(\r\n 'VALUATION_CAR_FILE_EXTRA_OPTIONS',\r\n 'Optionale extra selectate'\r\n )}:`}\r\n \r\n {R.isNil(carDetails.options) ||\r\n R.isNil(carDetails.options.extraOptions) ||\r\n carDetails.options.extraOptions.length === 0 ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n {carDetails.options?.extraOptions.map((item: any, index: any) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default EvaluationReportFile;\r\n","import React, { Fragment, useContext, useEffect, useRef, useState } from 'react';\r\nimport { useParams } from 'react-router';\r\nimport {\r\n Typography,\r\n Button,\r\n Grid,\r\n Card,\r\n CardContent,\r\n FormControlLabel,\r\n CardMedia,\r\n TextField,\r\n Checkbox,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n ListItemIcon\r\n} from '@material-ui/core';\r\nimport { FiberManualRecord } from '@material-ui/icons';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport { useHistory } from 'react-router';\r\nimport { ValuationVehicleOptions } from '../../interfaces/Case';\r\nimport { Label } from 'reactstrap';\r\nimport * as R from 'ramda';\r\nimport { Utils } from '../../helpers/Utils';\r\nimport Loader from '../Loader';\r\nimport { useSnackbar } from 'notistack';\r\nimport { useAppSelector } from '../../store/configureStore';\r\nimport { ValuationCarFile } from './evaluation.types';\r\nimport { getCarValuationDetails, getValuationVehicleOptions } from './evaluation.requests';\r\nimport ImageNotAvailable from '../../assets/images/car-image-not-available.jpg';\r\nimport { standardOptionsSchemaIds } from './DetailsValuation';\r\nimport * as html2pdf from 'html2pdf.js';\r\nimport html2canvas from 'html2canvas';\r\nimport EvaluationReportFile from './EvaluationReportFile';\r\nimport moment from 'moment';\r\n\r\nconst EvaluationCarFile = () => {\r\n const { enqueueSnackbar } = useSnackbar();\r\n const context = useContext(ApplicationContext);\r\n const history = useHistory();\r\n const translatorService = context.translatorService;\r\n const language = useAppSelector((state) => (state.app?.language ? state.app.language : 'ro'));\r\n const valLanguageId = Utils.GetValuationLanguageId(language);\r\n const valuationId = parseInt(useParams<{ id: string }>().id);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isOptionsLoading, setIsOptionsLoading] = useState(false);\r\n const [carDetails, setCarDetails] = useState({} as ValuationCarFile);\r\n const reportRef = useRef(null);\r\n\r\n const fetchCarDetails = async (id: number) => {\r\n setIsLoading(true);\r\n try {\r\n const carDetailsResponse = await getCarValuationDetails(id);\r\n\r\n if (carDetailsResponse.error || !carDetailsResponse.data) {\r\n resetCarDetails();\r\n enqueueSnackbar(\r\n translatorService.Tranlate(\r\n 'EVALUATION_CAR_FILE_ERROR',\r\n 'A aparut o eroare la preluarea detaliilor masinii'\r\n ),\r\n { variant: 'error' }\r\n );\r\n\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n let decodedOptions = {} as ValuationVehicleOptions;\r\n if (\r\n !R.isNil(carDetailsResponse.data.options) &&\r\n !R.isEmpty(carDetailsResponse.data.options)\r\n ) {\r\n decodedOptions = {\r\n extraOptions: JSON.parse(carDetailsResponse.data.options),\r\n standardOptions: []\r\n };\r\n }\r\n\r\n setCarDetails(\r\n (prevState) =>\r\n ({\r\n ...prevState,\r\n ...carDetailsResponse.data,\r\n options: decodedOptions\r\n } as ValuationCarFile)\r\n );\r\n } catch (error) {\r\n resetCarDetails();\r\n enqueueSnackbar(\r\n translatorService.Tranlate(\r\n 'EVALUATION_CAR_FILE_ERROR',\r\n 'A aparut o eroare la preluarea detaliilor masinii'\r\n ),\r\n { variant: 'error' }\r\n );\r\n }\r\n setIsLoading(false);\r\n };\r\n\r\n const getCarOptions = async (vehicleId: number) => {\r\n setIsOptionsLoading(true);\r\n try {\r\n const carOptionsResponse = await getValuationVehicleOptions(vehicleId);\r\n if (carOptionsResponse.error || !carOptionsResponse.data) {\r\n enqueueSnackbar(\r\n translatorService.Tranlate(\r\n 'EVALUATION_CAR_FILE_FETCHING_STANDARD_OPTIONS_ERROR',\r\n 'A aparut o eroare la preluarea optiunilor standard ale vehiculului'\r\n ),\r\n { variant: 'error' }\r\n );\r\n setIsOptionsLoading(false);\r\n return;\r\n }\r\n\r\n const standardOptions = carOptionsResponse.data[0].standardOptions.filter(\r\n (option) =>\r\n option.languageId === valLanguageId && !standardOptionsSchemaIds.includes(option.schemaId)\r\n );\r\n\r\n setCarDetails(\r\n (prevState) =>\r\n ({\r\n ...prevState,\r\n options: {\r\n ...prevState.options,\r\n standardOptions: standardOptions\r\n }\r\n } as ValuationCarFile)\r\n );\r\n } catch (error) {\r\n enqueueSnackbar(\r\n translatorService.Tranlate(\r\n 'EVALUATION_CAR_FILE_FETCHING_STANDARD_OPTIONS_ERROR',\r\n 'A aparut o eroare la preluarea optiunilor standard ale vehiculului'\r\n ),\r\n { variant: 'error' }\r\n );\r\n }\r\n setIsOptionsLoading(false);\r\n };\r\n\r\n const resetCarDetails = () => {\r\n setCarDetails({\r\n date: '',\r\n valuationDate: '',\r\n numberOfKilometers: 0,\r\n extraOptionsPrice: 0,\r\n extraOptionsDepreciationPrice: 0,\r\n valuationPrice: 0,\r\n priceAsNew: 0,\r\n bodyDamageValue: 0,\r\n attritionValue: 0,\r\n fabricationDate: '',\r\n gpl: false,\r\n vatRate: 0,\r\n options: null,\r\n registrationDate: '',\r\n color: '',\r\n imageUrl: '',\r\n tradeInPrice: 0,\r\n offerPrice: 0,\r\n retailPrice: 0,\r\n make: '',\r\n model: '',\r\n version: '',\r\n equipmentVersion: '',\r\n dateCreation: '',\r\n dateModification: '',\r\n createdBy: '',\r\n modifiedBy: '',\r\n id: 0,\r\n caseId: 0,\r\n userId: '',\r\n valuationSourceId: 0,\r\n vehicleSourceId: 0,\r\n case: null,\r\n vin: ''\r\n });\r\n };\r\n\r\n const goToNewEvaluation = () => {\r\n history.push('/valuation');\r\n resetCarDetails();\r\n };\r\n\r\n const goToHistory = () => {\r\n history.push('/valuation/history');\r\n resetCarDetails();\r\n };\r\n\r\n const formattedThisDateTime = () => {\r\n const now = new Date();\r\n const formattedDate = now.toLocaleDateString('en-GB').replace(/\\//g, '.');\r\n const formattedTime = now.toLocaleTimeString('en-GB', {\r\n hour: '2-digit',\r\n minute: '2-digit'\r\n });\r\n\r\n return `${formattedDate}, ${formattedTime}`;\r\n };\r\n\r\n const downloadCarPdfRaport = async () => {\r\n const element = reportRef.current;\r\n if (element) {\r\n const options = {\r\n margin: [20, 10, 25, 10],\r\n filename: `Raport_evaluare_${carDetails.make}_${carDetails.model}_${new Date(\r\n carDetails.date\r\n ).toLocaleDateString('en-GB')}.pdf`,\r\n image: { type: 'jpeg', quality: 1.0 },\r\n html2canvas: { scale: 4, useCORS: true },\r\n jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }\r\n };\r\n\r\n const worker = html2pdf().from(element).set(options).toPdf();\r\n\r\n worker.get('pdf').then((pdf: any) => {\r\n const totalPages = pdf.internal.getNumberOfPages();\r\n const pageHeight = pdf.internal.pageSize.height;\r\n const pageWidth = pdf.internal.pageSize.width;\r\n const reportName = translatorService.Tranlate('VALUATION_REPORT_TITLE', 'Raport evaluare');\r\n const dateAndTime = formattedThisDateTime();\r\n\r\n for (let i = 1; i <= totalPages; i++) {\r\n pdf.setPage(i);\r\n pdf.setFontSize(8);\r\n\r\n // Add 'Raport evaluare' to the top left corner\r\n pdf.text(reportName, 10, 10);\r\n\r\n // Add date and time to the top right corner\r\n pdf.text(dateAndTime, pageWidth - 30, 10);\r\n\r\n // Add page number to the bottom right corner\r\n pdf.text(`${i}/${totalPages}`, pageWidth - 15, pageHeight - 10);\r\n }\r\n });\r\n\r\n worker.save();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n fetchCarDetails(valuationId);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (carDetails.vehicleSourceId) {\r\n getCarOptions(carDetails.vehicleSourceId);\r\n // getCarOptions(833282720240220);\r\n }\r\n }, [carDetails.vehicleSourceId]);\r\n\r\n const checkIfImageExists = (url: string | undefined) => {\r\n if (R.isNil(url) || url.includes('undefined') || url.includes('null') || url === '') {\r\n return ImageNotAvailable;\r\n }\r\n return url;\r\n };\r\n\r\n return (\r\n \r\n {isLoading ? (\r\n \r\n ) : (\r\n
\r\n \r\n \r\n {`${!R.isNil(carDetails?.make) ? carDetails.make : ''} \r\n ${!R.isNil(carDetails?.model) ? carDetails.model : ''}\r\n ${!R.isNil(carDetails?.version) ? carDetails.version : ''}\r\n `}\r\n \r\n {\r\n goToHistory();\r\n }}\r\n >\r\n {translatorService.Tranlate('CAR_DETAILS_HISTORY_BUTTON_LABEL', 'Istoric evaluari')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n label={translatorService.Tranlate(\r\n 'VALUATION_CAR_HAS_GPL_LABEL',\r\n 'Masina prezinta instalatie GPL'\r\n )}\r\n />\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n {\r\n downloadCarPdfRaport();\r\n }}\r\n disabled={isLoading || isOptionsLoading}\r\n >\r\n {translatorService.Tranlate(\r\n 'VALUATION_CAR_FILE_DOWNLOAD_RAPORT_PDF',\r\n 'Descarca raport PDF'\r\n )}\r\n \r\n \r\n \r\n {\r\n goToNewEvaluation();\r\n }}\r\n >\r\n {translatorService.Tranlate(\r\n 'VALUATION_CAR_FILE_NEW_EVALUATION',\r\n 'Evaluare noua'\r\n )}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {carDetails.priceAsNew ? carDetails.priceAsNew.toFixed(2) : '0.00'} €\r\n
\r\n
\r\n {carDetails.extraOptionsPrice\r\n ? carDetails.extraOptionsPrice.toFixed(2)\r\n : '0.00'}{' '}\r\n €\r\n
\r\n
\r\n {carDetails.priceAsNew >= 0 && carDetails.extraOptionsPrice >= 0\r\n ? (carDetails.priceAsNew + carDetails.extraOptionsPrice).toFixed(2)\r\n : '0.00'}{' '}\r\n €\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {carDetails.tradeInPrice ? carDetails.tradeInPrice.toFixed(2) : 0} €\r\n
\r\n
\r\n {carDetails.offerPrice ? carDetails.offerPrice.toFixed(2) : 0} €\r\n
\r\n
\r\n {carDetails.retailPrice ? carDetails.retailPrice.toFixed(2) : 0} €\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {`${translatorService.Tranlate(\r\n 'VALUATION_CAR_FILE_STANDARD_OPTIONS',\r\n 'Optionale standard selectate'\r\n )}:`}\r\n \r\n {!isOptionsLoading ? (\r\n R.isNil(carDetails.options) ||\r\n R.isNil(carDetails.options.standardOptions) ||\r\n carDetails.options.standardOptions.length === 0 ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n {carDetails.options?.standardOptions.map((item, index) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n )\r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {`${translatorService.Tranlate(\r\n 'VALUATION_CAR_FILE_EXTRA_OPTIONS',\r\n 'Optionale extra selectate'\r\n )}:`}\r\n \r\n {R.isNil(carDetails.options) ||\r\n R.isNil(carDetails.options.extraOptions) ||\r\n carDetails.options.extraOptions.length === 0 ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n {carDetails.options?.extraOptions.map((item, index) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n
\r\n {!isLoading && !isOptionsLoading && (\r\n
\r\n
\r\n \r\n
\r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default EvaluationCarFile;\r\n","import { API } from '../../helpers/API';\r\nimport { ValuationCarFile } from './evaluation.types';\r\nimport { ValuationVehicleOptions } from '../../interfaces/Case';\r\n\r\ninterface CarValuationResponse {\r\n message: string;\r\n error: boolean;\r\n data: ValuationCarFile;\r\n}\r\n\r\ninterface CarValuationListResponse {\r\n message: string;\r\n error: boolean;\r\n data: ValuationVehicleOptions[];\r\n}\r\n\r\ninterface CarValuationHistoryResponse {\r\n message: string;\r\n error: boolean;\r\n data: ValuationCarFile[];\r\n}\r\n\r\nexport const getCarValuationDetails = async (id: number): Promise => {\r\n try {\r\n const response = await API.GetAsync(`/case/getValuation/${id}`);\r\n return {\r\n message: 'Success',\r\n error: false,\r\n data: response.data as ValuationCarFile\r\n };\r\n } catch (e) {\r\n return {\r\n message: 'Error getting car valuation details',\r\n error: true,\r\n data: {} as ValuationCarFile\r\n };\r\n }\r\n};\r\n\r\nexport const getValuationVehicleOptions = async (\r\n vehicleId: number\r\n): Promise => {\r\n try {\r\n const response = await API.GetAsync(`/case/valuationOptions/${vehicleId}`);\r\n return {\r\n message: 'Success',\r\n error: false,\r\n data: [response.data as ValuationVehicleOptions]\r\n };\r\n } catch (e) {\r\n return {\r\n message: 'Error getting car valuation options',\r\n error: true,\r\n data: [] as ValuationVehicleOptions[]\r\n };\r\n }\r\n};\r\n\r\nexport const getValuationVehicleHistory = async (): Promise => {\r\n try {\r\n const response = await API.GetAsync(`/case/valuation-history`);\r\n return {\r\n message: 'Success',\r\n error: false,\r\n data: response.data as ValuationCarFile[]\r\n };\r\n } catch (e) {\r\n return {\r\n message: 'Error getting car valuation history',\r\n error: true,\r\n data: [] as ValuationCarFile[]\r\n };\r\n }\r\n};\r\n","import React, { Fragment, useContext, useEffect, useState } from 'react';\r\nimport MUIDataTable, { MUIDataTableColumnOptions, SelectableRows } from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport { useHistory } from 'react-router';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport { Typography, Button, Grid } from '@material-ui/core';\r\nimport Loader from '../Loader';\r\nimport { useSnackbar } from 'notistack';\r\nimport { ValuationCarFile } from './evaluation.types';\r\nimport { getValuationVehicleHistory } from './evaluation.requests';\r\nimport { useAppSelector } from '../../store/configureStore';\r\nimport moment from 'moment';\r\n\r\nconst EvaluationHistory = () => {\r\n const { enqueueSnackbar } = useSnackbar();\r\n const context = useContext(ApplicationContext);\r\n const history = useHistory();\r\n const translatorService = context.translatorService;\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [valuationHistory, setValuationHistory] = useState([]);\r\n const dateFormat = useAppSelector((state) => state.app?.dateFormat);\r\n\r\n const fetchHistory = async () => {\r\n setIsLoading(true);\r\n\r\n try {\r\n const historyValuationResponse = await getValuationVehicleHistory();\r\n\r\n if (historyValuationResponse.error || !historyValuationResponse.data) {\r\n enqueueSnackbar(\r\n translatorService.Tranlate(\r\n 'EVALUATION_CAR_FILE_FETCHING_HISTORY_ERROR',\r\n 'A aparut o eroare la preluarea istoricului de evaluari'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n\r\n const sortedHistory = historyValuationResponse.data.sort((a, b) => (a.id > b.id ? -1 : 1));\r\n\r\n setValuationHistory(sortedHistory);\r\n } catch (e) {\r\n enqueueSnackbar(\r\n translatorService.Tranlate(\r\n 'EVALUATION_CAR_FILE_FETCHING_HISTORY_ERROR',\r\n 'A aparut o eroare la preluarea istoricului de evaluari'\r\n ),\r\n { variant: 'error' }\r\n );\r\n }\r\n\r\n setIsLoading(false);\r\n };\r\n\r\n useEffect(() => {\r\n fetchHistory();\r\n }, []);\r\n\r\n const goToNewEvaluation = () => {\r\n history.push('/valuation');\r\n };\r\n\r\n const getHistoryColumns = () => {\r\n return [\r\n {\r\n name: 'id',\r\n label: translatorService.Tranlate('VALUATION_CAR_FILE_TABLE_ID_LABEL', 'ID'),\r\n options: {\r\n filter: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'make',\r\n label: translatorService.Tranlate('VALUATION_CAR_FILE_MANUFACTURER', 'Producator'),\r\n options: {\r\n filter: true\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'model',\r\n label: translatorService.Tranlate('VALUATION_CAR_FILE_MODEL', 'Model'),\r\n options: {\r\n filter: true\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'version',\r\n label: translatorService.Tranlate('VALUATION_CAR_FILE_VERSION', 'Versiune'),\r\n options: {\r\n filter: true\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'equipmentVersion',\r\n label: translatorService.Tranlate('VALUATION_CAR_FILE_EQUIPMENT', 'Echipare'),\r\n options: {\r\n filter: true\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'fabricationDate',\r\n label: translatorService.Tranlate(\r\n 'VALUATION_CAR_FILE_DATE_OF_FABRICATION',\r\n 'Data fabricatiei'\r\n ),\r\n options: {\r\n filter: true,\r\n customBodyRender: (value: string) => {\r\n return value ? moment(value).format(dateFormat || 'DD/MM/YYYY') : '-';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'registrationDate',\r\n label: translatorService.Tranlate(\r\n 'VALUATION_CAR_FILE_DATE_OF_REGISTRATION',\r\n 'Data primei inmatriculari'\r\n ),\r\n options: {\r\n filter: true,\r\n customBodyRender: (value: string) => {\r\n return value ? moment(value).format(dateFormat || 'DD/MM/YYYY') : '-';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'dateCreation',\r\n label: translatorService.Tranlate(\r\n 'VALUATION_CAR_FILE_DATE_OF_EVALUATION',\r\n 'Data evaluarii'\r\n ),\r\n options: {\r\n filter: true,\r\n customBodyRender: (value: string) => {\r\n return value ? moment(value).format(dateFormat || 'DD/MM/YYYY') : '-';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'numberOfKilometers',\r\n label: translatorService.Tranlate('VALUATION_CAR_FILE_KILOMETERS', 'Kilometri'),\r\n options: {\r\n filter: true\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'vehicleSourceId',\r\n label: translatorService.Tranlate('VALUATION_CAR_FILE_CAR_ID', 'Id autovehicul'),\r\n options: {\r\n filter: false,\r\n sort: false\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'vin',\r\n label: translatorService.Tranlate('VALUATION_CAR_FILE_CAR_VIN', 'VIN'),\r\n options: {\r\n filter: false,\r\n sort: false\r\n } as MUIDataTableColumnOptions\r\n }\r\n ];\r\n };\r\n\r\n const getHistoryOptions = () => {\r\n return {\r\n selectableRows: 'none' as SelectableRows,\r\n download: false,\r\n print: false,\r\n viewColumns: false,\r\n rowsPerPage: 10,\r\n rowsPerPageOptions: [5, 10, 20],\r\n textLabels: MUITranslations.GetTranslations(translatorService),\r\n elevation: 1,\r\n\r\n onRowClick: (rowData: string[]) => {\r\n history.push(`/valuation/file/${rowData[0]}`);\r\n }\r\n };\r\n };\r\n return (\r\n \r\n {isLoading ? (\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n Istoric evaluari\r\n \r\n {\r\n goToNewEvaluation();\r\n }}\r\n >\r\n {translatorService.Tranlate('VALUATION_CAR_FILE_NEW_EVALUATION', 'Evaluare noua')}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default EvaluationHistory;\r\n","import * as React from 'react';\r\nimport {\r\n ApplicationState,\r\n AppState,\r\n CaseSettingsState\r\n} from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { Button, Card, Grid } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { MuiPickersUtilsProvider, DatePicker } from '@material-ui/pickers';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { GTWSBillingFilters } from '../../interfaces/Case';\r\nimport FileSaver from 'file-saver';\r\nimport { LanguageCode, RoleClaimsEnum } from '../../helpers/Constants';\r\nimport { ScaleLoader } from 'react-spinners';\r\n\r\ntype GTWSBillingProps = {\r\n appState: AppState;\r\n caseSettingsState: CaseSettingsState;\r\n} & ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface IGTWSBillingState {\r\n isLoading: boolean;\r\n filterStartDate: Date | null;\r\n filterEndDate: Date | null;\r\n isGtm: boolean;\r\n startDateError: string;\r\n endDateError: string;\r\n}\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\nclass GTWSBilling extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: false,\r\n filterStartDate: null,\r\n filterEndDate: null,\r\n startDateError: '',\r\n endDateError: ''\r\n } as IGTWSBillingState;\r\n\r\n public async componentDidMount() {\r\n this.setState({\r\n isLoading: false\r\n });\r\n }\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n exportInfo = async () => {\r\n if (this.state.startDateError || this.state.endDateError) {\r\n return;\r\n }\r\n const language =\r\n this.props.appState.language == LanguageCode.RO ? LanguageCode.RO : LanguageCode.EN;\r\n\r\n try {\r\n this.setState({ isLoading: true });\r\n const formatedStartDate = this.state.filterStartDate\r\n ? moment(this.state.filterStartDate).format('DD.MM.YYYY')\r\n : null;\r\n const formatedEndDate = this.state.filterEndDate\r\n ? moment(this.state.filterEndDate).format('DD.MM.YYYY')\r\n : null;\r\n const requestPayload = {\r\n startDate: this.state.filterStartDate\r\n ? new Date(this.state.filterStartDate.setHours(0, 0, 0, 0))\r\n : null,\r\n endDate: this.state.filterEndDate\r\n ? new Date(this.state.filterEndDate.setHours(23, 59, 59, 999))\r\n : null,\r\n isGtm: this.hasRight(RoleClaimsEnum.Admin)\r\n } as GTWSBillingFilters;\r\n\r\n const fileBlob = await this.caseService.GetGTWSBillingReport(requestPayload);\r\n FileSaver.saveAs(\r\n fileBlob,\r\n language == LanguageCode.RO\r\n ? 'Raport GT WS ' + formatedStartDate + '-' + formatedEndDate + '.xlsx'\r\n : 'GT WS Report ' + formatedStartDate + '-' + formatedEndDate + '.xlsx'\r\n );\r\n\r\n this.setState({ isLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (err: any) {\r\n this.setState({ isLoading: false });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n validateDates = (startDate: Date | null, endDate: Date | null): void => {\r\n /*\r\n Validate start date\r\n */\r\n let startDateError = '';\r\n if (!startDate) {\r\n startDateError = this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n );\r\n } else {\r\n const currentDate = moment().format('YYYY-MM-DD');\r\n if (endDate && startDate > endDate) {\r\n startDateError = this.translatorService.Tranlate(\r\n 'EXPORT_START_DATE_ERROR',\r\n 'De la trebuie sa fie mai mica decat pana la'\r\n );\r\n }\r\n }\r\n\r\n /*\r\n Validate end date\r\n */\r\n\r\n let endDateError = '';\r\n if (!endDate) {\r\n endDateError = this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n );\r\n }\r\n\r\n this.setState({\r\n startDateError: startDateError,\r\n endDateError: endDateError\r\n });\r\n };\r\n\r\n handlefilterStartDateChange = async (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState({\r\n filterStartDate: date === null || !date.isValid ? null : date!.toDate(),\r\n startDateError: ''\r\n });\r\n };\r\n\r\n handlefilterEndDateChange = async (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState({\r\n filterEndDate: date === null || !date.isValid ? null : date!.toDate(),\r\n endDateError: ''\r\n });\r\n };\r\n\r\n renderFilters = () => {\r\n return (\r\n {\r\n this.exportInfo();\r\n }}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {\r\n this.validateDates(this.state.filterStartDate, this.state.filterEndDate);\r\n }}\r\n >\r\n {this.translatorService.Tranlate('EXPORT_DATA', 'Export')}\r\n \r\n
\r\n
\r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n\r\n return (\r\n \r\n \r\n
{this.renderFilters()}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n caseSettingsState: state.caseSettings\r\n }),\r\n null\r\n)(withSnackbar(GTWSBilling as any));\r\n","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport {\r\n Tooltip,\r\n Box,\r\n Button,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableMeta,\r\n MUIDataTableColumnOptions\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport moment from 'moment';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport EditOutlinedIcon from '@material-ui/icons/EditOutlined';\r\nimport { CountryBuffer } from '../../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport NumberFormat from 'react-number-format';\r\n\r\ninterface ICountryBufferComponentState {\r\n newCountryBuffer: CountryBuffer;\r\n countryBuffers: CountryBuffer[];\r\n isLoading: boolean;\r\n isDialogOpen: boolean;\r\n newCountryBufferId: number | null;\r\n countryList: IReferential[];\r\n}\r\ntype ICountryBufferComponentProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\nclass CountryBufferComponent extends React.PureComponent<\r\n ICountryBufferComponentProps,\r\n ICountryBufferComponentState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n static contextType = ApplicationContext;\r\n private newCountryBuffer = {\r\n id: 0,\r\n countryId: 0,\r\n country: null,\r\n value: 0\r\n } as CountryBuffer;\r\n\r\n state = {\r\n isLoading: false,\r\n isDialogOpen: false,\r\n newCountryBuffer: this.newCountryBuffer,\r\n countryBuffers: [],\r\n newCountryBufferId: null,\r\n countryList: [] as IReferential[]\r\n } as ICountryBufferComponentState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCountryBuffers();\r\n }\r\n );\r\n }\r\n\r\n loadCountryBuffers = async () => {\r\n const countryRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.Country\r\n );\r\n const [countryBuffers, countryList] = await Promise.all([\r\n this.organizationService.GetCountryBuffers(),\r\n this.appReferentialService.Get(countryRef!.baseUrl)\r\n ]);\r\n\r\n this.setState({\r\n countryBuffers: countryBuffers,\r\n isLoading: false,\r\n newCountryBuffer: { ...this.newCountryBuffer },\r\n countryList: countryList\r\n });\r\n };\r\n\r\n private handleCountryChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n newCountryBuffer: {\r\n ...this.state.newCountryBuffer,\r\n country: newValue,\r\n countryId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n private handleValueChange = (value: string) => {\r\n this.setState({\r\n newCountryBuffer: {\r\n ...this.state.newCountryBuffer,\r\n value: parseFloat(value)\r\n }\r\n });\r\n };\r\n\r\n public saveCountryBuffer = async () => {\r\n if (this.state.newCountryBufferId === null) {\r\n try {\r\n await this.organizationService.AddCountryBuffer(this.state.newCountryBuffer);\r\n await this.loadCountryBuffers();\r\n this.closeDialog();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n } else {\r\n try {\r\n await this.organizationService.UpdateCountryBuffer(this.state.newCountryBuffer);\r\n await this.loadCountryBuffers();\r\n this.closeDialog();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n this.handleCountryChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n this.handleValueChange(e.target.value)}\r\n label={this.translatorService.Tranlate(\r\n 'COUNTRY_BUFFER_VALUE_LABEL',\r\n 'Nr. zile'\r\n )}\r\n validators={['required', 'minNumber:0']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom\r\n }}\r\n />\r\n\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'country',\r\n label: this.translatorService.Tranlate('ORGANIZATIONS_COUNTRY_HEADER', 'Tara'),\r\n options: {\r\n sort: true,\r\n customSort: (a: IReferential, b: IReferential) => {\r\n debugger;\r\n return a.name!.localeCompare(b.name!);\r\n },\r\n customBodyRender: (value: IReferential) => {\r\n return value ? value.displayName : '';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'value',\r\n label: this.translatorService.Tranlate(\r\n 'COUNTRY_BUFFER_VALUE_LABEL',\r\n 'Nr. zile'\r\n )\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate('USERS_DATE_MODIFICATION_HEADER', 'Data Modificare'),\r\n options: {\r\n filter: false,\r\n sortDirection: 'desc',\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n <>\r\n this.newCountryBufferPopup(tableMeta.rowData[0])}\r\n >\r\n \r\n \r\n this.deleteCountryBuffer(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n }];\r\n return columns;\r\n };\r\n\r\n deleteCountryBuffer = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n await this.organizationService.RemoveCountryBuffer(id);\r\n await this.loadCountryBuffers();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n newCountryBufferPopup = async (countryBufferId: number | null) => {\r\n let newCountryBuffer: CountryBuffer;\r\n if (countryBufferId == null) {\r\n newCountryBuffer = { ...this.state.newCountryBuffer } as CountryBuffer;\r\n } else {\r\n newCountryBuffer = this.state.countryBuffers.find((item) => item.id === countryBufferId)!;\r\n }\r\n this.setState({\r\n isDialogOpen: true,\r\n newCountryBuffer: newCountryBuffer,\r\n newCountryBufferId: countryBufferId\r\n });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState(\r\n { \r\n isDialogOpen: false, \r\n newCountryBuffer: this.newCountryBuffer \r\n }\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n // responsive: \"stacked\",\r\n customToolbar: () => {\r\n return (\r\n \r\n this.newCountryBufferPopup(null)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n {this.state.isDialogOpen ? (\r\n \r\n \r\n \r\n \r\n \r\n {!this.state.newCountryBufferId ? \r\n this.translatorService.Tranlate(\r\n 'COUNTRY_BUFFER_ADD_MODAL_TITLE',\r\n 'Adauga buffer zile pe tara'\r\n ) : this.translatorService.Tranlate(\r\n 'COUNTRY_BUFFER_UPDATE_MODAL_TITLE',\r\n 'Actualizeaza buffer zile pe tara'\r\n )} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(CountryBufferComponent as any));","import * as React from 'react';\r\nimport {\r\n ApplicationState,\r\n AppState,\r\n CaseSettingsState\r\n} from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { Button, Card, Grid } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { MuiPickersUtilsProvider, DatePicker } from '@material-ui/pickers';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { ValidatorForm } from 'react-material-ui-form-validator';\r\nimport FileSaver from 'file-saver';\r\nimport { LanguageCode } from '../../helpers/Constants';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { NonStockBillingFilters } from '../../interfaces/Case';\r\n\r\ntype NonStockPartBillingProps = {\r\n appState: AppState;\r\n caseSettingsState: CaseSettingsState;\r\n} & ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface INonStockPartBillingState {\r\n isLoading: boolean;\r\n filterStartDate: Date | null;\r\n filterEndDate: Date | null;\r\n startDateError: string;\r\n endDateError: string;\r\n}\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\nclass NonStockPartBilling extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: false,\r\n filterStartDate: null,\r\n filterEndDate: null,\r\n startDateError: '',\r\n endDateError: ''\r\n } as INonStockPartBillingState;\r\n\r\n public async componentDidMount() {\r\n this.setState({\r\n isLoading: false\r\n });\r\n }\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n exportInfo = async () => {\r\n if (this.state.startDateError || this.state.endDateError) {\r\n return;\r\n }\r\n const language =\r\n this.props.appState.language == LanguageCode.RO ? LanguageCode.RO : LanguageCode.EN;\r\n\r\n try {\r\n this.setState({ isLoading: true });\r\n const formatedStartDate = this.state.filterStartDate\r\n ? moment(this.state.filterStartDate).format('DD.MM.YYYY')\r\n : null;\r\n const formatedEndDate = this.state.filterEndDate\r\n ? moment(this.state.filterEndDate).format('DD.MM.YYYY')\r\n : null;\r\n const requestPayload = {\r\n startDate: this.state.filterStartDate\r\n ? new Date(this.state.filterStartDate.setHours(0, 0, 0, 0))\r\n : null,\r\n endDate: this.state.filterEndDate\r\n ? new Date(this.state.filterEndDate.setHours(23, 59, 59, 999))\r\n : null\r\n } as NonStockBillingFilters;\r\n\r\n const fileBlob = await this.caseService.GetNonStockPartBillingReport(requestPayload);\r\n FileSaver.saveAs(\r\n fileBlob,\r\n language == LanguageCode.RO\r\n ? 'Raport Non Stock Part ' + formatedStartDate + '-' + formatedEndDate + '.xlsx'\r\n : 'Non Stock Part Report ' + formatedStartDate + '-' + formatedEndDate + '.xlsx'\r\n );\r\n\r\n this.setState({ isLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (err: any) {\r\n this.setState({ isLoading: false });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n validateDates = (startDate: Date | null, endDate: Date | null): void => {\r\n /*\r\n Validate start date\r\n */\r\n let startDateError = '';\r\n if (!startDate) {\r\n startDateError = this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n );\r\n } else {\r\n const currentDate = moment().format('YYYY-MM-DD');\r\n if (endDate && startDate > endDate) {\r\n startDateError = this.translatorService.Tranlate(\r\n 'EXPORT_START_DATE_ERROR',\r\n 'De la trebuie sa fie mai mica decat pana la'\r\n );\r\n }\r\n }\r\n\r\n /*\r\n Validate end date\r\n */\r\n\r\n let endDateError = '';\r\n if (!endDate) {\r\n endDateError = this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n );\r\n }\r\n\r\n this.setState({\r\n startDateError: startDateError,\r\n endDateError: endDateError\r\n });\r\n };\r\n\r\n handlefilterStartDateChange = async (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState({\r\n filterStartDate: date === null || !date.isValid ? null : date!.toDate(),\r\n startDateError: ''\r\n });\r\n };\r\n\r\n handlefilterEndDateChange = async (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState({\r\n filterEndDate: date === null || !date.isValid ? null : date!.toDate(),\r\n endDateError: ''\r\n });\r\n };\r\n\r\n renderFilters = () => {\r\n return (\r\n {\r\n this.exportInfo();\r\n }}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {\r\n this.validateDates(this.state.filterStartDate, this.state.filterEndDate);\r\n }}\r\n >\r\n {this.translatorService.Tranlate('EXPORT_DATA', 'Export')}\r\n \r\n
\r\n
\r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n\r\n return (\r\n \r\n \r\n
{this.renderFilters()}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n caseSettingsState: state.caseSettings\r\n }),\r\n null\r\n)(withSnackbar(NonStockPartBilling as any));\r\n","import * as React from 'react';\r\nimport { ApplicationState, AppState, CaseSettingsActionCreators, CaseSettingsState, VehicleActionCreators, VehicleState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { IReferentialService } from '../../services/Interfaces/IReferentialService';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { IOrderService } from '../../services/Interfaces/IOrderService';\r\nimport {\r\n TariffPercentResponse\r\n} from '../../interfaces/Case';\r\nimport {\r\n Order\r\n} from '../../interfaces/Order';\r\nimport 'moment/locale/en-gb';\r\nimport 'moment/locale/ro';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { IOrganizationService } from '../../services/Interfaces/IOrganizationService';\r\nimport _ from 'lodash';\r\nimport { IWorkflowService } from '../../services/Interfaces/IWorkflowService';\r\nimport OrderDetails from './OrderDetails';\r\n\r\ntype OrderDetailsPageProps = {\r\n caseSettingsState: CaseSettingsState;\r\n vehicleState: VehicleState;\r\n appState: AppState;\r\n} & typeof CaseSettingsActionCreators &\r\n typeof VehicleActionCreators &\r\n ProviderContext &\r\n RouteComponentProps<{ id: string }>;\r\n\r\ninterface IOrderDetailsPageState {\r\n order: Order | null;\r\n}\r\n\r\nclass OrderDetailsPage extends React.PureComponent {\r\n private orderService!: IOrderService;\r\n private appUserService!: IAppUserService;\r\n private organizationService!: IOrganizationService;\r\n static contextType = ApplicationContext;\r\n \r\n state = {\r\n order: null,\r\n } as IOrderDetailsPageState;\r\n\r\n public componentDidMount = async () =>{\r\n const orderId = Number.parseInt(this.props.match.params.id);\r\n\r\n if (Number.isNaN(orderId)) {\r\n return;\r\n }\r\n\r\n const order = await this.orderService.GetOrderWithVehicle(orderId);\r\n const [users, clients, suppliersInit] = await Promise.all([\r\n this.appUserService.GetUsersInfo(\r\n [order.createdBy]\r\n ),\r\n this.organizationService.GetUserOrganizationsByIds(\r\n [order.clientId]\r\n ),\r\n this.organizationService.GetUserOrganizationsByIds(\r\n [order.supplierId]\r\n ),\r\n ]);\r\n\r\n const supplier = suppliersInit.find((item) => item.id === order.supplierId);\r\n const user = users.find((item) => item.id === order.createdBy);\r\n const client = clients.find((item) => item.id === order.clientId);\r\n\r\n order.createdByUser = user === undefined ? null : user;\r\n order.supplier = supplier === undefined ? null : supplier;\r\n order.client = client === undefined ? null : client;\r\n\r\n this.setState({ order });\r\n }\r\n\r\n public orderChange = (order: Order) => {\r\n this.setState({\r\n order: \r\n {\r\n ...this.state.order!,\r\n amount: order.amount,\r\n amountTVA: order.amountTVA,\r\n amountWithoutTVA: order.amountWithoutTVA,\r\n orderParts: [...order.orderParts!],\r\n orderStatus: order.orderStatus,\r\n orderStatusId: order.orderStatusId\r\n }\r\n });\r\n };\r\n\r\n public render() {\r\n this.orderService = (this.context as AppContext).orderService;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n\r\n return (\r\n \r\n {this.state.order !== null && (\r\n {console.log('automatePlaceOrderChange')}}\r\n />\r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => {\r\n return { caseSettingsState: state.caseSettings, vehicleState: state.vehicle, appState: state.app };\r\n },\r\n { ...CaseSettingsActionCreators, ...VehicleActionCreators }\r\n)(withSnackbar(OrderDetailsPage as any));\r\n\r\n","import React, { Fragment, ChangeEvent } from 'react';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Box, Switch, Card, TextField } from '@material-ui/core';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport { ITranslation, IReferential, IReferentialConfig } from '../../../interfaces/IReferential';\r\nimport Autocomplete, { RenderInputParams } from '@material-ui/lab/Autocomplete';\r\nimport MaterialTable, { Icons, EditComponentProps, Column } from 'material-table';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { forwardRef } from 'react';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport Check from '@material-ui/icons/Check';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport DeleteOutline from '@material-ui/icons/DeleteOutline';\r\nimport Edit from '@material-ui/icons/Edit';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport FirstPage from '@material-ui/icons/FirstPage';\r\nimport LastPage from '@material-ui/icons/LastPage';\r\nimport Remove from '@material-ui/icons/Remove';\r\nimport SaveAlt from '@material-ui/icons/SaveAlt';\r\nimport Search from '@material-ui/icons/Search';\r\nimport ViewColumn from '@material-ui/icons/ViewColumn';\r\nimport { Label } from 'reactstrap';\r\nimport moment from 'moment';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { Language } from '../../../interfaces/Organization';\r\nimport * as R from 'ramda';\r\nimport { MavoLanguageTranslationEnum, ReferentialCode } from '../../../helpers/Constants';\r\n\r\nconst tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n} as Icons;\r\n\r\ntype ColorListProps = { appState: AppState } & ProviderContext;\r\n\r\ninterface IColorListState{\r\n dependentReferencials: IReferential[];\r\n referentials: IReferential[];\r\n filteredReferentials: IReferential[];\r\n isLoading: boolean;\r\n selectedReferential: IReferentialConfig | null;\r\n languages: Language[];\r\n}\r\n\r\nclass ColorList extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private appReferentialService!: IReferentialService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n referentials: [],\r\n isLoading: false,\r\n selectedReferential: null,\r\n languages: [] as Language[],\r\n dependentReferencials: [],\r\n filteredReferentials: []\r\n } as IColorListState;\r\n\r\n componentDidMount = () => {\r\n const referential = Referentials.referential.find(x => x.code === ReferentialCode.ColorRCR) as IReferentialConfig;\r\n this.setState({\r\n isLoading: true,\r\n languages: this.activeLanguages().filter((lang) => lang.code === MavoLanguageTranslationEnum.RO),\r\n },\r\n async () => {\r\n this.loadReferentials(referential);\r\n });\r\n };\r\n\r\n loadReferentials = async (value: IReferentialConfig | null) => {\r\n let referentialList: IReferential[] = [];\r\n if (value !== null && value.getUrl !== '') {\r\n try {\r\n referentialList = await this.appReferentialService.GetFromDB(value.getUrl);\r\n\r\n referentialList.forEach((refItem) => {\r\n this.state.languages.forEach((lang) => {\r\n const translation = refItem.translations.find((item) => item.language === lang.code);\r\n if (R.isNil(translation)) {\r\n refItem.translations.push({\r\n id: 0,\r\n name: '',\r\n language: lang.code,\r\n referentialTypeId: refItem.id\r\n } as ITranslation);\r\n }\r\n });\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n\r\n this.setState({\r\n referentials: referentialList,\r\n isLoading: false,\r\n selectedReferential: value!\r\n });\r\n };\r\n\r\n handleIsActiveChange = async (event: ChangeEvent, rowData: any) => {\r\n const id = rowData.id;\r\n const newReferentials = [...this.state.filteredReferentials];\r\n const updatedReferential = newReferentials.find((ref) => ref.id === id);\r\n if (updatedReferential !== undefined) {\r\n updatedReferential.isActive = event.target.checked;\r\n\r\n try {\r\n await this.appReferentialService.Update(\r\n updatedReferential,\r\n this.state.selectedReferential!.updateUrl\r\n );\r\n this.setState({\r\n referentials: newReferentials\r\n });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n activeLanguages = () => {\r\n const activeLanguages =\r\n this.props.appState.appUser!.organization!.gtOrganization!.languages!.filter((language) => {\r\n if (language.isActive === true) {\r\n return language;\r\n }\r\n });\r\n activeLanguages.forEach((language) => {\r\n language.displayName =\r\n language.displayName.charAt(0).toUpperCase() + language.displayName.slice(1);\r\n });\r\n return activeLanguages;\r\n };\r\n\r\n handleLocListChange = (event: any, gridProps: any, code: string | null) => {\r\n let newLocList = [] as ITranslation[];\r\n if (gridProps.rowData.translations) {\r\n newLocList = gridProps.rowData.translations.map((loc: any) => {\r\n if (loc.language === code) {\r\n loc.name = event.target.value;\r\n }\r\n return loc;\r\n });\r\n }\r\n\r\n gridProps.onRowDataChange({\r\n ...gridProps.rowData,\r\n translations: newLocList\r\n });\r\n };\r\n\r\n getColumns = () => {\r\n return [\r\n {\r\n field: 'code',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_COD_HEADER', 'Cod'),\r\n searchable: true\r\n // initialEditValue: Guid.create().toString()\r\n } as Column,\r\n {\r\n field: 'translations',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_HEADER', 'Nume'),\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return rowData.translations.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find((language: any) => {\r\n return language.code === val.language;\r\n });\r\n return language ? (\r\n <>\r\n \r\n \r\n ) : null;\r\n });\r\n },\r\n customFilterAndSearch: (value, rowData) => {\r\n let matchFilter = false;\r\n rowData.translations.map((val: any) => {\r\n const findMatch = val.name.toLowerCase().indexOf(value.toLowerCase()) !== -1;\r\n if (findMatch) {\r\n matchFilter = true;\r\n }\r\n });\r\n return matchFilter;\r\n },\r\n editComponent: (props: any) => {\r\n if (!R.isNil(props.value)) {\r\n return props.value.map((val: ITranslation, index: number) => {\r\n const language = this.state.languages.find(\r\n (language: any) => language.code === val.language\r\n );\r\n \r\n return language ? (\r\n <>\r\n this.handleLocListChange(e, props, val.language)}\r\n />\r\n \r\n ) : null;\r\n });\r\n } else {\r\n // Add new translations\r\n const newLocList = [] as ITranslation[];\r\n for (let i = 0; i < this.state.languages!.length; i++) {\r\n const locListItem = {} as ITranslation;\r\n locListItem.language = this.state.languages[i].code;\r\n locListItem.name = '';\r\n newLocList.push(locListItem);\r\n }\r\n \r\n props.onChange(newLocList);\r\n \r\n return null;\r\n }\r\n }\r\n } as Column,\r\n {\r\n field: 'dateModification',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_DATE_HEADER', 'Data'),\r\n defaultSort: 'desc',\r\n searchable: true,\r\n render: (rowData: any) => {\r\n return moment\r\n .utc(rowData.dateModification)\r\n .local()\r\n .format(this.props.appState.longDateFormat);\r\n },\r\n editComponent: (props: EditComponentProps) => {\r\n return ;\r\n }\r\n } as Column,\r\n {\r\n field: 'isActive',\r\n title: this.translatorService.Tranlate('LIST_OF_VALUES_ISACTIVE_HEADER', 'Stare'),\r\n render: (rowData: any) => {\r\n return (\r\n this.handleIsActiveChange(e, rowData)}\r\n value={rowData.isActive}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n );\r\n },\r\n\r\n editComponent: (props: EditComponentProps) => {\r\n return (\r\n props.onChange(e.target.checked)}\r\n />\r\n );\r\n }\r\n }\r\n ];\r\n \r\n };\r\n public getLocalization = () => {\r\n return {\r\n header: { actions: '' },\r\n toolbar: {\r\n searchPlaceholder: this.translatorService.Tranlate('SEARCH', 'Cauta'),\r\n searchTooltip: this.translatorService.Tranlate('SEARCH', 'Cauta')\r\n },\r\n body: {\r\n editTooltip: this.translatorService.Tranlate('EDIT', 'Editeaza'),\r\n addTooltip: this.translatorService.Tranlate('Add', 'Adauga'),\r\n emptyDataSourceMessage: this.translatorService.Tranlate(\r\n 'NO_RECORDS_TO_DISPLAY',\r\n 'Nu exista date de afisat'\r\n ),\r\n editRow: {\r\n cancelTooltip: this.translatorService.Tranlate('CANCEL', 'Anuleaza'),\r\n saveTooltip: this.translatorService.Tranlate('SAVE', 'Salveaza')\r\n }\r\n },\r\n pagination: {\r\n labelRowsSelect: this.translatorService.Tranlate('ROWS', 'inregistrari'),\r\n firstTooltip: this.translatorService.Tranlate('FIRST_PAGE', 'Prima pagina'),\r\n previousTooltip: this.translatorService.Tranlate('PREVIOUS_PAGE', 'Pagina precedenta'),\r\n nextTooltip: this.translatorService.Tranlate('NEXT_PAGE', 'Pagina urmatoare'),\r\n lastTooltip: this.translatorService.Tranlate('LAST_PAGE', 'Ultima pagina'),\r\n labelDisplayedRows:\r\n '{from}-{to} ' + this.translatorService.Tranlate('OF', 'din') + ' {count}'\r\n }\r\n };\r\n };\r\n\r\n onRowUpdate = (newData: IReferential, oldData?: IReferential): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (!this.validateRef(newData)) {\r\n reject();\r\n return;\r\n }\r\n\r\n if (oldData) {\r\n this.setState((prevState: IColorListState) => {\r\n const newReferentials = !R.isEmpty(this.state.filteredReferentials)\r\n ? [...this.state.filteredReferentials]\r\n : [...this.state.referentials];\r\n newReferentials[newReferentials.indexOf(oldData)] = newData;\r\n\r\n return { ...prevState, referentials: newReferentials };\r\n });\r\n\r\n try {\r\n await this.appReferentialService.Update(\r\n newData,\r\n this.state.selectedReferential!.updateUrl\r\n );\r\n await this.loadReferentials(this.state.selectedReferential);\r\n resolve();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n }\r\n });\r\n\r\n validateRef = (referential: IReferential): boolean => {\r\n if (referential.code === '' || referential.code === undefined || referential.code === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_CODE_EMPTY', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n const referentials = !R.isEmpty(this.state.filteredReferentials)\r\n ? this.state.filteredReferentials\r\n : this.state.referentials;\r\n let resultRef = referentials.find((item) => item.code === referential.code);\r\n if (referential.id !== undefined) {\r\n resultRef = referentials.find(\r\n (item) => item.code === referential.code && item.id !== referential.id\r\n );\r\n }\r\n if (resultRef !== undefined) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_CODE_UNIQUE', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n if (referential.translations === undefined) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_NAME', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n for (const item of referential.translations) {\r\n if (item.name === '' || item.name === undefined || item.name === null) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate('LIST_OF_VALUES_ERROR_NAME', 'Eroare'),\r\n { variant: 'error' }\r\n );\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n onRowAdd = (newData: IReferential): Promise =>\r\n new Promise(async (resolve, reject) => {\r\n if (!this.validateRef(newData)) {\r\n reject();\r\n return;\r\n }\r\n try {\r\n newData.name = newData.translations[0].name;\r\n newData.gtId = this.props.appState.appUser!.gtId!;\r\n await this.appReferentialService.Add(newData, this.state.selectedReferential!.addUrl);\r\n await this.loadReferentials(this.state.selectedReferential);\r\n resolve();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n reject();\r\n }\r\n });\r\n\r\n public renderTable = () => {\r\n if (this.state.selectedReferential === null) {\r\n return;\r\n }\r\n\r\n return (\r\n this.onRowAdd(newData),\r\n onRowUpdate: (newData: any, oldData?: any) => this.onRowUpdate(newData, oldData)\r\n }}\r\n />\r\n );\r\n };\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? this.renderTable() : null}\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect((state: ApplicationState) => ({ appState: state.app }))(\r\n withSnackbar(ColorList as any)\r\n);\r\n","import * as React from 'react';\r\nimport { ApplicationState, AppState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport {\r\n Card,\r\n Grid,\r\n Tab,\r\n Tabs,\r\n AppBar,\r\n TextField,\r\n Button,\r\n Checkbox,\r\n FormControlLabel\r\n} from '@material-ui/core';\r\nimport TabPanel from '../_shared/Tabs';\r\nimport MUIDataTable, {\r\n MUIDataTableColumnOptions,\r\n MUIDataTableMeta,\r\n SelectableRows\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../helpers/MUITableTranslations';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport {\r\n Provenance,\r\n MavoOrdersFilters,\r\n MavoOrdersList,\r\n MavoVehicleOrder\r\n} from '../../interfaces/Vehicle';\r\nimport { ValidatorForm } from 'react-material-ui-form-validator';\r\nimport Loader from '../Loader';\r\nimport noop from 'lodash/noop';\r\nimport _ from 'lodash';\r\nimport { MavoVehicleActionCreators } from '../../store/actions/MavoVehicle';\r\nimport { MavoVehicleState } from '../../store/reducers/MavoVehicle';\r\nimport NumberFormat from 'react-number-format';\r\nimport { VehicleAuctionActionCreators } from '../../store/actions/VehicleAuction';\r\nimport { AppUser } from '../../interfaces/AppUser';\r\nimport OrdersButtons from './OrdersButtons';\r\nimport { MavoVehicleProvenanceType } from '../../helpers/Constants';\r\nimport { IAppUserService } from '../../services/Interfaces/IAppUserService';\r\nimport * as R from 'ramda';\r\nimport {MuiThemeProvider, createMuiTheme } from '@material-ui/core';\r\n\r\ntype MavoVehiclesUserOrdersProps = {\r\n appState: AppState;\r\n mavoVehicleState: MavoVehicleState\r\n} &\r\n typeof MavoVehicleActionCreators & typeof VehicleAuctionActionCreators &\r\n ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface IMavoVehiclesUserOrdersState {\r\n ordersList: MavoOrdersList;\r\n selectedAgentEntities: AppUser[];\r\n agentList: AppUser[];\r\n provenanceEntities: Provenance[];\r\n selectedProvenanceEntities: Provenance[];\r\n selectedTab: number;\r\n isLoading: boolean;\r\n isLoadingOrders: boolean;\r\n count: number;\r\n page: number;\r\n pageSize: number;\r\n executing: boolean;\r\n selectedOrder: MavoVehicleOrder | null;\r\n}\r\n\r\nclass MavoVehiclesUserOrders extends React.PureComponent {\r\n private cbContext!: AppContext;\r\n static contextType = ApplicationContext;\r\n private appUserService!: IAppUserService;\r\n\r\n state = {\r\n ordersList: {} as MavoOrdersList,\r\n selectedAgentEntities: [this.props.appState.appUser],\r\n agentList: [],\r\n provenanceEntities: [],\r\n selectedProvenanceEntities: [],\r\n selectedTab: 0,\r\n isLoading: false,\r\n isLoadingOrders: false,\r\n count: 1,\r\n page: 0,\r\n pageSize: 10,\r\n executing: false,\r\n isDialogOpen: false,\r\n isOfferDialogOpen: false,\r\n selectedOrder: null\r\n } as IMavoVehiclesUserOrdersState;\r\n\r\n public async componentDidMount() {\r\n this.setState({\r\n isLoading: true \r\n });\r\n\r\n const provenanceTypeList = await this.cbContext.vehicleService.GetProvenances();\r\n const dvsProvenance = provenanceTypeList.find(x => x.type === MavoVehicleProvenanceType.DVS);\r\n\r\n const mavoVehiclesOrdersFilters = {\r\n agentIds: this.state.selectedAgentEntities.map((item) => item.id),\r\n provenanceIds: dvsProvenance != null ? [dvsProvenance.id] : [],\r\n page: this.state.page + 1,\r\n pageSize: this.state.pageSize\r\n } as MavoOrdersFilters;\r\n\r\n const [ordersList, orderFilters] = await Promise.all([\r\n this.cbContext.vehicleService.GetMavoOrders(mavoVehiclesOrdersFilters),\r\n await this.cbContext.vehicleService.GetMavoOrdersFilters({\r\n agentIds: this.state.selectedAgentEntities.map((item) => item.id),\r\n provenanceIds: dvsProvenance != null ? [dvsProvenance.id] : [],\r\n } as MavoOrdersFilters)\r\n ]);\r\n\r\n const [users, createdByList] = await Promise.all([\r\n this.appUserService.GetUsersInfo(ordersList.orders\r\n .map((item) => item.userId)\r\n .filter((userId): userId is string => userId !== null)),\r\n this.appUserService.GetUsersInfo(orderFilters.agentList)\r\n ]);\r\n\r\n ordersList.orders.forEach((order) => {\r\n const user = users.find((item) => item.id === order.userId);\r\n order.user = R.isNil(user) ? null : user;\r\n });\r\n\r\n this.setState(\r\n {\r\n ordersList: ordersList,\r\n count: ordersList.total,\r\n page: ordersList.page - 1,\r\n selectedProvenanceEntities: dvsProvenance != null ? [dvsProvenance] : [],\r\n provenanceEntities: orderFilters.provenanceList,\r\n agentList: createdByList,\r\n isLoading: false\r\n });\r\n }\r\n\r\n isInternal = (): boolean | null => {\r\n if (this.state.selectedTab === 0) {\r\n return null;\r\n }\r\n if (this.state.selectedTab === 1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n loadOrders = async (page: number, rowsPerPage: number) => {\r\n this.setState({\r\n isLoadingOrders: true,\r\n selectedOrder: null\r\n });\r\n\r\n const MavoVehiclesUserOrdersFilters = {\r\n provenanceIds: this.state.selectedProvenanceEntities.map((item) => item.id),\r\n agentIds: this.state.selectedAgentEntities.map((item) => item.id),\r\n page: page + 1,\r\n pageSize: rowsPerPage\r\n } as MavoOrdersFilters;\r\n\r\n const ordersList = await this.cbContext.vehicleService.GetMavoOrders(MavoVehiclesUserOrdersFilters);\r\n\r\n const [users] = await Promise.all([\r\n this.appUserService.GetUsersInfo(ordersList.orders\r\n .map((item) => item.userId)\r\n .filter((userId): userId is string => userId !== null))\r\n ]);\r\n\r\n ordersList.orders.forEach((order) => {\r\n const user = users.find((item) => item.id === order.userId);\r\n order.user = R.isNil(user) ? null : user;\r\n });\r\n\r\n this.setState({\r\n ordersList: ordersList,\r\n page: ordersList.page - 1,\r\n pageSize: rowsPerPage,\r\n count: ordersList.total,\r\n isLoadingOrders: false\r\n });\r\n };\r\n\r\n\r\n makeSelectedOrder = (isSelected: boolean, id: number) => {\r\n const orders = _.cloneDeep(this.state.ordersList.orders);\r\n const order = orders.find((item) => item.id === id);\r\n if (order) {\r\n order.isSelected = isSelected;\r\n }\r\n\r\n if (isSelected) {\r\n orders.forEach((item) => {\r\n if (item.id !== id) {\r\n item.isSelected = false;\r\n } \r\n });\r\n }\r\n this.setState({\r\n ordersList: {\r\n ...this.state.ordersList,\r\n orders: orders\r\n },\r\n selectedOrder: isSelected ? (order ? order : null): null\r\n });\r\n }\r\n\r\n getMuiTheme = () => createMuiTheme({\r\n overrides: {\r\n MuiTableCell: {\r\n head: {\r\n paddingLeft: \"2px\",\r\n paddingRight: \"2px\",\r\n paddingTop: \"2px\",\r\n paddingBottom: \"2px\"\r\n },\r\n },\r\n MUIDataTableBodyCell: {\r\n stackedCommon: {\r\n paddingLeft: \"2px\",\r\n paddingRight: \"2px\",\r\n paddingTop: \"0px\",\r\n paddingBottom: \"0px\",\r\n height: \"40px !important\"\r\n }\r\n },\r\n MuiCheckbox: {\r\n root: {\r\n padding: \"0px\", // Adjust the padding to make the checkbox smaller\r\n },\r\n colorSecondary: {\r\n '&.Mui-checked': {\r\n color: \"#3d4977 !important\",\r\n '&:hover': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.03) !important'\r\n },\r\n },\r\n '&:hover': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.03) !important'\r\n }\r\n }\r\n }\r\n } as any\r\n });\r\n\r\n\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'id',\r\n label: ' ',\r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const row = this.state.ordersList.orders.find((item) => item.id === tableMeta.rowData[0]);\r\n return (\r\n \r\n \r\n
\r\n {\r\n this.makeSelectedOrder(e.target.checked, row!.id);\r\n }}\r\n >\r\n }\r\n label=''\r\n />\r\n
\r\n
\r\n
\r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.vin',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_VIN_CODE', 'VIN'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.make.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MAKE', 'Marca'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.model.displayName',\r\n label: this.cbContext.translatorService.Tranlate('VEHICLES_VEHICLE_MODEL', 'Model'),\r\n options: {\r\n sort: false\r\n }\r\n }, \r\n {\r\n name: 'mavoVehicle.versionItem.displayName',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_VEHICLES_VEHICLE_VERSION', 'Versiune'),\r\n options: {\r\n sort: false\r\n }\r\n }, \r\n {\r\n name: 'mavoVehicle.fuelType.displayName',\r\n label: this.cbContext.translatorService.Tranlate('CAR_DETAILS_FUEL_TYPE', 'Combustibil'),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.colorRCR.displayName',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_COLOR',\r\n 'Culoare'\r\n ),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.fabricationYear',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLE_FABRICATION_YEAR',\r\n 'An de fabricatie'\r\n ),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'mavoVehicle.kilometersNr',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_KM',\r\n 'Km'\r\n ),\r\n options: {\r\n sort: false\r\n }\r\n },\r\n {\r\n name: 'userId',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLE_ORDER_CLIENT',\r\n 'Client'\r\n ), \r\n options: {\r\n sort: false,\r\n customBodyRender: (value: any, tableMeta: MUIDataTableMeta) => {\r\n const order = this.state.ordersList.orders.find((item) => item.id === tableMeta.rowData[0]);\r\n if (R.isNil(order)) {\r\n return '';\r\n }\r\n\r\n return (\r\n \r\n \r\n {R.isNil(order.user) ? order.name : order.user!.organization!.name}\r\n \r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n name: 'price',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLE_ORDER_PRICE',\r\n 'Pret'\r\n ),\r\n },\r\n {\r\n name: 'mavoVehicle.currentStatus.status.displayName',\r\n label: this.cbContext.translatorService.Tranlate('MAVO_ORDER_VEHICLE_STATE_', 'Stare vehicul'),\r\n options: {\r\n sort: false\r\n }\r\n }, \r\n {\r\n name: 'mavoVehicle.provenance.type',\r\n label: this.cbContext.translatorService.Tranlate(\r\n 'MENU_NOMENCLATURES_TAB_PROVENANCE',\r\n 'Provenienta'\r\n ),\r\n options: {\r\n sort: false\r\n }\r\n }\r\n ];\r\n\r\n return columns;\r\n };\r\n\r\n sortFunction = (a: any, b: any) => {\r\n return a.order - b.order;\r\n };\r\n\r\n onTabChange = (event: any, newValue: number) => {\r\n this.setState(\r\n {\r\n selectedTab: newValue,\r\n page: 0\r\n },\r\n async () => await this.loadOrders(0, this.state.pageSize)\r\n );\r\n };\r\n\r\n\r\n handleProvenanceEntitiesChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedProvenanceEntities: newValue\r\n }\r\n );\r\n };\r\n\r\n renderSearchButtons() {\r\n return (\r\n
\r\n
\r\n this.loadOrders(this.state.page, this.state.pageSize)}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_SEARCH',\r\n 'Cautare'\r\n )}\r\n \r\n
\r\n
\r\n this.resetFilters()}\r\n >\r\n {this.cbContext.translatorService.Tranlate(\r\n 'MAVO_VEHICLES_VEHICLE_RESET',\r\n 'Reset'\r\n )}\r\n \r\n
\r\n
\r\n\r\n );\r\n }\r\n\r\n resetFilters = async () => {\r\n this.setState({\r\n selectedProvenanceEntities: []\r\n }, async () => {\r\n await this.loadOrders(this.state.page, this.state.pageSize);\r\n });\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n \r\n handleAgentChange = (newValue: any[]) => {\r\n this.setState(\r\n {\r\n selectedAgentEntities: newValue\r\n }\r\n );\r\n };\r\n\r\n renderFilters = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n this.handleProvenanceEntitiesChange(newValue)\r\n }\r\n getOptionLabel={(option: Provenance) => option.type || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n \r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n\r\n tableOptions = () => {\r\n return {\r\n sort: true,\r\n filter: false,\r\n search: false,\r\n viewColumns: false,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.cbContext.translatorService),\r\n elevation: 0,\r\n serverSide: true,\r\n count: this.state.count,\r\n rowsPerPage: this.state.pageSize,\r\n page: this.state.page,\r\n onTableChange: async (action: any, tableState: any) => {\r\n switch (action) {\r\n case 'changePage':\r\n await this.loadOrders(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'changeRowsPerPage':\r\n await this.loadOrders(tableState.page, tableState.rowsPerPage);\r\n break;\r\n case 'sort':\r\n break;\r\n default:\r\n }\r\n }\r\n };\r\n };\r\n \r\n\r\n public render() {\r\n this.cbContext = this.context as AppContext;\r\n this.appUserService = (this.context as AppContext).appUserService;\r\n\r\n if (this.state.isLoading) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n \r\n {this.renderFilters()}\r\n {this.renderSearchButtons()}\r\n {this.state.isLoadingOrders ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )} \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n mavoVehicleState: state.mavoVehicle\r\n }),\r\n{ ...MavoVehicleActionCreators }\r\n)(withSnackbar(MavoVehiclesUserOrders as any));","import React, { Fragment } from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppState } from '../../../store';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { ITranslatorService } from '../../../services/Interfaces/ITranslatorService';\r\nimport { ApplicationContext, AppContext } from '../../../context/Contexts';\r\nimport {\r\n Tooltip,\r\n Box,\r\n Button,\r\n IconButton,\r\n Dialog,\r\n DialogTitle,\r\n Grid,\r\n Typography,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport AddCircleTwoToneIcon from '@material-ui/icons/AddCircleTwoTone';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { ValidatorForm, TextValidator } from 'react-material-ui-form-validator';\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport MUIDataTable, {\r\n SelectableRows,\r\n MUIDataTableMeta,\r\n MUIDataTableColumnOptions\r\n} from 'mui-datatables';\r\nimport { MUITranslations } from '../../../helpers/MUITableTranslations';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteOutlineTwoToneIcon from '@material-ui/icons/DeleteOutlineTwoTone';\r\nimport { ReferentialCode } from '../../../helpers/Constants';\r\nimport Referentials from '../../../helpers/Referentials.json';\r\nimport { IReferential } from '../../../interfaces/IReferential';\r\nimport moment from 'moment';\r\nimport { IReferentialService } from '../../../services/Interfaces/IReferentialService';\r\nimport EditOutlinedIcon from '@material-ui/icons/EditOutlined';\r\nimport { CountrySupport } from '../../../interfaces/Organization';\r\nimport { IOrganizationService } from '../../../services/Interfaces/IOrganizationService';\r\nimport NumberFormat from 'react-number-format';\r\n\r\ninterface ICountrySupportComponentState {\r\n newCountrySupport: CountrySupport;\r\n countrySupports: CountrySupport[];\r\n isLoading: boolean;\r\n isDialogOpen: boolean;\r\n newCountrySupportId: number | null;\r\n countryList: IReferential[];\r\n}\r\ntype ICountrySupportComponentProps = { appState: AppState } & ProviderContext &\r\n RouteComponentProps<{ id: string; workflowId: string }>;\r\nclass CountrySupportComponent extends React.PureComponent<\r\n ICountrySupportComponentProps,\r\n ICountrySupportComponentState\r\n> {\r\n private translatorService!: ITranslatorService;\r\n private organizationService!: IOrganizationService;\r\n private appReferentialService!: IReferentialService;\r\n static contextType = ApplicationContext;\r\n private newCountrySupport = {\r\n id: 0,\r\n countryId: 0,\r\n country: null,\r\n email: ''\r\n } as CountrySupport;\r\n\r\n state = {\r\n isLoading: false,\r\n isDialogOpen: false,\r\n newCountrySupport: this.newCountrySupport,\r\n countrySupports: [],\r\n newCountrySupportId: null,\r\n countryList: [] as IReferential[]\r\n } as ICountrySupportComponentState;\r\n\r\n public componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: true\r\n },\r\n async () => {\r\n await this.loadCountrySupports();\r\n }\r\n );\r\n }\r\n\r\n loadCountrySupports = async () => {\r\n const countryRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.Country\r\n );\r\n const [countrySupports, countryList] = await Promise.all([\r\n this.organizationService.GetUserCountrySupports(),\r\n this.appReferentialService.Get(countryRef!.baseUrl)\r\n ]);\r\n\r\n this.setState({\r\n countrySupports: countrySupports,\r\n isLoading: false,\r\n newCountrySupport: { ...this.newCountrySupport },\r\n countryList: countryList\r\n });\r\n };\r\n\r\n private handleCountryChange = (newValue: IReferential | null) => {\r\n this.setState({\r\n newCountrySupport: {\r\n ...this.state.newCountrySupport,\r\n country: newValue,\r\n countryId: newValue !== null ? newValue!.id : 0\r\n }\r\n });\r\n };\r\n\r\n private handleValueChange = (value: string) => {\r\n this.setState({\r\n newCountrySupport: {\r\n ...this.state.newCountrySupport,\r\n email: value\r\n }\r\n });\r\n };\r\n\r\n public saveCountrySupport = async () => {\r\n if (this.state.newCountrySupportId === null) {\r\n if (\r\n this.state.countrySupports.findIndex(\r\n (item) => item.countryId === this.state.newCountrySupport.countryId\r\n ) !== -1\r\n ) {\r\n this.props.enqueueSnackbar(\r\n this.translatorService.Tranlate(\r\n 'COUNTRY_SUPPORT_ALREADY_EXIST',\r\n 'Exista deja un email de suport pentru aceasta tara!'\r\n ),\r\n { variant: 'error' }\r\n );\r\n return;\r\n }\r\n try {\r\n await this.organizationService.AddCountrySupport(this.state.newCountrySupport);\r\n await this.loadCountrySupports();\r\n this.closeDialog();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n } else {\r\n try {\r\n await this.organizationService.UpdateCountrySupport(this.state.newCountrySupport);\r\n await this.loadCountrySupports();\r\n this.closeDialog();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n }\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={2}\r\n />\r\n );\r\n };\r\n\r\n public renderAddForm() {\r\n return (\r\n \r\n \r\n this.handleCountryChange(newValue)\r\n }\r\n getOptionLabel={(option: IReferential) => option.displayName || ''}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n this.handleValueChange(e.target.value)}\r\n label={this.translatorService.Tranlate(\r\n 'COUNTRY_SUPPORT_EMAIL_LABEL',\r\n 'Email'\r\n )}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n />\r\n\r\n
\r\n \r\n {this.translatorService.Tranlate('EDIT_ORGANIZATION_CANCEL_BTN', 'Anuleaza')}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n getColumns = () => {\r\n const columns = [\r\n {\r\n name: 'id',\r\n options: { display: 'excluded', filter: false } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'country',\r\n label: this.translatorService.Tranlate('ORGANIZATIONS_COUNTRY_HEADER', 'Tara'),\r\n options: {\r\n sort: true,\r\n customSort: (a: IReferential, b: IReferential) => {\r\n debugger;\r\n return a.name!.localeCompare(b.name!);\r\n },\r\n customBodyRender: (value: IReferential) => {\r\n return value ? value.displayName : '';\r\n }\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: 'email',\r\n label: this.translatorService.Tranlate(\r\n 'COUNTRY_SUPPORT_EMAIL_LABEL',\r\n 'Email'\r\n )\r\n },\r\n {\r\n name: 'dateModification',\r\n label: this.translatorService.Tranlate('USERS_DATE_MODIFICATION_HEADER', 'Data Modificare'),\r\n options: {\r\n filter: false,\r\n sortDirection: 'desc',\r\n customBodyRender: (value: Date) =>\r\n moment.utc(value).local().format(this.props.appState.longDateFormat)\r\n } as MUIDataTableColumnOptions\r\n },\r\n {\r\n name: '',\r\n options: {\r\n viewColumns: false,\r\n filter: false,\r\n setCellHeaderProps: () => ({ align: 'center' }),\r\n setCellProps: () => ({ align: 'center' }),\r\n customBodyRender: (value: boolean, tableMeta: MUIDataTableMeta) => {\r\n return (\r\n <>\r\n this.newCountrySupportPopup(tableMeta.rowData[0])}\r\n >\r\n \r\n \r\n this.deleteCountrySupport(e, tableMeta)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n }];\r\n return columns;\r\n };\r\n\r\n deleteCountrySupport = async (event: any, tableMeta: MUIDataTableMeta) => {\r\n try {\r\n const id = tableMeta.rowData[0];\r\n await this.organizationService.RemoveCountrySupport(id);\r\n await this.loadCountrySupports();\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (error) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n newCountrySupportPopup = async (countrySupportId: number | null) => {\r\n let newCountrySupport: CountrySupport;\r\n if (countrySupportId == null) {\r\n newCountrySupport = { ...this.state.newCountrySupport } as CountrySupport;\r\n } else {\r\n newCountrySupport = this.state.countrySupports.find((item) => item.id === countrySupportId)!;\r\n }\r\n this.setState({\r\n isDialogOpen: true,\r\n newCountrySupport: newCountrySupport,\r\n newCountrySupportId: countrySupportId\r\n });\r\n };\r\n\r\n closeDialog = async () => {\r\n this.setState(\r\n { \r\n isDialogOpen: false, \r\n newCountrySupport: this.newCountrySupport \r\n }\r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.organizationService = (this.context as AppContext).organizationService;\r\n this.appReferentialService = (this.context as AppContext).referentialService;\r\n const options = {\r\n filter: true,\r\n selectableRows: 'none' as SelectableRows,\r\n selectableRowsOnClick: false,\r\n print: false,\r\n download: false,\r\n textLabels: MUITranslations.GetTranslations(this.translatorService),\r\n sort: false,\r\n // responsive: \"stacked\",\r\n customToolbar: () => {\r\n return (\r\n \r\n this.newCountrySupportPopup(null)}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n };\r\n return (\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n {!this.state.isLoading ? (\r\n \r\n ) : null}\r\n
\r\n {this.state.isDialogOpen ? (\r\n \r\n \r\n \r\n \r\n \r\n {!this.state.newCountrySupportId ? \r\n this.translatorService.Tranlate(\r\n 'COUNTRY_SUPPORT_ADD_MODAL_TITLE',\r\n 'Adauga support pe tara'\r\n ) : this.translatorService.Tranlate(\r\n 'COUNTRY_SUPPORT_UPDATE_MODAL_TITLE',\r\n 'Actualizeaza support pe tara'\r\n )} \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderAddForm()}\r\n ) : null}\r\n
\r\n );\r\n }\r\n}\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app\r\n }),\r\n null\r\n)(withSnackbar(CountrySupportComponent as any));","import * as React from 'react';\r\nimport { ApplicationState, AppState, CaseSettingsState } from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { Button, Grid, CardContent, Typography} from '@material-ui/core';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport _ from 'lodash';\r\nimport { TextValidator, ValidatorForm } from 'react-material-ui-form-validator';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { Card } from 'reactstrap';\r\nimport { GeneralNotifySupportRequest, NotificationClient } from '../../interfaces/Case';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { NotifySupportTemplateEnum } from '../../helpers/Constants';\r\nimport DOMPurify from 'dompurify';\r\nimport NumberFormat from 'react-number-format';\r\n\r\ntype GeneralNotificationProps = {\r\n appState: AppState;\r\n caseSettingsState: CaseSettingsState;\r\n } & ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface IGeneralNotificationState {\r\n isLoading: boolean;\r\n clientData: NotificationClient;\r\n}\r\n\r\nclass GeneralNotification extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: false,\r\n selectedOrganization: null,\r\n clientData: {\r\n firstName: '',\r\n lastName: '',\r\n companyName: this.props.appState!.appUser!.organization!.name,\r\n companyId: this.props.appState!.appUser!.organizationId,\r\n email: this.props.appState!.appUser!.email,\r\n phoneNumber: '',\r\n comment: '',\r\n caseId: null\r\n } as NotificationClient\r\n } as IGeneralNotificationState;\r\n\r\n public async componentDidMount() {\r\n this.setState(\r\n {\r\n isLoading: false\r\n },\r\n async () => {\r\n await this.loadData();\r\n }\r\n );\r\n }\r\n\r\n loadData = async () => {\r\n this.setState({\r\n isLoading: false\r\n });\r\n }\r\n\r\n onChange =\r\n (fieldName: string) => (e: any) => {\r\n this.setState({\r\n clientData: {\r\n ...this.state.clientData,\r\n [fieldName]: DOMPurify.sanitize(e.target.value)\r\n }\r\n })\r\n };\r\n\r\n notifySupport = async () => {\r\n try {\r\n this.setState({ isLoading: true });\r\n const request = {\r\n template: NotifySupportTemplateEnum.GENERAL_NOTIFY_SUPPORT,\r\n client: this.state.clientData\r\n } as GeneralNotifySupportRequest;\r\n\r\n await this.caseService.SendGeneralNotifySupport(request);\r\n\r\n this.setState({ isLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_GENERAL_NOTIFICATION_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n this.props.history.push('/');\r\n\r\n } catch (ex) {\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n } finally {\r\n this.setState({ isLoading: false });\r\n }\r\n };\r\n\r\n NumberFormatCustom = (props: any) => {\r\n const { inputRef, onChange, ...other } = props;\r\n\r\n return (\r\n {\r\n onChange({\r\n target: {\r\n value: values.value\r\n },\r\n currentTarget: {\r\n value: values.value\r\n }\r\n });\r\n }}\r\n allowNegative={false}\r\n thousandSeparator={false}\r\n decimalScale={0}\r\n />\r\n );\r\n };\r\n\r\n renderForm = () => {\r\n return (\r\n {\r\n this.notifySupport();\r\n }}\r\n >\r\n
\r\n \r\n \r\n {this.onChange('lastName')(e)}}\r\n fullWidth\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('NOTIFICATION_CLIENT_DATA_FORM_NAME', 'Nume')}\r\n required={true}\r\n />\r\n \r\n \r\n {this.onChange('firstName')(e)}}\r\n fullWidth\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('NOTIFICATION_CLIENT_DATA_FORM_FIRST_NAME', 'Prenume')}\r\n required={true}\r\n />\r\n \r\n \r\n {this.onChange('companyName')(e)}}\r\n fullWidth\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('NOTIFICATION_CLIENT_DATA_FORM_ORGANIZATION_NAME', 'Nume Companie')}\r\n disabled={true}\r\n required={true}\r\n />\r\n \r\n \r\n {this.onChange('email')(e)}}\r\n validators={['isEmail']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_EMAIL', 'E-mail invalid')\r\n ]}\r\n label={this.translatorService.Tranlate('NOTIFICATION_CLIENT_DATA_FORM_EMAIL', 'E-mail')}\r\n disabled={true}\r\n required={true}\r\n />\r\n \r\n \r\n {this.onChange('phoneNumber')(e)}}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n label={this.translatorService.Tranlate('NOTIFICATION_CLIENT_DATA_FORM_PHONE', 'Telefon')}\r\n required={true}\r\n />\r\n \r\n \r\n {this.onChange('caseId')(e)}}\r\n InputProps={{\r\n inputComponent: this.NumberFormatCustom,\r\n style: { fontWeight: 500 }\r\n }}\r\n label={this.translatorService.Tranlate('NOTIFICATION_CLIENT_DATA_FORM_CASE_ID', 'Id Dosar')}\r\n />\r\n \r\n \r\n this.onChange('comment')(e)}\r\n validators={['required']}\r\n errorMessages={[\r\n this.translatorService.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu')\r\n ]}\r\n multiline\r\n variant=\"outlined\"\r\n rows={8}\r\n required={true}\r\n />\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate('GENERAL_NOTIFICATION_SEND', 'Trimite')}\r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {this.translatorService.Tranlate(\r\n 'GENERAL_NOTIFICATION_TITLE',\r\n 'Notifica Suport'\r\n )}\r\n \r\n
\r\n
\r\n \r\n {this.renderForm()}\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n caseSettingsState: state.caseSettings\r\n }),\r\n null\r\n)(withSnackbar(GeneralNotification as any));\r\n","import * as React from 'react';\r\nimport {\r\n ApplicationState,\r\n AppState,\r\n CaseSettingsState\r\n} from '../../store';\r\nimport { ApplicationContext, AppContext } from '../../context/Contexts';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { connect } from 'react-redux';\r\nimport { ITranslatorService } from '../../services/Interfaces/ITranslatorService';\r\nimport { ICaseService } from '../../services/Interfaces/ICaseService';\r\nimport { Button, Card, Grid } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport { withSnackbar, ProviderContext } from 'notistack';\r\nimport { MuiPickersUtilsProvider, DatePicker } from '@material-ui/pickers';\r\nimport MomentUtils from '@date-io/moment';\r\nimport { MaterialUiPickersDate } from '@material-ui/pickers/typings/date';\r\nimport { ValidatorForm } from 'react-material-ui-form-validator';\r\nimport FileSaver from 'file-saver';\r\nimport { LanguageCode } from '../../helpers/Constants';\r\nimport { ScaleLoader } from 'react-spinners';\r\nimport { NewBillingReportFilters } from '../../interfaces/Case';\r\n\r\ntype NewBillingReportProps = {\r\n appState: AppState;\r\n caseSettingsState: CaseSettingsState;\r\n} & ProviderContext &\r\n RouteComponentProps;\r\n\r\ninterface INewBillingReportState {\r\n isLoading: boolean;\r\n filterStartDate: Date | null;\r\n filterEndDate: Date | null;\r\n startDateError: string;\r\n endDateError: string;\r\n}\r\n\r\nclass LocalizedUtils extends MomentUtils {\r\n // dateFormat = \"DD MM YYYY\";\r\n}\r\n\r\nclass NewBillingReport extends React.PureComponent {\r\n private translatorService!: ITranslatorService;\r\n private caseService!: ICaseService;\r\n static contextType = ApplicationContext;\r\n\r\n state = {\r\n isLoading: false,\r\n filterStartDate: null,\r\n filterEndDate: null,\r\n startDateError: '',\r\n endDateError: ''\r\n } as INewBillingReportState;\r\n\r\n public async componentDidMount() {\r\n this.setState({\r\n isLoading: false\r\n });\r\n }\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.appState!.user!.profile.role.includes(right);\r\n };\r\n\r\n exportInfo = async () => {\r\n if (this.state.startDateError || this.state.endDateError) {\r\n return;\r\n }\r\n const language =\r\n this.props.appState.language == LanguageCode.RO ? LanguageCode.RO : LanguageCode.EN;\r\n\r\n try {\r\n this.setState({ isLoading: true });\r\n const formatedStartDate = this.state.filterStartDate\r\n ? moment(this.state.filterStartDate).format('DD.MM.YYYY')\r\n : null;\r\n const formatedEndDate = this.state.filterEndDate\r\n ? moment(this.state.filterEndDate).format('DD.MM.YYYY')\r\n : null;\r\n const requestPayload = {\r\n startDate: this.state.filterStartDate\r\n ? new Date(this.state.filterStartDate.setHours(0, 0, 0, 0))\r\n : null,\r\n endDate: this.state.filterEndDate\r\n ? new Date(this.state.filterEndDate.setHours(23, 59, 59, 999))\r\n : null\r\n } as NewBillingReportFilters;\r\n\r\n const fileBlob = await this.caseService.GetNewBillingReport(requestPayload);\r\n FileSaver.saveAs(\r\n fileBlob,\r\n language == LanguageCode.RO\r\n ? 'Raport Carfix ' + formatedStartDate + '-' + formatedEndDate + '.xlsx'\r\n : 'Raport Carfix ' + formatedStartDate + '-' + formatedEndDate + '.xlsx'\r\n );\r\n\r\n this.setState({ isLoading: false });\r\n\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('SUCCES_MSG', 'OK'), {\r\n variant: 'success'\r\n });\r\n } catch (err: any) {\r\n this.setState({ isLoading: false });\r\n this.props.enqueueSnackbar(this.translatorService.Tranlate('ERROR_MSG', 'Eroare'), {\r\n variant: 'error'\r\n });\r\n }\r\n };\r\n\r\n validateDates = (startDate: Date | null, endDate: Date | null): void => {\r\n /*\r\n Validate start date\r\n */\r\n let startDateError = '';\r\n if (!startDate) {\r\n startDateError = this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n );\r\n } else {\r\n const currentDate = moment().format('YYYY-MM-DD');\r\n if (endDate && startDate > endDate) {\r\n startDateError = this.translatorService.Tranlate(\r\n 'EXPORT_START_DATE_ERROR',\r\n 'De la trebuie sa fie mai mica decat pana la'\r\n );\r\n }\r\n }\r\n\r\n /*\r\n Validate end date\r\n */\r\n\r\n let endDateError = '';\r\n if (!endDate) {\r\n endDateError = this.translatorService.Tranlate(\r\n 'VALIDATORS_REQUIRED',\r\n 'Campul este obligatoriu'\r\n );\r\n }\r\n\r\n this.setState({\r\n startDateError: startDateError,\r\n endDateError: endDateError\r\n });\r\n };\r\n\r\n handlefilterStartDateChange = async (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState({\r\n filterStartDate: date === null || !date.isValid ? null : date!.toDate(),\r\n startDateError: ''\r\n });\r\n };\r\n\r\n handlefilterEndDateChange = async (date: MaterialUiPickersDate | null) => {\r\n if (date === null || !date.isValid) {\r\n return;\r\n }\r\n this.setState({\r\n filterEndDate: date === null || !date.isValid ? null : date!.toDate(),\r\n endDateError: ''\r\n });\r\n };\r\n\r\n renderFilters = () => {\r\n return (\r\n {\r\n this.exportInfo();\r\n }}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {\r\n this.validateDates(this.state.filterStartDate, this.state.filterEndDate);\r\n }}\r\n >\r\n {this.translatorService.Tranlate('EXPORT_DATA', 'Export')}\r\n \r\n
\r\n
\r\n \r\n );\r\n };\r\n\r\n public render() {\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n this.caseService = (this.context as AppContext).caseService;\r\n\r\n return (\r\n \r\n \r\n
{this.renderFilters()}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state: ApplicationState) => ({\r\n appState: state.app,\r\n caseSettingsState: state.caseSettings\r\n }),\r\n null\r\n)(withSnackbar(NewBillingReport as any));\r\n","import * as React from 'react';\r\nimport { Route, Switch } from 'react-router';\r\nimport Home from './components/Home';\r\nimport Login from './components/auth/LogIn';\r\nimport LoginCallBack from './components/auth/LogInCallBack';\r\nimport RenewCallBack from './components/auth/RenewCallBack';\r\nimport AppUser from './components/admin/users/AppUsers';\r\nimport UserDetails from './components/admin/users/UserDetails';\r\nimport EditRole from './components/admin/users/EditRole';\r\nimport AppReferentials from './components/admin/listOfValues/AppReferentials';\r\nimport OtherListsOfValues from './components/admin/otherLists/OtherListsOfValues';\r\n\r\nimport moment from 'moment';\r\nimport 'moment/locale/cs';\r\nimport 'moment/locale/nl';\r\nimport 'moment/locale/ro';\r\nimport 'moment/locale/pl';\r\nimport 'moment/locale/sk';\r\n\r\nimport { IAuthService } from './services/Interfaces/IAuthService';\r\nimport { ApplicationContext, AppContext } from './context/Contexts';\r\nimport { History } from 'history';\r\nimport { connect } from 'react-redux';\r\nimport { ApplicationState, AppActionCreators, AppState } from './store';\r\nimport MuiTheme from './theme';\r\nimport { ThemeProvider, Snackbar } from '@material-ui/core';\r\nimport { LeftSidebar } from './layout-blueprints/index';\r\nimport { RoleClaimsEnum } from './helpers/Constants';\r\nimport './custom.css';\r\nimport UserProfile from './components/userProfile/userProfile';\r\nimport { ITranslatorService } from './services/Interfaces/ITranslatorService';\r\nimport OrganizationAdmin from './components/admin/organizations/OrganizationAdmin';\r\nimport HOOrganizations from './components/admin/organizations/HOOrganizations';\r\nimport EditOrganization from './components/admin/organizations/EditOrganization';\r\nimport GtXML from './components/admin/xmlDocument/GtXML';\r\nimport NewCase from './components/newCase/NewCase';\r\nimport WorkflowAdmin from './components/admin/workflows/WorkflowAdmin';\r\nimport Cases from './components/cases/Cases';\r\nimport CaseDetails from './components/cases/CaseDetails';\r\nimport Dashboards from './components/dashboards/Dashboards';\r\nimport Orders from './components/orders/Orders';\r\nimport Vehicles from './components/vehicles/Vehicles';\r\nimport DetailsOfCarForm from './components/vehicles/DetailsOfCarForm';\r\nimport CertificateOfControlForm from './components/vehicles/CertificateOfControl';\r\nimport UserOrganizationInterfaces from './components/settings/UserOrganizationInterfaces';\r\nimport VehiclesHistory from './components/vehicles/VehiclesHistory';\r\nimport CarClassRentalPrice from './components/admin/car-class-rent-price/CarClassRentalPrice';\r\nimport Billing from './components/billing/Billing';\r\nimport DgpciBilling from './components/billing/DgpciBilling';\r\nimport OrderPartsHistory from './components/order-parts-history/OrderPartsHistory';\r\nimport MakeList from './components/nomenclature/make/MakeList';\r\nimport ModelList from './components/nomenclature/model/ModelList';\r\nimport FuelTypeList from './components/nomenclature/fuelType/FuelTypeList';\r\nimport VersionList from './components/nomenclature/version/VersionList';\r\nimport BodyTypeList from './components/nomenclature/bodyType/BodyTypeList';\r\nimport BodyConditionTypeList from './components/nomenclature/bodyConditionType/BodyConditionTypeList';\r\nimport WheelConditionTypeList from './components/nomenclature/wheelConditionType/WheelConditionTypeList';\r\nimport InvoiceRangeList from './components/nomenclature/invoiceRange/InvoiceRangeList';\r\nimport ProvenanceList from './components/nomenclature/provenance/ProvenanceList';\r\nimport ExchangeRateList from './components/nomenclature/exchangeRateList/ExchangeRateList';\r\nimport AlcorErrorLogList from './components/nomenclature/alcorErrorLog/AlcorErrorLogList';\r\nimport FinancialParameterInfoList from './components/nomenclature/financialParameterInfo/FinancialParameterInfoList';\r\nimport SellerDataList from './components/nomenclature/sellerData/SellerDataList';\r\nimport MavoVehicles from './components/mavo-vehicles/MavoVehicles';\r\nimport MavoVehicleDetailsForm from './components/mavo-vehicles/MavoVehicleDetailsForm';\r\nimport MavoVehicleStockDetailsForm from './components/mavo-vehicles/MavoVehicleStockDetailsForm';\r\nimport MavoVehiclesAuctions from './components/mavo-vehicles/MavoVehiclesAuctions';\r\nimport MavoVehicleDetailsViewForm from './components/mavo-vehicles/MavoVehicleDetailsViewForm';\r\nimport MavoVehiclesUserAuctions from './components/mavo-vehicles/MavoVehiclesUserAuctions';\r\nimport MavoVehiclesAdminAuctions from './components/mavo-vehicles/MavoVehiclesAdminAuctions';\r\nimport MavoVehiclesOrders from './components/mavo-vehicles/MavoVehiclesOrders';\r\nimport PoEditor from './components/admin/poeditor/PoEditor';\r\nimport MaintenanceCupiOptionalPartComponent from './components/admin/maintenance-cupi-optional-part/MaintenanceCupiOptionalPartComponent';\r\nimport VoInvoiceHistory from './components/mavo-vehicles/VoInvoiceHistory';\r\nimport MavoAppUsers from './components/admin/users/MavoAppUsers';\r\nimport MavoUserDetails from './components/admin/users/MavoUserDetails';\r\nimport AlcorParameterInfoList from './components/nomenclature/alcorParameterInfo/AlcorParameterInfoList';\r\nimport UserManual from './components/user-manual/UserManual';\r\nimport MavoHOOrganizations from './components/admin/organizations/MavoHOOrganizations';\r\nimport MavoOrganizationAdmin from './components/admin/organizations/MavoOrganizationAdmin';\r\nimport ModelCarClass from './components/admin/model-car-class/ModelCarClass';\r\nimport AgendaPage from './components/agenda/AgendaPage';\r\nimport AppointmentPage from './components/appointment/AppointmentPage';\r\nimport AddNewAppointmentPage from './components/appointment/AddNewAppointmentPage';\r\nimport MaintenanceProducerComponent from './components/admin/maintenance-producer/MaintenanceProducerComponent';\r\nimport EvaluationPage from './components/evaluation/EvaluationPage';\r\nimport EvaluationCarFile from './components/evaluation/EvaluationCarFile';\r\nimport EvaluationHistory from './components/evaluation/EvaluationHistory';\r\nimport GTWSBilling from './components/billing/GTWSBilling';\r\nimport CountryBufferComponent from './components/admin/country-buffer/CountryBufferComponent';\r\nimport { ProviderContext, withSnackbar } from 'notistack';\r\nimport NonStockPartBilling from './components/billing/NonStockPartBilling';\r\nimport OrderDetailsPage from './components/orders/OrderDetailsPage';\r\nimport ColorList from './components/nomenclature/color/ColorList';\r\nimport MavoVehiclesUserOrders from './components/mavo-vehicles/MavoVehiclesUserOrders';\r\nimport CountrySupportComponent from './components/admin/country-support/CountrySupportComponent';\r\nimport GeneralNotification from './components/general-notification/GeneralNotification';\r\nimport NewBillingReport from './components/billing/NewBillingReport';\r\n\r\ntype AppProps = AppState & typeof AppActionCreators & History & ProviderContext;\r\n\r\nclass App extends React.PureComponent {\r\n private authService!: IAuthService;\r\n private translatorService!: ITranslatorService;\r\n\r\n static contextType = ApplicationContext;\r\n\r\n public async componentDidMount() {\r\n this.authService = (this.context as AppContext).authenticationService;\r\n this.translatorService = (this.context as AppContext).translatorService;\r\n\r\n if (\r\n this.props.location!.pathname === '/callback' ||\r\n this.props.location!.pathname === '/renewcallback'\r\n ) {\r\n return;\r\n }\r\n\r\n await this.authService.checkState();\r\n this.translatorService.LoadLanguage();\r\n await this.props.SetUser(this.props.enqueueSnackbar);\r\n await this.props.LoadCurrencyRates();\r\n\r\n this.updateMomentLanguage();\r\n }\r\n\r\n public componentDidUpdate(prevProps: any) {\r\n if (prevProps.language !== this.props.language) {\r\n this.updateMomentLanguage();\r\n }\r\n }\r\n\r\n public updateMomentLanguage = () => {\r\n const language = this.props.language;\r\n const languageList: any = { ro: 'ro', cz: 'cs', pl: 'pl', nl: 'nl', en: 'en', sk: 'sk'};\r\n\r\n \r\n moment.locale(language ? languageList[language] : 'ro');\r\n moment.updateLocale(language ? languageList[language] : 'ro', { week: { dow: 1, doy: 4 } });\r\n\r\n };\r\n\r\n private handleCloseMessage = (event?: React.SyntheticEvent, reason?: string) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n\r\n this.props.Message(false);\r\n };\r\n\r\n public hasRight = (right: string): boolean => {\r\n return this.props.user!.profile.role.includes(right);\r\n };\r\n\r\n public renderUserRoutes = () => {\r\n if (this.props.user === null) {\r\n return;\r\n }\r\n\r\n return (\r\n \r\n {this.hasRight(RoleClaimsEnum.Home) ? : null}\r\n {this.hasRight(RoleClaimsEnum.NewCase) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Agenda) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Case) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Case) ? (\r\n \r\n ) : null}\r\n {/* { this.hasRight(RoleClaimsEnum.Case) ? : null } */}\r\n {this.hasRight(RoleClaimsEnum.Case) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Case) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Case) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Dashboard) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Evaluation) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Evaluation) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Case) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Order) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Order) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Vehicle) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Agenda) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Agenda) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Agenda) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Vehicle) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Vehicle) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Vehicle) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Vehicle) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.Settings) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminUsers) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminUsers) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminUsers) ||\r\n this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminUsers) ||\r\n this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminValueList) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminValueList) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminOrganization) ||\r\n this.hasRight(RoleClaimsEnum.AdminCountryOrganization) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminOrganization) ||\r\n this.hasRight(RoleClaimsEnum.AdminCountryOrganization) ||\r\n this.hasRight(RoleClaimsEnum.AdminService) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminOrganization) ||\r\n this.hasRight(RoleClaimsEnum.AdminCountryOrganization) ||\r\n this.hasRight(RoleClaimsEnum.AdminService) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminOrganization) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminUsers) ||\r\n this.hasRight(RoleClaimsEnum.MavoAdministrator) ||\r\n this.hasRight(RoleClaimsEnum.AdminCountryOrganization) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminOrganization) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminValueList) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminValueList) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.ManagerExport) || this.hasRight(RoleClaimsEnum.Admin) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.ManagerExport) || this.hasRight(RoleClaimsEnum.Admin) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.ManagerExport) || this.hasRight(RoleClaimsEnum.Admin) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.ManagerExport) || this.hasRight(RoleClaimsEnum.Admin) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminValueList) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminValueList) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminValueList) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.AdminValueList) ? (\r\n \r\n ): null}\r\n \r\n\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ||\r\n this.hasRight(RoleClaimsEnum.MavoContab) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ||\r\n this.hasRight(RoleClaimsEnum.MavoContab) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoVehicle) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoVehicle) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAgent) || this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAgent) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAgent) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAgent) ||\r\n this.hasRight(RoleClaimsEnum.MavoContab) ||\r\n this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n\r\n {this.hasRight(RoleClaimsEnum.MavoAdministrator) ? (\r\n \r\n ) : null}\r\n \r\n {this.hasRight(RoleClaimsEnum.Order) ? (\r\n \r\n ) : null}\r\n \r\n {this.hasRight(RoleClaimsEnum.ManagerExport) || this.hasRight(RoleClaimsEnum.Admin) ? (\r\n \r\n ) : null}\r\n \r\n );\r\n };\r\n\r\n public render() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.renderUserRoutes()}\r\n {/* */}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect((state: ApplicationState) => state.app, AppActionCreators)(withSnackbar(App as any));\r\n","import { useEffect } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nconst ScrollToTop = ({ children, location: { pathname } }) => {\r\n useEffect(() => {\r\n window.scrollTo({\r\n top: 0,\r\n left: 0,\r\n behavior: 'smooth'\r\n });\r\n }, [pathname]);\r\n\r\n return children || null;\r\n};\r\n\r\nexport default withRouter(ScrollToTop);\r\n","import 'bootstrap/dist/css/bootstrap.css';\r\n\r\nimport * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport { ConnectedRouter } from 'connected-react-router';\r\nimport { createBrowserHistory } from 'history';\r\nimport configureStore from './store/configureStore';\r\nimport App from './App';\r\nimport registerServiceWorker, { unregister } from './registerServiceWorker';\r\nimport { ApplicationContext, AppContext } from './context/Contexts';\r\nimport { CssBaseline } from '@material-ui/core';\r\nimport ScrollToTop from './utils/ScrollToTop';\r\nimport './assets/base.scss';\r\nimport 'react-big-calendar/lib/css/react-big-calendar.css'\r\n\r\nimport { library } from '@fortawesome/fontawesome-svg-core';\r\nimport {\r\n fab,\r\n faFacebook,\r\n faTwitter,\r\n faVuejs,\r\n faReact,\r\n faHtml5,\r\n faGoogle,\r\n faInstagram,\r\n faPinterest,\r\n faYoutube,\r\n faDiscord\r\n} from '@fortawesome/free-brands-svg-icons';\r\nimport {\r\n far,\r\n faSquare,\r\n faLifeRing,\r\n faCheckCircle,\r\n faTimesCircle,\r\n faDotCircle,\r\n faThumbsUp,\r\n faComments,\r\n faFolderOpen,\r\n faTrashAlt,\r\n faFileImage,\r\n faFileArchive,\r\n faCommentDots,\r\n faFolder,\r\n faKeyboard,\r\n faCalendarAlt,\r\n faEnvelope,\r\n faAddressCard,\r\n faMap,\r\n faObjectGroup,\r\n faImages,\r\n faUser,\r\n faLightbulb,\r\n faGem,\r\n faClock,\r\n faUserCircle,\r\n faQuestionCircle,\r\n faBuilding,\r\n faBell,\r\n faFileExcel,\r\n faFileAudio,\r\n faFileVideo,\r\n faFileWord,\r\n faFilePdf,\r\n faFileCode,\r\n faFileAlt,\r\n faEye,\r\n faChartBar\r\n} from '@fortawesome/free-regular-svg-icons';\r\nimport {\r\n fas,\r\n faAngleDoubleRight,\r\n faAngleDoubleLeft,\r\n faSmile,\r\n faHeart,\r\n faBatteryEmpty,\r\n faBatteryFull,\r\n faChevronRight,\r\n faSitemap,\r\n faPrint,\r\n faMapMarkedAlt,\r\n faTachometerAlt,\r\n faAlignCenter,\r\n faExternalLinkAlt,\r\n faShareSquare,\r\n faInfoCircle,\r\n faSync,\r\n faQuoteRight,\r\n faStarHalfAlt,\r\n faShapes,\r\n faCarBattery,\r\n faTable,\r\n faCubes,\r\n faPager,\r\n faCameraRetro,\r\n faBomb,\r\n faNetworkWired,\r\n faBusAlt,\r\n faBirthdayCake,\r\n faEyeDropper,\r\n faUnlockAlt,\r\n faDownload,\r\n faAward,\r\n faPlayCircle,\r\n faReply,\r\n faUpload,\r\n faBars,\r\n faEllipsisV,\r\n faSave,\r\n faSlidersH,\r\n faCaretRight,\r\n faChevronUp,\r\n faPlus,\r\n faLemon,\r\n faChevronLeft,\r\n faTimes,\r\n faChevronDown,\r\n faFilm,\r\n faSearch,\r\n faEllipsisH,\r\n faCog,\r\n faArrowsAltH,\r\n faPlusCircle,\r\n faAngleRight,\r\n faAngleUp,\r\n faAngleLeft,\r\n faAngleDown,\r\n faArrowUp,\r\n faArrowDown,\r\n faArrowRight,\r\n faArrowLeft,\r\n faStar,\r\n faSignOutAlt,\r\n faLink\r\n} from '@fortawesome/free-solid-svg-icons';\r\nimport { SnackbarProvider } from 'notistack';\r\nlibrary.add(\r\n far,\r\n faSquare,\r\n faLifeRing,\r\n faCheckCircle,\r\n faTimesCircle,\r\n faDotCircle,\r\n faThumbsUp,\r\n faComments,\r\n faFolderOpen,\r\n faTrashAlt,\r\n faFileImage,\r\n faFileArchive,\r\n faCommentDots,\r\n faFolder,\r\n faKeyboard,\r\n faCalendarAlt,\r\n faEnvelope,\r\n faAddressCard,\r\n faMap,\r\n faObjectGroup,\r\n faImages,\r\n faUser,\r\n faLightbulb,\r\n faGem,\r\n faClock,\r\n faUserCircle,\r\n faQuestionCircle,\r\n faBuilding,\r\n faBell,\r\n faFileExcel,\r\n faFileAudio,\r\n faFileVideo,\r\n faFileWord,\r\n faFilePdf,\r\n faFileCode,\r\n faFileAlt,\r\n faEye,\r\n faChartBar\r\n);\r\nlibrary.add(\r\n fab,\r\n faFacebook,\r\n faTwitter,\r\n faVuejs,\r\n faReact,\r\n faHtml5,\r\n faGoogle,\r\n faInstagram,\r\n faPinterest,\r\n faYoutube,\r\n faDiscord\r\n);\r\nlibrary.add(\r\n fas,\r\n faAngleDoubleRight,\r\n faAngleDoubleLeft,\r\n faSmile,\r\n faHeart,\r\n faBatteryEmpty,\r\n faBatteryFull,\r\n faChevronRight,\r\n faSitemap,\r\n faPrint,\r\n faMapMarkedAlt,\r\n faTachometerAlt,\r\n faAlignCenter,\r\n faExternalLinkAlt,\r\n faShareSquare,\r\n faInfoCircle,\r\n faSync,\r\n faQuoteRight,\r\n faStarHalfAlt,\r\n faShapes,\r\n faCarBattery,\r\n faTable,\r\n faCubes,\r\n faPager,\r\n faCameraRetro,\r\n faBomb,\r\n faNetworkWired,\r\n faBusAlt,\r\n faBirthdayCake,\r\n faEyeDropper,\r\n faUnlockAlt,\r\n faDownload,\r\n faAward,\r\n faPlayCircle,\r\n faReply,\r\n faUpload,\r\n faBars,\r\n faEllipsisV,\r\n faSave,\r\n faSlidersH,\r\n faCaretRight,\r\n faChevronUp,\r\n faPlus,\r\n faLemon,\r\n faChevronLeft,\r\n faTimes,\r\n faChevronDown,\r\n faFilm,\r\n faSearch,\r\n faEllipsisH,\r\n faCog,\r\n faArrowsAltH,\r\n faPlusCircle,\r\n faAngleRight,\r\n faAngleUp,\r\n faAngleLeft,\r\n faAngleDown,\r\n faArrowUp,\r\n faArrowDown,\r\n faArrowRight,\r\n faArrowLeft,\r\n faStar,\r\n faSignOutAlt,\r\n faLink\r\n);\r\n\r\n// Create browser history to use in the Redux store\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href') as string;\r\nconst history = createBrowserHistory({ basename: baseUrl });\r\n\r\n// Get the application-wide store instance, prepopulating with state from the server where available.\r\nexport const store = configureStore(history, AppContext);\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// registerServiceWorker();\r\n// unregister();\r\n","export const APP_SET_USER = 'APP_SET_USER';\r\nexport const APP_REMOVE_USER = 'APP_REMOVE_USER';\r\nexport const APP_DISPLAY_MESSAGE = 'APP_DISPLAY_MESSAGE';\r\nexport const APP_SET_LANGUAGE = 'APP_SET_LANGUAGE';\r\n\r\nexport const APP_LOAD_NOTIFICATION = 'APP_LOAD_NOTIFICATION';\r\nexport const APP_LOAD_TASKS = 'APP_LOAD_TASKS';\r\nexport const APP_LOAD_COMMENTS = 'APP_LOAD_COMMENTS';\r\n\r\nexport const APP_REMOVE_TASK = 'APP_REMOVE_TASK';\r\nexport const APP_REMOVE_COMMENT = 'APP_REMOVE_COMMENT';\r\nexport const APP_REMOVE_NEW_IN_CASE = 'APP_REMOVE_NEW_IN_CASE';\r\nexport const APP_MARK_AS_VIEWED_NEW_IN_CASE = 'APP_MARK_AS_VIEWED_NEW_IN_CASE';\r\nexport const APP_REMOVE_NEW_IN_APPOINTMENT = 'APP_REMOVE_NEW_IN_APPOINTMENT';\r\nexport const APP_MARK_AS_VIEWED_NEW_IN_APPOINTMENT = 'APP_MARK_AS_VIEWED_NEW_IN_APPOINTMENT';\r\nexport const APP_SET_NOTIFICATIONS_LOADERS = 'APP_SET_NOTIFICATIONS_LOADERS';\r\nexport const APP_SET_CURRENCY_RATES = 'APP_SET_CURRENCY_RATES';\r\n\r\nexport const APPUSER_USER_GET_LIST_START = 'APPUSER_USER_GET_LIST_START';\r\nexport const APPUSER_USER_GET_LIST_END = 'APPUSER_USER_GET_LIST_END';\r\nexport const APPUSER_USER_EDIT = 'APPUSER_USER_EDIT';\r\nexport const APPUSER_USER_ADD = 'APPUSER_USER_ADD';\r\n\r\nexport const REQUEST_WEATHER_FORECASTS = 'REQUEST_WEATHER_FORECASTS';\r\nexport const RECEIVE_WEATHER_FORECASTS = 'RECEIVE_WEATHER_FORECASTS';\r\n\r\nexport const THEME_SET_SIDEBAR_HOVER = 'SET_SIDEBAR_HOVER';\r\nexport const THEME_SET_SIDEBAR_TOGGLE = 'SET_SIDEBAR_TOGGLE';\r\nexport const THEME_SET_SIDEBAR_TOGGLE_MOBILE = 'SET_SIDEBAR_TOGGLE_MOBILE';\r\n\r\nexport const CASE_SETTINGS_SET_CASE = 'CASE_SETTINGS_SET_CASE';\r\nexport const CASE_SETTINGS_SET_LOADING = 'CASE_SETTINGS_SET_LOADING';\r\nexport const CASE_SETTINGS_SET_CASE_VEHICLE = 'CASE_SETTINGS_SET_CASE_VEHICLE';\r\nexport const CASE_SETTINGS_SET_CASE_EVENT = 'CASE_SETTINGS_SET_CASE_EVENT';\r\nexport const CASE_SETTINGS_SET_CASE_STATUS = 'CASE_SETTINGS_SET_CASE_STATUS';\r\nexport const CASE_SETTINGS_ADD_CASE_PARTNER = 'CASE_SETTINGS_ADD_CASE_PARTNER';\r\nexport const CASE_SETTINGS_SET_CASE_VALUATION = 'CASE_SETTINGS_SET_CASE_VALUATION';\r\nexport const CASE_SETTINGS_SET_CLIENT_DATA = 'CASE_SETTINGS_SET_CLIENT_DATA';\r\nexport const CASE_SETTINGS_SET_VEHICLE_DATA = 'CASE_SETTINGS_SET_VEHICLE_DATA';\r\nexport const CASE_SETTINGS_UPDATE_PARAMETERS = 'CASE_SETTINGS_UPDATE_PARAMETERS';\r\nexport const CASE_SETTINGS_UPDATE_TARIFF_VALUE = 'CASE_SETTINGS_UPDATE_TARIFF_VALUE';\r\nexport const CASE_SETTINGS_SET_CASE_CALCULATION_HISTORY =\r\n 'CASE_SETTINGS_SET_CASE_CALCULATION_HISTORY';\r\nexport const CASE_SETTINGS_SET_CAR_IN_SERVICE = 'CASE_SETTINGS_SET_CAR_IN_SERVICE';\r\n\r\n\r\nexport const VEHICLE_SET_VEHICLE = 'VEHICLE_SET_VEHICLE';\r\nexport const VEHICLE_SET_VEHICLE_STATUS = 'VEHICLE_SET_VEHICLE_STATUS';\r\nexport const VEHICLE_RESET_STATE = 'VEHICLE_RESET_STATE';\r\nexport const VEHICLE_SET_VEHICLE_LOADING = 'VEHICLE_SET_VEHICLE_LOADING';\r\n\r\nexport const MAVO_VEHICLE_SET_VEHICLE = 'MAVO_VEHICLE_SET_VEHICLE';\r\nexport const MAVO_VEHICLE_SET_VEHICLE_STATUS = 'MAVO_VEHICLE_SET_VEHICLE_STATUS';\r\n\r\nexport const VEHICLE_SET_VEHICLE_AUCTION = 'VEHICLE_SET_VEHICLE_AUCTION';\r\n\r\n/**\r\n * Agenda actions\r\n */\r\nexport const AGENDA_SET_SELECTED_RANGE = 'AGENDA_SET_SELECTED_RANGE';\r\nexport const AGENDA_SET_APPOINTMENTS = 'AGENDA_SET_APPOINTMENTS';\r\nexport const AGENDA_SET_SELECTED_APPOINTMENT = 'AGENDA_SET_SELECTED_APPOINTMENT';\r\nexport const AGENDA_SET_STATUS_LIST = 'AGENDA_SET_STATUS_LIST';\r\nexport const AGENDA_SET_CATEGORY_TYPE = 'AGENDA_SET_CATEGORY_TYPE';\r\n","import olxLogo from '../assets/images/OLX.png';\r\nimport autovitLogo from '../assets/images/Autovit.jpg';\r\nimport renaultLogo from '../assets/images/Renault.png';\r\n\r\n\r\nexport const defaultChartColors = [\"26a0fc\", \"26e7a6\", \"febc3b\", \"ff6178\", \"8b75d7\"];\r\nexport const defaultChartPosition = { x: 0.3, y: 0.3, w: '90%', h: '90%' }\r\nexport const titleOptions = { fontSize: 16, color: \"000000\", bold: true, align: \"center\" };\r\nexport const titlePosition = { x: 0.5, y: 0.4, w: \"90%\" };\r\n\r\nexport const tabNameOptions = { fontSize: 24, color: \"000000\", bold: true, align: \"center\" };\r\nexport const tabNamePosition = { x: 0.5, y: \"45%\", w: \"90%\" };\r\n\r\n\r\nexport const rectangletextOpts = {\r\n y: 1.5,\r\n w: 2,\r\n h: 1,\r\n align: \"center\",\r\n fill: { color: 'e7e6e6' },\r\n wrap: true,\r\n}\r\n\r\nexport const cellOpt = { color: '000000', fontSize: 14, bold: true }\r\n\r\nexport const sallerTableOptions = { x: 2.5, y: 1, w: 5.0, valign: \"middle\", border: { pt: \"1\" }, autoPage: true }\r\n\r\nexport const tableOptions = { x: 0.5, y: 1.0, w: 9.0, valign: \"middle\", border: { pt: \"1\" }, fill: { color: \"F1F1F1\" }, autoPage: true }\r\n\r\n\r\nexport const logos = [\r\n { image: autovitLogo, dimension: { w: 2, h: 0.5, x: 1 } },\r\n { image: olxLogo, dimension: { w: 0.5, h: 0.5, x: 4.7 } },\r\n { image: renaultLogo, dimension: { w: 1, h: 0.5, x: 7.5 }}\r\n]\r\n\r\nexport const recentAcquisitionLogos = [\r\n { dimension: { w: 2, h: 1.5, x: 0.5 } },\r\n { dimension: { w: 2, h: 1.5, x: 4.2 } },\r\n { dimension: { w: 2, h: 1.5, x: 7.9 }}\r\n]\r\n\r\n\r\nexport const recentAcquisitionOptions = {\r\n w: 2.5,\r\n h: 0.5,\r\n align: \"center\",\r\n wrap: true,\r\n fontSize: 10\r\n}\r\n\r\n\r\nexport const salesChannelOptions = {\r\n w: 2,\r\n h: 1,\r\n align: \"center\",\r\n wrap: true,\r\n}\r\n\r\nexport const rectangleOptions ={\r\n align: \"center\",\r\n fill: { color: 'e7e6e6' },\r\n wrap: true\r\n}\r\n\r\nexport const salesOptions ={\r\n align: \"center\",\r\n wrap: true,\r\n fontSize: 10\r\n}\r\n\r\n\r\nexport const horizontalChartOptions = {\r\n ...defaultChartPosition,\r\n w: \"100%\",\r\n x: 0,\r\n valAxisMinVal: 0,\r\n catAxisLabelFontSize: 6,\r\n valAxisHidden: false,\r\n catAxisLineShow: false,\r\n showValue: true,\r\n dataLabelColor: '000000' ,\r\n dataLabelFontSize: 6,\r\n barGapWidthPct: 15,\r\n chartColors: defaultChartColors,\r\n}\r\n\r\nexport const verticalCharOptions = {\r\n ...defaultChartPosition,\r\n barDir: \"col\",\r\n barGapWidthPct: 25,\r\n chartColors: defaultChartColors,\r\n chartColorsOpacity: 50,\r\n barGrouping: \"stacked\",\r\n showValue: true,\r\n title: name,\r\n showTitle: true,\r\n dataLabelColor: \"FFFFFF\",\r\n}\r\n\r\nexport const verticalChar2Options = {\r\n ...defaultChartPosition,\r\n chartArea: { fill: { color: \"F1F1F1\" } },\r\n plotArea: { fill: { color: \"404040\" } },\r\n barDir: \"col\",\r\n barGapWidthPct: 25,\r\n chartColors: [\"26a0fc\", \"26e7a6\"],\r\n catAxisLabelFontFace: \"Calibri\",\r\n catAxisLabelFontSize: 11,\r\n dataLabelColor: \"FFFFFF\",\r\n dataLabelFontFace: \"Arial\",\r\n dataLabelFontSize: 10,\r\n dataLabelPosition: \"inEnd\",\r\n showValue: true,\r\n showLegend: false,\r\n legendPos: \"b\",\r\n showTitle: true,\r\n}\r\n\r\nexport const circleChartOptions = {\r\n ...defaultChartPosition,\r\n chartArea: { fill: { color: \"F1F1F1\" } },\r\n dataBorder: { pt: \"1\", color: \"F1F1F1\" },\r\n showLegend: true,\r\n chartColors: defaultChartColors,\r\n legendPos: \"b\",\r\n showTitle: true,\r\n title: name,\r\n firstSliceAng: 90,\r\n dataLabelSize: 8,\r\n dataLabelColor: \"FFFFFF\",\r\n dataLabelFormatCode: '##.#%'\r\n}\r\n\r\nexport const scatterChartOptions = {\r\n ...defaultChartPosition,\r\n plotArea: { fill: { color: \"F2F9FC\" } },\r\n chartColors: ['26a0fc', \"26e7a6\"],\r\n chartArea: { fill: { color: \"F1F1F1\" } },\r\n lineSize: 3,\r\n lineSmooth: true,\r\n showLegend: true,\r\n catGridLine: 'solid',\r\n legendPos: \"b\",\r\n catAxisLabelPos: \"low\",\r\n}","import pptxgen from \"pptxgenjs\";\r\nimport moment from \"moment\";\r\nimport { IPptService } from './Interfaces/IPptService';\r\nimport { DashboardFiltersState } from '../interfaces/Dashboard/DashboardFiltersState';\r\nimport { numberFormat } from \"../utils/numberFormat\";\r\nimport { ITranslatorService } from \"./Interfaces/ITranslatorService\";\r\nimport{\r\n titleOptions, titlePosition, rectangletextOpts, cellOpt, tableOptions,\r\n logos, salesChannelOptions, rectangleOptions, horizontalChartOptions, sallerTableOptions, verticalCharOptions, verticalChar2Options,\r\n circleChartOptions, scatterChartOptions, defaultChartPosition, defaultChartColors, recentAcquisitionLogos, recentAcquisitionOptions, tabNameOptions, tabNamePosition, salesOptions\r\n} from '../helpers/PptConstants'\r\nimport { SalesVehicle } from \"../interfaces/Dashboard/SalesVehicle\";\r\nimport { faTheRedYeti } from \"@fortawesome/free-brands-svg-icons\";\r\n\r\n\r\nexport class PptService implements IPptService {\r\n\r\n private translatorService: ITranslatorService;\r\n private pptx: any;\r\n private pptData: any;\r\n\r\n constructor(\r\n translatorService: ITranslatorService,\r\n pptData?:any,\r\n ) {\r\n this.translatorService = translatorService;\r\n this.pptx = new pptxgen();\r\n this.pptData = pptData;\r\n }\r\n\r\n addStockStructure = (slide: any) => {\r\n slide.addText([{\r\n text: `${this.translatorService.Tranlate('DASHBOARD_INVENTORY_STRUCTURE', 'Structura stoc la data de')} ${moment().format('DD-MM-YYYY')}`, \r\n options: titleOptions \r\n }], titlePosition);\r\n\r\n slide.addText(`Total stoc\\n${this.pptData.count}`, { ...rectangletextOpts, x: 1.0 });\r\n slide.addText(`Rulaj mediu\\n${this.pptData.averageMileage} km`, { ...rectangletextOpts, x: 4.0 });\r\n slide.addText(`Varsta medie\\n${this.pptData.averageVehicleAge} ani`, { ...rectangletextOpts, x: 7.0 });\r\n }\r\n\r\n acquisitionMainCard = (slide: any, includeVat?:boolean)=>{\r\n const { purchasesCompleted, purchasesInProgress, purchasesFailed, newVehiclesSoldCount } = this.pptData;\r\n const purchasesCompletedPrice = includeVat\r\n ? purchasesCompleted.amountInclVat\r\n : purchasesCompleted.amount;\r\n\r\n const purchasesInProgressPrice = includeVat\r\n ? purchasesInProgress.amountInclVat\r\n : purchasesInProgress.amount;\r\n\r\n const purchasesFailedPrice = includeVat ? purchasesFailed.amountInclVat : purchasesFailed.amount;\r\n\r\n const averagePurchasePrice =\r\n purchasesCompleted.count == 0 ? 0 : purchasesCompletedPrice / purchasesCompleted.count;\r\n\r\n const textOpts = {\r\n y: 1.0,\r\n w: 3,\r\n h: 1.5,\r\n ...rectangleOptions\r\n }\r\n\r\n slide.addText(`${this.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_FINALISED',\r\n 'Finalizate cu succes')\r\n }\\n${purchasesCompleted.count}\\n${`${numberFormat(purchasesCompletedPrice)} EUR`}`, { ...textOpts, x: 1.5 });\r\n\r\n slide.addText(`${this.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_IN_PROGRESS',\r\n 'In curs de achizitie')\r\n }\\n${purchasesInProgress.count}\\n${`${numberFormat(purchasesInProgressPrice)} EUR`}`, { ...textOpts, x: 6.0 });\r\n\r\n slide.addText(`${this.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_FAILED',\r\n 'Achizitii esuate')\r\n }\\n${purchasesFailed.count}\\n${`${numberFormat(purchasesFailedPrice)} EUR`}`, { ...textOpts, y: 3, x: 0.3 });\r\n slide.addText(`${this.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_AVERAGE_PRICE',\r\n 'Pret mediu achizitie')\r\n }\\n${`${numberFormat(averagePurchasePrice)} EUR`}`, { ...textOpts, y: 3, x: 3.5 });\r\n slide.addText(`${this.translatorService.Tranlate(\r\n 'DASHBOARD_ACQUISITION_NEW_VEHICLES_SOLD',\r\n 'Vehicule noi vandute'\r\n )\r\n }\\n${newVehiclesSoldCount}`, { ...textOpts, y: 3, x: 6.8 });\r\n }\r\n\r\n salesTopSeller = (slide:any) =>{\r\n slide.addText([{ text: this.translatorService.Tranlate('DASHBOARD_TOP_SALE_PERSONS', 'Top vanzatori'), options: titleOptions }], titlePosition);\r\n const rows = [];\r\n if (this.pptData.topSellersBasedOnClosedFolders?.length > 0) {\r\n this.pptData.topSellersBasedOnClosedFolders.forEach((item: any, index: number) => {\r\n rows.push([{ text: index + 1, options: { ...cellOpt} }, { text: `${item.organizationName}\\n${item.buyerName}`, options: cellOpt }])\r\n })\r\n slide.addTable(rows, { ...sallerTableOptions });\r\n }\r\n }\r\n\r\n salesChannel = (slide:any) =>{\r\n let pos = 1;\r\n if (this.pptData.salesChannels?.length > 0){\r\n this.pptData.salesChannels.forEach((channel:any, index:number)=>{\r\n slide.addImage({ path: logos[index].image, ...logos[index].dimension, y: 0.3, align: \"center\" });\r\n slide.addText(this.translatorService.Tranlate('DASHBOARD_TOTAL_ADS', 'Total anunturi'), { ...salesChannelOptions, x: pos, y:1 });\r\n slide.addText(channel.totalCount, { ...salesChannelOptions, x: pos ,y:2});\r\n slide.addText(this.translatorService.Tranlate('DASHBOARD_ACTIVE_ADS', 'Active'), { ...salesChannelOptions, x: pos, y:3 });\r\n slide.addText(channel.activeCount, { ...salesChannelOptions, x: pos, y:4 });\r\n pos = pos + 2 + 1;\r\n })\r\n\r\n }\r\n }\r\n\r\n recentAcquisitions = (data: any) =>{\r\n const slide = this.pptx.addSlide();\r\n slide.addText([{ text: this.translatorService.Tranlate('DASHBOARD_ACQUISITION_RECENT', 'Achizitii recente'), options: titleOptions }], titlePosition);\r\n let pos = 0.5;\r\n if (data?.length > 0){\r\n data.forEach((recentAcquisition:any, index:number)=>{\r\n recentAcquisition.makeName = recentAcquisition.makeName ? recentAcquisition.makeName : '';\r\n recentAcquisition.modelName = recentAcquisition.modelName ? recentAcquisition.modelName : '';\r\n recentAcquisition.equipmentVersion = recentAcquisition.equipmentVersion ? recentAcquisition.equipmentVersion : '';\r\n recentAcquisition.makeYear = recentAcquisition.makeYear ? recentAcquisition.makeYear : '';\r\n recentAcquisition.fuelType = recentAcquisition.fuelType ? recentAcquisition.fuelType : '';\r\n recentAcquisition.transmissionType = recentAcquisition.transmissionType ? recentAcquisition.transmissionType: '';\r\n\r\n slide.addImage({ data: recentAcquisition.base64Value, ...recentAcquisitionLogos[index].dimension, y: 0.6, align: \"center\" });\r\n slide.addText(recentAcquisition.makeName + \" \" + recentAcquisition.modelName, { ...recentAcquisitionOptions, x: pos, y: 2.3 });\r\n slide.addText(recentAcquisition.equipmentVersion + '/' + recentAcquisition.makeYear + '/' + recentAcquisition.fuelType + '/' + recentAcquisition.transmissionType, { ...recentAcquisitionOptions, x: pos ,y: 2.8});\r\n slide.addText(\"Pret achizitie:\" + Math.round(recentAcquisition.purchasePriceInclVat) + 'Euro', { ...recentAcquisitionOptions, x: pos, y: 3.2 });\r\n slide.addText(this.translatorService.Tranlate('DASHBOARD_BUYER_NAME', 'Cumparator') + \":\" + recentAcquisition.buyerName, { ...recentAcquisitionOptions, x: pos, y: 3.7 });\r\n slide.addText(this.translatorService.Tranlate('DASHBOARD_ORGANIZATION', 'Organizatie') + \":\" + recentAcquisition.organizationName, { ...recentAcquisitionOptions, x: pos, y: 4.2 });\r\n pos = pos + 2 + 1 + 0.5;\r\n })\r\n\r\n }\r\n }\r\n\r\n getFilterName = (id:number, items:any, name:string) =>{\r\n const indexMake = items.findIndex((item: any) => item.id === id);\r\n return indexMake >= 0 ? `${name}: ${items[indexMake].displayName}` : '';\r\n } \r\n\r\n salesProfit = () => {\r\n const slide = this.pptx.addSlide();\r\n const textOpts = {\r\n y: 1.0,\r\n w: 2.5,\r\n h: 1.5,\r\n ...rectangleOptions\r\n }\r\n slide.addText(`${this.translatorService.Tranlate('DASHBOARD_SALES_WARRANTIES','Garantii vandute')\r\n }\\n${numberFormat(this.pptData.guaranteeCount)}`, { ...textOpts, x: 0.5 });\r\n\r\n slide.addText(`${this.translatorService.Tranlate('DASHBOARD_SALES_TABLE_TITLE', 'Vanzari')\r\n }\\n${numberFormat(this.pptData.soldVehicleInformation.amountInclVat, 0, undefined, ' EUR')}\\n${numberFormat(this.pptData.addsInformation.amountInclVat, 0, undefined, ' EUR')}`, { ...textOpts, x: 3.5 });\r\n\r\n slide.addText(`${this.translatorService.Tranlate('DASHBOARD_PROFIT_VALUE', 'Profit')\r\n }\\n${numberFormat(this.pptData.soldVehicleInformation.profitValue, 0, undefined, ' EUR')}\\n${numberFormat(this.pptData.addsInformation.profitValue, 0, undefined, ' EUR')}`, { ...textOpts, x: 6.5 });\r\n\r\n slide.addText(`${this.translatorService.Tranlate('DASHBOARD_PROFIT_RATIO', 'PROFIT %')\r\n }\\n${numberFormat(this.pptData.soldVehicleInformation.profitPercent)}\\n${numberFormat(this.pptData.addsInformation.profitPercent)}`, { ...textOpts, y: 3, x: 0.5 });\r\n\r\n slide.addText(`${this.translatorService.Tranlate('DASHBOARD_QUANTITY','Nr. Unitati vandute')\r\n }\\n${numberFormat(this.pptData.soldVehicleInformation.count)}\\n${numberFormat(this.pptData.addsInformation.count) }`, { ...textOpts, y: 3, x: 3.5 });\r\n\r\n slide.addText(`${this.translatorService.Tranlate('DASHBOARD_SALES_COST', 'Cost')\r\n }\\n${numberFormat(this.pptData.soldVehicleInformation.damageValue, 0, undefined, ' EUR')}\\n${numberFormat(this.pptData.addsInformation.damageValue, 0, undefined, ' EUR') }`, { ...textOpts, y: 3, x: 6.5 });\r\n }\r\n\r\n getFiltersInfo = (slide:any,filters:any, type:string) =>{\r\n const textOpts = { color: \"363636\", fontSize: 15 }\r\n let firstPosition = 1;\r\n const textPostion = { x: 0.5, y: firstPosition, w: \"90%\" }\r\n\r\n if (filters.startDate)\r\n slide.addText([{\r\n text: `${this.translatorService.Tranlate('DASHBOARD_DATE_LABEL_FROM', 'De la')} ${moment(filters.startDate).format('DD-MM-YYYY')} ${this.translatorService.Tranlate('DASHBOARD_DATE_LABEL_TO', 'Pana la') } ${moment(filters.endDate).format('DD-MM-YYYY')}`,\r\n options: textOpts\r\n }], {...textPostion}); \r\n\r\n if (filters.makeId){\r\n firstPosition += 0.3;\r\n slide.addText([{\r\n text: this.getFilterName(filters.makeId, type === 'vehicle' ? this.pptData.byMaker : this.pptData.purchasedVehiclesByMaker, this.translatorService.Tranlate('DASHBOARD_MAKE', 'Producator')),\r\n options: textOpts\r\n }], { ...textPostion, y: firstPosition }); \r\n }\r\n\r\n if (filters.offerTypeId) {\r\n firstPosition += 0.3;\r\n slide.addText([{\r\n text: this.getFilterName(filters.makeId, this.pptData.purchasedVehiclesByOfferType, this.translatorService.Tranlate('DASHBOARD_OFFER_TYPE', 'TIP Oferta')),\r\n options: textOpts\r\n }], { ...textPostion, y: firstPosition });\r\n }\r\n\r\n if (filters.modelId) {\r\n firstPosition += 0.3;\r\n slide.addText([{\r\n text: this.getFilterName(filters.modelId, this.pptData.byModel, this.translatorService.Tranlate('DASHBOARD_MODEL', 'Model')),\r\n options: textOpts\r\n }], { ...textPostion, y: firstPosition }); \r\n }\r\n\r\n if (filters.fuelId) {\r\n firstPosition += 0.3;\r\n slide.addText([{\r\n text: this.getFilterName(filters.fuelId, this.pptData.byFuelType, this.translatorService.Tranlate('DASHBOARD_FUEL', 'Combustibil')),\r\n options: textOpts\r\n }], { ...textPostion, y: firstPosition }); \r\n }\r\n\r\n if (filters.includeVat){\r\n firstPosition += 0.3;\r\n slide.addText([{\r\n text: this.translatorService.Tranlate('DASHBOARD_PRICES_WITH_VAT_EUR', 'Preturi in EUR cu TVA'),\r\n options: textOpts\r\n }], { ...textPostion, y: firstPosition }); \r\n } else if (filters.includeVat == false){\r\n firstPosition += 0.3;\r\n slide.addText([{\r\n text: this.translatorService.Tranlate('DASHBOARD_PRICES_WITHOUT_VAT_EUR', 'Preturi in EUR fara TVA'),\r\n options: textOpts\r\n }], { ...textPostion, y: firstPosition }); \r\n }\r\n\r\n if (filters.statusId) {\r\n firstPosition += 0.3;\r\n slide.addText([{\r\n text: this.getFilterName(filters.statusId, this.pptData.byStatusType, this.translatorService.Tranlate(\r\n 'DASHBOARD_TECHNICAL_INVENTORY_STATE',\r\n 'Stare tehnica stoc'\r\n )),\r\n options: textOpts\r\n }], { ...textPostion, y: firstPosition }); \r\n\r\n }\r\n\r\n if (filters.technicalConditionId) {\r\n firstPosition += 0.3;\r\n slide.addText([{\r\n text: this.getFilterName(filters.technicalConditionId, this.pptData.byInOutAndTechnicalCondition, this.translatorService.Tranlate('DASHBOARD_INVENTORY_DETAILS', 'Detalii stoc')),\r\n options: textOpts\r\n }], { ...textPostion, y: firstPosition }); \r\n }\r\n\r\n if (filters.tractionTypeId) {\r\n firstPosition += 0.3;\r\n slide.addText([{\r\n text: this.getFilterName(filters.tractionTypeId, this.pptData.byTractionType, this.translatorService.Tranlate('DASHBOARD_TRACTION', 'Tractiune')),\r\n options: textOpts\r\n }], { ...textPostion, y: firstPosition }); \r\n }\r\n\r\n if (filters.transmissionTypeId) {\r\n firstPosition += 0.3;\r\n slide.addText([{\r\n text: this.getFilterName(filters.transmissionTypeId, this.pptData.byTransmissionType, this.translatorService.Tranlate('DASHBOARD_TRANSMISSION', 'Transmisie')),\r\n options: textOpts\r\n }], { ...textPostion, y: firstPosition }); \r\n }\r\n\r\n if (filters.inventoryAgeFilter) {\r\n firstPosition += 0.3;\r\n slide.addText([{\r\n text: this.getFilterName(filters.inventoryAgeFilter, this.pptData.byInventoryAge, this.translatorService.Tranlate(\r\n 'DASHBOARD_AVERAGE_INVENTORY_AGE',\r\n 'Vehcime medie stoc'\r\n )),\r\n options: textOpts\r\n }], { ...textPostion, y: firstPosition }); \r\n \r\n }\r\n\r\n if (filters.clientTypeId) {\r\n firstPosition += 0.3;\r\n slide.addText([{\r\n text: this.getFilterName(filters.clientTypeId, type === 'sales' ? this.pptData.vehiclesGroupedByClientType : this.pptData.purchasedVehiclesByClientType, this.translatorService.Tranlate('DASHBOARD_CLIENT_TYPE', 'Tip client')),\r\n options: textOpts\r\n }], { ...textPostion, y: firstPosition });\r\n\r\n }\r\n\r\n if (filters.salePersonId) {\r\n firstPosition += 0.3;\r\n const indexMake = this.pptData.topSellersBasedOnClosedFolders.findIndex((item: any) => item.id === filters.salePersonId);\r\n if (indexMake >=0){\r\n const seller = this.pptData.topSellersBasedOnClosedFolders[indexMake];\r\n slide.addText([{\r\n text: `${this.translatorService.Tranlate('DASHBOARD_TOP_SALE_PERSONS', 'Top vanzatori')}: ${seller.organizationName}, ${seller.buyerName}`,\r\n options: textOpts\r\n }], { ...textPostion, y: firstPosition });\r\n }\r\n }\r\n\r\n if (filters.selectedOrganisations?.length > 0)\r\n firstPosition += 0.6;\r\n slide.addText([{\r\n text: `${this.translatorService.Tranlate('DASHBOARD_ORGANIZATION', 'Organizatie')}: ${filters.selectedOrganisations.map((org: any) => ` ${org.name}`)}`,\r\n options: textOpts\r\n }], { ...textPostion, y: firstPosition }); \r\n }\r\n\r\n public addFirstPage = (filters: DashboardFiltersState, type:string) => {\r\n const firstSlide = this.pptx.addSlide();\r\n switch(type){\r\n case 'vehicle': \r\n firstSlide.addText([{\r\n text: this.translatorService.Tranlate('MENU_VEHICLES', 'Stoc vehicule'),\r\n options: tabNameOptions\r\n }], tabNamePosition);\r\n break;\r\n case 'acquisitions':\r\n firstSlide.addText([{\r\n text: this.translatorService.Tranlate('DASHBOARD_ACQUISITION_TAB', 'Achizitii'),\r\n options: tabNameOptions\r\n }], tabNamePosition);\r\n break;\r\n case 'sales':\r\n firstSlide.addText([{\r\n text: this.translatorService.Tranlate('DASHBOARD_SALES_TABLE_TITLE', 'Vanzari'),\r\n options: tabNameOptions\r\n }], tabNamePosition);\r\n break; \r\n default:\r\n break;\r\n }\r\n\r\n const slide = this.pptx.addSlide();\r\n slide.addText([{\r\n text: this.translatorService.Tranlate('DASHBOARD_APPLIED_FILTERS', 'Filtre aplicate1'),\r\n options: titleOptions\r\n }], titlePosition);\r\n\r\n this.getFiltersInfo(slide, filters, type);\r\n\r\n const secondSlide = this.pptx.addSlide();\r\n\r\n switch(type){\r\n case 'vehicle': \r\n this.addStockStructure(secondSlide);\r\n break;\r\n case 'acquisitions':\r\n this.acquisitionMainCard(secondSlide, filters.includeVat)\r\n break;\r\n case 'sales':\r\n this.salesTopSeller(secondSlide);\r\n this.salesChannel(this.pptx.addSlide());\r\n break; \r\n default:\r\n break;\r\n }\r\n }\r\n\r\n getDataForChart = (data:any, formatData?:any) =>{\r\n const dataChart = { labels: [], values: [] };\r\n let maxValue = 0;\r\n data.forEach((item: any) => {\r\n const val = formatData ? item[formatData.value] : item.value;\r\n if (val > maxValue) {\r\n maxValue = item.value;\r\n }\r\n dataChart.labels.push(formatData ? item[formatData.label] : item.displayName);\r\n dataChart.values.push(formatData ? item[formatData.value] : item.value)\r\n })\r\n return { maxValue: maxValue, data: dataChart }\r\n }\r\n\r\n public addHorizontalChart = (charData:any,name:string) =>{\r\n if(!(charData?.length > 0)){\r\n return;\r\n }\r\n const slide = this.pptx.addSlide();\r\n slide.addText([{ text: name, options: titleOptions }], titlePosition);\r\n const infoChart = this.getDataForChart(charData);\r\n \r\n slide.addChart(\r\n this.pptx.charts.BAR,\r\n [\r\n {\r\n name: name,\r\n labels: [...infoChart.data.labels],\r\n values: [...infoChart.data.values],\r\n },\r\n ],\r\n {\r\n ...horizontalChartOptions,\r\n valAxisMaxVal: infoChart.maxValue + 20,\r\n \r\n }\r\n );\r\n}\r\n\r\n public addTable = (tableFormat: [{ title: string, field?: string, render?(rowData: any): string | 0 }],tableData:any, name:string) =>{\r\n if (!(tableData?.length > 0)) {\r\n return;\r\n }\r\n const slide = this.pptx.addSlide();\r\n slide.addText([{ text: name, options: titleOptions }], titlePosition);\r\n const rows = [];\r\n rows.push(tableFormat.map((item) => { return { text: item.title, options: { color: '000000', fontSize: 14, bold: true } }}));\r\n tableData.forEach((val:any)=>{\r\n rows.push(tableFormat.map((item) => { return { text: item.render ? item.render(val) : val[item.field], options: { color: \"000000\", fontSize: 12 } }}))\r\n })\r\n slide.addTable(rows, { ...tableOptions });\r\n\r\n }\r\n\r\n public addVerticalChart = (charData: any, name: string, customLabels?:any) =>{\r\n if (!(charData?.length > 0)) {\r\n return;\r\n }\r\n const slide = this.pptx.addSlide({ sectionTitle: \"Charts\" });\r\n const infoChart = this.getDataForChart(charData);\r\n slide.addChart(\r\n this.pptx.charts.BAR, \r\n [\r\n {\r\n name: name,\r\n labels: customLabels ? [...customLabels] :[...infoChart.data.labels],\r\n values: [...infoChart.data.values],\r\n },\r\n ], \r\n {\r\n ...verticalCharOptions,\r\n title: name,\r\n valAxisMaxVal: infoChart.maxValue,\r\n });\r\n \r\n }\r\n\r\n public addVerticalChart2 = (data:any, name:string, formatData:any) =>{\r\n if (!(data?.length > 0)) {\r\n return;\r\n }\r\n const slide = this.pptx.addSlide();\r\n const firstCategoryChart = this.getDataForChart(data, formatData[0]);\r\n const secondCategoryChart = this.getDataForChart(data, formatData[1]);\r\n slide.addChart(\r\n this.pptx.charts.BAR, \r\n [\r\n {\r\n name: 'Category 1',\r\n labels: [...firstCategoryChart.data.labels],\r\n values: [...firstCategoryChart.data.values],\r\n },\r\n {\r\n name: 'Category 2',\r\n labels: [...secondCategoryChart.data.labels],\r\n values: [...secondCategoryChart.data.values],\r\n }\r\n ], \r\n {\r\n ...verticalChar2Options,\r\n title: name,\r\n valAxisMaxVal: firstCategoryChart.maxValue > secondCategoryChart.maxValue ? firstCategoryChart.maxValue : secondCategoryChart.maxValue,\r\n });\r\n }\r\n\r\n public addCircleChart = (charData:any, name:string) =>{\r\n if (!(charData?.length > 0)) {\r\n return;\r\n }\r\n const slide = this.pptx.addSlide();\r\n const infoChart = this.getDataForChart(charData);\r\n slide.addChart(\r\n this.pptx.charts.PIE,\r\n [{\r\n name: name,\r\n labels: [...infoChart.data.labels],\r\n values: [...infoChart.data.values],\r\n }], \r\n {\r\n ...circleChartOptions,\r\n title: name\r\n });\r\n }\r\n\r\n public addCarBox = () =>{\r\n const slide = this.pptx.addSlide();\r\n }\r\n\r\n public addScatterChar = (data: any, name: string, formatData: any, firstCategoryName: string, secondCategoryName: string) =>{\r\n const slide = this.pptx.addSlide();\r\n const firstCategoryChart = this.getDataForChart(data, formatData[0]);\r\n const secondCategoryChart = this.getDataForChart(data, formatData[1]);\r\n console.log(firstCategoryChart);\r\n slide.addChart(this.pptx.charts.LINE, [\r\n {\r\n name: firstCategoryName,\r\n labels: [...firstCategoryChart.data.labels],\r\n values: [...firstCategoryChart.data.values],\r\n },\r\n {\r\n name: secondCategoryName,\r\n labels: [...secondCategoryChart.data.labels],\r\n values: [...secondCategoryChart.data.values],\r\n }\r\n ], { ...scatterChartOptions});\r\n }\r\n\r\n public lastSalePage(data: SalesVehicle) {\r\n const slide = this.pptx.addSlide();\r\n console.log(data);\r\n let firstPosition = 1;\r\n const textPostion = { x: 0.5, y: firstPosition, w: \"90%\", fontSize: 14, align: 'center' };\r\n\r\n slide.addText(`${data?.makeName} ${data?.modelName}`, { ...textPostion});\r\n\r\n firstPosition += 0.3;\r\n slide.addText(`${this.translatorService.Tranlate(\r\n 'DASHBOARD_SALES_TABLE_QUANTITY',\r\n 'Numar de unitati'\r\n )}: ${data?.numberOfUnitSold}`, { ...textPostion, y: firstPosition });\r\n\r\n firstPosition += 0.3;\r\n slide.addText(`${this.translatorService.Tranlate(\r\n 'DASHBOARD_AVERAGE_VEHICLE_AGE',\r\n 'Varsta medie'\r\n )}: ${numberFormat(data?.avgOfYear, 1)}`, { ...textPostion, y: firstPosition })\r\n\r\n\r\n for (let i = 0; i < data?.groupedByFuelType.length; i++) {\r\n firstPosition += 0.3;\r\n slide.addText(`${data?.groupedByFuelType[i].name} ${Math.round(data?.groupedByFuelType[i].percentValue)} % (${data?.groupedByFuelType[i].count})`, { ...textPostion, y: firstPosition });\r\n }\r\n\r\n for (let i = 0; i < data?.groupedByTransmissionType.length; i++) {\r\n firstPosition += 0.3;\r\n slide.addText(`${data?.groupedByTransmissionType[i].name} ${Math.round(data?.groupedByTransmissionType[i].percentValue)} % (${data?.groupedByTransmissionType[i].count})`, { ...textPostion, y: firstPosition });\r\n }\r\n\r\n firstPosition += 0.3;\r\n slide.addText( `${this.translatorService.Tranlate(\r\n 'DASHBOARD_AVG_SALE_VALUE',\r\n 'Pret mediu de vanzare'\r\n )}: ${numberFormat(data?.avgSoldValue)} Euro`, { ...textPostion, y: firstPosition });\r\n\r\n firstPosition += 0.3;\r\n slide.addText(`${this.translatorService.Tranlate(\r\n 'DASHBOARD_AVG_DAMAGE_VALUE',\r\n 'Costuri medii'\r\n )}: ${numberFormat(data?.avgDamageValue)} Euro`, { ...textPostion, y: firstPosition });\r\n\r\n firstPosition += 0.3;\r\n slide.addText(`${this.translatorService.Tranlate('DASHBOARD_PROFIT_VALUE', 'Profit')}: ${Math.round(data?.profitPercent)}%`, { ...textPostion, y: firstPosition, bold : true, fontSize: 20 });\r\n\r\n \r\n }\r\n\r\n public exportPpt = () =>{\r\n this.pptx.writeFile()\r\n }\r\n\r\n\r\n}\r\n\r\n","export default __webpack_public_path__ + \"static/media/carfix_newlogo.9cba7b97.svg\";","import React, { Fragment } from 'react';\r\n\r\nimport clsx from 'clsx';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { IconButton, Box } from '@material-ui/core';\r\n\r\nimport { connect } from 'react-redux';\r\n\r\nimport projectLogo from '../../assets/images/carfix_newlogo.svg';\r\n\r\nimport { ThemeActionCreators } from '../../store';\r\n\r\nimport MenuOpenRoundedIcon from '@material-ui/icons/MenuOpenRounded';\r\nimport MenuRoundedIcon from '@material-ui/icons/MenuRounded';\r\n\r\nconst SidebarHeader = (props) => {\r\n const toggleSidebar = () => {\r\n setSidebarToggle(!sidebarToggle);\r\n };\r\n const toggleSidebarMobile = () => {\r\n setSidebarToggleMobile(!sidebarToggleMobile);\r\n };\r\n\r\n const {\r\n sidebarToggleMobile,\r\n setSidebarToggleMobile,\r\n setSidebarToggle,\r\n sidebarToggle,\r\n sidebarHover\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \"ClaimBox\"\r\n \r\n \r\n \r\n \r\n \r\n {sidebarToggle ? : }\r\n \r\n \r\n \r\n \r\n {sidebarToggleMobile ? : }\r\n \r\n \r\n \r\n \r\n );\r\n};\r\nconst mapStateToProps = (state) => ({\r\n sidebarToggle: state.themeOptions.sidebarToggle,\r\n sidebarHover: state.themeOptions.sidebarHover,\r\n sidebarToggleMobile: state.themeOptions.sidebarToggleMobile\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch) => ({\r\n setSidebarToggleMobile: (enable) => dispatch(ThemeActionCreators.setSidebarToggleMobile(enable))\r\n});\r\n\r\nexport default connect(mapStateToProps, mapDispatchToProps)(SidebarHeader);\r\n","export const numberFormat = (num: number, decimalPlaces = 0, prefix = '', suffix = '') => {\r\n const numToDisplay =\r\n num > 999\r\n ? num?.toFixed(decimalPlaces).replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')\r\n : num?.toFixed(decimalPlaces);\r\n\r\n return prefix + numToDisplay + suffix;\r\n};\r\n","import React, { useState, forwardRef } from 'react';\r\nimport { NavLink as RouterLink } from 'react-router-dom';\r\nimport clsx from 'clsx';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { ListItem, Button, Collapse } from '@material-ui/core';\r\n\r\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\r\n\r\nconst CustomRouterLink = forwardRef(function CustomLink(props, ref) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n});\r\n\r\nconst SidebarMenuListItem = (props) => {\r\n const {\r\n title,\r\n href,\r\n depth,\r\n children,\r\n icon: Icon,\r\n className,\r\n redirectTo,\r\n open: openProp,\r\n label: Label,\r\n needToken,\r\n user,\r\n ...rest\r\n } = props;\r\n\r\n const [open, setOpen] = useState(openProp);\r\n\r\n const handleToggle = () => {\r\n setOpen((open) => !open);\r\n };\r\n\r\n let paddingLeft = 14;\r\n\r\n if (depth > 0) {\r\n paddingLeft = 32 + 20 * depth;\r\n }\r\n\r\n const style = {\r\n paddingLeft\r\n };\r\n\r\n if (children) {\r\n return (\r\n \r\n \r\n {Icon && }\r\n {title}\r\n {open ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n {children}\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n {redirectTo ?\r\n window.open(`${redirectTo}${needToken ? `access_token=${user.access_token}`:''}`)}\r\n >\r\n {Icon && }\r\n {title}\r\n {Label && (\r\n \r\n \r\n )}\r\n :\r\n {Icon && }\r\n {title}\r\n {Label && (\r\n \r\n \r\n )}\r\n \r\n }\r\n \r\n );\r\n }\r\n};\r\n\r\nSidebarMenuListItem.propTypes = {\r\n children: PropTypes.node,\r\n className: PropTypes.string,\r\n depth: PropTypes.number.isRequired,\r\n href: PropTypes.string,\r\n icon: PropTypes.any,\r\n label: PropTypes.any,\r\n open: PropTypes.bool,\r\n title: PropTypes.string.isRequired,\r\n redirectTo:PropTypes.string,\r\n needToken:PropTypes.bool,\r\n};\r\n\r\nSidebarMenuListItem.defaultProps = {\r\n depth: 0,\r\n open: false\r\n};\r\n\r\nexport default SidebarMenuListItem;\r\n","import React, { useContext } from 'react';\r\nimport { matchPath } from 'react-router-dom';\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { List, Typography } from '@material-ui/core';\r\n\r\nimport useRouter from '../../utils/useRouter'; //'utils/useRouter';\r\nimport SidebarMenuListItem from './SidebarMenuListItem';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport { ThemeActionCreators } from '../../store';\r\nimport { RoleClaimsEnum } from './../../helpers/Constants';\r\n\r\nconst SidebarMenuList = (props) => {\r\n const { pages, user, propsContainer, ...rest } = props;\r\n const context = useContext(ApplicationContext);\r\n const translatorService = context.translatorService;\r\n\r\n return (\r\n \r\n {pages.reduce(\r\n (items, page) => reduceChildRoutes({ items, page, user, translatorService, propsContainer, ...rest }),\r\n []\r\n )}\r\n \r\n );\r\n};\r\n\r\nSidebarMenuList.propTypes = {\r\n depth: PropTypes.number,\r\n pages: PropTypes.array\r\n};\r\n\r\nconst createHref = (page, user) =>{\r\n switch(true){\r\n case RoleClaimsEnum.AdminService.toString() && page.to == \"/admin/hoorganizations/\":\r\n return page.to + user.profile.organization_id\r\n case page.to == '/v3/sample-page':\r\n return page.to + `?access_token=${user.access_token}`\r\n default:\r\n return page.to\r\n }\r\n}\r\n\r\nconst reduceChildRoutes = (props) => {\r\n const { router, items, page, depth, user, translatorService, propsContainer } = props;\r\n\r\n if (page.rights) {\r\n if (!page.rights.some(right => user.profile.role.includes(right))) {\r\n return items;\r\n }\r\n } else {\r\n if (!user.profile.role.includes(page.right)) {\r\n return items;\r\n }\r\n }\r\n\r\n if (page.content) {\r\n const open = matchPath(router.location.pathname, {\r\n path: page.to,\r\n exact: false\r\n });\r\n\r\n items.push(\r\n \r\n
\r\n \r\n
\r\n \r\n );\r\n } else {\r\n items.push(\r\n {\r\n propsContainer.props.dispatch(ThemeActionCreators.setSidebarToggleMobile(false));\r\n }} \r\n />\r\n );\r\n }\r\n\r\n return items;\r\n};\r\n\r\nconst SidebarMenu = (props) => {\r\n const { title, pages, className, user, component: Component, ...rest } = props;\r\n\r\n const router = useRouter();\r\n\r\n return (\r\n \r\n {title && {title}}\r\n \r\n \r\n );\r\n};\r\n\r\nSidebarMenu.propTypes = {\r\n className: PropTypes.string,\r\n component: PropTypes.any,\r\n pages: PropTypes.array.isRequired,\r\n title: PropTypes.string\r\n};\r\n\r\nSidebarMenu.defaultProps = {\r\n component: 'nav'\r\n};\r\n\r\nexport default SidebarMenu;\r\n","import { useContext } from 'react';\r\nimport { __RouterContext } from 'react-router';\r\n\r\nexport default () => useContext(__RouterContext);\r\n","import { Log, User, UserManager } from 'oidc-client';\r\nimport { IAuthService } from './Interfaces/IAuthService';\r\n\r\nimport { ClientSettings } from '../helpers/Constants';\r\n\r\nexport class AuthService implements IAuthService {\r\n public userManager: UserManager;\r\n\r\n constructor() {\r\n this.userManager = new UserManager(ClientSettings);\r\n this.userManager.events.addUserSignedOut(() => {\r\n this.userManager\r\n .signoutRedirect()\r\n .then((resp) => {\r\n console.log('Success');\r\n })\r\n .catch((err) => {\r\n console.log(err);\r\n });\r\n });\r\n\r\n Log.logger = console;\r\n Log.level = Log.INFO;\r\n }\r\n\r\n public async getUserAsync(): Promise {\r\n return this.userManager.getUser();\r\n }\r\n\r\n public async loginAsync(): Promise {\r\n return this.userManager.signinRedirect({ state: window.location.pathname });\r\n }\r\n\r\n public async renewTokenAsync(): Promise {\r\n return this.userManager.signinSilent();\r\n }\r\n\r\n public async logoutAsync(): Promise {\r\n return this.userManager.signoutRedirect();\r\n }\r\n\r\n public async checkState(): Promise {\r\n const user = await this.getUserAsync();\r\n\r\n if (user === null) {\r\n return this.loginAsync();\r\n }\r\n if (user!.id_token === null) {\r\n return this.loginAsync();\r\n }\r\n if (user!.expired) {\r\n return this.loginAsync();\r\n }\r\n }\r\n}\r\n","import { IOrganizationService } from './Interfaces/IOrganizationService';\r\nimport {\r\n Organization,\r\n OrganizationType,\r\n OrganizationLevel,\r\n OrganizationBankAccount,\r\n OrganizationInterface,\r\n OrganizationParameter,\r\n OrganizationCaseType,\r\n OrganizationCaseTypeStep,\r\n OrganizationCaseTypeStepForm,\r\n OrganizationForm,\r\n OrganizationFormAction,\r\n OrganizationFilterType,\r\n OrganizationToken,\r\n SetCredentials,\r\n OrganizationAttachment,\r\n OrganizationJobType,\r\n OrganizationMaintenancePackage,\r\n OrganizationOilViscosity,\r\n CupiCodeCorespondence,\r\n OrganizationInvoiceRange,\r\n OrganizationOilMappingRequest,\r\n CountryBuffer,\r\n SellerData,\r\n CountrySupport\r\n} from '../interfaces/Organization';\r\nimport { API } from '../helpers/API';\r\nimport { ICRUDService } from './Interfaces/ICRUDService';\r\nimport { CRUDService } from './CRUDService';\r\nimport { OrganizationLight } from '../interfaces/OrganizationLight';\r\n\r\nexport class OrganizationService implements IOrganizationService {\r\n private baseController = '/organization';\r\n\r\n OrganizationToken: ICRUDService;\r\n\r\n constructor() {\r\n this.OrganizationToken = new CRUDService(this.baseController, 'OrganizationToken');\r\n }\r\n public async AddOrganization(organization: Organization): Promise {\r\n return (await API.PostAsync(this.baseController, organization)).data;\r\n }\r\n\r\n public async UpdateOrganization(organization: Organization): Promise {\r\n await API.PutAsync(this.baseController, organization);\r\n }\r\n\r\n public async AddOrganizationType(organization: OrganizationType): Promise {\r\n return (\r\n await API.PostAsync(`${this.baseController}/organizationtype`, organization)\r\n ).data;\r\n }\r\n public async UpdateOrganizationType(organizationTyoe: OrganizationType): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/organizationtype`,\r\n organizationTyoe\r\n );\r\n }\r\n\r\n public async GetOrganizations(): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/list`,\r\n []\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetByCompanyNumber(companyNumber: string): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/ByCompanyNumber/${companyNumber}`)\r\n ).data;\r\n }\r\n\r\n public async GetOrganizationsByIds(ids: number[]): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/list`,\r\n ids\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetUserOrganizationsByIds(ids: number[]): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/user`,\r\n ids\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetHOOrganizations(countryId: number | null): Promise {\r\n return (await API.GetAsync(`${this.baseController}/HOO/${countryId == null ? '' : countryId}`)).data;\r\n }\r\n\r\n public async GetHOOrganizationsByTypes(types: string[]): Promise {\r\n const typeList = types.join(',');\r\n\r\n return (await API.GetAsync(`${this.baseController}/HO/${typeList}`)).data;\r\n }\r\n public async GetOrganizationsByHO(\r\n hoId: number,\r\n minLevelId: number | null\r\n ): Promise {\r\n if (minLevelId !== null) {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/byHO/${hoId}?minlevelId=${minLevelId}`\r\n )\r\n ).data;\r\n }\r\n\r\n return (await API.GetAsync(`${this.baseController}/byHO/${hoId}`)).data;\r\n }\r\n\r\n public async GetGtOrganization(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/GtOrganization`)).data;\r\n }\r\n\r\n public async GetCurrentOrganization(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/Organization`)).data;\r\n }\r\n\r\n public async GetOrganization(id: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/Organization/${id}`)).data;\r\n }\r\n \r\n public async GetOrganizationInfo(id: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/Organization/${id}/info`)).data;\r\n }\r\n\r\n public async GetOrganizationsForTariffPartners(hoId: number, countryId: number | null): Promise {\r\n return (await API.GetAsync(`${this.baseController}/tariffpartners/${hoId}/${countryId == null ? '' : countryId}`))\r\n .data;\r\n }\r\n\r\n public async GetOrganizationHierarchy(hoId: number): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/GetOrganizationHierarchy/${hoId}`)\r\n ).data;\r\n }\r\n\r\n public async GetOrganizationDescendents(parentIds: number[]): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/descendents`,\r\n parentIds\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetOrganizationLevels(orgId: number): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/${orgId}/OrganizationLevels`)\r\n ).data;\r\n }\r\n\r\n public async AddOrganizationLevel(\r\n organizationLevel: OrganizationLevel\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/organizationlevel`,\r\n organizationLevel\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateOrganizationLevel(organizationLevel: OrganizationLevel): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/organizationlevel`,\r\n organizationLevel\r\n );\r\n }\r\n\r\n public async RemoveOrganizationLevel(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/organizationlevel/${id}`)).data;\r\n }\r\n\r\n public async GetOrganizationFilters(orgId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${orgId}/OrganizationFilters`\r\n )\r\n ).data;\r\n }\r\n public async GetUserOrganizationFilters(orgId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/OrganizationFilters/listUser/${orgId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddOrganizationFilter(\r\n organizationFilterType: OrganizationFilterType\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/OrganizationFilterType`,\r\n organizationFilterType\r\n )\r\n ).data;\r\n }\r\n\r\n public async RemoveOrganizationFilter(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/OrganizationFilterType/${id}`))\r\n .data;\r\n }\r\n\r\n public async GetOrganizationBankAccounts(orgId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${orgId}/OrganizationBankAccounts`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetUserOrganizationBankAccounts(orgId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/OrganizationBankAccount/listUser/${orgId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddOrganizationBankAccount(\r\n organizationBankAccount: OrganizationBankAccount\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/OrganizationBankAccount`,\r\n organizationBankAccount\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateOrganizationBankAccount(\r\n organizationBankAccount: OrganizationBankAccount\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/OrganizationBankAccount`,\r\n organizationBankAccount\r\n );\r\n }\r\n\r\n public async RemoveOrganizationBankAccount(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/OrganizationBankAccount/${id}`))\r\n .data;\r\n }\r\n\r\n public async GetOrganizationInterfaces(orgId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${orgId}/OrganizationInterfaces`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetInterfacesWithClientAccess(orgId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${orgId}/interfacesWithClientAccess`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetInterfaceAuthorizeUrl(orgId: number, interfaceId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${orgId}/interfacesWithClientAccess/${interfaceId}/authorizeUrl`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddOrganizationInterface(\r\n organizationInterface: OrganizationInterface\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/OrganizationInterface`,\r\n organizationInterface\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateOrganizationInterface(\r\n organizationInterface: OrganizationInterface\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/OrganizationInterface`,\r\n organizationInterface\r\n );\r\n }\r\n\r\n public async SetInterfaceCredentials(param: SetCredentials): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/${param.orgId}/interfacesWithClientAccess/${param.interfaceId}/setCredentials`,\r\n param\r\n );\r\n }\r\n\r\n public async RemoveOrganizationInterface(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/OrganizationInterface/${id}`)).data;\r\n }\r\n\r\n public async GetOrganizationParameters(orgId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${orgId}/OrganizationParameters`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddOrganizationParameter(\r\n organizationParameter: OrganizationParameter\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/OrganizationParameter`,\r\n organizationParameter\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateOrganizationParameter(\r\n organizationParameter: OrganizationParameter\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/OrganizationParameter`,\r\n organizationParameter\r\n );\r\n }\r\n\r\n public async RemoveOrganizationParameter(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/OrganizationParameter/${id}`)).data;\r\n }\r\n\r\n public async GetOrganizationCaseType(orgId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/OrganizationCaseType/list/${orgId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetUserOrganizationCaseType(): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/OrganizationCaseType/listUser/`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddOrganizationCaseType(\r\n organizationCaseType: OrganizationCaseType\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/organizationcasetype`,\r\n organizationCaseType\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateOrganizationCaseType(\r\n organizationCaseType: OrganizationCaseType\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/OrganizationCaseType`,\r\n organizationCaseType\r\n );\r\n }\r\n\r\n public async RemoveOrganizationCaseType(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/OrganizationCaseType/${id}`)).data;\r\n }\r\n\r\n public async GetOrganizationCaseTypeStep(\r\n orgCaseTypeId: number\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/OrganizationCaseTypeStep/list/${orgCaseTypeId}`\r\n )\r\n ).data;\r\n }\r\n public async GetUserOrganizationCaseTypeStep(\r\n orgCaseTypeId: number\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/OrganizationCaseTypeStep/listUser/${orgCaseTypeId}`\r\n )\r\n ).data;\r\n }\r\n public async AddOrganizationCaseTypeStep(\r\n OrganizationCaseTypeStep: OrganizationCaseTypeStep\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/OrganizationCaseTypeStep`,\r\n OrganizationCaseTypeStep\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateOrganizationCaseTypeStep(\r\n OrganizationCaseTypeStep: OrganizationCaseTypeStep\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/organizationcasetypestep`,\r\n OrganizationCaseTypeStep\r\n );\r\n }\r\n\r\n public async RemoveOrganizationCaseTypeStep(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/organizationcasetypestep/${id}`))\r\n .data;\r\n }\r\n\r\n public async GetOrganizationCaseTypeStepForms(\r\n orgCaseTypeStepId: number\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/OrganizationCaseTypeStepForm/list/${orgCaseTypeStepId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetUserOrganizationCaseTypeStepForms(\r\n orgCaseTypeStepId: number\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/OrganizationCaseTypeStepForm/listUser/${orgCaseTypeStepId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetOrganizationCaseTypeStepForm(id: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/OrganizationCaseTypeStepForm/${id}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddOrganizationCaseTypeStepForm(\r\n organizationCaseTypeStepForm: OrganizationCaseTypeStepForm\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/OrganizationCaseTypeStepForm`,\r\n organizationCaseTypeStepForm\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateOrganizationCaseTypeStepForm(\r\n organizationCaseTypeStepForm: OrganizationCaseTypeStepForm\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/OrganizationCaseTypeStepForm`,\r\n organizationCaseTypeStepForm\r\n );\r\n }\r\n\r\n public async RemoveOrganizationCaseTypeStepForm(id: number): Promise {\r\n return (\r\n await API.DeleteAsync(`${this.baseController}/OrganizationCaseTypeStepForm/${id}`)\r\n ).data;\r\n }\r\n\r\n public async GetOrganizationForms(): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/referential/organizationform`)\r\n ).data;\r\n }\r\n\r\n public async GetOrganizationForm(orgForm: number): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/referential/organizationform`)\r\n ).data;\r\n }\r\n\r\n public async UpdateOrganizationForm(organizationForm: OrganizationForm): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/organizationform`,\r\n organizationForm\r\n );\r\n }\r\n\r\n public async GetOrganizationFormActions(orgFormId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/OrganizationCaseTypeStepForm/list/${orgFormId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddOrganizationFormAction(\r\n organizationFormAction: OrganizationFormAction\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/OrganizationCaseTypeStepForm`,\r\n organizationFormAction\r\n )\r\n ).data;\r\n }\r\n\r\n public async RemoveOrganizationFormAction(id: number): Promise {\r\n return (\r\n await API.DeleteAsync(`${this.baseController}/OrganizationCaseTypeStepForm/${id}`)\r\n ).data;\r\n }\r\n\r\n public async AddLogo(id: number, file: File): Promise {\r\n const formData = new FormData();\r\n\r\n formData.append('logo', file);\r\n\r\n await API.PostAsync(`${this.baseController}/${id}/Logo`, formData);\r\n }\r\n\r\n public async GetLogo(id: number): Promise {\r\n return (await API.GetFileAsync(`${this.baseController}/${id}/Logo`)).data;\r\n }\r\n\r\n public async AddOrganizationAttachments(organizationAttachments: OrganizationAttachment[]): Promise {\r\n const formData = new FormData();\r\n formData.append('organizationId', organizationAttachments[0].organizationId.toString());\r\n organizationAttachments.forEach((item) => {\r\n formData.append('files', item.file);\r\n });\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/attachment`,\r\n formData\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetOrganizationAttachments(organizationId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/attachments/${organizationId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetOrganizationAdminAttachments(): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/attachments`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetOrganizationAttachment(fileName: string): Promise {\r\n return (await API.GetFileAsync(`${this.baseController}/attachment/${fileName}`)).data;\r\n }\r\n\r\n public async RemoveOrganizationAttachment(fileName: string): Promise {\r\n await API.DeleteAsync(`${this.baseController}/attachment/${fileName}`);\r\n }\r\n\r\n \r\n public async GetMavoHOOrganizations(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/mavo/HO`)).data;\r\n }\r\n\r\n public async AddOrganizationJobType(organizationJobTypes: OrganizationJobType[]): Promise {\r\n await API.PostAsync(\r\n `${this.baseController}/OrganizationJobType/list`,\r\n organizationJobTypes\r\n );\r\n }\r\n\r\n public async RemoveOrganizationJobType(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/OrganizationJobType/${id}`))\r\n .data;\r\n }\r\n\r\n public async GetOrganizationJobTypes(orgId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/OrganizationJobType/list/${orgId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetUserOrganizationJobTypes(orgId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/OrganizationJobType/listUser/${orgId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddOrganizationMaintenancePackage(organizationMaintenancePackages: OrganizationMaintenancePackage[]): Promise {\r\n await API.PostAsync(\r\n `${this.baseController}/OrganizationMaintenancePackage/list`,\r\n organizationMaintenancePackages\r\n );\r\n }\r\n\r\n public async RemoveOrganizationMaintenancePackage(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/OrganizationMaintenancePackage/${id}`))\r\n .data;\r\n }\r\n\r\n public async GetOrganizationMaintenancePackages(orgId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/OrganizationMaintenancePackage/list/${orgId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetUserOrganizationMaintenancePackages(orgId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/OrganizationMaintenancePackage/listUser/${orgId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddOrganizationOilViscosity(organizationOilViscosity: OrganizationOilViscosity): Promise {\r\n await API.PostAsync(\r\n `${this.baseController}/OrganizationOilViscosity`,\r\n organizationOilViscosity\r\n );\r\n }\r\n\r\n public async UpdateOrganizationOilViscosity(\r\n organizationOilViscosity: OrganizationOilViscosity\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/OrganizationOilViscosity`,\r\n organizationOilViscosity\r\n );\r\n }\r\n\r\n public async RemoveOrganizationOilViscosity(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/OrganizationOilViscosity/${id}`))\r\n .data;\r\n }\r\n\r\n public async GetOrganizationOilViscosities(orgId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/OrganizationOilViscosity/list/${orgId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async CupiCodeCorespondenceList(): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/GtCupiCodeCorespondence/listUser`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddCupiCodeCorespondence(cupiCodeCorespondence: CupiCodeCorespondence): Promise {\r\n await API.PostAsync(\r\n `${this.baseController}/GtCupiCodeCorespondence`,\r\n cupiCodeCorespondence\r\n );\r\n }\r\n\r\n public async UpdateCupiCodeCorespondence(\r\n cupiCodeCorespondence: CupiCodeCorespondence\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/GtCupiCodeCorespondence`,\r\n cupiCodeCorespondence\r\n );\r\n }\r\n\r\n public async RemoveCupiCodeCorespondence(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/GtCupiCodeCorespondence/${id}`))\r\n .data;\r\n }\r\n\r\n public async AddOrganizationInvoiceRange(organizationInvoiceRange: OrganizationInvoiceRange): Promise {\r\n await API.PostAsync(\r\n `${this.baseController}/OrganizationInvoiceRange`,\r\n organizationInvoiceRange\r\n );\r\n }\r\n\r\n public async UpdateOrganizationInvoiceRange(organizationInvoiceRange: OrganizationInvoiceRange): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/OrganizationInvoiceRange`,\r\n organizationInvoiceRange\r\n );\r\n }\r\n\r\n public async RemoveOrganizationInvoiceRange(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/OrganizationInvoiceRange/${id}`))\r\n .data;\r\n }\r\n\r\n public async GetOrganizationInvoiceRanges(orgId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/OrganizationInvoiceRange/list/${orgId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetSupplierStockOrganization(types: string): Promise {\r\n return (await API.GetAsync(`${this.baseController}/supplierStock/${types}`)).data;\r\n }\r\n\r\n public async GetOrganizationOilMapping(request: OrganizationOilMappingRequest): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/oil-mapping`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddCountryBuffer(countryBuffer: CountryBuffer): Promise {\r\n await API.PostAsync(\r\n `${this.baseController}/CountryBuffer`,\r\n countryBuffer\r\n );\r\n }\r\n\r\n public async UpdateCountryBuffer(countryBuffer: CountryBuffer): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/CountryBuffer`,\r\n countryBuffer\r\n );\r\n }\r\n\r\n public async RemoveCountryBuffer(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/CountryBuffer/${id}`))\r\n .data;\r\n }\r\n \r\n public async GetCountryBuffers(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/CountryBuffer/listUser`)).data;\r\n }\r\n\r\n public async GetCountryBuffer(countryId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/CountryBuffer/${countryId}`)).data\r\n }\r\n\r\n public async GetSellerDataList(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/SellerData/listUser`)).data;\r\n }\r\n\r\n public async AddSellerData(sellerData: SellerData): Promise {\r\n return (await API.PostAsync(`${this.baseController}/SellerData`, sellerData)).data;\r\n }\r\n\r\n public async RemoveSellerData(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/SellerData/${id}`)).data;\r\n }\r\n\r\n public async UpdateSellerData(sellerData: SellerData): Promise {\r\n await API.PutAsync(`${this.baseController}/SellerData`, sellerData);\r\n }\r\n\r\n public async AddSellerLogo(id: number, file: File): Promise {\r\n const formData = new FormData();\r\n\r\n formData.append('logo', file);\r\n\r\n await API.PostAsync(`${this.baseController}/SellerData/${id}/Logo`, formData);\r\n }\r\n\r\n public async GetSellerLogo(id: number): Promise {\r\n return (await API.GetFileAsync(`${this.baseController}/SellerData/${id}/Logo`)).data;\r\n }\r\n\r\n public async GetUserCountrySupports(): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/CountrySupport/listUser`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddCountrySupport(\r\n countrySupport: CountrySupport\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/CountrySupport`,\r\n countrySupport\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateCountrySupport(\r\n countrySupport: CountrySupport\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/CountrySupport`,\r\n countrySupport\r\n );\r\n }\r\n\r\n public async RemoveCountrySupport(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/CountrySupport/${id}`))\r\n .data;\r\n }\r\n}\r\n","import { API } from '../helpers/API';\r\nimport { ICRUDService } from './Interfaces/ICRUDService';\r\n\r\nexport class CRUDService implements ICRUDService {\r\n private baseController = '';\r\n private itemController = '';\r\n\r\n constructor(controller: string, itemController: string) {\r\n this.baseController = controller;\r\n this.itemController = itemController;\r\n }\r\n\r\n public async Get(id: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/${this.itemController}/list/${id}`))\r\n .data;\r\n }\r\n\r\n public async GetUser(id: number | null): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${this.itemController}/listUser/${id === null ? '' : id}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async Add(item: T): Promise {\r\n return (await API.PostAsync(`${this.baseController}/${this.itemController}`, item)).data;\r\n }\r\n\r\n public async SaveList(items: T[]): Promise {\r\n await API.PostAsync(`${this.baseController}/${this.itemController}/list`, items);\r\n }\r\n\r\n public async Update(item: T): Promise {\r\n await API.PutAsync(`${this.baseController}/${this.itemController}`, item);\r\n }\r\n\r\n public async Remove(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/${this.itemController}/${id}`))\r\n .data;\r\n }\r\n}\r\n","import { IAppUserService } from './Interfaces/IAppUserService';\r\nimport {\r\n AppUser,\r\n AppuserList,\r\n AppUserRoleList,\r\n AppUserAppUserRole,\r\n AppUserRole,\r\n AppUserRoleClaimList,\r\n AppUserRoleClaim\r\n} from '../interfaces/AppUser';\r\nimport { API } from '../helpers/API';\r\n\r\nexport class AppUserService implements IAppUserService {\r\n private baseAdminController = '/IdentityAdmin';\r\n private baseController = '/Identity';\r\n\r\n public async ResetPassword(userId: string): Promise {\r\n await API.PostAsync(`${this.baseAdminController}/resetpassword/${userId}`, null);\r\n }\r\n\r\n public async AddUser(appuser: AppUser): Promise {\r\n return (await API.PostAsync(`${this.baseAdminController}/add`, appuser)).data;\r\n }\r\n\r\n public async UpdateUser(appUser: AppUser): Promise {\r\n await API.PutAsync(`${this.baseAdminController}/update`, appUser);\r\n }\r\n\r\n public async GetAppUsers(\r\n search: string,\r\n page?: number,\r\n rowsPerPage?: number\r\n ): Promise {\r\n const params = `searchText=${search === undefined ? '' : search}&page=${\r\n page === undefined ? '' : page\r\n }&pageSize=${rowsPerPage === undefined ? '' : rowsPerPage}`;\r\n return (\r\n await API.GetAsync(\r\n `${this.baseAdminController}/SearchWithOrganization?${params}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetUserAppUsers(\r\n search: string,\r\n orgIds?: string,\r\n page?: number,\r\n rowsPerPage?: number\r\n ): Promise {\r\n const params = `searchText=${search === undefined ? '' : search}&orgIds=${\r\n orgIds === undefined ? '' : orgIds\r\n }&page=${page === undefined ? '' : page}&pageSize=${\r\n rowsPerPage === undefined ? '' : rowsPerPage\r\n }`;\r\n return (\r\n await API.GetAsync(\r\n `${this.baseAdminController}/SearchInUserOrgWithOrganization?${params}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetMavoUserAppUsers(\r\n search: string,\r\n orgIds?: string,\r\n page?: number,\r\n rowsPerPage?: number\r\n ): Promise {\r\n const params = `searchText=${search === undefined ? '' : search}&orgIds=${\r\n orgIds === undefined ? '' : orgIds\r\n }&page=${page === undefined ? '' : page}&pageSize=${\r\n rowsPerPage === undefined ? '' : rowsPerPage\r\n }`;\r\n return (\r\n await API.GetAsync(\r\n `${this.baseAdminController}/SearchInMavoUserOrgWithOrganization?${params}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetAppUser(id: string): Promise {\r\n return (await API.GetAsync(`${this.baseAdminController}/get/${id}`)).data;\r\n }\r\n public async GetUserInfo(id: string): Promise {\r\n return (await API.GetAsync(`${this.baseAdminController}/UserInfo/${id}`)).data;\r\n }\r\n\r\n public async GetUsersInfo(ids: string[]): Promise {\r\n if (ids.length === 0) {\r\n return [];\r\n }\r\n\r\n return (await API.Post2Async(`${this.baseAdminController}/UsersInfo`, ids))\r\n .data;\r\n }\r\n\r\n public async GetProfile(): Promise {\r\n return (await API.GetAsync(`${this.baseAdminController}/profile`)).data;\r\n }\r\n\r\n public async GetUserAppUserRoles(\r\n userId: string,\r\n page: number,\r\n rowsPerPage: number\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseAdminController}/GetUserRoles?userId=${userId}&searchText=&page=${page}&pageSize=${rowsPerPage}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddAppUserRole(userUserRole: AppUserAppUserRole): Promise {\r\n await API.PostAsync(\r\n `${this.baseAdminController}/AddUserRole`,\r\n userUserRole\r\n );\r\n }\r\n\r\n public async DeleteAppUserRole(userUserRole: AppUserAppUserRole): Promise {\r\n await API.DeleteAsync(\r\n `${this.baseAdminController}/RemoveUserRole?userId=${userUserRole.userId}&roleId=${userUserRole.roleId}`\r\n );\r\n }\r\n\r\n public async GetAppUserRoles(\r\n search?: string,\r\n page?: number,\r\n rowsPerPage?: number\r\n ): Promise {\r\n const params = `searchText=${search === undefined ? '' : search}&page=${\r\n page === undefined ? '' : page\r\n }&pageSize=${rowsPerPage === undefined ? '' : rowsPerPage}`;\r\n return (await API.GetAsync(`${this.baseAdminController}/GetRoles?${params}`))\r\n .data;\r\n }\r\n\r\n public async AddRole(role: AppUserRole): Promise {\r\n return (await API.PostAsync(`${this.baseAdminController}/addRole`, role)).data;\r\n }\r\n\r\n public async UpdateRole(role: AppUserRole): Promise {\r\n await API.PutAsync(`${this.baseAdminController}/updateRole`, role);\r\n }\r\n\r\n public async GetAppUserRole(id: string): Promise {\r\n return (await API.GetAsync(`${this.baseAdminController}/getrole/${id}`)).data;\r\n }\r\n\r\n public async GetAppUserRoleClaims(\r\n roleId: string | null,\r\n page: number,\r\n rowsPerPage: number\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseAdminController}/GetRoleClaims?roleId=${roleId}&searchText=&page=${page}&pageSize=${rowsPerPage}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddRoleClaim(roleClaim: AppUserRoleClaim): Promise {\r\n await API.PostAsync(`${this.baseAdminController}/addRoleClaim`, roleClaim);\r\n }\r\n\r\n public async DeleteRoleClaim(roleClaim: AppUserRoleClaim): Promise {\r\n await API.DeleteAsync(\r\n `${this.baseAdminController}/RemoveRoleClaim?roleid=${roleClaim.roleId}&claimid=${roleClaim.claimId}`\r\n );\r\n }\r\n}\r\n","import { IReferentialService } from './Interfaces/IReferentialService';\r\nimport { IReferential } from '../interfaces/IReferential';\r\nimport { API } from '../helpers/API';\r\nimport { ICache } from '../interfaces/Icache';\r\n\r\nexport class ReferentialService implements IReferentialService {\r\n private cache: ICache[];\r\n\r\n constructor(cache: ICache[]) {\r\n this.cache = cache;\r\n }\r\n\r\n public async Get(url: string): Promise {\r\n const res = this.cache.find((item) => item.url === url);\r\n if (res !== undefined) {\r\n return res.values;\r\n }\r\n\r\n const response = await API.GetAsync(url);\r\n\r\n this.cache.push({ url: url, values: response.data });\r\n\r\n return response.data;\r\n }\r\n public async GetFromDB(url: string): Promise {\r\n const response = await API.GetAsync(url);\r\n return response.data;\r\n }\r\n\r\n public async Add(referential: IReferential, url: string): Promise {\r\n return (await API.PostAsync(url, referential)).data;\r\n }\r\n public async Update(referential: IReferential, url: string): Promise {\r\n await API.PutAsync(url, referential);\r\n }\r\n Delete(referencial: IReferential, url: string): Promise {\r\n throw new Error('Method not implemented.');\r\n }\r\n}\r\n","import { IWorkflowService } from './Interfaces/IWorkflowService';\r\nimport {\r\n Workflow,\r\n WorkflowParameter,\r\n WorkflowPartnerType,\r\n WorkflowPartner,\r\n WorkflowOptimization,\r\n WorkflowTariff,\r\n WorkflowSection,\r\n WorkflowSectionStep,\r\n WorkflowSectionStepForm,\r\n WorkflowSupplier,\r\n WorkflowReminder,\r\n WorkflowDocumentType,\r\n WorkflowCalculation,\r\n WorkflowPermission,\r\n WorkflowForm,\r\n EmailTemplate,\r\n WorkflowFormReport,\r\n WorkflowFormAction,\r\n WorkflowFormInterface,\r\n WorkflowSectionStepCaseStatus,\r\n WorkflowInterface,\r\n WorkflowCostCenter\r\n} from '../interfaces/Workflow';\r\nimport { API } from '../helpers/API';\r\nimport { IReferential } from '../interfaces/IReferential';\r\n\r\nexport class WorkflowService implements IWorkflowService {\r\n\r\n private baseController = '/workflow';\r\n\r\n public async GetWorkflows(orgId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/byorganization/${orgId}`)).data;\r\n }\r\n\r\n public async GetUserWorkflows(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/listUser`)).data;\r\n }\r\n\r\n public async GetTariffWorkflowsCount(tariffId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/tariff/${tariffId}/count`)).data;\r\n }\r\n\r\n public async GetWorkflow(workflowId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/${workflowId}`)).data;\r\n }\r\n public async GetUserWorkflow(workflowId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/user/${workflowId}`)).data;\r\n }\r\n\r\n public async GetWorkflowSettings(workflowId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/${workflowId}/settings`)).data;\r\n }\r\n\r\n public async GetWorkflowSettingsForVehiclesTab(workflowId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/${workflowId}/settingsForVehiclesTab`)).data;\r\n }\r\n\r\n public async AddWorkflow(workflow: Workflow): Promise {\r\n return (await API.PostAsync(`${this.baseController}`, workflow)).data;\r\n }\r\n\r\n public async UpdateWorkflow(workflow: Workflow): Promise {\r\n await API.PutAsync(`${this.baseController}`, workflow);\r\n }\r\n\r\n public async GetWorkflowParameters(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${workflowId}/WorkflowParameters`\r\n )\r\n ).data;\r\n }\r\n public async GetUserWorkflowParameters(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${workflowId}/user/WorkflowParameters`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowParameter(\r\n workflowParameter: WorkflowParameter\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/WorkflowParameter`,\r\n workflowParameter\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateWorkflowParameter(workflowParameter: WorkflowParameter): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/WorkflowParameter`,\r\n workflowParameter\r\n );\r\n }\r\n\r\n public async RemoveWorkflowParameter(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/WorkflowParameter/${id}`)).data;\r\n }\r\n\r\n public async GetWorkflowOrganizationTypes(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${workflowId}/WorkflowPartnerTypes`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowOrganizationType(\r\n workflowOrgType: WorkflowPartnerType\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/WorkflowPartnerType`,\r\n workflowOrgType\r\n )\r\n ).data;\r\n }\r\n\r\n public async RemoveWorkflowOrganizationType(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/WorkflowPartnerType/${id}`)).data;\r\n }\r\n\r\n public async GetWorkflowPartners(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowPartner/list/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetUserWorkflowPartners(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowPartner/listUser/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowPartner(workflowPartners: WorkflowPartner[]): Promise {\r\n await API.PostAsync(\r\n `${this.baseController}/WorkflowPartner/list`,\r\n workflowPartners\r\n );\r\n }\r\n\r\n public async UpdateWorkflowPartner(workflowPartner: WorkflowPartner): Promise {\r\n await API.PutAsync(`${this.baseController}/WorkflowPartner`, workflowPartner);\r\n }\r\n\r\n public async GetWorkflowOptimizations(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowOptimization/list/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowOptimization(\r\n workflowOptimization: WorkflowOptimization\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/WorkflowOptimization`,\r\n workflowOptimization\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateWorkflowOptimization(\r\n workflowOptimization: WorkflowOptimization\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/WorkflowOptimization`,\r\n workflowOptimization\r\n );\r\n }\r\n\r\n public async RemoveWorkflowOptimization(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/WorkflowOptimization/${id}`)).data;\r\n }\r\n\r\n public async GetWorkflowTariffs(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowTariff/list/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetUserWorkflowTariffs(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowTariff/listUser/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowTariff(workflowTariff: WorkflowTariff): Promise {\r\n return (\r\n await API.PostAsync(`${this.baseController}/WorkflowTariff`, workflowTariff)\r\n ).data;\r\n }\r\n\r\n public async UpdateWorkflowTariff(workflowTariff: WorkflowTariff): Promise {\r\n await API.PutAsync(`${this.baseController}/WorkflowTariff`, workflowTariff);\r\n }\r\n\r\n public async GetWorkflowSections(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowSection/list/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowSection(workflowSection: WorkflowSection): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/WorkflowSection`,\r\n workflowSection\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateWorkflowSection(workflowSection: WorkflowSection): Promise {\r\n await API.PutAsync(`${this.baseController}/WorkflowSection`, workflowSection);\r\n }\r\n\r\n public async RemoveWorkflowSection(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/WorkflowSection/${id}`)).data;\r\n }\r\n\r\n public async GetWorkflowSectionSteps(workflowSectionId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowSectionStep/list/${workflowSectionId}`\r\n )\r\n ).data;\r\n }\r\n public async GetWorkflowSteps(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowSectionStep/listSteps/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowSectionStep(\r\n workflowSectionStep: WorkflowSectionStep\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/WorkflowSectionStep`,\r\n workflowSectionStep\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateWorkflowSectionStep(workflowSectionStep: WorkflowSectionStep): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/WorkflowSectionStep`,\r\n workflowSectionStep\r\n );\r\n }\r\n\r\n public async RemoveWorkflowStep(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/WorkflowSectionStep/${id}`)).data;\r\n }\r\n\r\n public async GetWorkflowSectionStepForms(\r\n workflowSectionStepId: number\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowSectionStepForm/list/${workflowSectionStepId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetWorkflowSectionStepForm(id: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowSectionStepForm/${id}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowSectionStepForm(\r\n workflowSectionStepForm: WorkflowSectionStepForm\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/WorkflowSectionStepForm`,\r\n workflowSectionStepForm\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateWorkflowSectionStepForm(\r\n workflowSectionStepForm: WorkflowSectionStepForm\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/WorkflowSectionStepForm`,\r\n workflowSectionStepForm\r\n );\r\n }\r\n\r\n public async GetWorkflowSectionStepCaseStatuses(\r\n workflowSectionStepId: number\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowSectionStepCaseStatus/list/${workflowSectionStepId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowSectionStepCaseStatus(\r\n workflowSectionStepCaseStatus: WorkflowSectionStepCaseStatus\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/workflowSectionStepCaseStatus`,\r\n workflowSectionStepCaseStatus\r\n )\r\n ).data;\r\n }\r\n\r\n public async RemoveWorkflowSectionStepCaseStatus(id: number): Promise {\r\n return (\r\n await API.DeleteAsync(`${this.baseController}/WorkflowSectionStepCaseStatus/${id}`)\r\n ).data;\r\n }\r\n\r\n public async GetWorkflowForms(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/referential/workflowform`))\r\n .data;\r\n }\r\n\r\n public async RemoveWorkflowForm(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/WorkflowSectionStepForm/${id}`))\r\n .data;\r\n }\r\n\r\n public async GetWorkflowSuppliers(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowSupplier/list/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowSupplier(workflowSupplier: WorkflowSupplier): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/WorkflowSupplier`,\r\n workflowSupplier\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowSuppliers(workflowSuppliers: WorkflowSupplier[]): Promise {\r\n await API.PostAsync(\r\n `${this.baseController}/WorkflowSupplier/list`,\r\n workflowSuppliers\r\n );\r\n }\r\n public async UpdateWorkflowSupplier(workflowSupplier: WorkflowSupplier): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/WorkflowSupplier`,\r\n workflowSupplier\r\n );\r\n }\r\n\r\n public async RemoveWorkflowSupplier(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/WorkflowSupplier/${id}`)).data;\r\n }\r\n\r\n public async GetWorkflowReminders(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowNotification/list/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowReminder(workflowReminder: WorkflowReminder): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/WorkflowNotification`,\r\n workflowReminder\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateWorkflowReminder(workflowReminder: WorkflowReminder): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/WorkflowNotification`,\r\n workflowReminder\r\n );\r\n }\r\n\r\n public async RemoveWorkflowReminder(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/WorkflowNotification/${id}`)).data;\r\n }\r\n\r\n public async GetWorkflowDocumentTypes(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowDocumentType/list/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowDocumentType(\r\n workflowDocumentType: WorkflowDocumentType\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/WorkflowDocumentType`,\r\n workflowDocumentType\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateWorkflowDocumentType(\r\n workflowDocumentType: WorkflowDocumentType\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/WorkflowDocumentType`,\r\n workflowDocumentType\r\n );\r\n }\r\n\r\n public async RemoveWorkflowDocumentType(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/WorkflowDocumentType/${id}`)).data;\r\n }\r\n\r\n public async GetWorkflowFormInterfaces(formId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowFormInterface/list/${formId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowFormInterface(\r\n workflowFormInterface: WorkflowFormInterface\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/WorkflowFormInterface`,\r\n workflowFormInterface\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateWorkflowFormInterface(\r\n workflowFormInterface: WorkflowFormInterface\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/WorkflowFormInterface`,\r\n workflowFormInterface\r\n );\r\n }\r\n\r\n public async RemoveWorkflowFormInterface(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/WorkflowFormInterface/${id}`)).data;\r\n }\r\n\r\n public async GetWorkflowCalculations(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowCalculation/list/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowCalculation(\r\n workflowCalculation: WorkflowCalculation\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/WorkflowCalculation`,\r\n workflowCalculation\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateWorkflowCalculation(workflowCalculation: WorkflowCalculation): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/WorkflowCalculation`,\r\n workflowCalculation\r\n );\r\n }\r\n\r\n public async RemoveWorkflowCalculation(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/WorkflowCalculation/${id}`)).data;\r\n }\r\n\r\n public async GetWorkflowPermissions(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowPermission/list/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowPermission(\r\n workflowPermission: WorkflowPermission\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/WorkflowPermission`,\r\n workflowPermission\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateWorkflowPermission(workflowPermission: WorkflowPermission): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/WorkflowPermission`,\r\n workflowPermission\r\n );\r\n }\r\n\r\n public async RemoveWorkflowPermission(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/WorkflowPermission/${id}`)).data;\r\n }\r\n\r\n public async GetWorkflowFormReports(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowReport/list/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowFormReport(\r\n workflowReport: WorkflowFormReport\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/workflowReport`,\r\n workflowReport\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateWorkflowFormReport(workflowReport: WorkflowFormReport): Promise {\r\n await API.PutAsync(`${this.baseController}/WorkflowReport`, workflowReport);\r\n }\r\n\r\n public async RemoveWorkflowFormReport(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/WorkflowReport/${id}`)).data;\r\n }\r\n\r\n public async GetWorkflowSectionStepFormActions(\r\n workflowSectionStepFormId: number\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowSectionStepFormAction/list/${workflowSectionStepFormId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowSectionStepFormAction(\r\n workflowSectionStepFormAction: WorkflowFormAction\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/workflowSectionStepFormAction`,\r\n workflowSectionStepFormAction\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowSectionStepFormActions(\r\n workflowSectionStepFormActions: WorkflowFormAction[]\r\n ): Promise {\r\n await API.PostAsync(\r\n `${this.baseController}/workflowSectionStepFormAction/list`,\r\n workflowSectionStepFormActions\r\n );\r\n }\r\n\r\n public async UpdateWorkflowSectionStepAction(\r\n workflowSectionStepFormAction: WorkflowFormAction\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/WorkflowSectionStepFormAction`,\r\n workflowSectionStepFormAction\r\n );\r\n }\r\n\r\n public async RemoveWorkflowSectionStepFormAction(id: number): Promise {\r\n return (\r\n await API.DeleteAsync(`${this.baseController}/WorkflowSectionStepFormAction/${id}`)\r\n ).data;\r\n }\r\n\r\n public async GetEmailTemplates(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/referential/emailtemplate`))\r\n .data;\r\n }\r\n\r\n public async AddEmailTemplate(emailTemplate: EmailTemplate): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/referential/emailtemplate`,\r\n emailTemplate\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateEmailTemplate(emailTemplate: EmailTemplate): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/referential/emailtemplate`,\r\n emailTemplate\r\n );\r\n }\r\n public async GetWorkflowInterfaces(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowInterface/list/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async RemoveWorkflowInterface(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/WorkflowInterface/${id}`)).data;\r\n }\r\n\r\n public async AddWorkflowInterface(\r\n workflowInterface: WorkflowInterface\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/WorkflowInterface`,\r\n workflowInterface\r\n )\r\n ).data;\r\n }\r\n \r\n public async UpdateWorkflowInterface(\r\n workflowInterface: WorkflowInterface\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/WorkflowInterface`,\r\n workflowInterface\r\n );\r\n }\r\n\r\n public async GetOwnerTariffPartner(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/partner-owner-tariff/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetWorkflowCostCenters(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowCostCenter/list/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetUserWorkflowCostCenters(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/WorkflowCostCenter/listUser/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddWorkflowCostCenter(workflowCostCenters: WorkflowCostCenter[]): Promise {\r\n await API.PostAsync(\r\n `${this.baseController}/WorkflowCostCenter/list`,\r\n workflowCostCenters\r\n );\r\n }\r\n\r\n public async UpdateWorkflowCostCenter(workflowCostCenter: WorkflowCostCenter): Promise {\r\n await API.PutAsync(`${this.baseController}/WorkflowCostCenter`, workflowCostCenter);\r\n }\r\n\r\n public async RemoveWorkflowCostCenter(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/WorkflowCostCenter/${id}`))\r\n .data;\r\n }\r\n\r\n public async GetCostCenter(id: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${id}/CostCenter`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetNonStockSuppliers(workflowId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/non-stock-suppliers/${workflowId}`\r\n )\r\n ).data;\r\n }\r\n}\r\n","export default \"data:image/png;base64,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\"","export default \"data:image/jpeg;base64,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\"","export default __webpack_public_path__ + \"static/media/Renault.effbf6c2.png\";","import axios from 'axios';\r\nimport { Constants } from './Constants';\r\nimport { AuthService } from '../services/AuthService';\r\n\r\nconst instance = axios.create({\r\n baseURL: Constants.apiRoot,\r\n withCredentials: true // Permite trimiterea cookie-urilor in request-uri\r\n});\r\n\r\ninstance.interceptors.request.use(\r\n (config) => {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n config.headers.locale = localStorage.getItem('locale');\r\n\r\n // config.paramsSerializer = (params) => qs.stringify(params, {\r\n // serializeDate: (date: Date) => { debugger;\r\n // return moment(date).format('YYYY-MM-DDTHH:mm:ssZ') }\r\n // });\r\n\r\n return config;\r\n },\r\n (error) => Promise.reject(error)\r\n);\r\n\r\ninstance.interceptors.response.use(\r\n function (response) {\r\n if (response.status === 204 && response.data === '') {\r\n response.data = null;\r\n }\r\n\r\n return response;\r\n },\r\n async function (error) {\r\n if (error?.response?.status === 401) {\r\n const services = new AuthService();\r\n return await services.loginAsync();\r\n }\r\n\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nexport default instance;\r\n","import { AxiosRequestConfig, AxiosResponse, CancelToken } from 'axios';\r\nimport axios from './AxiosInstance';\r\n\r\nexport class API {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n public static async GetAsync>(url: string, params?: any): Promise {\r\n const headers = await this.GetHeaders();\r\n return axios.get(url, { ...headers, params });\r\n }\r\n\r\n public static async GetFileAsync>(url: string): Promise {\r\n const headers = await this.GetHeaders();\r\n headers.responseType = 'blob';\r\n\r\n return axios.get(url, headers);\r\n }\r\n\r\n public static async PostFileAsync(url: string, data: T): Promise> {\r\n const headers = await this.GetHeaders();\r\n headers.responseType = 'blob';\r\n\r\n return axios.post(url, data, headers);\r\n }\r\n\r\n // public async GetAsync(url: string): Promise {\r\n\r\n // let user = await this.authService.getUserAsync();\r\n\r\n // if (!user) {\r\n // throw new Error('user is not logged in');\r\n // }\r\n\r\n // if (!user.access_token) {\r\n // user = await this.authService.renewTokenAsync();\r\n // }\r\n\r\n // try {\r\n // return this.axiosInstance.get(url, this.GetHeaders(user.access_token));\r\n // }\r\n // catch (error) {\r\n // if (error.response.status === 401) {\r\n // let renewedUser = await this.authService.renewTokenAsync();\r\n // return this.axiosInstance.get(url, this.GetHeaders(renewedUser.access_token))\r\n // }\r\n // throw error;\r\n // }\r\n // }\r\n\r\n public static async PostAsync>(url: string, data: T): Promise {\r\n return axios.post(url, data, await this.GetHeaders());\r\n }\r\n\r\n public static async Post2Async(url: string, data: T): Promise> {\r\n return axios.post(url, data, await this.GetHeaders());\r\n }\r\n\r\n public static async Post2WithCancelAsync(\r\n url: string,\r\n data: T,\r\n cancelToken: CancelToken\r\n ): Promise> {\r\n const headers = await this.GetHeaders();\r\n return axios.post(url, data, {\r\n ...headers,\r\n cancelToken\r\n });\r\n }\r\n\r\n public static async DeleteAsync>(url: string, data?: T): Promise {\r\n const headers = await this.GetHeaders();\r\n return axios.delete(url, { ...headers, data });\r\n }\r\n\r\n public static async PutAsync>(url: string, data: T): Promise {\r\n return axios.put(url, data, await this.GetHeaders());\r\n }\r\n\r\n private static async GetHeaders(): Promise {\r\n const access_token = localStorage.getItem('access_token');\r\n return {\r\n headers: {\r\n Accept: 'application/json',\r\n Authorization: 'Bearer ' + access_token\r\n }\r\n } as AxiosRequestConfig;\r\n }\r\n}\r\n","import React, { Fragment, useContext } from 'react';\r\n\r\nimport clsx from 'clsx';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport { Avatar, Box, Button } from '@material-ui/core';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router';\r\nimport { ThemeActionCreators } from '../../store';\r\n\r\nconst SidebarUserbox = (props) => {\r\n const { sidebarToggle, sidebarHover, propsContainer } = props;\r\n\r\n const context = useContext(ApplicationContext);\r\n const translatorService = context.translatorService;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {props.appUser ? props.appUser.lastName + ' ' + props.appUser.firstName : null}\r\n
\r\n
\r\n {props.appUser ? props.appUser.email : null}\r\n
\r\n
\r\n {props.appUser ? props.appUser.jobFunction : null}\r\n
\r\n
\r\n
\r\n \r\n {\r\n props.dispatch(ThemeActionCreators.setSidebarToggleMobile(false));\r\n props.history.push('/profile');\r\n }}\r\n >\r\n {translatorService.Tranlate('VIEW_PROFILE', 'Vizualizare profil')}\r\n \r\n \r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n sidebarToggle: state.themeOptions.sidebarToggle,\r\n sidebarHover: state.themeOptions.sidebarHover,\r\n appUser: state.app.appUser,\r\n language: state.app.language\r\n});\r\n\r\nexport default connect(mapStateToProps)(withRouter(SidebarUserbox));\r\n","import React from 'react';\r\nimport { ITranslatorService } from '../services/Interfaces/ITranslatorService';\r\nimport { TranslatorService } from '../services/TranslatorService';\r\n\r\nimport { IAuthService } from '../services/Interfaces/IAuthService';\r\nimport { AuthService } from '../services/AuthService';\r\n\r\nimport { IWeatherForecastsService } from '../services/Interfaces/IWeatherForecastsService';\r\nimport { WeatherForecastsService } from '../services/WeatherForecastsService';\r\n\r\nimport { IOrganizationService } from '../services/Interfaces/IOrganizationService';\r\nimport { OrganizationService } from '../services/OrganizationService';\r\n\r\nimport { IAppUserService } from '../services/Interfaces/IAppUserService';\r\nimport { AppUserService } from '../services/AppUserService';\r\n\r\nimport { IReferentialService } from '../services/Interfaces/IReferentialService';\r\nimport { ReferentialService } from '../services/ReferentialService';\r\n\r\nimport { ITariffService } from '../services/Interfaces/ITariffService';\r\nimport { TariffService } from '../services/TariffService';\r\n\r\nimport { ICaseService } from '../services/Interfaces/ICaseService';\r\nimport { CaseService } from '../services/CaseService';\r\n\r\nimport { IGtService } from '../services/Interfaces/IGtService';\r\nimport { GtService } from '../services/GtService';\r\n\r\nimport { IWorkflowService } from '../services/Interfaces/IWorkflowService';\r\nimport { WorkflowService } from '../services/WorkflowService';\r\n\r\nimport { ICaseSettingsService } from '../services/Interfaces/ICaseSettingsService';\r\nimport { CaseSettingsService } from '../services/CaseSettingsService';\r\n\r\nimport { IDashboardService } from '../services/Interfaces/IDashboardService';\r\nimport { DashboardService } from '../services/DashboardService';\r\n\r\nimport { IOrderService } from '../services/Interfaces/IOrderService';\r\nimport { OrderService } from '../services/OrderService';\r\n\r\nimport { IReportsService } from '../services/Interfaces/IReportsService';\r\nimport { ReportsService } from '../services/ReportsService';\r\n\r\nimport { IVehicleService } from '../services/Interfaces/IVehicleService';\r\nimport { VehicleService } from '../services/VehicleService';\r\n\r\nimport { ICache } from '../interfaces/Icache';\r\nimport { IPptService } from '../services/Interfaces/IPptService';\r\nimport { PptService } from '../services/PptService';\r\n\r\nexport type AppContext = {\r\n translatorService: ITranslatorService;\r\n authenticationService: IAuthService;\r\n weatherForecastsService: IWeatherForecastsService;\r\n organizationService: IOrganizationService;\r\n appUserService: IAppUserService;\r\n referentialService: IReferentialService;\r\n tariffService: ITariffService;\r\n workflowService: IWorkflowService;\r\n caseService: ICaseService;\r\n gtService: IGtService;\r\n caseSettingsService: ICaseSettingsService;\r\n dashboardService: IDashboardService;\r\n orderService: IOrderService;\r\n reportsService: IReportsService;\r\n vehicleService: IVehicleService;\r\n cache: ICache[];\r\n pptService:IPptService;\r\n};\r\n\r\nconst cache = [] as ICache[];\r\n\r\nconst translatorSrv = new TranslatorService();\r\nconst authSrv = new AuthService();\r\nconst weatherForecastsService = new WeatherForecastsService();\r\nconst organizationService = new OrganizationService();\r\nconst appUserAdminService = new AppUserService();\r\nconst referentialService = new ReferentialService(cache);\r\nconst tariffService = new TariffService();\r\nconst workflowService = new WorkflowService();\r\nconst vehicleService = new VehicleService();\r\nconst pptService = new PptService(translatorSrv);\r\n\r\nconst caseService = new CaseService(\r\n tariffService,\r\n referentialService,\r\n organizationService,\r\n appUserAdminService\r\n);\r\nconst gtService = new GtService();\r\nconst caseSettingsService = new CaseSettingsService(\r\n workflowService,\r\n organizationService,\r\n referentialService\r\n);\r\nconst dashboardService = new DashboardService();\r\nconst orderService = new OrderService();\r\nconst reportsService = new ReportsService();\r\n\r\nexport const AppContext: AppContext = {\r\n translatorService: translatorSrv,\r\n authenticationService: authSrv,\r\n weatherForecastsService: weatherForecastsService,\r\n organizationService: organizationService,\r\n appUserService: appUserAdminService,\r\n referentialService: referentialService,\r\n tariffService: tariffService,\r\n workflowService: workflowService,\r\n caseService: caseService,\r\n caseSettingsService: caseSettingsService,\r\n gtService: gtService,\r\n dashboardService: dashboardService,\r\n orderService: orderService,\r\n reportsService: reportsService,\r\n vehicleService: vehicleService,\r\n cache: cache,\r\n pptService:pptService,\r\n};\r\n\r\nexport const ApplicationContext = React.createContext(AppContext);\r\n","import { IWeatherForecastsService } from './Interfaces/IWeatherForecastsService';\r\nimport { WeatherForecast } from '../interfaces/WeatherForecast';\r\nimport { API } from '../helpers/API';\r\n\r\nexport class WeatherForecastsService implements IWeatherForecastsService {\r\n public async GetWeather(): Promise {\r\n return (await API.GetAsync('/weatherforecast')).data;\r\n }\r\n}\r\n","import { ITariffService } from './Interfaces/ITariffService';\r\nimport { Tariff, TariffPartner, TariffType, TariffValue } from '../interfaces/Tariff';\r\nimport { API } from '../helpers/API';\r\n\r\nexport class TariffService implements ITariffService {\r\n private baseController = '/tariff';\r\n\r\n public async GetTariffs(orgId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/list/${orgId}`)).data;\r\n }\r\n\r\n public async GetTariff(tarriffId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/${tarriffId}`)).data;\r\n }\r\n\r\n public async GetUserTariff(tarriffId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/user/${tarriffId}`)).data;\r\n }\r\n public async GetUserTariffs(tarriffIds: number[]): Promise {\r\n const idLIst = tarriffIds.join(',');\r\n return (await API.GetAsync(`${this.baseController}/userList/${idLIst}`)).data;\r\n }\r\n\r\n public async AddTariff(tariff: Tariff): Promise {\r\n return (await API.PostAsync(`${this.baseController}`, tariff)).data;\r\n }\r\n\r\n public async UpdateTariff(tariff: Tariff): Promise {\r\n await API.PutAsync(`${this.baseController}`, tariff);\r\n }\r\n\r\n public async GetTariffTypes(groupId: number | null): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/tariffTypes/${groupId === null ? '' : groupId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetTariffValues(\r\n tariffId: number,\r\n tariffTypeGroupId: number | null\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${tariffId}/tariffvalues/${\r\n tariffTypeGroupId === null ? '' : tariffTypeGroupId\r\n }`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetTariffPartners(tariffId: number): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/${tariffId}/tariffPartners`)\r\n ).data;\r\n }\r\n public async AddTariffValues(tariffValues: TariffValue[]): Promise {\r\n await API.PostAsync(`${this.baseController}/TariffValue`, tariffValues);\r\n }\r\n\r\n public async UpdateTariffValues(tariffValues: TariffValue[]): Promise {\r\n await API.PutAsync(`${this.baseController}/TariffValue`, tariffValues);\r\n }\r\n\r\n public async DeleteTariffValues(tariffId: number, date: Date): Promise {\r\n const dateString = date.toISOString().replace(/-/g, '').split('T')[0];\r\n await API.DeleteAsync(\r\n `${this.baseController}/${tariffId}/TariffValues?date=${dateString}`\r\n );\r\n }\r\n\r\n public async GetOwnTariffs(organizationId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/own/${organizationId}`)).data;\r\n }\r\n}\r\n","import { API } from '../helpers/API';\r\nimport { IVehicleService } from './Interfaces/IVehicleService';\r\nimport {\r\n ChangeVehicleStatusRequest,\r\n CurrencyRate,\r\n Vehicle,\r\n VehicleAdvert,\r\n VehicleFilters,\r\n VehicleFiltersResult,\r\n VehicleOffer,\r\n VehicleQualityControlCert,\r\n VehicleStatusHistory,\r\n AdvertiserResult,\r\n VehicleExtensionList,\r\n ImportVehicleResult,\r\n ImportXlsxResult,\r\n SimpleVehicle,\r\n VehicleCostRequest,\r\n Cost,\r\n InvoiceRange,\r\n Provenance,\r\n ExchangeRate,\r\n AlcorErrorLog,\r\n FinancialParameterInfo,\r\n MavoVehicleFilters,\r\n MavoVehicleList,\r\n MavoVehicleFiltersResult,\r\n ImportMavoVehiclesRequestDto,\r\n ImportMavoVehicleResult,\r\n MavoVehicle,\r\n MavoVehicleAttachment,\r\n MavoVehicleStatusHistory,\r\n ChangeMavoVehicleStatusRequest,\r\n MavoVehicleAuctionResult,\r\n MavoVehicleAuctionsFilters,\r\n MavoVehicleAuctionsList,\r\n MavoVehicleAuctionsFiltersResult,\r\n MavoVehicleAuction,\r\n MavoVehicleAuctionOffer,\r\n MavoVehicleOrder,\r\n MavoAdminAuctionsFilters,\r\n MavoAdminAuctionsList,\r\n MavoAdminAuctionsFiltersResult,\r\n CloseAuctionRequestDto,\r\n MavoVehicleUserAuctionsFilters,\r\n MavoVehicleUserAuctionsList,\r\n MavoVehicleUserAuctionsFiltersResult,\r\n MavoOrdersFltersResult,\r\n MavoOrdersFilters,\r\n MavoOrdersList,\r\n MavoVoInvoiceFltersResult,\r\n MavoVoInvoicesList,\r\n MavoVoInvoiceFilters,\r\n DeclineMavoVehicleOrderRequest,\r\n DeclineMavoVehicleOrderResponse,\r\n MavoVehicleNoticeResponse,\r\n MavoVehicleInvoiceResponse,\r\n MavoVehicleOrderRCICloseRequest,\r\n MavoVehicleOrderRCICloseResponse,\r\n MavoVoInvoiceExportFilters,\r\n MavoVehicleCreateNoticeRequestDto,\r\n MavoVehicleCreateInvoiceRequestDto,\r\n AlcorParameterInfo,\r\n SimpleVehicleCarfix,\r\n SendVehicleToCarfixResponse,\r\n PublishAdvertRcr,\r\n PublishAdvertsRcrResponse,\r\n PayloadAddManualVehicle,\r\n AuctionOfferResponseDto,\r\n DownloadResultsRequest,\r\n DownloadResultsResponse,\r\n ObtainResultsRequest,\r\n ObtainResultsResponse,\r\n RefreshStatusRequest,\r\n RefreshStatusResponse,\r\n CreateEInvoiceRequest,\r\n CreateEInvoiceResponse\r\n} from '../interfaces/Vehicle';\r\nimport { CRUDService } from './CRUDService';\r\nimport { ICRUDService } from './Interfaces/ICRUDService';\r\nimport * as R from 'ramda';\r\nimport { CaseAttachmentDto, CaseAttachments } from '../interfaces/Case';\r\nimport { MarketDataFilter } from '../interfaces/Radar/MarketDataFilter';\r\nimport { MarketData } from '../interfaces/Radar/MarketData';\r\nimport { VehicleUpdateHistory } from '../interfaces/VehicleUpdateHistory';\r\nimport { VehicleFilter } from '../interfaces/Dashboard/VehicleFilter';\r\nimport { VehicleResult } from '../interfaces/Dashboard/VehicleResult';\r\nimport { CancelToken } from 'axios';\r\nimport { AcquisitionFilter } from '../interfaces/Dashboard/AcquisitionFilter';\r\nimport { AcquisitionResult } from '../interfaces/Dashboard/AcquisitionResult';\r\nimport { SalesResult } from '../interfaces/Dashboard/SalesResult';\r\nimport { SalesFilter } from '../interfaces/Dashboard/SalesFilter';\r\nimport { IReferential } from '../interfaces/IReferential';\r\nimport { ReportParameter } from '../interfaces/Reports';\r\nimport { ImportVehicle } from '../components/vehicles/VehicleImportOneCarModal';\r\n\r\nexport class VehicleService implements IVehicleService {\r\n private baseController = '/vehicle';\r\n\r\n VehicleQualityControlCert: ICRUDService;\r\n\r\n constructor() {\r\n this.VehicleQualityControlCert = new CRUDService(\r\n this.baseController,\r\n 'VehicleQualityControlCert'\r\n );\r\n }\r\n\r\n public async GetVehicle(id: number): Promise {\r\n if(!id){\r\n return null;\r\n }\r\n return (await API.GetAsync(`${this.baseController}/${id}`)).data;\r\n }\r\n\r\n public async GetVehicleList(ids: number[]): Promise {\r\n if (ids.length === 0) {\r\n return [];\r\n }\r\n const idsList = ids.join(',');\r\n\r\n return (await API.GetAsync(`${this.baseController}/list/${idsList}`)).data;\r\n }\r\n\r\n public async GetVehicles(filters: VehicleFilters): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/filter`,\r\n filters\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetVehiclesFilters(vehicleHistory: boolean): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/filters?vehicleHistory=${vehicleHistory}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddVehicle(vehicle: Vehicle, caseId: number): Promise {\r\n return (await API.PostAsync(`${this.baseController}/${caseId}`, vehicle)).data;\r\n }\r\n\r\n public async UpdateVehicle(vehicle: Vehicle): Promise {\r\n await API.PutAsync(`${this.baseController}`, vehicle);\r\n }\r\n\r\n public async SaveImportedVehicles(vehicles: SimpleVehicle[]): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/import`,\r\n vehicles\r\n )\r\n ).data;\r\n }\r\n\r\n public async SaveImportedXlsxVehicles(file: File): Promise {\r\n const formData = new FormData();\r\n\r\n formData.append('importContent', file);\r\n\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/rcr-import`,\r\n formData\r\n )\r\n ).data;\r\n }\r\n\r\n public async SaveManualdVehicles(data:PayloadAddManualVehicle): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/rcr-manual-import`,\r\n data\r\n )\r\n ).data;\r\n }\r\n\r\n public async SendVehicleToCarfix(\r\n vehicle: SimpleVehicleCarfix\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/rcr-sync-vehicle`,\r\n vehicle\r\n )\r\n ).data;\r\n }\r\n\r\n public async SendPublishedAdvertsToRcr(\r\n request: PublishAdvertRcr\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/rcr-sync-publish-ad`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async SaveVehicleOffer(offer: VehicleOffer): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/vehicleoffer/${offer.caseId}`,\r\n offer\r\n )\r\n ).data;\r\n }\r\n\r\n public async SaveVehicleOfferWithoutCaseId(offer: VehicleOffer): Promise {\r\n return (await API.PostAsync(`${this.baseController}/vehicleoffer`, offer)).data;\r\n }\r\n\r\n public async ChangeVehicleStatus(\r\n request: ChangeVehicleStatusRequest\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/status`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetVehicleStatuses(vehicleId: number): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/${vehicleId}/statuses`)\r\n ).data;\r\n }\r\n\r\n public async GetVehicleFieldsHistory(vehicleId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${vehicleId}/updateHistory`\r\n )\r\n ).data;\r\n }\r\n\r\n public async SaveVehicleAdvert(vehicleAdvert: VehicleAdvert): Promise {\r\n return (\r\n await API.PostAsync(`${this.baseController}/VehicleAdvert`, vehicleAdvert)\r\n ).data;\r\n }\r\n\r\n public async GetVehicleAdvert(\r\n vehicleId: number | null,\r\n caseId: number\r\n ): Promise {\r\n if (R.isNil(vehicleId)) return null;\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${vehicleId}/${caseId}/vehicleadvert/current`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetVehicleOffers(\r\n vehicleId: number,\r\n caseId: number,\r\n typeId: number\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${vehicleId}/${caseId}/vehicleOffer/${typeId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCurrencyRates(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/currencyRates`)).data;\r\n }\r\n\r\n public async PublishAdvert(\r\n vehicleAdvertId: number,\r\n advertiserCodes: string[],\r\n caseAttachments: CaseAttachmentDto[]\r\n ): Promise {\r\n const data = {\r\n advertiserCodes: advertiserCodes,\r\n attachments: caseAttachments\r\n };\r\n\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/VehicleAdvert/${vehicleAdvertId}/publish`,\r\n data\r\n )\r\n ).data;\r\n }\r\n\r\n public async DeleteAdvert(\r\n vehicleAdvertId: number,\r\n advertiserCodes: string[]\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/VehicleAdvert/${vehicleAdvertId}/delete`,\r\n advertiserCodes\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetVehicleAdvertHistory(\r\n vehicleId: number | null,\r\n caseId: number\r\n ): Promise {\r\n if (R.isNil(vehicleId)) return [];\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${vehicleId}/${caseId}/vehicleadvert/history`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCaseAttachmentsForVehicle(vehicleId: number): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/${vehicleId}/caseAttachments`)\r\n ).data;\r\n }\r\n\r\n public async GetVehicleMarketData(filter: MarketDataFilter): Promise {\r\n return (await API.GetAsync(`${this.baseController}/market-data`, filter)).data;\r\n }\r\n\r\n public async GetDashboardData(\r\n filter: VehicleFilter,\r\n cancelToken: CancelToken\r\n ): Promise {\r\n return (\r\n await API.Post2WithCancelAsync(\r\n `${this.baseController}/dashboard-data`,\r\n filter,\r\n cancelToken\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetDashboardAquisitionData(\r\n filter: AcquisitionFilter,\r\n cancelToken: CancelToken\r\n ): Promise {\r\n return (\r\n await API.Post2WithCancelAsync(\r\n `${this.baseController}/dashboard-acquisition-data`,\r\n filter,\r\n cancelToken\r\n )\r\n ).data;\r\n }\r\n public async GetDashboardSalesData(\r\n filter: SalesFilter,\r\n cancelToken: CancelToken\r\n ): Promise {\r\n return (\r\n await API.Post2WithCancelAsync(\r\n `${this.baseController}/dashboard-sales-data`,\r\n filter,\r\n cancelToken\r\n )\r\n ).data;\r\n }\r\n\r\n public async DeleteAllAdvertWhenCaseStatusBecameClosed(\r\n caseId: number,\r\n vehicleId: number\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/VehicleAdvert/${caseId}/${vehicleId}/deleteAllVehicleAdvert`,\r\n null\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCostRequests(\r\n caseId: number,\r\n formId: number | null\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/vehicleCostRequests/${caseId}/${formId === null ? '' : formId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetVehicleCostAttachment(fileName: string): Promise {\r\n return (await API.GetFileAsync(`${this.baseController}/costAttachment/${fileName}`)).data;\r\n }\r\n\r\n public async GetVehicleCostTypes(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/Referential/CostType`)).data;\r\n }\r\n\r\n public async AddCost(cost: Cost): Promise {\r\n const formData = new FormData();\r\n formData.append('caseId', cost.caseId);\r\n if (!R.isNil(cost.vehicleId)) {\r\n formData.append('vehicleId', cost.vehicleId.toString());\r\n }\r\n if (!R.isNil(cost.costTypeId)) {\r\n formData.append('costTypeId', cost.costTypeId.toString());\r\n }\r\n formData.append('costTypeCode', cost.costTypeCode);\r\n if (cost.files) {\r\n cost.files.forEach((attach) => {\r\n formData.append('files', attach.file);\r\n });\r\n }\r\n if (!R.isNil(cost.currencyRate)) {\r\n formData.append('currencyRate', cost.currencyRate.toString());\r\n }\r\n if (!R.isNil(cost.value)) {\r\n formData.append('value', cost.value.toString());\r\n }\r\n formData.append('currency', cost.currency?.toString());\r\n\r\n if (!R.isNil(cost.secondValue)) {\r\n formData.append('secondValue', cost.secondValue.toString());\r\n }\r\n formData.append('secondCurrency', cost.secondCurrency);\r\n\r\n if (!R.isNil(cost.caseSectionStepFormId)) {\r\n formData.append('caseSectionStepFormId', cost.caseSectionStepFormId.toString());\r\n }\r\n return (await API.Post2Async(`${this.baseController}/cost/add`, formData)).data;\r\n }\r\n\r\n public async GetVehicleCosts(vehicleId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/vehicleCost/${vehicleId}`)).data;\r\n }\r\n\r\n public async GetInvoiceRanges(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/InvoiceRange/list`)).data;\r\n }\r\n\r\n public async AddInvoiceRange(invoiceRange: InvoiceRange): Promise {\r\n return (await API.PostAsync(`${this.baseController}/InvoiceRange`, invoiceRange))\r\n .data;\r\n }\r\n\r\n public async RemoveInvoiceRange(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/InvoiceRange/${id}`)).data;\r\n }\r\n\r\n public async UpdateInvoiceRange(invoiceRange: InvoiceRange): Promise {\r\n await API.PutAsync(`${this.baseController}/InvoiceRange`, invoiceRange);\r\n }\r\n\r\n public async GetProvenances(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/Provenance/list`)).data;\r\n }\r\n\r\n public async AddProvenance(provenance: Provenance): Promise {\r\n return (await API.PostAsync(`${this.baseController}/Provenance`, provenance)).data;\r\n }\r\n\r\n public async RemoveProvenance(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/Provenance/${id}`)).data;\r\n }\r\n\r\n public async UpdateProvenance(provenance: Provenance): Promise {\r\n await API.PutAsync(`${this.baseController}/Provenance`, provenance);\r\n }\r\n\r\n public async GetExchangeRates(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/ExchangeRate`)).data;\r\n }\r\n\r\n public async AddExchangeRate(exchangeRate: ExchangeRate): Promise {\r\n return (await API.PostAsync(`${this.baseController}/ExchangeRate`, exchangeRate))\r\n .data;\r\n }\r\n\r\n public async UpdateExchangeRate(exchangeRate: ExchangeRate): Promise {\r\n await API.PutAsync(`${this.baseController}/ExchangeRate`, exchangeRate);\r\n }\r\n\r\n public async RemoveExchangeRate(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/ExchangeRate/${id}`)).data;\r\n }\r\n\r\n public async GetAlcorErrorLogs(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/AlcorErrorLog/list`)).data;\r\n }\r\n\r\n public async GetFinancialParameterInfoList(): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/FinancialParameterInfo/list`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddFinancialParameterInfo(\r\n financialParameterInfo: FinancialParameterInfo\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/FinancialParameterInfo`,\r\n financialParameterInfo\r\n )\r\n ).data;\r\n }\r\n\r\n public async RemoveFinancialParameterInfo(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/FinancialParameterInfo/${id}`))\r\n .data;\r\n }\r\n\r\n public async UpdateFinancialParameterInfo(\r\n financialParameterInfo: FinancialParameterInfo\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/FinancialParameterInfo`,\r\n financialParameterInfo\r\n );\r\n }\r\n\r\n public async GetMavoVehicles(filters: MavoVehicleFilters): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/filter`,\r\n filters\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetMavoVehiclesFilters(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/mavo/filters`))\r\n .data;\r\n }\r\n\r\n public async SaveImportedMavoVehicles(\r\n request: ImportMavoVehiclesRequestDto\r\n ): Promise {\r\n const formData = new FormData();\r\n formData.append('importContent', request.attachments[0].file);\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo-import`,\r\n formData\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetMavoVehicle(id: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/mavo/${id}`)).data;\r\n }\r\n\r\n public async GetMavoVehicleByVin(vin: string): Promise {\r\n return (await API.GetAsync(`${this.baseController}/mavo/byVin/${vin}`)).data;\r\n }\r\n\r\n public async AddMavoVehicle(vehicle: MavoVehicle): Promise {\r\n return (await API.PostAsync(`${this.baseController}/mavo/add`, vehicle)).data;\r\n }\r\n\r\n public async AddMavoVehicleAttachments(\r\n mavoVehicleAttachments: MavoVehicleAttachment[]\r\n ): Promise {\r\n const formData = new FormData();\r\n formData.append('mavoVehicleId', mavoVehicleAttachments[0].mavoVehicleId.toString());\r\n formData.append('attachmentTypeId', mavoVehicleAttachments[0].attachmentTypeId.toString());\r\n formData.append('attachmentTypeCode', mavoVehicleAttachments[0].attachmentType!.code!);\r\n mavoVehicleAttachments.forEach((item) => {\r\n formData.append('files', item.file);\r\n });\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/attachment`,\r\n formData\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetMavoVehicleAttachments(mavoVehicleId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/mavo/attachments/${mavoVehicleId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetMavoVehicleAttachment(fileName: string): Promise {\r\n return (await API.GetFileAsync(`${this.baseController}/mavo/attachment/${fileName}`))\r\n .data;\r\n }\r\n\r\n public async RemoveMavoVehicleAttachment(fileName: string): Promise {\r\n await API.DeleteAsync(`${this.baseController}/mavo/attachment/${fileName}`);\r\n }\r\n\r\n public async DeleteMavoVehicle(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/mavo/${id}`)).data;\r\n }\r\n\r\n public async ChangeMavoVehicleStatus(\r\n request: ChangeMavoVehicleStatusRequest\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/status`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddMavoVehicleOrder(request: MavoVehicleOrder): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/order/add`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddMavoVehicleAuction(\r\n request: MavoVehicleAuction\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/auction/add`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetAuctions(filters: MavoVehicleAuctionsFilters): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/auction-vehicle-filter`,\r\n filters\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetAuctionsFilters(): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/mavo/auction-vehicle-filters`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddMavoAuctionOffer(\r\n mavoVehicleAuctionOffer: MavoVehicleAuctionOffer\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/auction/offer/add`,\r\n mavoVehicleAuctionOffer\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetUserAuctions(\r\n filters: MavoVehicleUserAuctionsFilters\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/user-auction-vehicle-filter`,\r\n filters\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetUserAuctionsFilters(): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/mavo/user-auction-vehicle-filters`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetAdminAuctions(filters: MavoAdminAuctionsFilters): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/admin-auction-filter`,\r\n filters\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetAdminAuctionsFilters(): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/mavo/admin-auction-filters`\r\n )\r\n ).data;\r\n }\r\n\r\n public async CloseAuction(request: CloseAuctionRequestDto): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/auction/close`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetMavoOrders(filters: MavoOrdersFilters): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/orders-filter`,\r\n filters\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetMavoOrdersFilters(filters: MavoOrdersFilters): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/orders-filters`,\r\n filters\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetMavoInvoices(filters: MavoVoInvoiceFilters): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/invoices-filter`,\r\n filters\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetMavoInvoicesFilters(filters: MavoVoInvoiceFilters): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/invoices-filters`,\r\n filters\r\n )\r\n ).data;\r\n }\r\n\r\n public async ConfirmMavoVehicleOrder(\r\n code: string,\r\n request: MavoVehicleCreateNoticeRequestDto\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/report/${code}`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async CancelNoticeMavoVehicle(\r\n code: string,\r\n request: MavoVehicleCreateNoticeRequestDto\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/report/${code}/cancel`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async DeclineMavoVehicleOrder(\r\n request: DeclineMavoVehicleOrderRequest\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/order/decline`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async PrintMavoVehicleNotice(id: number): Promise {\r\n return (await API.GetFileAsync(`${this.baseController}/mavo/print-notice/${id}`)).data;\r\n }\r\n\r\n public async GenerateInvoiceReport(\r\n code: string,\r\n request: MavoVehicleCreateInvoiceRequestDto\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/reportInvoice/${code}`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async CloseMavoVehicleOrderRCI(\r\n request: MavoVehicleOrderRCICloseRequest\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/order/close-RCI`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async PrintMavoVehicleNoticeBasedInvoiceId(id: number): Promise {\r\n return (\r\n await API.GetFileAsync(`${this.baseController}/mavo/print-notice-based-invoiceId/${id}`)\r\n ).data;\r\n }\r\n\r\n public async PrintInvoice(id: number): Promise {\r\n return (await API.GetFileAsync(`${this.baseController}/mavo/print-invoice/${id}`)).data;\r\n }\r\n\r\n public async ExportInvoices(mavoVoInvoiceFilters: MavoVoInvoiceExportFilters): Promise {\r\n return (\r\n await API.PostFileAsync(\r\n `${this.baseController}/mavo/export-invoices`,\r\n mavoVoInvoiceFilters\r\n )\r\n ).data;\r\n }\r\n\r\n public async ExportMavoVehicles(filters: MavoVehicleFilters): Promise {\r\n return (\r\n await API.PostFileAsync(\r\n `${this.baseController}/mavo/export-data`,\r\n filters\r\n )\r\n ).data;\r\n }\r\n\r\n public async CancelInvoiceMavoVehicle(\r\n code: string,\r\n request: MavoVehicleCreateInvoiceRequestDto\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/mavo/reportInvoice/${code}/cancel`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetAlcorParameterInfoList(): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/AlcorParameterInfo/list`)\r\n ).data;\r\n }\r\n\r\n public async AddAlcorParameterInfo(\r\n alcorParameterInfo: AlcorParameterInfo\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/AlcorParameterInfo`,\r\n alcorParameterInfo\r\n )\r\n ).data;\r\n }\r\n\r\n public async RemoveAlcorParameterInfo(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/AlcorParameterInfo/${id}`)).data;\r\n }\r\n\r\n public async UpdateAlcorParameterInfo(alcorParameterInfo: AlcorParameterInfo): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/AlcorParameterInfo`,\r\n alcorParameterInfo\r\n );\r\n }\r\n\r\n public async GetMavoAuction(id: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/mavo/auction/${id}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async ExportAuctionOffers(mavoAuctionAdminFilters: MavoAdminAuctionsFilters): Promise {\r\n return (\r\n await API.PostFileAsync(\r\n `${this.baseController}/mavo/export-auction-offers`,\r\n mavoAuctionAdminFilters\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetRCRFuelTypes(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/RCRFuelType`)).data;\r\n }\r\n \r\n public async DownloadResults(\r\n request: DownloadResultsRequest\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/invoices/download-results`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async ObtainResults(\r\n request: ObtainResultsRequest\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/invoices/obtain-results`,\r\n request\r\n )\r\n ).data; \r\n }\r\n\r\n public async RefreshStatus(\r\n request: RefreshStatusRequest\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/invoices/refresh-status`,\r\n request\r\n )\r\n ).data; \r\n }\r\n\r\n public async CreateEInvoice(\r\n request: CreateEInvoiceRequest\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/invoices`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n}\r\n","import { ITariffService } from './Interfaces/ITariffService';\r\nimport { IOrganizationService } from '../services/Interfaces/IOrganizationService';\r\nimport { TariffValue } from '../interfaces/Tariff';\r\nimport { API } from '../helpers/API';\r\nimport { ICaseService } from './Interfaces/ICaseService';\r\nimport {\r\n Notice,\r\n CaseComment,\r\n Case,\r\n CaseStatusHistory,\r\n CaseWorkflowHistory,\r\n CasePartnerHistory,\r\n CaseParameterHistory,\r\n CaseTariffHistory,\r\n CaseTariffValueHistory,\r\n CaseAttachment,\r\n CaseVehicleHistory,\r\n CaseEventHistory,\r\n CaseCalculationHistory,\r\n CaseCalculationPart,\r\n Model,\r\n VinDecodeResponse,\r\n CaseRequest,\r\n CasePaymentHistory,\r\n CaseCalculationAlternativePart,\r\n CaseFilters,\r\n CaseList,\r\n CaseFiltersResult,\r\n ValuationVehicles,\r\n ValuationVehicleOptions,\r\n ValuationRequest,\r\n CaseValuationHistory,\r\n CaseServiceAppointmentHistory,\r\n VehicleDto,\r\n CaseClient,\r\n ClientDto,\r\n ValuationModel,\r\n ValuationBody,\r\n ClientOffer,\r\n CaseByVehicleIdSearchResult,\r\n ChangeCaseStatusRequest,\r\n UndocumentedModel,\r\n CarException,\r\n CarClassRentPrice,\r\n Offer,\r\n ValuationVehicle,\r\n BillingFilters,\r\n DgpciBillingFilters,\r\n PlateNumber,\r\n ClaimServiceRequest,\r\n ClaimServiceResponse,\r\n ClaimServiceCalculationRequest,\r\n ClaimServiceCalculationResponse,\r\n CalculationDifferencesRequest,\r\n CalculationDifferencesResponse,\r\n MaintenanceCupiOptionalPart,\r\n ClaimStatusResponse,\r\n ClaimStatusRequest,\r\n ClaimServiceAlternativeCalculationRequest,\r\n ClaimServiceAlternativeCalculationResponse,\r\n ModelData,\r\n ManipulationTariffPercentResponse,\r\n VinRequestResponse,\r\n CarfixAlternativeCalculationRequest,\r\n CarfixAlternativeCalculationResponse,\r\n CarfixAttachmentNotificationRequest,\r\n CarfixAttachmentNotificationResponse,\r\n CaseVehicleDetails,\r\n ValuationHistory,\r\n TariffPercentResponse,\r\n TariffPercentRequest,\r\n MaintenanceProducer,\r\n ValuationGeneration,\r\n valuationVehiclesInfoRequest,\r\n VQVehicle,\r\n Appointment,\r\n AppointmentFilters,\r\n AppointmentList,\r\n ValuationExcludeOptions,\r\n ValuationIncludeOptions,\r\n ValuationRequiredOptions,\r\n GTWSBillingFilters,\r\n AutomateAppointmentRequest,\r\n AcquisitionCaseRequest,\r\n CaseResultDto,\r\n ChangeCaseStatusBasedCodeRequest,\r\n NonStockBillingFilters,\r\n GenerateInvoiceRequest,\r\n GenerateInvoiceResponse,\r\n PartsHistoryInterogationRequest,\r\n UpdateOrderInfoRequest,\r\n AppointmentPaymentStatusRequest,\r\n AppointmentPaymentStatusResponse,\r\n SendOrderNotificationRequest,\r\n SendAlternativeCalculationResponse,\r\n SendAlternativeCalculationRequest,\r\n NonStockPart,\r\n PartNotifySuppportRequest,\r\n PartNotifySuppportResponse,\r\n CaseInfo,\r\n NotifySupportResponse,\r\n NotifySupportRequest,\r\n GeneralNotifySupportResponse,\r\n GeneralNotifySupportRequest,\r\n NewBillingReportFilters\r\n} from '../interfaces/Case';\r\nimport { AddVehicleParams, Vehicle as VehicleExt } from '../interfaces/Vehicle';\r\nimport { ReferentialCode } from '../helpers/Constants';\r\nimport Referentials from '../helpers/Referentials.json';\r\nimport { IReferentialService } from './Interfaces/IReferentialService';\r\nimport { OrganizationType } from '../interfaces/Organization';\r\nimport { IAppUserService } from './Interfaces/IAppUserService';\r\nimport { CalculationRequest, CalculationResponse } from '../interfaces/GtService';\r\nimport { AppUser } from '../interfaces/AppUser';\r\nimport * as R from 'ramda';\r\nimport moment from 'moment';\r\nimport { IReferential } from '../interfaces/IReferential';\r\nimport { Utils } from '../helpers/Utils';\r\nimport { isUndefined } from 'util';\r\n\r\nexport class CaseService implements ICaseService {\r\n private organizationService: IOrganizationService;\r\n private tariffService: ITariffService;\r\n private appReferentialService: IReferentialService;\r\n private appUserService: IAppUserService;\r\n\r\n private baseController = '/case';\r\n\r\n constructor(\r\n tariffService: ITariffService,\r\n appReferentialService: IReferentialService,\r\n organizationService: IOrganizationService,\r\n appUserService: IAppUserService\r\n ) {\r\n this.tariffService = tariffService;\r\n this.appReferentialService = appReferentialService;\r\n this.organizationService = organizationService;\r\n this.appUserService = appUserService;\r\n }\r\n\r\n public async SearchNotice(\r\n vin: string,\r\n plateNumber: string,\r\n noticeNumber: string,\r\n caseNumber: string\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/searchnotice?vin=${vin}&platenumber=${plateNumber}¬iceNumber=${noticeNumber}&caseNumber=${caseNumber}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async SearchVehicle(\r\n vin: string,\r\n plateNumber: string,\r\n searchInVehicleStock: boolean\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/searchvehicle?vin=${R.isNil(vin) ? '' : vin}&platenumber=${\r\n R.isNil(plateNumber) ? '' : plateNumber\r\n }&searchInVehicleStock=${searchInVehicleStock}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async SearchClient(\r\n personTypeId: number,\r\n pin_cui: string,\r\n name: string\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/searchclient?personTypeId=${personTypeId}&pin_cui=${\r\n R.isNil(pin_cui) ? '' : pin_cui\r\n }&name=${R.isNil(name) ? '' : name}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async DecodeVin(vin: string): Promise {\r\n return (await API.GetAsync(`${this.baseController}/decodevin/${vin}`)).data;\r\n }\r\n\r\n public async SyncModels(): Promise {\r\n await API.PostAsync(`${this.baseController}/syncmodels`, {});\r\n }\r\n\r\n public async GetValuationVehicles(\r\n caseId: number,\r\n calculationFormId: number\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/${caseId}/valuationVehicles/${calculationFormId}`,\r\n {}\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetValuationHistory(caseId: number): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/valuation-history/${caseId}`)\r\n ).data;\r\n }\r\n\r\n public async GetValuationVehiclesInfo(\r\n vin: string,\r\n calculationFormId: number | null,\r\n valuationVehiclesInfoRequest: valuationVehiclesInfoRequest\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/valuationVehicles/${vin}/${\r\n R.isNil(calculationFormId) ? '' : calculationFormId\r\n }`,\r\n {\r\n ...valuationVehiclesInfoRequest,\r\n registration_date: valuationVehiclesInfoRequest.registration_date\r\n ? moment(valuationVehiclesInfoRequest.registration_date).format('YYYY-MM-DD')\r\n : null\r\n }\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetValuationVehiclesWithoutVin(\r\n make: string,\r\n model: string,\r\n body: string,\r\n firstRegistrationDate: Date,\r\n generation: number\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/valuationVehicles/${make}/${model}/${body}/${moment(\r\n firstRegistrationDate\r\n ).format('YYYY-MM-DD')}${R.isNil(generation) ? '' : '/' + generation}`,\r\n {}\r\n )\r\n ).data;\r\n }\r\n\r\n public async ValuationSaveMapping(vin: string, vehicleId: number): Promise {\r\n return (\r\n await API.Post2Async(`${this.baseController}/valuation/saveMapping`, {\r\n Vin: vin,\r\n VehicleId: vehicleId\r\n })\r\n ).data;\r\n }\r\n\r\n public async GetValuationVehicleOptions(vehicleId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/valuationOptions/${vehicleId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetValuationModels(\r\n make: string | null | undefined,\r\n firstRegistrationDate: Date | null\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/valuationmodels/${make}/${moment(firstRegistrationDate).format(\r\n 'YYYY-MM-DD'\r\n )}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetValuationBodies(\r\n make: string | null | undefined,\r\n model: string | null | undefined,\r\n firstRegistrationDate: Date | null\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/valuationbodies/${make}/${model}/${moment(\r\n firstRegistrationDate\r\n ).format('YYYY-MM-DD')}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetValuationGenerations(\r\n make: string | null | undefined,\r\n model: string | null | undefined,\r\n body: string | null | undefined,\r\n doorsNo: number | null | undefined,\r\n firstRegistrationDate: Date | null\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/valuationGenerations/${make}/${model}/${body}/${doorsNo}/${moment(\r\n firstRegistrationDate\r\n ).format('YYYY-MM-DD')}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetExcludeOptions(\r\n optionsId: number,\r\n vehicleId: number\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/valuationOptions/excludes/${optionsId}/${vehicleId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetIncludeOptions(\r\n optionsId: number,\r\n vehicleId: number\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/valuationOptions/includes/${optionsId}/${vehicleId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetRequiredOptions(\r\n optionsId: number,\r\n vehicleId: number\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/valuationOptions/requires/${optionsId}/${vehicleId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async PerformValuation(\r\n valuationRequest: ValuationRequest,\r\n caseId: number | null\r\n ): Promise {\r\n let url = `${this.baseController}/performvaluation`;\r\n if (caseId !== null) {\r\n url += `/${caseId}`;\r\n }\r\n return (await API.Post2Async(url, valuationRequest))\r\n .data;\r\n }\r\n\r\n public async CreateCalculationHistory(\r\n calculationRequest: CalculationRequest\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/calculationHistory/`,\r\n calculationRequest\r\n )\r\n ).data;\r\n }\r\n\r\n public async CreateCalculation(calculationRequest: CalculationRequest): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/calculation/`,\r\n calculationRequest\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateCalculationTariff(\r\n calculationRequest: CalculationRequest\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/calculation/update-tariff`,\r\n calculationRequest\r\n )\r\n ).data;\r\n }\r\n // public async CopyCalculation(calculationRequest: CalculationRequest): Promise {\r\n // const user = await this.authService.getUserAsync();\r\n // if (user === null) {\r\n // throw Error('user is not logged in')\r\n // }\r\n\r\n // return (await API.Post2Async(`${this.baseController}/copycalculation/`, calculationRequest)).data;\r\n // }\r\n\r\n public async UpdateCalculationCallback(\r\n id: number,\r\n workflowId: number,\r\n workflowOrganizationOwnerId: number\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/calculationUpdateCallback/${id}/${workflowId}/${workflowOrganizationOwnerId}`,\r\n null\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateCalculationPdfCallback(\r\n id: number,\r\n workflowId: number,\r\n workflowOrganizationOwnerId: number\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/calculationUpdatePdfCallback/${id}/${workflowId}/${workflowOrganizationOwnerId}`,\r\n null\r\n )\r\n ).data;\r\n }\r\n\r\n // public async UpdateGtCalculation(calculationRequest: CalculationRequest): Promise {\r\n // const user = await this.authService.getUserAsync();\r\n // if (user === null) {\r\n // throw Error('user is not logged in')\r\n // }\r\n\r\n // return (await API.Post2Async(`${this.baseController}/updateGtCalculation/`, calculationRequest)).data;\r\n // }\r\n\r\n public async AddVehicle(param: AddVehicleParams, caseId: number): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/${caseId}/addvehicle`,\r\n param\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCases(caseFilters: CaseFilters | null): Promise {\r\n if (caseFilters === null) {\r\n caseFilters = {\r\n assignedToList: [],\r\n createdByList: [],\r\n caseTypeIds: [],\r\n partnerIds: [],\r\n statusIds: [],\r\n workflowIds: [],\r\n organizationIds: [],\r\n page: 1,\r\n pageSize: null,\r\n isInternal: null,\r\n text: '',\r\n isNew: false,\r\n dateFilterCode: '',\r\n dateFilterStartDate: null,\r\n datefilterEndDate: null,\r\n vehicleIds: [],\r\n policyTypeIds: [],\r\n plateNumberSearchText: '',\r\n vinSearchText: '',\r\n caseNumberSearchText: '',\r\n countryCode: null,\r\n isAssignedToId: true,\r\n makeSearchText: '',\r\n modelSearchText: ''\r\n } as CaseFilters;\r\n }\r\n\r\n return (await API.Post2Async(`${this.baseController}`, caseFilters))\r\n .data;\r\n }\r\n\r\n public async SearchByCaseNumber(id: number, caseNumber: string): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/SearchByCaseNumber?id=${id}&caseNumber=${caseNumber}`,\r\n {}\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCaseFilters(caseFilters: CaseFilters): Promise {\r\n return (await API.Post2Async(`${this.baseController}/filters`, caseFilters))\r\n .data;\r\n }\r\n\r\n public async SearchByVehicle(vehicleId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/SearchByVehicle/${vehicleId}`)).data;\r\n }\r\n\r\n public async GetLastCaseByVehicleId(vehicleId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/SearchByVehicleId/${vehicleId}/lastCase`\r\n )\r\n ).data;\r\n }\r\n\r\n public async ChangeCaseStatus(request: ChangeCaseStatusRequest): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/status`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCaseDetails(caseId: number): Promise {\r\n const refCaseType = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CaseType\r\n );\r\n const refParam = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CompanyParameter\r\n );\r\n const orgTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OrganizationType\r\n );\r\n const brandsRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CarBrands\r\n );\r\n\r\n const [casee, caseTypeList, paramList, orgTypes, brands] = await Promise.all([\r\n this.GetCaseEntity(caseId),\r\n this.appReferentialService.Get(refCaseType!.baseUrl),\r\n this.appReferentialService.Get(refParam!.baseUrl),\r\n this.appReferentialService.Get(orgTypeRef!.baseUrl),\r\n this.appReferentialService.Get(brandsRef!.baseUrl)\r\n ]);\r\n\r\n const orgIds = casee.casePartners.map((item) => item.organizationId);\r\n orgIds.push(casee.organizationOwnerId);\r\n\r\n const [partners, tariff, tariffTypeList, createdByUser, assignedUser] = await Promise.all([\r\n this.organizationService.GetUserOrganizationsByIds(Array.from(new Set(orgIds))),\r\n R.isNil(casee.caseTariff)\r\n ? null\r\n : this.tariffService.GetUserTariff(casee.caseTariff.tariffId),\r\n this.tariffService.GetTariffTypes(null),\r\n this.appUserService.GetUserInfo(casee.createdBy),\r\n this.appUserService.GetUserInfo(casee.caseStatus.assignedToId)\r\n ]);\r\n\r\n casee.casePartners.forEach((wpItem) => {\r\n const partner = partners.find((item) => item.id === wpItem.organizationId);\r\n wpItem.organization = R.isNil(partner) ? null : partner;\r\n\r\n const orgType = orgTypes.find((item) => item.id === wpItem.organization!.organizationTypeId);\r\n wpItem.organization!.organizationType = (R.isNil(orgType)\r\n ? null\r\n : orgType) as any as OrganizationType;\r\n });\r\n\r\n casee.caseStatus.assignedTo = assignedUser;\r\n casee.createdByUser = createdByUser;\r\n const orgOwner = partners.find((item) => item.id === casee.organizationOwnerId);\r\n casee.organizationOwner = R.isNil(orgOwner) ? null : orgOwner;\r\n\r\n if (!R.isNil(tariff)) {\r\n casee.caseTariff.tariff = tariff;\r\n casee.caseTariff.caseTariffValuesHistory.forEach((tv) => {\r\n const tt = tariffTypeList.find((p) => tv.tariffTypeId === p.id);\r\n tv.tariffType = R.isNil(tt) ? null : tt;\r\n\r\n const brand = brands.find((p) => p.id === tv.brandId);\r\n tv.brand = R.isNil(brand) ? null : brand;\r\n });\r\n }\r\n const caseType = caseTypeList.find((item) => item.id === casee.caseTypeId);\r\n casee.caseType = R.isNil(caseType) ? null : caseType;\r\n casee.caseParameters.forEach((item) => {\r\n const param = paramList.find((p) => item.parameterId === p.id);\r\n item.parameter = R.isNil(param) ? null : param;\r\n });\r\n\r\n return casee;\r\n }\r\n\r\n public async GetCaseEntity(caseId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/${caseId}`)).data;\r\n }\r\n\r\n public async CreateCase(\r\n workflowId: number,\r\n noticeId: number | null,\r\n vehicle: VehicleDto | null,\r\n clientId: number | null\r\n ): Promise {\r\n return (\r\n await API.Post2Async<\r\n {\r\n workflowId: number;\r\n noticeId: number | null;\r\n vehicle: VehicleDto | null;\r\n clientId: number | null;\r\n },\r\n Case\r\n >(`${this.baseController}/newcase`, {\r\n workflowId: workflowId,\r\n vehicle: vehicle,\r\n noticeId: noticeId,\r\n clientId: clientId\r\n })\r\n ).data;\r\n }\r\n\r\n public async CopyCase(\r\n caseId: number,\r\n workflowId: number,\r\n noticeId: number | null,\r\n vehicle: VehicleDto | null,\r\n clientId: number | null\r\n ): Promise {\r\n return (\r\n await API.Post2Async<\r\n {\r\n caseId: number;\r\n workflowId: number;\r\n noticeId: number | null;\r\n vehicle: VehicleDto | null;\r\n clientId: number | null;\r\n },\r\n Case\r\n >(`${this.baseController}/copyCase`, {\r\n caseId: caseId,\r\n workflowId: workflowId,\r\n vehicle: vehicle,\r\n noticeId: noticeId,\r\n clientId: clientId\r\n })\r\n ).data;\r\n }\r\n\r\n public async ChangeCaseWorkflow(\r\n workflowId: number,\r\n caseId: number,\r\n userId: string,\r\n caseStatusId: number\r\n ): Promise {\r\n await API.PostAsync<{\r\n workflowId: number;\r\n caseId: number;\r\n userId: string;\r\n caseStatusId: number;\r\n }>(`${this.baseController}/changeworkflow`, {\r\n workflowId: workflowId,\r\n caseId: caseId,\r\n userId: userId,\r\n caseStatusId: caseStatusId\r\n });\r\n }\r\n\r\n public async UpdateCase(casee: Case): Promise {\r\n await API.PutAsync(`${this.baseController}/Case`, casee);\r\n }\r\n\r\n public async RemoveCase(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/${id}`)).data;\r\n }\r\n\r\n public async GetCarModels(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/model`)).data;\r\n }\r\n\r\n public async GetCarModelsByBrand(brandId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/model/list/${brandId}`)).data;\r\n }\r\n\r\n public async GetCaseComments(caseId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/CaseComment/list/${caseId}`))\r\n .data;\r\n }\r\n\r\n public async AddCaseComment(caseComment: CaseComment): Promise {\r\n return (await API.PostAsync(`${this.baseController}/Comment`, caseComment)).data;\r\n }\r\n\r\n public async UpdateCaseComment(caseComment: CaseComment): Promise {\r\n await API.PutAsync(`${this.baseController}/Comment`, caseComment);\r\n }\r\n\r\n public async RemoveCaseComment(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/CaseComment/${id}`)).data;\r\n }\r\n\r\n public async AddCaseRequest(caseRequest: CaseRequest): Promise {\r\n const formData = new FormData();\r\n formData.append('id', caseRequest.id.toString());\r\n formData.append('caseId', caseRequest.caseId.toString());\r\n formData.append('caseSectionStepFormId', caseRequest.caseSectionStepFormId.toString());\r\n if (!R.isNil(caseRequest.organizationId)) {\r\n formData.append('organizationId', caseRequest.organizationId.toString());\r\n }\r\n formData.append('subject', caseRequest.subject);\r\n formData.append('text', caseRequest.text);\r\n formData.append('to', caseRequest.to);\r\n\r\n if (!R.isNil(caseRequest.userIdTo)) {\r\n formData.append('userIdTo', caseRequest.userIdTo);\r\n }\r\n if (caseRequest.attachments.length !== 0) {\r\n formData.append('attachmentTypeId', caseRequest.attachments[0].attachmentTypeId.toString());\r\n formData.append('attachmentTypeCode', caseRequest.attachments[0].attachmentType!.code!);\r\n }\r\n caseRequest.attachments.forEach((attach) => {\r\n formData.append('files', attach.file);\r\n });\r\n\r\n if (!R.isNil(caseRequest.cc)) {\r\n formData.append('cc', caseRequest.cc);\r\n }\r\n if (!R.isNil(caseRequest.hasOffer)) {\r\n formData.append('hasOffer', caseRequest?.hasOffer!.toString());\r\n }\r\n if (!R.isNil(caseRequest.hasInvoice)) {\r\n formData.append('hasInvoice', caseRequest?.hasInvoice!.toString());\r\n }\r\n if (!R.isNil(caseRequest.calculationId)) {\r\n formData.append('calculationId', caseRequest?.calculationId!.toString());\r\n }\r\n if (!R.isNil(caseRequest.caseClientHistoryId)) {\r\n formData.append('caseClientHistoryId', caseRequest?.caseClientHistoryId!.toString());\r\n }\r\n if (!R.isNil(caseRequest.vehicleId)) {\r\n formData.append('vehicleId', caseRequest?.vehicleId!.toString());\r\n }\r\n if (!R.isNil(caseRequest.gatewayServiceUrl)) {\r\n formData.append('gatewayServiceUrl', caseRequest?.gatewayServiceUrl!.toString());\r\n }\r\n if (!R.isNil(caseRequest.offerId)) {\r\n formData.append('offerId', caseRequest?.offerId!.toString());\r\n }\r\n if (!R.isNil(caseRequest.userOrganizationId)) {\r\n formData.append('userOrganizationId', caseRequest?.userOrganizationId!.toString());\r\n }\r\n if (!R.isNil(caseRequest.organizationOwnerId)) {\r\n formData.append('organizationOwnerId', caseRequest?.organizationOwnerId!.toString());\r\n }\r\n if (!R.isNil(caseRequest.hideOrganizationLogo)) {\r\n formData.append('hideOrganizationLogo', caseRequest?.hideOrganizationLogo!.toString());\r\n }\r\n //if (caseRequest.additionalFilesParameters) {\r\n // Utils.AddObjectToFormData(formData, caseRequest.additionalFilesParameters, \"additionalFilesParameters\");\r\n //}\r\n return (\r\n await API.Post2Async(`${this.baseController}/CaseRequest`, formData)\r\n ).data;\r\n }\r\n\r\n public async GetCaseRequests(caseId: number, formId: number | null): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${caseId}/requests/${formId === null ? '' : formId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCurrentCaseServiceAppointment(\r\n caseId: number,\r\n formId: number | null\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${caseId}/serviceappointment/${formId === null ? '' : formId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddCaseServiceAppointment(\r\n appointment: CaseServiceAppointmentHistory\r\n ): Promise {\r\n const formData = new FormData();\r\n formData.append('id', appointment.id.toString());\r\n formData.append('caseId', appointment.caseId.toString());\r\n formData.append('caseSectionStepFormId', appointment.caseSectionStepFormId.toString());\r\n\r\n formData.append('comment', appointment.comment);\r\n formData.append('serviceInDate', appointment.serviceInDate.toISOString());\r\n formData.append('serviceOutDate', appointment.serviceOutDate.toISOString());\r\n\r\n if (!R.isNil(appointment.userId)) {\r\n formData.append('userId', appointment.userId);\r\n }\r\n if (appointment.attachments.length !== 0) {\r\n formData.append('attachmentTypeId', appointment.attachments[0].attachmentTypeId.toString());\r\n formData.append('attachmentTypeCode', appointment.attachments[0].attachmentType!.code!);\r\n }\r\n appointment.attachments.forEach((attach) => {\r\n formData.append('files', attach.file);\r\n });\r\n\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/serviceappointment`,\r\n formData\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCurrentCasePayment(caseId: number, formId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${caseId}/payment/${formId === null ? '' : formId}`\r\n )\r\n ).data;\r\n }\r\n public async GetCasePayments(caseId: number, formId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${caseId}/payments/${formId === null ? '' : formId}`\r\n )\r\n ).data;\r\n }\r\n public async AddCasePayment(casePayment: CasePaymentHistory): Promise {\r\n const formData = new FormData();\r\n formData.append('id', casePayment.id.toString());\r\n formData.append('caseId', casePayment.caseId.toString());\r\n\r\n if (!R.isNil(casePayment.currency)) {\r\n formData.append('currency', casePayment.currency.toString());\r\n }\r\n if (!R.isNil(casePayment.currencyRate)) {\r\n formData.append('currencyRate', casePayment.currencyRate.toString());\r\n }\r\n\r\n formData.append('caseSectionStepFormId', casePayment.caseSectionStepFormId.toString());\r\n if (!R.isNil(casePayment.organizationId)) {\r\n formData.append('organizationId', casePayment.organizationId.toString());\r\n }\r\n formData.append('comment', casePayment.comment);\r\n if (!R.isNil(casePayment.paymentTypeId)) {\r\n formData.append('paymentTypeId', casePayment.paymentTypeId.toString());\r\n }\r\n if (!R.isNil(casePayment.paymentRequestNoId)) {\r\n formData.append('paymentRequestNoId', casePayment.paymentRequestNoId.toString());\r\n }\r\n if (!R.isNil(casePayment.hasFransiza)) {\r\n formData.append('hasFransiza', casePayment.hasFransiza.toString());\r\n }\r\n if (!R.isNil(casePayment.paymentAmount)) {\r\n formData.append('paymentAmount', casePayment.paymentAmount.toString());\r\n }\r\n if (!R.isNil(casePayment.paymentAmountWithoutVAT)) {\r\n formData.append('paymentAmountWithoutVAT', casePayment.paymentAmountWithoutVAT.toString());\r\n }\r\n if (!R.isNil(casePayment.bankAccount)) {\r\n formData.append('bankAccount', casePayment.bankAccount.toString());\r\n }\r\n if (!R.isNil(casePayment.installments)) {\r\n formData.append('installments', casePayment.installments.toString());\r\n }\r\n\r\n if (!R.isNil(casePayment.userToId)) {\r\n formData.append('userIdTo', casePayment.userToId);\r\n }\r\n if (casePayment.attachments.length !== 0) {\r\n formData.append('attachmentTypeId', casePayment.attachments[0].attachmentTypeId.toString());\r\n formData.append('attachmentTypeCode', casePayment.attachments[0].attachmentType!.code!);\r\n }\r\n casePayment.attachments.forEach((attach) => {\r\n formData.append('files', attach.file);\r\n });\r\n\r\n if (!R.isNil(casePayment.secondCurrency)) {\r\n formData.append('secondCurrency', casePayment.secondCurrency.toString());\r\n }\r\n if (!R.isNil(casePayment.secondPaymentAmount)) {\r\n formData.append('secondPaymentAmount', casePayment.secondPaymentAmount.toString());\r\n }\r\n\r\n if (!R.isNil(casePayment.secondPaymentAmountWithoutVAT)) {\r\n formData.append(\r\n 'secondPaymentAmountWithoutVAT',\r\n casePayment.secondPaymentAmountWithoutVAT.toString()\r\n );\r\n }\r\n\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/casepayment`,\r\n formData\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetAllCaseStatusHistory(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/StatusHistory`)).data;\r\n }\r\n\r\n public async GetCaseStatusHistory(caseId: number): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/${caseId}/StatusHistory`)\r\n ).data;\r\n }\r\n\r\n public async AddCaseStatusHistory(\r\n caseStatusHistory: CaseStatusHistory\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/CaseStatusHistory`,\r\n caseStatusHistory\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCaseWorkflowHistory(caseId: number): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/${caseId}/workflowHistory`)\r\n ).data;\r\n }\r\n\r\n public async GetCasePartnerHistory(caseId: number): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/${caseId}/partnerHistory`)\r\n ).data;\r\n }\r\n\r\n public async AddCasePartnerHistory(\r\n casePartnerHistory: CasePartnerHistory\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/CasePartnerHistory`,\r\n casePartnerHistory\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCaseParameterHistory(caseId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${caseId}/parameterHistory`\r\n )\r\n ).data;\r\n }\r\n\r\n public async SaveParameterHistory(caseId: number, values: CaseParameterHistory[]): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/${caseId}/parameterHistory`,\r\n values\r\n );\r\n }\r\n\r\n public async GetCaseTariffHistory(caseId: number): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/${caseId}/tariffHistory`)\r\n ).data;\r\n }\r\n\r\n public async SaveCaseTariffHistory(\r\n caseId: number,\r\n tariffValues: CaseTariffValueHistory[]\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/${caseId}/tariffHistory`,\r\n tariffValues\r\n );\r\n }\r\n\r\n public async GetCaseTariffValueHistory(\r\n caseTariffHistoryId: number\r\n ): Promise {\r\n // return (await API.GetAsync(`${this.baseController}/${caseTariffHistoryId}/CaseTariffValueHistory`)).data;\r\n const caseTariffValueHistory = [] as CaseTariffValueHistory[];\r\n\r\n const tariffGroupTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.TariffTypeGroup\r\n );\r\n const [tariffValues, tariffGroupTypeList] = await Promise.all([\r\n this.tariffService.GetTariffValues(20, null),\r\n this.appReferentialService.Get(tariffGroupTypeRef!.baseUrl)\r\n ]);\r\n\r\n const mostRecentCaseTariffValues = [] as TariffValue[];\r\n for (const tariffGroupType of tariffGroupTypeList) {\r\n const tariffValuesForTariffGroupType = tariffValues.filter(\r\n (item) => item.tariffType.tariffTypeGroupId === tariffGroupType.id\r\n );\r\n const mostRecentTariffValuesDate = tariffValuesForTariffGroupType.sort(function (\r\n a: any,\r\n b: any\r\n ) {\r\n return b.date - a.date;\r\n })[0].date;\r\n mostRecentCaseTariffValues.push(\r\n ...tariffValuesForTariffGroupType.filter(\r\n (item: TariffValue) => item.date === mostRecentTariffValuesDate\r\n )\r\n );\r\n }\r\n\r\n mostRecentCaseTariffValues.forEach((item, index) => {\r\n caseTariffValueHistory.push({\r\n id: index,\r\n caseTariffHistoryId: 1,\r\n tariffTypeId: item.tariffTypeId,\r\n tariffType: item.tariffType,\r\n value: item.value,\r\n brandId: item.brandId,\r\n brand: item.brand\r\n } as CaseTariffValueHistory);\r\n });\r\n return caseTariffValueHistory;\r\n }\r\n\r\n public async AddCaseTariffValueHistory(\r\n caseTariffValueHistory: CaseTariffValueHistory\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/CaseTariffValueHistory`,\r\n caseTariffValueHistory\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCaseAttachments(caseId: number, types: string[]): Promise {\r\n const idLIst = types.join(',');\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${caseId}/caseAttachment/${idLIst}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCaseAttachment(fileName: string): Promise {\r\n return (await API.GetFileAsync(`${this.baseController}/caseAttachment/${fileName}`)).data;\r\n }\r\n\r\n public async GetCaseAttachmentsArchive(\r\n caseId: number,\r\n formId: number | null,\r\n types: string[]\r\n ): Promise {\r\n const idLIst = types.join(',');\r\n return (\r\n await API.GetFileAsync(\r\n `${this.baseController}/${caseId}/caseAttachments/${idLIst}/${\r\n formId === null ? '' : formId\r\n }`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddCaseAttachment(caseAttachments: CaseAttachment[]): Promise {\r\n const formData = new FormData();\r\n\r\n formData.append('id', caseAttachments[0].id.toString());\r\n formData.append('caseId', caseAttachments[0].caseId.toString());\r\n formData.append('attachmentTypeId', caseAttachments[0].attachmentTypeId.toString());\r\n formData.append('attachmentTypeCode', caseAttachments[0].attachmentType!.code!);\r\n formData.append('isSelection', caseAttachments[0].isSelection.toString());\r\n if (caseAttachments[0].appointmentId) {\r\n formData.append('appointmentId', caseAttachments[0].appointmentId.toString());\r\n }\r\n if (caseAttachments[0].includeInOtherTab) {\r\n formData.append('includeInOtherTab', caseAttachments[0].includeInOtherTab.toString());\r\n }\r\n if (caseAttachments[0].checkFileName) {\r\n formData.append('checkFileName', caseAttachments[0].checkFileName.toString());\r\n }\r\n caseAttachments.forEach((item) => {\r\n formData.append('files', item.file);\r\n });\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/CaseAttachment`,\r\n formData\r\n )\r\n ).data;\r\n }\r\n\r\n public async RemoveCaseAttachment(fileName: string): Promise {\r\n await API.DeleteAsync(`${this.baseController}/CaseAttachment/${fileName}`);\r\n }\r\n\r\n public async AddCaseVehicle(vehicle: CaseVehicleHistory): Promise {\r\n return (await API.PostAsync(`${this.baseController}/CaseVehicle`, vehicle))\r\n .data;\r\n }\r\n public async UpdateCaseVehicle(vehicle: CaseVehicleHistory): Promise {\r\n await API.PutAsync(`${this.baseController}/CaseVehicle`, vehicle);\r\n }\r\n public async AddCaseEvent(event: CaseEventHistory): Promise {\r\n return (await API.PostAsync(`${this.baseController}/CaseEvent`, event)).data;\r\n }\r\n public async UpdateCaseEvent(event: CaseEventHistory): Promise {\r\n await API.PutAsync(`${this.baseController}/CaseEvent`, event);\r\n }\r\n\r\n public async GetCurrentEvent(caseId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/CaseEvent/${caseId}`))\r\n .data;\r\n }\r\n\r\n public async AddCaseClient(client: CaseClient): Promise {\r\n const formData = new FormData();\r\n formData.append('id', client.id.toString());\r\n formData.append('clientId', client.clientId.toString());\r\n formData.append('caseId', client.caseId.toString());\r\n formData.append('caseSectionStepFormId', client.caseSectionStepFormId.toString());\r\n\r\n formData.append('personTypeId', client.personTypeId!.toString());\r\n formData.append('companyNumber', client.companyNumber);\r\n formData.append('pin', R.isNil(client.pin) ? '' : client.pin);\r\n formData.append('lastName', R.isNil(client.lastName) ? '' : client.lastName);\r\n formData.append('firstName', R.isNil(client.firstName) ? '' : client.firstName);\r\n formData.append('contactPerson', client.contactPerson);\r\n formData.append('companyName', R.isNil(client.companyName) ? '' : client.companyName);\r\n formData.append('phone', client.phone);\r\n formData.append('email', client.email);\r\n formData.append('address', R.isNil(client.address) ? '' : client.address);\r\n formData.append('city', R.isNil(client.city) ? '' : client.city);\r\n formData.append('region', R.isNil(client.region) ? '' : client.region);\r\n formData.append('district', R.isNil(client.district) ? '' : client.district);\r\n formData.append('gdprAgreement', client.gdprAgreement ? 'true' : 'false');\r\n formData.append('bankAccount', client.bankAccount ? client.bankAccount : '');\r\n\r\n if (client.attachments.length !== 0) {\r\n formData.append('attachmentTypeId', client.attachments[0].attachmentTypeId.toString());\r\n formData.append('attachmentTypeCode', client.attachments[0].attachmentType!.code!);\r\n }\r\n client.attachments.forEach((attach) => {\r\n formData.append('files', attach.file);\r\n });\r\n\r\n return (\r\n await API.Post2Async(`${this.baseController}/CaseClient`, formData)\r\n ).data;\r\n }\r\n public async UpdateCaseClient(client: CaseClient): Promise {\r\n const formData = new FormData();\r\n formData.append('id', client.id.toString());\r\n formData.append('clientId', client.clientId.toString());\r\n formData.append('caseId', client.caseId.toString());\r\n formData.append('caseSectionStepFormId', client.caseSectionStepFormId.toString());\r\n\r\n formData.append('personTypeId', client.personTypeId!.toString());\r\n formData.append('companyNumber', client.companyNumber);\r\n formData.append('pin', R.isNil(client.pin) ? '' : client.pin);\r\n formData.append('lastName', R.isNil(client.lastName) ? '' : client.lastName);\r\n formData.append('firstName', R.isNil(client.firstName) ? '' : client.firstName);\r\n formData.append('contactPerson', client.contactPerson);\r\n formData.append('companyName', R.isNil(client.companyName) ? '' : client.companyName);\r\n formData.append('phone', client.phone);\r\n formData.append('email', client.email);\r\n formData.append('address', R.isNil(client.address) ? '' : client.address);\r\n formData.append('city', R.isNil(client.city) ? '' : client.city);\r\n formData.append('region', R.isNil(client.region) ? '' : client.region);\r\n formData.append('district', R.isNil(client.district) ? '' : client.district);\r\n formData.append('gdprAgreement', client.gdprAgreement ? 'true' : 'false');\r\n formData.append('bankAccount', client.bankAccount ? client.bankAccount : '');\r\n\r\n if (client.attachments.length !== 0) {\r\n formData.append('attachmentTypeId', client.attachments[0].attachmentTypeId.toString());\r\n formData.append('attachmentTypeCode', client.attachments[0].attachmentType!.code!);\r\n }\r\n client.attachments.forEach((attach) => {\r\n formData.append('files', attach.file);\r\n });\r\n\r\n await API.PutAsync(`${this.baseController}/CaseClient`, formData);\r\n }\r\n\r\n public async GetCaseCalculationHistories(caseId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${caseId}/casecalculations`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetAdminCaseCalculationHistories(caseId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${caseId}/adminCasecalculations`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCaseCalculationHistoryDetails(\r\n calculationHistoryId: number\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/casecalculation/${calculationHistoryId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCaseCalculationReport(caseId: number, calculationId: number): Promise {\r\n return (\r\n await API.GetFileAsync(\r\n `${this.baseController}/${caseId}/calculationreport/${calculationId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCaseCalculationXML(caseId: number, calculationId: number): Promise {\r\n return (\r\n await API.GetFileAsync(\r\n `${this.baseController}/${caseId}/calculationXML/${calculationId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCalculationSections(): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/referential/calculationSection`)\r\n ).data;\r\n }\r\n\r\n public async GetCaseCalculationParts(\r\n calculationHistoryId: number\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/CaseCalculationPart/list/${calculationHistoryId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddCaseCalculationPart(\r\n caseCalculationPart: CaseCalculationPart\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/CaseCalculationPart`,\r\n caseCalculationPart\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateCaseCalculationPart(caseCalculationPart: CaseCalculationPart): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/CaseCalculationPart`,\r\n caseCalculationPart\r\n );\r\n }\r\n\r\n public async UpdateCaseCalculationParts(\r\n caseCalculationParts: CaseCalculationPart[],\r\n comment: string,\r\n offerNumber: string,\r\n calculationId: number,\r\n partsLocationOrganizationId: number | null,\r\n partsOrganizationId: number | null,\r\n organizationId: number | null,\r\n organizationName: string | null,\r\n isUpdate: boolean,\r\n manipulationPercent: number,\r\n additionInsurer: number | null,\r\n formId: number,\r\n interogatePartner: boolean\r\n ): Promise {\r\n await API.PutAsync<{\r\n parts: CaseCalculationPart[];\r\n comment: string;\r\n offerNumber: string;\r\n partsLocationOrganizationId: number | null;\r\n partsOrganizationId: number | null;\r\n organizationId: number | null;\r\n organizationName: string | null;\r\n isUpdate: boolean;\r\n manipulationPercent: number;\r\n additionInsurer: number | null;\r\n formId: number;\r\n interogatePartner: boolean;\r\n }>(`${this.baseController}/calculation/${calculationId}/calculationParts`, {\r\n parts: caseCalculationParts,\r\n comment: comment,\r\n offerNumber: offerNumber,\r\n partsLocationOrganizationId: partsLocationOrganizationId,\r\n partsOrganizationId: partsOrganizationId,\r\n organizationId: organizationId,\r\n organizationName: organizationName,\r\n isUpdate: isUpdate,\r\n manipulationPercent: manipulationPercent,\r\n additionInsurer: additionInsurer,\r\n formId: formId,\r\n interogatePartner: interogatePartner\r\n });\r\n }\r\n\r\n public async RemoveCaseCalculationPart(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/CaseCalculationPart/${id}`)).data;\r\n }\r\n\r\n public async SubmitForm(\r\n caseId: number,\r\n formId: number,\r\n assignedTo: AppUser | null\r\n ): Promise {\r\n let assigned = {};\r\n\r\n if (assignedTo !== null) {\r\n assigned = {\r\n userId: assignedTo.id,\r\n organizationId: assignedTo.organizationId,\r\n hoId: assignedTo.hoId === null ? assignedTo.id : assignedTo.hoId\r\n };\r\n } else {\r\n assigned = {\r\n userId: '',\r\n organizationId: null,\r\n hoId: null\r\n };\r\n }\r\n\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/${caseId}/submitForm/${formId}`,\r\n assigned\r\n )\r\n ).data;\r\n }\r\n\r\n public async InterogateCaseCalculationsAlternativeParts(\r\n originalPartId: number,\r\n partNUmber: string,\r\n addition: number,\r\n discount: number,\r\n workflowId: number,\r\n organizationId?: number | null\r\n ): Promise {\r\n const organizationIdParam = organizationId ? `/${organizationId}` : '';\r\n const url =\r\n `${this.baseController}/alternativeParts/${encodeURIComponent(\r\n partNUmber\r\n )}/${originalPartId}/${addition}/${discount}/${workflowId}` + organizationIdParam;\r\n return (await API.GetAsync(url)).data;\r\n }\r\n\r\n public async InterogateCaseCalculationsAlternativePartsBySupplier(\r\n originalPartId: number,\r\n partNumber: string,\r\n addition: number,\r\n discount: number,\r\n workflowId: number,\r\n supplierId: number,\r\n organizationId?: number | null\r\n ): Promise {\r\n const organizationIdParam = organizationId ? `/${organizationId}` : '';\r\n const url =\r\n `${this.baseController}/supplierAlternativeParts/${encodeURIComponent(\r\n partNumber\r\n )}/${originalPartId}/${addition}/${discount}/${workflowId}/${supplierId}` + organizationIdParam;\r\n return (await API.GetAsync(url)).data;\r\n }\r\n\r\n public async SetCaseNotNew(\r\n caseId: number,\r\n caseCalculationHistId: number,\r\n moveToTasks: boolean,\r\n moveToViewed: boolean,\r\n notNew: boolean\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/${caseId}/IsNotNew/${caseCalculationHistId}?moveToTasks=${moveToTasks}&moveToViewed=${moveToViewed}¬New=${notNew}`,\r\n null\r\n );\r\n }\r\n\r\n public async GetTaskList(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/usertasks`)).data;\r\n }\r\n\r\n public async RemoveUserTask(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/usertask/${id}`)).data;\r\n }\r\n\r\n public async GetUserComments(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/usercomments`)).data;\r\n }\r\n\r\n public async RemoveUserComment(id: number, addtask: boolean): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/usercomment/${id}/${addtask}`))\r\n .data;\r\n }\r\n public async GetClientOffers(caseId: number, vehicleId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/ClientOffers/${caseId}/${vehicleId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async BuildFilledInEmailTemplate(\r\n id: number,\r\n formId: number,\r\n assignedTo: AppUser | null\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/${id}/fillInEmailTemplate/${formId}`,\r\n {\r\n assignedTo\r\n }\r\n )\r\n ).data;\r\n }\r\n\r\n public async SendConfirmedOrderNotification(caseId: number, orderId: number): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/${caseId}/${orderId}/sendOrderNotification`,\r\n null\r\n )\r\n ).data;\r\n }\r\n\r\n public async SyncUndocumentedModels(): Promise {\r\n await API.PostAsync(`${this.baseController}/syncUndocumentedModels`, {});\r\n }\r\n\r\n public async GetCarUndocumentedModelsByBrand(brandId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/undocumentedModel/list/${brandId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCarExceptions(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/Referential/CarException`))\r\n .data;\r\n }\r\n\r\n public async AddCarException(carException: CarException): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/Referential/CarException`,\r\n carException\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateCarException(carException: CarException): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/Referential/CarException`,\r\n carException\r\n );\r\n }\r\n\r\n public async RemoveCarException(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/Referential/CarException/${id}`))\r\n .data;\r\n }\r\n\r\n public async CarExceptionSearch(vin: string, plateNumber: string): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/CarExceptions/search?vin=${R.isNil(vin) ? '' : vin}&platenumber=${\r\n R.isNil(plateNumber) ? '' : plateNumber\r\n }`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCarClassRentPrices(): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/CarClassRentPrice/list`)\r\n ).data;\r\n }\r\n\r\n public async AddCarClassRentPrice(\r\n carClassRentPrice: CarClassRentPrice\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/CarClassRentPrice`,\r\n carClassRentPrice\r\n )\r\n ).data;\r\n }\r\n\r\n public async RemoveCarClassRentPrice(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/CarClassRentPrice/${id}`)).data;\r\n }\r\n\r\n public async UpdateCarClassRentPrice(carClassRentPrice: CarClassRentPrice): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/CarClassRentPrice`,\r\n carClassRentPrice\r\n );\r\n }\r\n\r\n public async GetCarClassRentPriceByClassId(classId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/CarClassRentPrice/list/${classId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetBestOffer(offer: Offer): Promise {\r\n return (await API.PostAsync(`${this.baseController}/getBestOffer`, offer)).data;\r\n }\r\n\r\n public async GetCaseBillingReport(billingFilters: BillingFilters): Promise {\r\n return (\r\n await API.PostFileAsync(\r\n `${this.baseController}/getCaseReportExcel`,\r\n billingFilters\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCaseBillingReportDgpciRequest(\r\n dgpciBillingFilters: DgpciBillingFilters\r\n ): Promise {\r\n return (\r\n await API.PostFileAsync(\r\n `${this.baseController}/DGPCI/getVinRequestReportExcel`,\r\n dgpciBillingFilters\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetVinByPlateNumberRequest(payload: PlateNumber): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/DGPCI/getVin`,\r\n payload\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetValuationVehicle(vehicleId: number): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/valuationVehicle/${vehicleId}`)\r\n ).data;\r\n }\r\n\r\n public async UpdateCalculationPartsAndCasePartToBeOrdered(\r\n caseCalculationParts: CaseCalculationPart[],\r\n comment: string,\r\n offerNumber: string,\r\n calculationId: number,\r\n partsLocationOrganizationId: number | null,\r\n partsOrganizationId: number | null,\r\n organizationId: number | null,\r\n organizationName: string | null\r\n ): Promise {\r\n await API.PutAsync<{\r\n parts: CaseCalculationPart[];\r\n comment: string;\r\n offerNumber: string;\r\n partsLocationOrganizationId: number | null;\r\n partsOrganizationId: number | null;\r\n organizationId: number | null;\r\n organizationName: string | null;\r\n }>(`${this.baseController}/calculation/${calculationId}/calculationParts-partToBeOrdered`, {\r\n parts: caseCalculationParts,\r\n comment: comment,\r\n offerNumber: offerNumber,\r\n partsLocationOrganizationId: partsLocationOrganizationId,\r\n partsOrganizationId: partsOrganizationId,\r\n organizationId: organizationId,\r\n organizationName: organizationName\r\n });\r\n }\r\n\r\n public async GetLatestCaseVehicleHistory(vin: string): Promise {\r\n return (await API.GetAsync(`${this.baseController}/latest-vehicle/${vin}`))\r\n .data;\r\n }\r\n\r\n public async PrcClaimService(request: ClaimServiceRequest): Promise {\r\n return (await API.PostAsync(`${this.baseController}/prc/claimService`, request)).data;\r\n }\r\n\r\n public async CalculationDifferences(\r\n request: CalculationDifferencesRequest\r\n ): Promise {\r\n return (await API.PostAsync(`${this.baseController}/prc/calculationDifferences`, request))\r\n .data;\r\n }\r\n\r\n public async PrcClaimServiceCalculation(\r\n request: ClaimServiceCalculationRequest\r\n ): Promise {\r\n return (await API.PostAsync(`${this.baseController}/prc/claimServiceCalculation`, request))\r\n .data;\r\n }\r\n\r\n public async PrcClaimStatus(request: ClaimStatusRequest): Promise {\r\n return (await API.PostAsync(`${this.baseController}/prc/claimStatus`, request)).data;\r\n }\r\n\r\n public async PrcClaimServiceAlternativeCalculation(\r\n request: ClaimServiceAlternativeCalculationRequest\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/prc/claimServiceAlternativeCalculation`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async MaintenanceCupiOptionalPartList(): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/MaintenanceCupiOptionalPart`\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddMaintenanceCupiOptionalPart(\r\n maintenanceCupiOptionalPart: MaintenanceCupiOptionalPart\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/MaintenanceCupiOptionalPart`,\r\n maintenanceCupiOptionalPart\r\n )\r\n ).data;\r\n }\r\n\r\n public async RemoveMaintenanceCupiOptionalPart(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/MaintenanceCupiOptionalPart/${id}`))\r\n .data;\r\n }\r\n\r\n public async UpdateMaintenanceCupiOptionalPart(\r\n maintenanceCupiOptionalPart: MaintenanceCupiOptionalPart\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/MaintenanceCupiOptionalPart`,\r\n maintenanceCupiOptionalPart\r\n );\r\n }\r\n\r\n public async GetModelList(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/Model/list`)).data;\r\n }\r\n\r\n public async UpdateCarClassModel(model: Model): Promise {\r\n await API.PutAsync(`${this.baseController}/Model`, model);\r\n }\r\n\r\n public async FleetSearchVehicle(vin: string, modelId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/fleet/search-vehicle?vin=${\r\n R.isNil(vin) ? '' : vin\r\n }&modelId=${modelId}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetManipulationPercent(\r\n calculationRequest: CalculationRequest\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/calculation/manipulation-percent`,\r\n calculationRequest\r\n )\r\n ).data;\r\n }\r\n\r\n public async CarfixAlternativeCalculation(\r\n request: CarfixAlternativeCalculationRequest\r\n ): Promise {\r\n return (\r\n await API.PostAsync(`${this.baseController}/carfix/alternativeCalculation`, request)\r\n ).data;\r\n }\r\n\r\n public async CarfixAttachmentNotification(\r\n request: CarfixAttachmentNotificationRequest\r\n ): Promise {\r\n return (\r\n await API.PostAsync(`${this.baseController}/carfix/attachmentNotification`, request)\r\n ).data;\r\n }\r\n\r\n public async AddCaseVehicleDetails(\r\n vehicleDetails: CaseVehicleDetails\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/vehicle-details`,\r\n vehicleDetails\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateCaseVehicleDetails(vehicleDetails: CaseVehicleDetails): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/vehicle-details`,\r\n vehicleDetails\r\n );\r\n }\r\n\r\n public async GetCurrentVehicleDetails(appointmentId: number): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/vehicle-details/${appointmentId}`)\r\n ).data;\r\n }\r\n\r\n public async GetTariffPercent(\r\n request: TariffPercentRequest\r\n ): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/calculation/tariff-value-percent`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async MaintenanceProducerList(): Promise {\r\n return (await API.GetAsync(`${this.baseController}/MaintenanceProducer`))\r\n .data;\r\n }\r\n public async AddMaintenanceProducer(\r\n maintenanceProducer: MaintenanceProducer\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/MaintenanceProducer`,\r\n maintenanceProducer\r\n )\r\n ).data;\r\n }\r\n public async RemoveMaintenanceProducer(id: number): Promise {\r\n return (await API.DeleteAsync(`${this.baseController}/MaintenanceProducer/${id}`)).data;\r\n }\r\n\r\n public async UpdateMaintenanceProducer(maintenanceProducer: MaintenanceProducer): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/MaintenanceProducer`,\r\n maintenanceProducer\r\n );\r\n }\r\n\r\n public async GetVehicleFromVQRepo(vin: string): Promise {\r\n return (await API.GetAsync(`${this.baseController}/vehicle/${vin}`)).data;\r\n }\r\n\r\n public async GetAppointmentByCaseId(caseId: number): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/appointmentByCaseId?caseId=${caseId}`)\r\n ).data;\r\n }\r\n\r\n public async GetAppointments(appoitmentFilters: AppointmentFilters): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/appointment`,\r\n appoitmentFilters\r\n )\r\n ).data;\r\n }\r\n\r\n public async SetAppointmentNotNew(\r\n appointmentId: number,\r\n appointmentStatusHistId: number,\r\n moveToViewed: boolean,\r\n notNew: boolean\r\n ): Promise {\r\n await API.PutAsync(\r\n `${this.baseController}/appointment/${appointmentId}/IsNotNew/${appointmentStatusHistId}?moveToViewed=${moveToViewed}¬New=${notNew}`,\r\n null\r\n );\r\n }\r\n\r\n public async GetGTWSBillingReport(gtWsBillingFilters: GTWSBillingFilters): Promise {\r\n return (\r\n await API.PostFileAsync(\r\n `${this.baseController}/getApiGTWSLogReportExcel`,\r\n gtWsBillingFilters\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetNonStockPartBillingReport(nonStockBillingFilters: NonStockBillingFilters): Promise {\r\n return (\r\n await API.PostFileAsync(\r\n `${this.baseController}/non-stock-part-report`,\r\n nonStockBillingFilters\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetLastApprovedCaseCalculationHistory(\r\n caseId: number,\r\n type: string\r\n ): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/lastcasecalculation/${caseId}/${type}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetAppointmentByType(\r\n caseId: number, \r\n appointmentCategoryTypeId: number\r\n ): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/appointment-by-type/${caseId}/${appointmentCategoryTypeId}`)\r\n ).data;\r\n }\r\n\r\n public async SetCarInService(\r\n caseId: number,\r\n carInService: boolean\r\n ): Promise {\r\n return (await API.PostAsync(\r\n `${this.baseController}/carInService/${caseId}?carInService=${carInService}`,\r\n {}\r\n )).data;\r\n }\r\n\r\n public async GetCaseAppointmentAttachments(\r\n caseId: number,\r\n appointmentId: number,\r\n types: string[]\r\n ): Promise {\r\n const idLIst = types.join(',');\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/${caseId}/${appointmentId}/caseAttachment/${idLIst}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async CreateAutomateAppointment(\r\n request: AutomateAppointmentRequest\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/automate-appointment`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetAcquisitionCases(\r\n request: AcquisitionCaseRequest\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/acquisition-case`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async ChangeCaseStatusBasedCode(request: ChangeCaseStatusBasedCodeRequest): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/change-status`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async GenerateSmartBillInvoice(request: GenerateInvoiceRequest): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/smartBill/generate-invoice`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetPartsHistoryInterogationReport(request: PartsHistoryInterogationRequest): Promise {\r\n return (\r\n await API.PostFileAsync(\r\n `${this.baseController}/calculation/parts-history-interogation`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateOrderInfo(request: UpdateOrderInfoRequest): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/update-order`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetAppointmentPaymentStatus(request: AppointmentPaymentStatusRequest): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/appointment/payment-status`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async SendVerifiedBySupplierOrderNotification(request: SendOrderNotificationRequest): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/send-order-notification`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetAppointmentAttachments(appointmentId: number, types: string[]): Promise {\r\n const idLIst = types.join(',');\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/attachment/appointment/${appointmentId}/${idLIst}`\r\n )\r\n ).data;\r\n }\r\n\r\n \r\n\r\n public async GetAppointmentAttachmentsArchive(\r\n appointmentId: number,\r\n types: string[]\r\n ): Promise {\r\n const idLIst = types.join(',');\r\n return (\r\n await API.GetFileAsync(\r\n `${this.baseController}/attachment/appointment/archive/${appointmentId}/${idLIst}`\r\n )\r\n ).data;\r\n }\r\n\r\n public async SendAlternativeCalculation(\r\n request: SendAlternativeCalculationRequest\r\n ): Promise{\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/calculation/alternativeCalculation`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async AddNonStockPart(\r\n request: NonStockPart\r\n ): Promise {\r\n return (\r\n await API.PostAsync(\r\n `${this.baseController}/NonStockPart`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetModelById(modelId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/modelById/${modelId}`)).data;\r\n }\r\n\r\n public async SendPartNotifySupport(request: PartNotifySuppportRequest): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/part/notify-support`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCaseInfoById(caseId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/byId/${caseId}`)).data;\r\n }\r\n\r\n public async SendGeneralNotifySupport(request: GeneralNotifySupportRequest): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/general/notify-support`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async SendNotifySupport(request: NotifySupportRequest): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/notify-support`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetCaseCommentsByTab(caseId: number, isSupportTab: boolean): Promise {\r\n return (await API.GetAsync(`${this.baseController}/caseComment/${caseId}/${isSupportTab}`))\r\n .data;\r\n }\r\n\r\n public async GetNewBillingReport(request: NewBillingReportFilters): Promise {\r\n return (\r\n await API.PostFileAsync(\r\n `${this.baseController}/case-billing-report`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetAttachmentTypeByCode(code: string): Promise {\r\n return (await API.GetAsync(`${this.baseController}/attachmentType/${code}`)).data;\r\n }\r\n}\r\n","import { API } from '../helpers/API';\r\nimport { IGtService } from './Interfaces/IGtService';\r\nimport { VinDecodeResponse } from '../interfaces/Case';\r\n\r\nexport class GtService implements IGtService {\r\n private baseController = '/case';\r\n\r\n public async DecodeVin(vin: string): Promise {\r\n return (await API.GetAsync(`${this.baseController}/decodevin/${vin}`)).data;\r\n }\r\n}\r\n","import { IOrganizationService } from '../services/Interfaces/IOrganizationService';\r\nimport { OrganizationType } from '../interfaces/Organization';\r\nimport { ICaseSettingsService } from './Interfaces/ICaseSettingsService';\r\nimport { CaseSettings } from '../interfaces/CaseSettings';\r\nimport { IWorkflowService } from './Interfaces/IWorkflowService';\r\nimport { Workflow } from '../interfaces/Workflow';\r\nimport { OrganizationService } from './OrganizationService';\r\nimport { isNullOrUndefined } from 'util';\r\nimport Referentials from '../helpers/Referentials.json';\r\nimport { ReferentialCode } from '../helpers/Constants';\r\nimport { IReferentialService } from '../services/Interfaces/IReferentialService';\r\nimport { ReferentialService } from './ReferentialService';\r\n\r\nexport class CaseSettingsService implements ICaseSettingsService {\r\n private workflowService: IWorkflowService;\r\n private organizationService: IOrganizationService;\r\n private appReferentialService: IReferentialService;\r\n private baseController = '/case';\r\n\r\n constructor(\r\n workflowService: IWorkflowService,\r\n organizationService: OrganizationService,\r\n appReferentialService: ReferentialService\r\n ) {\r\n this.workflowService = workflowService;\r\n this.organizationService = organizationService;\r\n this.appReferentialService = appReferentialService;\r\n }\r\n\r\n public async GetCaseSettings(workflowId: number): Promise {\r\n const ref = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.CompanyParameter\r\n );\r\n const orgTypeRef = Referentials.referential.find(\r\n (item) => item.code === ReferentialCode.OrganizationType\r\n );\r\n const [workflow, parameterList, orgTypes] = await Promise.all([\r\n this.workflowService.GetWorkflowSettings(workflowId),\r\n this.appReferentialService.Get(ref!.baseUrl),\r\n this.appReferentialService.Get(orgTypeRef!.baseUrl)\r\n ]);\r\n\r\n if (isNullOrUndefined(workflow as Workflow)) {\r\n return null;\r\n }\r\n const orgIds = workflow.workflowPartners.map((item) => item.partnerId);\r\n orgIds.push(workflow.organizationOwnerId);\r\n\r\n const [partners] = await Promise.all([\r\n this.organizationService.GetUserOrganizationsByIds(Array.from(new Set(orgIds)))\r\n ]);\r\n\r\n workflow.workflowPartners.forEach((wpItem) => {\r\n const partner = partners.find((item) => item.id === wpItem.partnerId);\r\n wpItem.partner = isNullOrUndefined(partner) ? null : partner;\r\n const orgType = orgTypes.find((item) => item.id === wpItem.partner!.organizationTypeId);\r\n wpItem.partner!.organizationType = (isNullOrUndefined(orgType)\r\n ? null\r\n : orgType) as any as OrganizationType;\r\n });\r\n\r\n workflow.workflowParameters.forEach((item) => {\r\n const param = parameterList.find((par) => par.id === item.parameterId);\r\n item.parameter = isNullOrUndefined(param) ? null : param;\r\n });\r\n\r\n const orgOwner = partners.find((item) => item.id === workflow.organizationOwnerId);\r\n workflow.organizationOwner = isNullOrUndefined(orgOwner) ? null : orgOwner;\r\n\r\n const caseSettings = {\r\n workflow: { ...workflow }\r\n } as CaseSettings;\r\n\r\n return caseSettings;\r\n }\r\n}\r\n","import { IDashboardService } from './Interfaces/IDashboardService';\r\nimport {\r\n IDashboardFilters,\r\n IDashboardChart,\r\n IDashboardCostsStructure\r\n} from '../interfaces/Dashboard';\r\nimport { Case } from '../interfaces/Case';\r\n\r\nexport class DashboardService implements IDashboardService {\r\n private baseController = '/dashboard';\r\n\r\n async GetDashboardOriginalCalc(Filters: IDashboardFilters): Promise {\r\n return 3000;\r\n }\r\n\r\n async GetDashboardAlternativeCalc(Filters: IDashboardFilters): Promise {\r\n return 4000;\r\n }\r\n\r\n async GetDashboardVinIdentifiersNumber(Filters: IDashboardFilters): Promise {\r\n return 5000;\r\n }\r\n\r\n async GetDashboardGTEstimateNumber(Filters: IDashboardFilters): Promise {\r\n return 6000;\r\n }\r\n\r\n async GetDashboardPiecesOrdersNumber(Filters: IDashboardFilters): Promise {\r\n return 7000;\r\n }\r\n\r\n async GetDashboardTotalCases(Filters: IDashboardFilters): Promise {\r\n return 8000;\r\n }\r\n\r\n async GetDashboardCostsStructure(\r\n Filters: IDashboardFilters\r\n ): Promise {\r\n const dashboardsCostsStructure = [\r\n { total: 200, closedCases: 30, openedCases: 40 }\r\n ] as IDashboardCostsStructure[];\r\n return dashboardsCostsStructure;\r\n }\r\n\r\n async GetDashboardCostOptimization(\r\n Filters: IDashboardFilters\r\n ): Promise {\r\n const dashboardsCostOptimization = [\r\n { total: 400, closedCases: 50, openedCases: 60 }\r\n ] as IDashboardCostsStructure[];\r\n return dashboardsCostOptimization;\r\n }\r\n\r\n async GetDashboardCasesAnalsysChartCaseOwner(\r\n Filters: IDashboardFilters\r\n ): Promise {\r\n const dashboardsCharts = [\r\n { displayName: 'Test1', value: 20 },\r\n { displayName: 'Test2', value: 30 }\r\n ] as IDashboardChart[];\r\n return dashboardsCharts;\r\n }\r\n\r\n async GetDashboardCasesAnalsysChartCaseType(\r\n Filters: IDashboardFilters\r\n ): Promise {\r\n const dashboardsCharts = [\r\n { displayName: 'Test3', value: 40 },\r\n { displayName: 'Test4', value: 50 }\r\n ] as IDashboardChart[];\r\n return dashboardsCharts;\r\n }\r\n\r\n async GetDashboardCasesAnalsysChartCaseStatus(\r\n Filters: IDashboardFilters\r\n ): Promise {\r\n const dashboardsCharts = [\r\n { displayName: 'Test5', value: 60 },\r\n { displayName: 'Test6', value: 70 }\r\n ] as IDashboardChart[];\r\n return dashboardsCharts;\r\n }\r\n\r\n async GetDashboardCostStructureChartCaseOwner(\r\n Filters: IDashboardFilters\r\n ): Promise {\r\n const dashboardsCharts = [\r\n { displayName: 'Test7', value: 44 },\r\n { displayName: 'Test8', value: 88 }\r\n ] as IDashboardChart[];\r\n return dashboardsCharts;\r\n }\r\n\r\n async GetDashboardCostStructureChartCostType(\r\n Filters: IDashboardFilters\r\n ): Promise {\r\n const dashboardsCharts = [\r\n { displayName: 'Test9', value: 75 },\r\n { displayName: 'Test10', value: 77 }\r\n ] as IDashboardChart[];\r\n return dashboardsCharts;\r\n }\r\n\r\n async GetDashboardCostStructureChartVehicleBrand(\r\n Filters: IDashboardFilters\r\n ): Promise {\r\n const dashboardsCharts = [\r\n { displayName: 'Test11', value: 33 },\r\n { displayName: 'Test12', value: 22 }\r\n ] as IDashboardChart[];\r\n return dashboardsCharts;\r\n }\r\n\r\n async GetDashboardCostOptimizationChartCaseOwner(\r\n Filters: IDashboardFilters\r\n ): Promise {\r\n const dashboardsCharts = [\r\n { displayName: 'Test13', value: 454 },\r\n { displayName: 'Test14', value: 848 }\r\n ] as IDashboardChart[];\r\n return dashboardsCharts;\r\n }\r\n\r\n async GetDashboardCostOptimizationChartCostType(\r\n Filters: IDashboardFilters\r\n ): Promise {\r\n const dashboardsCharts = [\r\n { displayName: 'Test15', value: 64 },\r\n { displayName: 'Test16', value: 34 }\r\n ] as IDashboardChart[];\r\n return dashboardsCharts;\r\n }\r\n\r\n async GetDashboardCostOptimizationChartVehicleBrand(\r\n Filters: IDashboardFilters\r\n ): Promise {\r\n const dashboardsCharts = [\r\n { displayName: 'Test17', value: 77 },\r\n { displayName: 'Test18', value: 90 }\r\n ] as IDashboardChart[];\r\n return dashboardsCharts;\r\n }\r\n\r\n async GetDashboardNewCases(Filters: IDashboardFilters): Promise {\r\n return [];\r\n }\r\n\r\n async GetDashboardUpdatedCases(Filters: IDashboardFilters): Promise {\r\n return [];\r\n }\r\n\r\n async GetDashboardWaitingCases(Filters: IDashboardFilters): Promise {\r\n return [];\r\n }\r\n\r\n async GetDashboardFilters(startDate: Date, endDate: Date): Promise {\r\n const dashboardFilters = {\r\n id: 1,\r\n dateFrom: startDate,\r\n dateTo: endDate,\r\n organizationIds: [34, 35, 36, 37, 38],\r\n casePartnerIds: [1, 34],\r\n caseStatusIds: [3],\r\n caseTypeIds: [1, 2]\r\n } as IDashboardFilters;\r\n return dashboardFilters;\r\n }\r\n}\r\n","import { IOrderService } from './Interfaces/IOrderService';\r\nimport {\r\n OrderFilters,\r\n OrderList,\r\n Order,\r\n OrderPart,\r\n PartToBeOrdered,\r\n OrderStatusHistory,\r\n OrderStatusChangeRequestDto,\r\n OrderFiltersResult,\r\n OrderPartsHistoryFilters,\r\n UpdateOrderAmountsRequestDto\r\n} from '../interfaces/Order';\r\nimport { API } from '../helpers/API';\r\nimport { isNullOrUndefined } from 'util';\r\nimport AutoOrderHistory from '../components/order-parts-history/OrderPartsHistory';\r\nimport { CreatePartsToBeOrderedRequest, DeletePartToBeOrderedRequestDto } from '../interfaces/Case';\r\n\r\nexport class OrderService implements IOrderService {\r\n private baseController = '/case';\r\n\r\n public async GetOrders(orderFilters: OrderFilters ): Promise {\r\n return (\r\n await API.Post2Async(`${this.baseController}/order`, orderFilters)\r\n ).data;\r\n }\r\n\r\n public async GetOrderFilters(orderFilter: OrderFilters): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/order/filters`,\r\n orderFilter\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetOrderParts(orderId: number | null): Promise {\r\n return (await API.GetAsync(`${this.baseController}/order/${orderId}/parts`)).data;\r\n }\r\n\r\n public async CreatePartsToBeOrdered(caseId: number | null, request: CreatePartsToBeOrderedRequest): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/${caseId}/CreatePartsToBeOrdered`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetOrdersWithParts(caseId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/${caseId}/ordersWithParts`)).data;\r\n }\r\n\r\n public async GetOrder(orderId: number, withParts: boolean): Promise {\r\n return (await API.GetAsync(`${this.baseController}/order/${orderId}/${withParts}`)).data;\r\n }\r\n\r\n public async GetOrderStatusHistories(orderId: number): Promise {\r\n return (\r\n await API.GetAsync(\r\n `${this.baseController}/order/${orderId}/statusHistories`\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetPartsToBeOrdered(caseId: number): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/${caseId}/partsToBeOrdered`)\r\n ).data;\r\n }\r\n\r\n public async UpdatePartToBeOrdered(item: PartToBeOrdered): Promise {\r\n await API.PutAsync(`${this.baseController}/PartToBeOrdered`, item);\r\n }\r\n\r\n public async CreateOrder(caseId: number, supplierId: number): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/${caseId}/order/${supplierId}`,\r\n null\r\n )\r\n ).data;\r\n }\r\n\r\n public async DeleteOrderPart(partId: number): Promise {\r\n await API.DeleteAsync(`${this.baseController}/order/part/${partId}`);\r\n }\r\n\r\n public async DeleteOrder(ordId: number): Promise {\r\n await API.DeleteAsync(`${this.baseController}/order/${ordId}`);\r\n }\r\n\r\n public async DeletePartToBeOrdered(partId: number): Promise {\r\n await API.DeleteAsync(`${this.baseController}/order/partToBeOrdered/${partId}`);\r\n }\r\n \r\n public async ChangeOrderPartStatus(partId: number, statusId: number): Promise {\r\n await API.PutAsync(`${this.baseController}/order/part/${partId}/status/${statusId}`, {});\r\n }\r\n\r\n public async ChangeOrderStatus(\r\n orderStatusChangeRequestDto: OrderStatusChangeRequestDto\r\n ): Promise {\r\n const formData = new FormData();\r\n\r\n formData.append('statusId', orderStatusChangeRequestDto.statusId.toString());\r\n formData.append('orderId', orderStatusChangeRequestDto.orderId.toString());\r\n formData.append('comment', orderStatusChangeRequestDto.comment);\r\n formData.append('workflowId', orderStatusChangeRequestDto.workflowId.toString());\r\n if (!isNullOrUndefined(orderStatusChangeRequestDto.partsLocationOrganizationId)) {\r\n formData.append(\r\n 'partsLocationOrganizationId',\r\n orderStatusChangeRequestDto.partsLocationOrganizationId?.toString()\r\n );\r\n }\r\n\r\n if (!isNullOrUndefined(orderStatusChangeRequestDto.partsOrganizationId)) {\r\n formData.append(\r\n 'partsOrganizationId',\r\n orderStatusChangeRequestDto.partsOrganizationId?.toString()\r\n );\r\n }\r\n\r\n if (orderStatusChangeRequestDto.attachments.length !== 0) {\r\n formData.append(\r\n 'attachmentTypeId',\r\n orderStatusChangeRequestDto.attachments[0].attachmentTypeId.toString()\r\n );\r\n formData.append(\r\n 'attachmentTypeCode',\r\n orderStatusChangeRequestDto.attachments[0].attachmentType!.code!\r\n );\r\n }\r\n orderStatusChangeRequestDto.attachments.forEach((attach) => {\r\n formData.append('files', attach.file);\r\n });\r\n\r\n await API.PutAsync(`${this.baseController}/order/status`, formData);\r\n }\r\n\r\n public async UpdateOrderPart(orderPart: OrderPart): Promise {\r\n await API.PutAsync(`${this.baseController}/orderPart`, orderPart);\r\n }\r\n\r\n public async GetOrderPartsHistory(orderPartsFilters: OrderPartsHistoryFilters): Promise{\r\n return (\r\n await API.PostFileAsync(\r\n `${this.baseController}/order/parts-history`,\r\n orderPartsFilters\r\n )\r\n ).data;\r\n }\r\n\r\n public async UpdateOrderAmounts(request: UpdateOrderAmountsRequestDto): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/order/update-amounts`,\r\n request\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetOrderWithVehicle(orderId: number): Promise {\r\n return (await API.GetAsync(`${this.baseController}/order/include-vehicle/${orderId}`)).data;\r\n }\r\n\r\n public async GetPartToBeOrdered(id: number): Promise {\r\n return (\r\n await API.GetAsync(`${this.baseController}/partToBeOrdered/${id}`)\r\n ).data;\r\n }\r\n\r\n public async DeleteCasePartTobeOrdered(request: DeletePartToBeOrderedRequestDto): Promise {\r\n return (\r\n await API.Post2Async(\r\n `${this.baseController}/partToBeOrdered/delete`,\r\n request\r\n )\r\n ).data;\r\n }\r\n}\r\n","import { ReportParameter } from '../interfaces/Reports';\r\nimport { IReportsService } from './Interfaces/IReportsService';\r\n\r\nimport { API } from '../helpers/API';\r\n\r\nexport class ReportsService implements IReportsService {\r\n private baseController = '/case';\r\n\r\n public async GetReport(code: string, parameters: ReportParameter[]): Promise {\r\n return (\r\n await API.PostFileAsync(\r\n `${this.baseController}/report/${code}`,\r\n parameters\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetInOutReport(\r\n code: string,\r\n caseId: number, \r\n appointmentId: number,\r\n parameters: ReportParameter[]): Promise {\r\n return (\r\n await API.PostFileAsync(\r\n `${this.baseController}/${caseId}/${appointmentId}/report/${code}`,\r\n parameters\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetInvoiceReport(code: string, caseId: number, parameters: ReportParameter[]): Promise {\r\n return (\r\n await API.PostFileAsync(\r\n `${this.baseController}/${caseId}/invoice/${code}`,\r\n parameters\r\n )\r\n ).data;\r\n }\r\n\r\n public async GetRepairReport(code: string, caseId: number, parameters: ReportParameter[]): Promise {\r\n return (\r\n await API.PostFileAsync(\r\n `${this.baseController}/${caseId}/repair/${code}`,\r\n parameters\r\n )\r\n ).data;\r\n }\r\n}\r\n","import { ITranslatorService } from './Interfaces/ITranslatorService';\r\nimport * as transRO from '../helpers/TransRO.json';\r\nimport * as transEN from '../helpers/TransEN.json';\r\nimport * as transNL from '../helpers/TransNL.json';\r\nimport * as transPL from '../helpers/TransPL.json';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { API } from '../helpers/API';\r\nimport { AxiosResponse } from 'axios';\r\n\r\nexport class TranslatorService implements ITranslatorService {\r\n private cookienName = '.AspNetCore.Culture';\r\n public language = '';\r\n private baseController = 'case/languages';\r\n\r\n private transRO: { [key: string]: string } = transRO.translation;\r\n private transEN: { [key: string]: string } = transEN.translation;\r\n private safetyLanguages: any = {\r\n ro: transRO.translation,\r\n en: transEN.translation,\r\n nl: transNL.translation,\r\n pl: transPL.translation\r\n };\r\n\r\n private localStorageLanguages = localStorage.getItem('languages');\r\n private languages: any =\r\n this.localStorageLanguages && JSON.parse(this.localStorageLanguages).length\r\n ? JSON.parse(this.localStorageLanguages).reduce((acc: any, language: any) => {\r\n acc[language.code] = JSON.parse(language.translations).translation;\r\n return acc;\r\n }, {})\r\n : this.safetyLanguages;\r\n private defaultLanguage = this.languages['ro'] ? 'ro' : 'en';\r\n\r\n public Tranlate(tag: string, defaulValue: string): string {\r\n if (this.language === '') {\r\n this.LoadLanguage();\r\n }\r\n\r\n let languagesCopy = this.languages;\r\n\r\n if (isNullOrUndefined(this.languages[this.language])) {\r\n languagesCopy = this.safetyLanguages;\r\n } else {\r\n languagesCopy = this.languages;\r\n }\r\n\r\n const transArray: { [key: string]: string } = languagesCopy[this.language];\r\n const value = transArray[tag];\r\n\r\n return value === null || value === undefined ? defaulValue : value;\r\n }\r\n\r\n TranslateSchema = (schema: any): any => {\r\n if (isNullOrUndefined(schema.properties)) {\r\n return schema;\r\n }\r\n\r\n for (const key of Object.keys(schema.properties)) {\r\n schema.properties[key].title = this.Tranlate(\r\n schema.properties[key].tag,\r\n schema.properties[key].title\r\n );\r\n }\r\n\r\n if (!isNullOrUndefined(schema.dependencies)) {\r\n for (const pKey of Object.keys(schema.dependencies)) {\r\n for (const pKey2 of Object.keys(schema.dependencies[pKey])) {\r\n for (const x in schema.dependencies[pKey][pKey2]) {\r\n for (const key of Object.keys(schema.dependencies[pKey][pKey2][x])) {\r\n for (const keyF of Object.keys(schema.dependencies[pKey][pKey2][x][key])) {\r\n schema.dependencies[pKey][pKey2][x][key][keyF].title = this.Tranlate(\r\n schema.dependencies[pKey][pKey2][x][key][keyF].tag,\r\n schema.dependencies[pKey][pKey2][x][key][keyF].title\r\n );\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return schema;\r\n };\r\n\r\n TranslateErrors = (errors: any): any => {\r\n return errors.map((error: any) => {\r\n if (error.name === 'minLength') {\r\n error.message = this.Tranlate('FRM_MIN_LENGTH_ERROR', error.message).replace(\r\n '{0}',\r\n error.params.limit\r\n );\r\n }\r\n if (error.name === 'maxLength') {\r\n error.message = this.Tranlate('FRM_MAX_LENGTH_ERROR', error.message).replace(\r\n '{0}',\r\n error.params.limit\r\n );\r\n }\r\n if (error.name === 'minimum') {\r\n error.message = this.Tranlate('FRM_MINIMUM_ERROR', error.message).replace(\r\n '{0}',\r\n error.params.limit\r\n );\r\n }\r\n if (error.name === 'maximum') {\r\n error.message = this.Tranlate('FRM_MAXIMUM_ERROR', error.message).replace(\r\n '{0}',\r\n error.params.limit\r\n );\r\n }\r\n if (error.name === 'required') {\r\n error.message = this.Tranlate('VALIDATORS_REQUIRED', 'Campul este obligatoriu');\r\n }\r\n return error;\r\n });\r\n };\r\n\r\n public GetLanguage(): string {\r\n return this.language;\r\n }\r\n\r\n public LoadLanguage(): void {\r\n this.language = this.defaultLanguage;\r\n const cookie = this.getCookie(this.cookienName);\r\n\r\n if (cookie !== '') {\r\n this.language = cookie.split('|')[0].split('=')[1];\r\n }\r\n\r\n localStorage.setItem('locale', this.language);\r\n }\r\n\r\n private getCookie(cname: string) {\r\n const name = cname + '=';\r\n const decodedCookie = decodeURIComponent(document.cookie);\r\n const ca = decodedCookie.split(';');\r\n let result = '';\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) === ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) === 0) {\r\n result = c.substring(name.length, c.length);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n public SetLanguage(language: string) {\r\n this.language = language;\r\n localStorage.setItem('locale', this.language);\r\n this.setCookie(this.cookienName, language);\r\n }\r\n\r\n public setCookie(cname: string, cvalue: string) {\r\n console.log(document);\r\n const value = `c=${cvalue}|uic=${cvalue}`;\r\n document.cookie = `${cname}= ${value};path=/; domain=.${document.domain.replace(\r\n /([a-zA-Z0-9]+.)/,\r\n ''\r\n )}`;\r\n }\r\n\r\n public async GetLanguagesList(): Promise {\r\n return await API.GetAsync(`${this.baseController}/list`);\r\n }\r\n\r\n public async GetLanguages(): Promise {\r\n try {\r\n const response = await API.GetAsync(`${this.baseController}/export`);\r\n localStorage.setItem('languages', JSON.stringify(response.data));\r\n return response;\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n public async ImportLanguage({ code }: { code: string }): Promise {\r\n return await API.PostAsync(`${this.baseController}/import`, { code });\r\n }\r\n\r\n public async UpdateLanguage({ code }: { code: string }): Promise {\r\n return await API.PutAsync(`${this.baseController}/update`, { code });\r\n }\r\n\r\n public async DeleteLanguage({ code }: { code: string }): Promise {\r\n return await API.DeleteAsync(`${this.baseController}/delete`, { code });\r\n }\r\n}\r\n","import React, { Fragment, useContext } from 'react';\r\n\r\nimport clsx from 'clsx';\r\n\r\nimport PerfectScrollbar from 'react-perfect-scrollbar';\r\nimport { Hidden, Drawer, Paper, SwipeableDrawer } from '@material-ui/core';\r\n\r\nimport { connect } from 'react-redux';\r\n\r\nimport SidebarHeader from '../../layout-components/SidebarHeader';\r\nimport SidebarUserbox from '../../layout-components/SidebarUserbox';\r\nimport SidebarMenu from '../../layout-components/SidebarMenu';\r\n// import SidebarFooter from '../../layout-components/SidebarFooter';\r\n\r\nimport navItems from './navItems';\r\nimport { ApplicationContext } from '../../context/Contexts';\r\nimport { ThemeActionCreators } from '../../store';\r\n// import {\r\n// setSidebarToggleMobile,\r\n// setSidebarHover,\r\n// setSidebarToggle,\r\n// setSidebarFooter,\r\n// setSidebarUserbox\r\n// } from '../../reducers/ThemeOptions';\r\n\r\nconst Sidebar = (props) => {\r\n const {\r\n setSidebarToggleMobile,\r\n sidebarToggleMobile,\r\n sidebarFixed,\r\n\r\n sidebarHover,\r\n // setSidebarHover,\r\n sidebarToggle,\r\n // sidebarUserbox,\r\n sidebarShadow,\r\n // sidebarFooter,\r\n appState\r\n } = props;\r\n\r\n const context = useContext(ApplicationContext);\r\n const translatorService = context.translatorService;\r\n\r\n // const toggleHoverOn = () => setSidebarHover(true);\r\n // const toggleHoverOff = () => setSidebarHover(false);\r\n\r\n if (appState.user === null) {\r\n return '';\r\n }\r\n\r\n const closeDrawer = () => setSidebarToggleMobile(!sidebarToggleMobile);\r\n\r\n const sidebarMenuContent = (\r\n \r\n {navItems.map((list) => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n const iOS = process.browser && /iPad|iPhone|iPod/.test(navigator.userAgent);\r\n return (\r\n \r\n \r\n {\r\n props.dispatch(ThemeActionCreators.setSidebarToggleMobile(false));\r\n }}\r\n onOpen={() => {\r\n props.dispatch(ThemeActionCreators.setSidebarToggleMobile(true));\r\n }}\r\n disableBackdropTransition={!iOS}\r\n disableDiscovery={iOS}\r\n BackdropProps={{ invisible: true }}\r\n disableSwipeToOpen={false}\r\n >\r\n \r\n \r\n {}\r\n {sidebarMenuContent}\r\n {/* {sidebarFooter && } */}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {appState.user !== null ? : null}\r\n {sidebarMenuContent}\r\n {/* {sidebarFooter && } */}\r\n \r\n \r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => ({\r\n sidebarFixed: state.themeOptions.sidebarFixed,\r\n headerFixed: state.themeOptions.headerFixed,\r\n sidebarToggle: state.themeOptions.sidebarToggle,\r\n sidebarHover: state.themeOptions.sidebarHover,\r\n sidebarShadow: state.themeOptions.sidebarShadow,\r\n // sidebarFooter: state.themeOptions.sidebarFooter,\r\n // sidebarUserbox: state.themeOptions.sidebarUserbox,\r\n sidebarToggleMobile: state.themeOptions.sidebarToggleMobile,\r\n appState: state.app\r\n});\r\n\r\n// const mapDispatchToProps = dispatch => ({\r\n// setSidebarToggleMobile: enable => dispatch(setSidebarToggleMobile(enable)),\r\n// setSidebarToggle: enable => dispatch(setSidebarToggle(enable)),\r\n// setSidebarHover: enable => dispatch(setSidebarHover(enable)),\r\n// setSidebarFooter: enable => dispatch(setSidebarFooter(enable)),\r\n// setSidebarUserbox: enable => dispatch(setSidebarUserbox(enable))\r\n// });\r\n\r\nexport default connect(mapStateToProps, null)(Sidebar);\r\n","import BarChartIcon from '@material-ui/icons/BarChart';\r\nimport CalendarTodayIcon from '@material-ui/icons/CalendarToday';\r\nimport ChatIcon from '@material-ui/icons/ChatOutlined';\r\nimport CodeIcon from '@material-ui/icons/Code';\r\nimport DashboardIcon from '@material-ui/icons/DashboardOutlined';\r\nimport ErrorIcon from '@material-ui/icons/ErrorOutline';\r\nimport FolderIcon from '@material-ui/icons/Folder';\r\nimport DashboardTwoToneIcon from '@material-ui/icons/DashboardTwoTone';\r\nimport GradeTwoTone from '@material-ui/icons/GradeTwoTone';\r\nimport ListAltIcon from '@material-ui/icons/ListAlt';\r\nimport LockOpenIcon from '@material-ui/icons/LockOpenOutlined';\r\nimport MailIcon from '@material-ui/icons/MailOutlined';\r\nimport PresentToAllIcon from '@material-ui/icons/PresentToAll';\r\nimport PeopleIcon from '@material-ui/icons/PeopleOutlined';\r\nimport PersonIcon from '@material-ui/icons/PersonOutlined';\r\nimport ReceiptIcon from '@material-ui/icons/ReceiptOutlined';\r\nimport SettingsIcon from '@material-ui/icons/SettingsOutlined';\r\nimport ViewModuleIcon from '@material-ui/icons/ViewModule';\r\nimport DescriptionIcon from '@material-ui/icons/Description';\r\n\r\nimport HomeIcon from '@material-ui/icons/Home';\r\nimport LocalShippingIcon from '@material-ui/icons/LocalShipping';\r\nimport DirectionsCarIcon from '@material-ui/icons/DirectionsCar';\r\nimport { RoleClaimsEnum } from './../../helpers/Constants';\r\nimport AirportShuttleIcon from '@material-ui/icons/AirportShuttle';\r\nimport BuildIcon from '@material-ui/icons/Build';\r\nimport CommuteOutlinedIcon from '@material-ui/icons/CommuteOutlined';\r\n\r\nvar iconsMap = {\r\n BarChartIcon: BarChartIcon,\r\n CalendarTodayIcon: CalendarTodayIcon,\r\n ChatIcon: ChatIcon,\r\n CodeIcon: CodeIcon,\r\n DashboardIcon: DashboardIcon,\r\n ErrorIcon: ErrorIcon,\r\n FolderIcon: FolderIcon,\r\n DashboardTwoToneIcon: DashboardTwoToneIcon,\r\n GradeTwoTone: GradeTwoTone,\r\n ListAltIcon: ListAltIcon,\r\n LockOpenIcon: LockOpenIcon,\r\n MailIcon: MailIcon,\r\n PresentToAllIcon: PresentToAllIcon,\r\n PeopleIcon: PeopleIcon,\r\n PersonIcon: PersonIcon,\r\n ReceiptIcon: ReceiptIcon,\r\n SettingsIcon: SettingsIcon,\r\n ViewModuleIcon: ViewModuleIcon,\r\n HomeIcon: HomeIcon,\r\n LocalShippingIcon: LocalShippingIcon,\r\n DescriptionIcon: DescriptionIcon,\r\n DirectionsCarIcon: DirectionsCarIcon,\r\n AirportShuttleIcon: AirportShuttleIcon,\r\n BuildIcon: BuildIcon,\r\n CommuteOutlinedIcon: CommuteOutlinedIcon\r\n};\r\n\r\nexport default [\r\n {\r\n label: ' ',\r\n content: JSON.parse(\r\n `[ \r\n {\r\n \"label\": \"Acasa\",\r\n \"tag\": \"MENU_HOME\",\r\n \"icon\": \"HomeIcon\",\r\n \"to\": \"/\",\r\n \"right\": \"${RoleClaimsEnum.Home}\"\r\n },\r\n {\r\n \"label\": \"Sample Page V3\",\r\n \"tag\": \"MENU_SAMPLEPAGEV3\",\r\n \"icon\": \"CommuteOutlinedIcon\",\r\n \"needToken\":\"true\",\r\n \"redirectTo\":\"${window.location.origin}/v3/sample-page?\",\r\n \"right\": \"${RoleClaimsEnum.SAMPLEPAGEV3}\"\r\n }, \r\n {\r\n \"label\": \"Dosar nou\",\r\n \"tag\": \"MENU_NEW_CASE\",\r\n \"icon\": \"DescriptionIcon\",\r\n \"to\": \"/newCase\",\r\n \"right\": \"${RoleClaimsEnum.NewCase}\"\r\n },\r\n {\r\n \"label\": \"Dashboards\",\r\n \"tag\": \"MENU_DASHBOARDS\",\r\n \"icon\": \"DashboardTwoToneIcon\",\r\n \"to\": \"/dashboards\",\r\n \"right\": \"${RoleClaimsEnum.Dashboard}\"\r\n },\r\n {\r\n \"label\": \"Dosare\",\r\n \"tag\": \"MENU_FILES\",\r\n \"icon\": \"FolderIcon\",\r\n \"to\": \"/cases\",\r\n \"right\": \"${RoleClaimsEnum.Case}\"\r\n },\r\n {\r\n \"label\": \"Evaluare\",\r\n \"tag\": \"EVALUATION\",\r\n \"icon\": \"FolderIcon\",\r\n \"to\": \"/valuation\",\r\n \"right\": \"${RoleClaimsEnum.Evaluation}\"\r\n },\r\n {\r\n \"label\": \"Agenda\",\r\n \"tag\": \"AGENDA\",\r\n \"icon\": \"CalendarTodayIcon\",\r\n \"to\": \"/agenda\",\r\n \"right\": \"${RoleClaimsEnum.Agenda}\"\r\n },\r\n {\r\n \"label\": \"Vehicles History\",\r\n \"tag\": \"MENU_HISTORY_VEHICLES\",\r\n \"icon\": \"FolderIcon\",\r\n \"to\": \"/vehicles-history\",\r\n \"right\": \"${RoleClaimsEnum.Vehicle}\"\r\n },\r\n {\r\n \"label\": \"Vehicles\",\r\n \"tag\": \"MENU_VEHICLES\",\r\n \"icon\": \"DirectionsCarIcon\",\r\n \"to\": \"/vehicles\",\r\n \"right\": \"${RoleClaimsEnum.Vehicle}\"\r\n },\r\n {\r\n \"label\": \"Comenzi\",\r\n \"tag\": \"MENU_ORDERS\",\r\n \"icon\": \"LocalShippingIcon\",\r\n \"to\": \"/orders\",\r\n \"right\": \"${RoleClaimsEnum.Order}\"\r\n },\r\n {\r\n \"label\": \"Istoric Comanda Auto\",\r\n \"tag\": \"MENU_ORDER_PARTS_HISTORY\",\r\n \"icon\": \"BuildIcon\",\r\n \"to\": \"/order-parts-history\",\r\n \"right\": \"${RoleClaimsEnum.Order}\"\r\n },\r\n {\r\n \"label\": \"Raportare\",\r\n \"tag\": \"MENU_BILLING\",\r\n \"icon\": \"FolderIcon\",\r\n \"to\": \"/billing\",\r\n \"right\": \"${RoleClaimsEnum.ManagerExport}\"\r\n },\r\n {\r\n \"label\": \"Raportare DGPCI\",\r\n \"tag\": \"MENU_BILLING_DGPCI\",\r\n \"icon\": \"FolderIcon\",\r\n \"to\": \"/billing-dgpci\",\r\n \"right\": \"${RoleClaimsEnum.ManagerExport}\"\r\n },\r\n {\r\n \"label\": \"Raportare WS\",\r\n \"tag\": \"MENU_BILLING_GT_WS\",\r\n \"icon\": \"FolderIcon\",\r\n \"to\": \"/billing-ws\",\r\n \"right\": \"${RoleClaimsEnum.ManagerExport}\"\r\n },\r\n {\r\n \"label\": \"Raportare Piese Non Stoc\",\r\n \"tag\": \"MENU_BILLING_NON_STOCK_PART\",\r\n \"icon\": \"FolderIcon\",\r\n \"to\": \"/billing-non-stock\",\r\n \"right\": \"${RoleClaimsEnum.ManagerExport}\"\r\n },\r\n {\r\n \"label\": \"Mavo Vehicles\",\r\n \"tag\": \"MENU_MAVO_VEHICLES_RECORD\",\r\n \"icon\": \"DirectionsCarIcon\",\r\n \"to\": \"/mavo-vehicles\",\r\n \"right\": \"${RoleClaimsEnum.MavoAdministrator}\"\r\n },\r\n {\r\n \"label\": \"Licitatii\",\r\n \"tag\": \"MENU_VO_AVAILABLE_AUCTIONS\",\r\n \"icon\": \"FolderIcon\",\r\n \"right\": \"${RoleClaimsEnum.MavoVehicle}\",\r\n \"rights\" : [\"${RoleClaimsEnum.MavoAgent}\", \"${RoleClaimsEnum.MavoAdministrator}\"],\r\n \"content\": [\r\n {\r\n \"label\": \"Licitatii active\",\r\n \"tag\": \"MENU_ACTIVE_AUCTIONS\",\r\n \"description\": \"Licitatii active\",\r\n \"to\": \"/auctions\",\r\n \"right\": \"${RoleClaimsEnum.MavoVehicle}\",\r\n \"rights\" : [\"${RoleClaimsEnum.MavoAgent}\", \"${RoleClaimsEnum.MavoAdministrator}\"]\r\n },\r\n {\r\n \"label\": \"Licitatiile mele\",\r\n \"tag\": \"MENU_USER_AUCTIONS\",\r\n \"description\": \"Licitatiile mele\",\r\n \"to\": \"/user/auctions\",\r\n \"right\": \"${RoleClaimsEnum.MavoVehicle}\",\r\n \"rights\" : [\"${RoleClaimsEnum.MavoAgent}\"]\r\n },\r\n {\r\n \"label\": \"Administrare licitatii\",\r\n \"tag\": \"MENU_ADMINISTRATION_AUCTIONS\",\r\n \"description\": \"Administrare licitatii\",\r\n \"to\": \"/admin/auctions\",\r\n \"right\": \"${RoleClaimsEnum.MavoAdministrator}\"\r\n }\r\n ]\r\n },\r\n {\r\n \"label\": \"Comenzi\",\r\n \"tag\": \"MENU_MAVO_ORDERS\",\r\n \"icon\": \"LocalShippingIcon\",\r\n \"to\": \"/mavo/orders\",\r\n \"right\": \"${RoleClaimsEnum.MavoVehicle}\",\r\n \"rights\" : [\"${RoleClaimsEnum.MavoAdministrator}\"]\r\n\r\n },\r\n {\r\n \"label\": \"Comenzile mele\",\r\n \"tag\": \"MENU_MAVO_USER_ORDERS\",\r\n \"icon\": \"LocalShippingIcon\",\r\n \"to\": \"/mavo/user/orders\",\r\n \"right\": \"${RoleClaimsEnum.MavoVehicle}\",\r\n \"rights\" : [\"${RoleClaimsEnum.MavoAgent}\"]\r\n\r\n },\r\n {\r\n \"label\": \"Istoric VO facturat\",\r\n \"tag\": \"MENU_VO_INVOICE_HISTORY\",\r\n \"icon\": \"FolderIcon\",\r\n \"to\": \"/invoice-history\",\r\n \"right\": \"${RoleClaimsEnum.MavoVehicle}\",\r\n \"rights\" : [\"${RoleClaimsEnum.MavoAgent}\", \"${RoleClaimsEnum.MavoAdministrator}\", \"${RoleClaimsEnum.MavoContab}\"]\r\n },\r\n {\r\n \"label\": \"Nomeclatoare\",\r\n \"tag\": \"MENU_NOMENCLATURES\",\r\n \"icon\": \"SettingsIcon\",\r\n \"right\": \"${RoleClaimsEnum.MavoAdministrator}\",\r\n \"rights\" : [\"${RoleClaimsEnum.MavoAdministrator}\", \"${RoleClaimsEnum.MavoContab}\"],\r\n \"content\": [\r\n {\r\n \"label\": \"Agent\",\r\n \"tag\": \"MENU_NOMENCLATURES_TAB_AGENT\",\r\n \"description\": \"Configurarea agentilor, a rolurilor si a permisiunilor.\",\r\n \"to\": \"/admin/mavo/users\",\r\n \"right\": \"${RoleClaimsEnum.MavoAdministrator}\"\r\n },\r\n {\r\n \"label\": \"Organizatii\",\r\n \"tag\": \"MENU_ADMIN_TAB_ORGANIZATIONS\",\r\n \"description\": \"Adaugarea, stergerea, editarea si configurarea unei organizatii.\",\r\n \"to\": \"/admin/mavo/hoorganizations\",\r\n \"right\": \"${RoleClaimsEnum.MavoAdministrator}\"\r\n },\r\n {\r\n \"label\": \"Versiune\",\r\n \"tag\": \"MENU_NOMENCLATURES_TAB_VERSION\",\r\n \"description\": \"Configurarea versiunilor\",\r\n \"to\": \"/nomenclature/version\",\r\n \"right\": \"${RoleClaimsEnum.MavoAdministrator}\"\r\n },\r\n {\r\n \"label\": \"Culori\",\r\n \"tag\": \"MENU_NOMENCLATURES_TAB_COLOR\",\r\n \"description\": \"Configurarea culorilor\",\r\n \"to\": \"/nomenclature/color\",\r\n \"right\": \"${RoleClaimsEnum.MavoAdministrator}\"\r\n },\r\n {\r\n \"label\": \"Caroserie\",\r\n \"tag\": \"MENU_NOMENCLATURES_TAB_BODY_TYPE\",\r\n \"description\": \"Configurarea caroseriei\",\r\n \"to\": \"/nomenclature/bodyType\",\r\n \"right\": \"${RoleClaimsEnum.MavoAdministrator}\"\r\n },\r\n {\r\n \"label\": \"Stare componente\",\r\n \"tag\": \"MENU_NOMENCLATURES_TAB_BODY_CONDITION_TYPE\",\r\n \"description\": \"Configurare tipuri de stari caroserie\",\r\n \"to\": \"/nomenclature/bodyConditionType\",\r\n \"right\": \"${RoleClaimsEnum.MavoAdministrator}\"\r\n },\r\n {\r\n \"label\": \"Stare roata\",\r\n \"tag\": \"MENU_NOMENCLATURES_TAB_WHEEL_CONDITION_TYPE\",\r\n \"description\": \"Configurare tipuri de stari roata\",\r\n \"to\": \"/nomenclature/wheelConditionType\",\r\n \"right\": \"${RoleClaimsEnum.MavoAdministrator}\"\r\n },\r\n {\r\n \"label\": \"Parametri financiari\",\r\n \"tag\": \"MENU_NOMENCLATURES_TAB_FINANCIAL_PARAMETERS\",\r\n \"description\": \"Configurare Parametrii financiari\",\r\n \"to\": \"/nomenclature/financial-parameter\",\r\n \"right\": \"${RoleClaimsEnum.MavoAdministrator}\"\r\n },\r\n {\r\n \"label\": \"Plaje avize/facturi\",\r\n \"tag\": \"MENU_NOMENCLATURES_TAB_INVOICE_RANGE\",\r\n \"description\": \"Configurare Plaje avize/facturi\",\r\n \"to\": \"/nomenclature/invoice-range\",\r\n \"right\": \"${RoleClaimsEnum.MavoAdministrator}\"\r\n },\r\n {\r\n \"label\": \"Provenienta\",\r\n \"tag\": \"MENU_NOMENCLATURES_TAB_PROVENANCE\",\r\n \"description\": \"Configurare Provenienta\",\r\n \"to\": \"/nomenclature/provenance\",\r\n \"right\": \"${RoleClaimsEnum.MavoAdministrator}\"\r\n },\r\n {\r\n \"label\": \"Curs valutar\",\r\n \"tag\": \"MENU_NOMENCLATURES_TAB_CURRENCY\",\r\n \"description\": \"Configurare Curs valutar\",\r\n \"to\": \"/nomenclature/currency\",\r\n \"right\": \"${RoleClaimsEnum.MavoAdministrator}\"\r\n },\r\n {\r\n \"label\": \"Erori\",\r\n \"tag\": \"MENU_NOMENCLATURES_TAB_ALCOR_ERROR\",\r\n \"description\": \"Alcor Error\",\r\n \"to\": \"/nomenclature/alcor-error-log\",\r\n \"right\": \"${RoleClaimsEnum.MavoVehicle}\",\r\n \"rights\" : [\"${RoleClaimsEnum.MavoAdministrator}\", \"${RoleClaimsEnum.MavoContab}\"]\r\n },\r\n {\r\n \"label\": \"Parametrare Alcor\",\r\n \"tag\": \"MENU_NOMENCLATURES_TAB_ALCOR_PARAMETERS\",\r\n \"description\": \"Parametrare Alcor\",\r\n \"to\": \"/nomenclature/alcor-parameters\",\r\n \"right\": \"${RoleClaimsEnum.MavoVehicle}\",\r\n \"rights\" : [\"${RoleClaimsEnum.MavoAdministrator}\", \"${RoleClaimsEnum.MavoContab}\"]\r\n },\r\n {\r\n \"label\": \"Date vanzator\",\r\n \"tag\": \"MENU_NOMENCLATURES_TAB_SELLER_DATA\",\r\n \"description\": \"Configurare date vanzator\",\r\n \"to\": \"/nomenclature/seller-data\",\r\n \"right\": \"${RoleClaimsEnum.MavoAdministrator}\"\r\n }\r\n ]\r\n },\r\n {\r\n \"label\": \"Admin\",\r\n \"tag\": \"MENU_ADMIN\",\r\n \"icon\": \"SettingsIcon\",\r\n \"right\": \"${RoleClaimsEnum.Admin}\",\r\n \"rights\" : [\"${RoleClaimsEnum.Admin}\", \"${RoleClaimsEnum.AdminCountryOrganization}\", \"${RoleClaimsEnum.AdminService}\"],\r\n \"content\": [\r\n {\r\n \"label\": \"Utilizatori\",\r\n \"tag\": \"MENU_ADMIN_TAB_USERS\",\r\n \"description\": \"Configurarea utilizatorilor, a rolurilor si a permisiunilor.\",\r\n \"to\": \"/admin/users\",\r\n \"right\": \"${RoleClaimsEnum.AdminUsers}\"\r\n },\r\n {\r\n \"label\": \"Liste de valori\",\r\n \"tag\": \"MENU_ADMIN_TAB_LIST_OF_VALUES\",\r\n \"description\": \"Adaugarea, stergerea si modificarea listelor de valori.\",\r\n \"to\": \"/admin/listOfValues\",\r\n \"right\": \"${RoleClaimsEnum.AdminValueList}\"\r\n },\r\n {\r\n \"label\": \"Alte liste de valori\",\r\n \"tag\": \"MENU_ADMIN_TAB_OTHER_LIST_OF_VALUES\",\r\n \"description\": \"Adaugarea, stergerea si modificarea altor listelor de valori.\",\r\n \"to\": \"/admin/otherListOfValues\",\r\n \"right\": \"${RoleClaimsEnum.AdminValueList}\"\r\n },\r\n {\r\n \"label\": \"Modele\",\r\n \"tag\": \"NOMENCLATURE_MODEL_LIST\",\r\n \"description\": \"Modele\",\r\n \"to\": \"/admin/model-car-class\",\r\n \"right\": \"${RoleClaimsEnum.AdminValueList}\"\r\n },\r\n {\r\n \"label\": \"Preturi inchiriere/zi\",\r\n \"tag\": \"CAR_CLASS_RENTAL_PRICE\",\r\n \"description\": \"Preturi inchiriere/zi\",\r\n \"to\": \"/admin/car-class-rent-price\",\r\n \"right\": \"${RoleClaimsEnum.Admin}\"\r\n },\r\n {\r\n \"label\": \"Cupi Piese Optionale Revizie\",\r\n \"tag\": \"MAINTENANCE_CUPI_PART_OPTIONAL\",\r\n \"description\": \"Cupi Piese Optionale Revizie\",\r\n \"to\": \"/admin/maintenance-cupi-part\",\r\n \"right\": \"${RoleClaimsEnum.AdminValueList}\"\r\n },\r\n {\r\n \"label\": \"Producatori Mentenanta\",\r\n \"tag\": \"MAINTENANCE_PRODUCER\",\r\n \"description\": \"Producatori Mentenanta\",\r\n \"to\": \"/admin/maintenance-producer\",\r\n \"right\": \"${RoleClaimsEnum.AdminValueList}\"\r\n },\r\n {\r\n \"label\": \"Tampon tari\",\r\n \"tag\": \"COUNTRY_BUFFER\",\r\n \"description\": \"Tampon tari\",\r\n \"to\": \"/admin/country-buffer\",\r\n \"right\": \"${RoleClaimsEnum.AdminValueList}\"\r\n },\r\n {\r\n \"label\": \"Email-uri support pe tara\",\r\n \"tag\": \"COUNTRY_SUPPORT\",\r\n \"description\": \"Email-uri support pe tara\",\r\n \"to\": \"/admin/country-support\",\r\n \"right\": \"${RoleClaimsEnum.AdminValueList}\"\r\n },\r\n {\r\n \"label\": \"XML\",\r\n \"tag\": \"MENU_ADMIN_TAB_XML\",\r\n \"description\": \"Download XML.\",\r\n \"to\": \"/admin/xml\",\r\n \"right\": \"${RoleClaimsEnum.Admin}\"\r\n },\r\n {\r\n \"label\": \"Organizatii\",\r\n \"tag\": \"MENU_ADMIN_TAB_ORGANIZATIONS\",\r\n \"description\": \"Adaugarea, stergerea, editarea si configurarea unei organizatii.\",\r\n \"to\": \"/admin/hoorganizations\",\r\n \"right\": \"${RoleClaimsEnum.AdminOrganization}\",\r\n \"rights\" : [\"${RoleClaimsEnum.AdminOrganization}\", \"${RoleClaimsEnum.AdminCountryOrganization}\"]\r\n }, \r\n {\r\n \"label\": \"Organizatia mea\",\r\n \"tag\": \"MENU_ADMIN_SERVICE_TAB_ORGANIZATIONS\",\r\n \"description\": \"Configurarea unei organizatii.\",\r\n \"to\": \"/admin/hoorganizations/\",\r\n \"right\": \"${RoleClaimsEnum.AdminService}\"\r\n },\r\n {\r\n \"label\": \"Poeditor\",\r\n \"tag\": \"MENU_ADMIN_TAB_POEDITOR\",\r\n \"description\": \"Poeditor\",\r\n \"to\": \"/admin/poeditor\",\r\n \"right\": \"${RoleClaimsEnum.Admin}\",\r\n \"rights\" : [\"${RoleClaimsEnum.Admin}\", \"${RoleClaimsEnum.AdminCountryOrganization}\"]\r\n }\r\n ]\r\n },\r\n {\r\n \"label\": \"Setari\",\r\n \"tag\": \"MENU_SETTINGS\",\r\n \"icon\": \"SettingsIcon\",\r\n \"right\": \"${RoleClaimsEnum.Settings}\",\r\n \"content\": [\r\n {\r\n \"label\": \"Interfete\",\r\n \"tag\": \"MENU_SETTINGS_TAB_INTERFACES\",\r\n \"description\": \"Configurarea utilizatorilor pentru interfetele organizatiei.\",\r\n \"to\": \"/settings/interfaces\",\r\n \"right\": \"${RoleClaimsEnum.Settings}\"\r\n }\r\n ]\r\n } \r\n]`,\r\n (key, value) => {\r\n if (key === 'icon') {\r\n return iconsMap[value];\r\n } else {\r\n return value;\r\n }\r\n }\r\n )\r\n }\r\n];\r\n"],"sourceRoot":""}