@senior-gestao-pessoas/payroll-core 9.4.0-af2cbed0-5ed8-4fa0-b302-d4f7bfe8c238 → 9.4.0-beccc0e0-72b8-4a99-8127-32ad8ca6ee41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/senior-gestao-pessoas-payroll-core.umd.js +0 -4
- package/bundles/senior-gestao-pessoas-payroll-core.umd.js.map +1 -1
- package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js +1 -1
- package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js.map +1 -1
- package/components/historical-pix-account/historical-pix-account.component.d.ts +0 -1
- package/esm2015/components/historical-pix-account/historical-pix-account.component.js +1 -5
- package/esm5/components/historical-pix-account/historical-pix-account.component.js +1 -5
- package/fesm2015/senior-gestao-pessoas-payroll-core.js +0 -4
- package/fesm2015/senior-gestao-pessoas-payroll-core.js.map +1 -1
- package/fesm5/senior-gestao-pessoas-payroll-core.js +0 -4
- package/fesm5/senior-gestao-pessoas-payroll-core.js.map +1 -1
- package/package.json +1 -1
- package/senior-gestao-pessoas-payroll-core.metadata.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","ng://@senior-gestao-pessoas/payroll-core/components/utils/cpf-validator.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/usingType.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/companyIndicationType.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/direction.enumeration.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/moduleType.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/operators.enumeration.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/comparetype.enumeration.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/serviceType.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/httpRequestType.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/report-format.enumeration.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/parameter-type.enumeration.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/menu-type.enumeration.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/report-stage.enumeration.ts","ng://@senior-gestao-pessoas/payroll-core/components/utils/cnpj-validator.ts","ng://@senior-gestao-pessoas/payroll-core/components/vanilla/string-methods.ts","ng://@senior-gestao-pessoas/payroll-core/components/block-ui/block-ui.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/block-ui/block-ui.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/breadcrumb/breadcrumb.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/shared/shared.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/breadcrumb/breadcrumb.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/control-messages-error/control-messages-error.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/control-messages-error/control-messages-error.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/custom-fields/custom-fields.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-date/input-date.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-date/input-date.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/custom-fields/custom-fields.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/directives/name-not-spaces.directive.ts","ng://@senior-gestao-pessoas/payroll-core/components/directives/only-number.directive.ts","ng://@senior-gestao-pessoas/payroll-core/components/directives/directives.module.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/coreFieldType.ts","ng://@senior-gestao-pessoas/payroll-core/components/data-list-rest/data-list-rest.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/data-list-rest/data-list-rest.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/data-list-rest/data-list-rest.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/employee-summary/employee-summary.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/employee-summary/employee-summary.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/employee-summary/employee-summary.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/admission-draft-summary/admission-draft-summary.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/admission-draft-summary/admission-draft-summary.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/admission-draft-summary/admission-draft-summary.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/error-page/error-page.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/error-page/error-page.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/field-validator/field-validator.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/field-validator/field-validator.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/toast/toast.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/shared/http-client.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/file-upload/file-upload.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/file-upload/file-upload.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/file-upload/file-upload.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/image-cropper/image-crop.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/image-cropper/image-crop.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/image-cropper/image-crop.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-date-model/input-date-model.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-date-model/input-date-model.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/utils/helpers.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete/input-rest-auto-complete.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete/input-rest-auto-complete.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete/input-rest-auto-complete.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-model/input-rest-auto-complete-model.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-model/input-rest-auto-complete-model.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-model/input-rest-auto-complete-model.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/list-rest/list-rest.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/list-rest/list-rest.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/list-rest/list-rest.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/spinner/spinner-loader.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/spinner/spinner-loader.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/type-admission/type-admission.services.ts","ng://@senior-gestao-pessoas/payroll-core/components/type-admission/type-admission.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/utils/validations.ts","ng://@senior-gestao-pessoas/payroll-core/services/company-indications.service.ts","ng://@senior-gestao-pessoas/payroll-core/services/integration.service.ts","ng://@senior-gestao-pessoas/payroll-core/services/lookup-parameters.service.ts","ng://@senior-gestao-pessoas/payroll-core/services/autocomplete-parameters.service.ts","ng://@senior-gestao-pessoas/payroll-core/services/report.service.ts","ng://@senior-gestao-pessoas/payroll-core/services/workflow-data.service.ts","ng://@senior-gestao-pessoas/payroll-core/services/form-comparator.service.ts","ng://@senior-gestao-pessoas/payroll-core/services/services.module.ts","ng://@senior-gestao-pessoas/payroll-core/services/permissions.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/toast/toast.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/toast/toast.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/data-list/data-list.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/data-list/data-list.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/data-list/data-list.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/lookup/lookup.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/lookup/lookup.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/lookup/lookup.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/workstationgroup-lookup/autocomplete.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/workstationgroup-lookup/lookup.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/workstationgroup-lookup/workstationgroup-lookup.dto.ts","ng://@senior-gestao-pessoas/payroll-core/components/workstationgroup-lookup/workstationgroup-lookup.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/workstationgroup-lookup/workstationgroup-lookup.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-bank-account/historical-bank-account.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-bank-account/historical-bank-account-form/historical-bank-account-form.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-bank-account/historical-bank-account.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-bank-account/historical-bank-account.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-bank-account-list/historical-bank-account-list.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-bank-account-list/historical-bank-account-list.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-bank-account-list/historical-bank-account-list.module.ts","ng://@senior-gestao-pessoas/payroll-core/core/entities/entity-odata-parameter.ts","ng://@senior-gestao-pessoas/payroll-core/components/utils/date-validator/date-validators.ts","ng://@senior-gestao-pessoas/payroll-core/services/workflow-integrator.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/employee-selector/employee-selector.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/employee-selector/employee-selector.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/from-to/from-to.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/from-to/from-to.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/utils/format-utils/format-utils.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-pix-account/historical-pix-account.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/utils/generic-validators.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-pix-account/historical-pix-account.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-pix-account/historical-pix-account.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-pix-account-list/historical-pix-account-list.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-pix-account-list/historical-pix-account-list.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-pix-account-list/historical-pix-account-list.module.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__values","o","m","__read","ar","error","__spread","concat","UsingType","CompanyIndicationType","DirectionEnumeration","ModuleType","Operators","CompareType","ServiceType","HttpRequestType","ReportFormat","ParameterType","MenuType","ReportStage","CPFValidator","calcChecker1","firstNineDigits","sum","j","toString","charAt","lastSumChecker1","calcChecker2","cpfWithChecker1","k","lastSumChecker2","checkCPF","cleanCPF","replace","substring","checker","Array","join","checker1","checker2","cpfValidator","CNPJValidator","checkCNPJ","cnpj","size","numbers","digits","pos","Number","cnpjValidator","StringMethods","addStringFormat","String","format","formatted","regexp","RegExp","stringMethods","BlockUiComponent","tslib_1.__decorate","Input","Component","selector","template","BlockUiModule","NgModule","imports","FormsModule","BlockUIModule","ProgressSpinnerModule","declarations","exports","BreadcrumbComponent","activatedRoute","router","translate","items","ngOnInit","_this","events","pipe","filter","event","NavigationEnd","subscribe","root","getBreadcrumbs","route","breadcrumbs","children","generateBreadcrumb","index","title","forEach","child","snapshot","data","map","val","breadcrumb","instant","name","queryParams","routerLink","getFormattedUrl","url","disabled","routerLinkActiveOptions","exact","keys","params","param","includes","parent","ActivatedRoute","Router","TranslateService","SharedModule","CommonModule","TranslateModule","BreadcrumbSDSModule","BreadcrumbModule","ControlMessagesErrorComponent","propertyName","control","errors","touched","dirty","errorList","ControlMessagesErrorModule","ReactiveFormsModule","CustomFieldsComponent","optionsBoolean","moment","_moment","InputDateComponent","localeService","unmask","onBlurGetMoment","EventEmitter","ngUnsubscribe","Subject","mask","get","takeUntil","loc","formatMask","setFormat","form","newDate","momentDate","setValue","_date","ngOnDestroy","complete","locale","dateMask","calendar","dateFormat","withoutDay","toUpperCase","onBlur","dateComponent","emit","dateComponet","_inputDateElement","LocaleService","ViewChild","static","Output","InputDateModule","InputMaskModule","CustomFieldsModule","InputTextModule","DropdownModule","providers","NameNotSpacesDirective","elementRef","el","nativeElement","cleanVar","clean","trim","ElementRef","HostListener","Directive","OnlyNumberDirective","onKeyDown","indexOf","keyCode","ctrlKey","metaKey","shiftKey","preventDefault","CoreDirectives","schemas","CoreFieldType","DataListRestService","http","getList","endpoint","post","HttpClient","Injectable","DataListRestComponent","dataListService","rows","paginator","first","alwaysShowPaginator","sortMode","responsive","scrollable","lazyLoad","loadingChange","listDataChange","selectedDataChange","headerCheckboxToggle","lazy","getlistData","getActions","actions","pagination","Math","floor","onLazyLoad","loading","multiSortMeta","orderBy","field","direction","order","ASC","DESC","onFilter","totalRecords","singularMessageRecords","pluralMessageRecords","offset","page","current","initParameters","_searchParameters","listData","keyPayload","countResult","onHeaderCheckboxToggle","getFieldValue","rowData","col","split","searchParameters","dataListTable","_loading","_listData","_selectedData","encapsulation","ViewEncapsulation","None","DataListRestModule","ButtonModule","LoadingStateModule","TableModule","TooltipModule","EmployeeSummaryService","employeeBasicInformations","findEmployee","path","employeeId","findEmployeeAutoComplete","terms","valueSearch","blobServiceRequestAccess","setEmployeeBasicInformations","getEmployeeBasicInformations","asObservable","moment_","EmployeeSummaryComponent","employeeService","timetrackingLabel","hireLabel","registerNumberLabel","ageLabel","loadingLabel","loadingDescription","isLoading","emploayeeData","jobPosition","getInformation","finalize","payload","timeTrackingResumeType","location","city","stateAbbreviation","hireDate","idPicture","request","fileId","ttl","thumbnail","imageData","photoSource","locationURI","EmployeeSummaryModule","ObjectCardModule","AdmissionDraftSummaryService","admissionDraftBasicInformations","findAdmissionDraft","draftId","id","setAdmissionDraftBasicInformations","draftBasicInformations","AdmissionDraftSummaryComponent","admissionDraftSummaryService","translateService","badgeText","documentNumberLabel","draftData","hiringDate","documentNumber","companyName","localeOfCompany","originDraftType","originType","attachment","AdmissionDraftSummaryModule","ErrorPageComponent","ErrorPageModule","FieldValidatorComponent","errorMessage","ngOnChanges","changes","inputErrors","currentValue","errorDefs","some","FieldValidatorModule","ToastService","messagesSubjectError","messagesSubjectSuccess","messagesSubjectWarning","showError","message","breakLine","showSuccess","showWarning","loadErrorMessages","loadSuccessMessages","loadWarningMessages","HttpClientService","messageService","query","service","PAYROLL","endpoit","catchError","exception","status","add","severity","summary","detail","sticky","throwError","enumQuery","server","action","recruitmentAction","getAutoComplete","entity","patch","put","delete","MessageService","FileUploadService","blobServiceRequestUpload","file","requestUpload","fileName","isImage","tll","blobServiceFileDelete","test","type","FileUploadComponent","toastService","files","onUploadFile","onRemoveFile","uploadHandler","observables","sort","countFiles","getFilesCountAndValidate","validateFileSize","saveFile","forkJoin","Observable","observable","response","doUpload","undefined","xhr","XMLHttpRequest","version","upload","addEventListener","evt","round","loaded","total","onreadystatechange","readyState","statusText","open","objectURL","setRequestHeader","send","onCancelUpload","splice","removeFile","FileUploadCoreModule","FileUploadModuleDeprecated","ImageCropService","saveImage","sourceImage","fileUpload","toPromise","_a","urltoFile","filename","mimeType","match","responseType","blob","Blob","getImage","buildUrl","resource","ImageCropComponent","imageCropService","onClickSave","defaulPerson","display","imageCrop","cropperSettings","CropperSettings","width","height","keepAspect","preserveSize","canvasWidth","canvasHeight","rounded","minWithRelativeToResolution","noFileInput","cropperDrawSettings","strokeColor","strokeWidth","personPhotoLink","onUploadHandler","$event","image","Image","myReader","FileReader","onloadend","loadEvent","src","cropper","setImage","readAsDataURL","personFirstName","showDialog","onHide","reset","fileImage_1","fetch","res","arrayBuffer","buf","File","deleteImage","ImageCropModule","DialogModule","FileUploadModule","ImageCropperModule","ThumbnailModule","ImageCropperService","InputDateModelComponent","modelChange","getFormat","model","isValid","_model","InputDateModelModule","momentImported","isObject","item","isArray","isShallow","find","isValidDate","withDays","isFullDate","totalLength","isDateField","search","invertFieldDate","inFormat","outFormat","formatIn","getFormatDate","getNowDate","getMoment","mountCustomToSave","objectFields","customFields","entries","_b","mountCustomToShow","customFieldsToShow","verifyValidationsForm","controls","markAsDirty","FormGroup","FormArray","setRequired","formGroup","required","validators","setValidators","Validators","compose","updateValueAndValidity","configEnabledFields","condition","fields","fieldsToClear","enable","disable","clearValues","setValidator","setDisableField","clearValue","compareValues","a","b","varA","varB","comparison","removeCharacteresSpecials","InputRestAutoCompleteService","InputRestAutoCompleteComponent","forceSelection","keyName","keyToExclude","usingType","minCharactersToSearch","multiple","serviceType","onSelect","onClear","suggestions","filterQuery","isNaN","isTimetrackingSituation","referenceDate","formaterResponce","isDismissalReason","GENERAL_REGISTER","searchText","isDepartmentFromCompany","companyId","isWagetype","ENTRY","getParamsRest","console","log","valsResult","valueConcat","tableId","fieldName","toLowerCase","code","fieldName_1","concatFieldsForName","slice","table","conditions","getConditionsRest","enableEntityFilters","conditiosReturn","conditionsFields","expression","selectOption","option","onClearItem","onBlurItem","isDropdown","onDropdownClick","_autoCompleteObject","InputRestAutoCompleteModule","HttpClientModule","AutoCompleteModule","InputRestAutoCompleteEmployeeService","InputRestAutoCompleteEmployeeComponent","fullname","admission","document","returnFilter","company","branch","employeeType","otherContractType","filterEmployeeType","InputRestAutoCompleteEmployeeModule","InputRestAutoCompleteEmployeeModelService","InputRestAutoCompleteEmployeeModelComponent","useWorkflow","InputRestAutoCompleteEmployeeModelModule","InputRestAutoCompleteEnumService","enumeration","names","InputRestAutoCompleteEnumComponent","keyToKeep","results","record","_autoCompleteObjectEl","InputRestAutoCompleteEnumModule","InputRestAutoCompleteModelService","InputRestAutoCompleteModelComponent","keysToExclude","onFocus","wagetypeReferenceDates","onFocusItem","InputRestAutoCompleteModelModule","InputRestAutoCompleteModelEnumService","InputRestAutoCompleteModelEnumComponent","InputRestAutoCompleteModelEnumModule","InputRestAutoCompleteJobpositionService","InputRestAutoCompleteJobpositionComponent","formaterResponse","creationDate","expirationDate","jobpositionsFilter","replaceArray","ignoredJobpositions","InputRestAutoCompleteJobpositionModule","ListRestService","queryEntity","ListRestComponent","onLoadPayload","loadedList","reload","args","isEntity","urlRest","onResponseQuery","filterValues","bind","scope","totalElements","onHandlePage","currentPage","getRowActions","getRowActionsFun","handleClickActions","button","containerViewChild","getElementsByClassName","click","ListRestModule","SplitButtonModule","SpinnerLoaderComponent","SpinnerLoaderModule","TypeAdmissionServices","contractNationality","contractType","setCompany","getCompanyId","setContractNationality","isBrazilianAdmission","abbreviation","isBrazilAndforeignContract","isForeignAdmission","isForeignAndforeignContract","isBrazilianCompany","isNationalContract","getCountryID","getCurrency","currency","getStructureID","structure","setContractType","TypeAdmissionModule","isNumber","notEmpty","numberOrZero","parseInt","CompanyIndicationsService","companyUseWorkstationGroupSubject","getCompanyIndications","companyIndicationTypes","companyIndicationType","setCompanyUseWorkstationGroup","indication","setStructure","getStructure","getCompanyUseWorkstationGroup","setUseWorkstationGroup","useIndication","useWorkstationGroup","getUseWorkstationGroup","IntegrationService","hasModule","module","LookupParametersService","_httpParams","HttpParams","lookupRequestPost","httpPostParams","concatFields","lookupDisplayField","postConfigPageSize","postDataLookup","lookupRequest","searchLookupFields","searchFields","concatOtherFields","parameters","generateLookupParameters","configHttpParamsPagination","configHttpParamsOrderBy","getDataLookup","searchRequest","generateGridParameters","filterData","getUrlDataLookup","httpParams","contents","convertGridFieldValue","generateDisplayFieldValue","postUrlDataLookup","convertLookupFieldValue","content","FieldType","Date","Enum","enumValue","options","contentValue","displayField","fieldValue","lookupParameters","lookupField","searchField","getParameterByType","parameter","set","gridParameters","attribute","Integer","Autocomplete","orderBy_1","providedIn","AutocompleteParametersService","httpClienteService","codeIsString","getParams","getAutoCompleteQuery","filterQueryString","filterSearchField","operatorsQuery","searchValue","getParameterBySearchType","getSearchFilterString","valueFilterSearch","searchFilter","tslib_1.__values","_c","_d","hasQuote","ENDPOINTS","ReportService","findReportsByName","reports","findReportByName","filtered","report","getParameters","reportId","reportFileId","getReportUri","reportTicket","reportUri","getReportStatus","reportStatus","generateReport","reportIn","getRunningReports","limit","orderByDesc","filterCancelled","WorkflowDataService","useWorkflowValueChange","_draftJSON","BehaviorSubject","setUseWorkflow","getUseWorkflow","setDraftJSON","draftJSON","getDraftJSON","FormComparatorService","resetDivergentFormData","_divergentFormData","checkFormDisagreements","ignoreId","_sanitizeEmptyStrings","_removeIdsFromFormDatas","_oldFormData","_newFormData","_throwIdenticalMessage","_createDivergencePair","_isDivergentFormDataEmpty","formData","divergence","oldValue","newValue","Error","divergentFormArray","object","ServicesModule","PermissionService","actionUrl","resourceAddress","defaultActions","_resources","_attributes","user","getAuthHeader","token","httpOptions","headers","HttpHeaders","Content-Type","Accept","Authorization","getRestUrl","restUrl","permissions","of","getPermissions","getAbac","attributes","getAbacPermission","includeFilters","permissoes","values","perm","authorized","setResources","ToastComponent","createErrorMessage","createSuccessMessage","createWarningMessage","clear","ToastModule","ToastModulePrimeng","DataListService","DataListComponent","totalRecordsChange","configParameters","configHttpParamsDisplayFields","displayFields","entityODataParameters","_totalRecords","DataListModule","LookupService","LookupComponent","lookupService","searchTotalRecordsLabel","filterLabel","clearLabel","cancelLabel","selectLabel","lookupEmptyMessage","lookupSuggestions","searchGridFields","searchGridData","searchTotalRecords","LookupModule","DynamicFormModule","AutocompleteService","LookupService$1","WorkstationgroupLookupDto","headoffice","companyBranchId","branchoffice","departmentId","department","costcenterId","costcenter","jobpositionIds","jobposition","syndicateId","syndicate","shiftId","workshiftScale","workshiftId","workshiftGroupId","intervalGroupId","is","scaleTeamId","scaleCategoryId","employmentRelationshipId","expenseNatureId","allowDeficient","disabilityIds","listExpired","manager","getToFilter","convertListIds","list","WorkstationgroupLookupComponent","cd","autocompleteParametersService","lookupParametersService","currentCompanyId","currentCompanyName","suggestionsObservable","valueEnumShift","enum","concatFieldsName","FormField","concatName","gridFields","dataKey","appendTo","fullWidth","onRemove","onSearch","getAutocomplete","companyname","headquarter","getAutocompleteQuery","now","ORGANIZATION_REGISTER","showClear","md","onChange","resetDependenciesOfShift","description","workstationFilterForm","workshift","ngAfterViewInit","detectChanges","companyForm","workstationgroupEl","isShift","isLookupOpen","getValueEvent","getHireDate","totalPages","nameQuery","nameEntity","nameFieldConcat","additionalParams","baseDate","dateIsMoment","getConcatFields","momentHireDate","ChangeDetectorRef","WorkstationgroupLookupModule","HistoricalBankAccountComponent","confirmationService","formBuilder","recordByRow","showDateWhen","isEditMode","isViewMode","withSideBar","visibleChange","bankAccountItemInput","actionLabel","listDataNoPage","cols","visible","command","currentItem","deleteAnnuityItem","createFormGroup","setControl","fieldFormGroup","historicalBankAccountList","group","arrList","getHistoricalBankAccountList","refreshCssInIE11","window","navigator","userAgent","setTimeout","row","className","newlist","verifyTotalPercentage","addItemInList","newDataList","customValue","dateWhen","getNumberPageByIndex","sub","ceil","arrayPercentage","msgTotalLimitByPercentage","sumPercentage","reduce","percentage","msgTooltipAdd","_dateWhen","_displayDateWhen","patchValue","_visible","close","ConfirmationService","FormBuilder","HistoricalBankAccountFormComponent","bankAccountItemToList","initialValidatorOfPercentage","min","initialValidatorOfBankAccount","maxLength","labelBtnAdd","maxValuePercentage","visibleBtnSave","isView","registerSubjects","validateDuplicateBankAccount","listCompare","accountTypeValue","bankValue","bankBranchValue","bankAccountDuplicate","unsubscribe","bankAccountFormGroup","employee","displayDateWhen","bank","bankBranch","accountType","bankAccount","digit","max","onSelectBank","cleanBankInformation","beforeSetBankAccountValidator","onClearBank","onClearBankBranch","onClearAccountType","resetForm","convertDTOToShowWithCustomFields","setValidatorsAccordingList","configEnableFields","obj","addItem","valid","getRawValue","getBankTableId","decimalSeparator","getOptions","precision","prefix","thousands","thousandsSeparator","decimal","bankAccountList","percentageIncluded","validatePercentageValid","listValue","HistoricalBankAccountService","HistoricalBankAccountModule","SidebarModule","ControlErrorsModule","CurrencyMaskModule","FieldsetModule","PanelModule","HistoricalBankAccountListService","httpClient","remove","dependentId","DEPENDENT","HistoricalBankAccountListComponent","historicalBankAccountListService","endPoint","withSidebar","enableView","columns","onGridLoad","getMenuActions","navigate","relativeTo","isAllowToDeleteHistorical","lastRecord","dateWhenToDto_1","confirm","accept","isAllowToAddHistorical","permission","HistoricalBankAccountListModule","ConfirmDialogModule","EntityODataParameter","entityODataParameter","operation","_field","_operation","_value","CONTAINING","dateStartG5","dateEndG5","DateValidator","useG5DateRange","dateValue","isValidRange","isBetween","invalidDate","isDateLower","compareToDate","granularity","compareName","isValidDateCompare","isBefore","compareType","compareTo","dateCompare","getDateFormatFromLocale","removeDayPart","getDateTimeFormatFromLocale","getDateFormatFromCalendar","compareTypeName","isNotSame","isSame","getFormatDateWithBar","WorkflowIntegrator","_processVariables","_workflowPayload","processInstanceId","resetActions","init","workflowCockpit","info","_isRequestNew","isRequestNew","getTaskData","_taskData","getInfoFromProcessVariables","processVariablesFromWorkflow","addProcessVariable","_onLoadWorkflow","onSubmit","nextAction","_nextAction","_isFinishing","finish","_nextActionName","_onSubmitWorkflow","onError","_onRollbackWorkflow","_runActions","onLoadActions","onSubmitActions","onRollbackActions","actionsToRun","all","_e","err_1","addOnLoadAction","callback","addOnSubmitAction","addOnRollbackAction","processVariable","err","erro","setWorkflowPayload","catch","EmployeeSelectorComponent","workflowDataService","registerSubscribers","routeEndpoint","onSelectEmployee","employeeSelected","_routeEndpoint","_useWorkflow","EmployeeSelectorModule","FromToComponent","FromToModule","FormatUtilsService","getFormattedCpf","cpf","getFormattedCnpj","getCpfCnpjMask","getFormattedTelephoneNumber","telephoneNumber","tel","formatTelephoneInputEvent","getFormattedPercentage","parseFloat","toFixed","HistoricalPixAccountComponent","showDateChange","defaultCpfNumber","listDataReciever","isViewModeActive","isEditModeActive","isDeleteModeActive","listFromApp","enableAction","pixAccountItemInput","isAllowToViewHistorical","isAllowToEditHistorical","historicalPixAccountList","getHistoricalPixAccountList","isNotAllowMessage","dateChange","_dateChange","_displayDateChange","GenericValidator","isValidCei","cei","resto","invalidCei","isValidCpf","equalDigits","cpfNotValid","isValidCnpj","cnpjNotValid","isValidPhoneNumber","cellPhoneKey","invalidPhoneNumber","isValidEmail","emailKey","invalidEmail","HistoricalPixAccountFormComponent","paramsForm","pixAccountItemToList","isShowPixKeyFieldValidatorMessage","pixAccountFormGroup","pixKeyType","pixKey","externalId","onChangePixKeyType","setPixKeyValidators","setDefaultCpfPixKey","onClearPixKeyType","formatPixKeyTelephoneNumber","pixAccountList","beforeSetPixKeyTypeValidator","genericPixKey","phoneMask","sheetDocument","validateDuplicatePixKeyTypeBankAccount","pixKeyTypeBankAccountDuplicate","HistoricalPixAccountService","HistoricalPixAccountModule","HistoricalPixAccountListService","HistoricalPixAccountListComponent","historicalPixAccountListService","isOnlyView","isOnlyEdit","dateChangeToDto_1","HistoricalPixAccountListModule","sources","_i","source","shift","tableIdObject","fullName","firstName","i18n","quantidade","business","addWeekDays","objs","json","jsonReturn","qs","tokens","re","exec","decodeURIComponent","startDate","endDate","endMoment","endOf","weekDays","birthday","diff","birthdayCompare","isSameOrAfter","momentDateCompare","compare","expeditionDateCompare","dateCompareMoment","currentDateCompare","pis","numeroPIS","custom","customEntity","custonField","valOrnull","customField","removeEmpty","msg","addCuston","FormControl","formControlName","keyError","isInvalid","setErrors","currentField","custonFields","isCustons","pv","cv","chance","guid","date"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { AbstractControl, Validators } from '@angular/forms';\n\n/**\n * Created by Bruno.Curioletti on 30/05/2017.\n */\nexport class CPFValidator {\n calcChecker1(firstNineDigits) {\n let sum = null;\n\n for (let j = 0; j < 9; ++j) {\n sum += firstNineDigits.toString().charAt(j) * (10 - j);\n }\n\n const lastSumChecker1 = sum % 11;\n const checker1 = lastSumChecker1 < 2 ? 0 : 11 - lastSumChecker1;\n\n return checker1;\n }\n\n calcChecker2(cpfWithChecker1) {\n let sum = null;\n\n for (let k = 0; k < 10; ++k) {\n sum += cpfWithChecker1.toString().charAt(k) * (11 - k);\n }\n\n const lastSumChecker2 = sum % 11;\n const checker2 = lastSumChecker2 < 2 ? 0 : 11 - lastSumChecker2;\n\n return checker2;\n }\n\n checkCPF(value) {\n const cleanCPF = value.replace(/\\.|\\-|\\s/g, ''),\n firstNineDigits = cleanCPF.substring(0, 9),\n checker = cleanCPF.substring(9, 11);\n\n if (cleanCPF.length !== 11) {\n return false;\n }\n\n // Checking if all digits are equal\n for (let i = 0; i < 10; i++) {\n if ('' + firstNineDigits + checker === Array(12).join(i.toString())) {\n return false;\n }\n }\n const checker1 = this.calcChecker1(firstNineDigits);\n const checker2 = this.calcChecker2(firstNineDigits + '' + checker1);\n\n if (checker.toString() === checker1.toString() + checker2.toString()) {\n return true;\n } else {\n return false;\n }\n }\n}\n\nexport const cpfValidator = new CPFValidator();\n","export enum UsingType {\n // \"Empresas de transporte.\"\n TYPE_1 = 'TYPE_1',\n // \"Clientes de agência de emprego.\"\n TYPE_2 = 'TYPE_2',\n // \"Entidades de ensino.\"\n TYPE_3 = 'TYPE_3',\n // \"Conveniados médicos.\"\n TYPE_4 = 'TYPE_4',\n // \"Seguradoras.\"\n TYPE_6 = 'TYPE_6',\n // \"Escritórios advocacia.\"\n TYPE_7 = 'TYPE_7',\n // \"Conveniados tickets.\"\n TYPE_8 = 'TYPE_8',\n // \"Empregos anteriores.\"\n TYPE_9 = 'TYPE_9',\n // \"Cooperativa de trabalho.\"\n TYPE_10 = 'TYPE_10',\n // \"Fornecedor/Fabricante de EPI/EPC.\"\n TYPE_11 = 'TYPE_11',\n // \"Escolas de educação infantil.\"\n TYPE_12 = 'TYPE_12',\n // \"Entidade de ensino - NÃvel superior.\"\n TYPE_14 = 'TYPE_14',\n // \"Empresas de refeição.\"\n TYPE_15 = 'TYPE_15',\n // \"Entidades de ensino - NÃvel médio.\"\n TYPE_16 = 'TYPE_16',\n // \"Fornecedor para treinamento.\"\n TYPE_17 = 'TYPE_17',\n // \"Higienização ou serviços gerais.\"\n TYPE_18 = 'TYPE_18',\n // \"Agente de integração.\"\n TYPE_19 = 'TYPE_19',\n // \"Empresas de software.\"\n TYPE_20 = 'TYPE_20',\n // \"Laboratório.\"\n TYPE_21 = 'TYPE_21',\n}\n","export enum CompanyIndicationType {\n // Usa rotinas de dependente\n USE_DEPENDENTS = 'USE_DEPENDENTS',\n // Controla frequência de vacinação\n VACCINATION_FREQUENCY = 'VACCINATION_FREQUENCY',\n // Usa calculo de rateio\n APPORTIONMENT_CALCULATION = 'APPORTIONMENT_CALCULATION',\n // Assinalamento usa posto de trabalho para colaborador\n USE_WORKSTATION_GROUP_EMPLOYEE = 'USE_WORKSTATION_GROUP_EMPLOYEE',\n // Estrutura\n STRUCTURE = 'STRUCTURE',\n // Anuidade\n PAY_ANNUITY = 'PAY_ANNUITY',\n // Usa histórico de contas bancárias\n USE_HISTORICAL_BANK_ACCOUNT = 'USE_HISTORICAL_BANK_ACCOUNT'\n}\n","export enum DirectionEnumeration {\n ASC = 'ASC',\n DESC = 'DESC',\n}\n","export enum ModuleType {\n /** Painel de gestão */\n MANAGEMENT_PANEL = 'MANAGEMENT_PANEL',\n /** Gestão de desempenho*/\n PERFORMANCE_MANAGEMENT = 'PERFORMANCE_MANAGEMENT',\n /** Carreira e sucessão */\n CAREER_SUCCESSION = 'CAREER_SUCCESSION',\n /** Recrutamento */\n RECRUIT_MANAGEMENT = 'RECRUIT_MANAGEMENT',\n /** Gestão de remuneração */\n REMUNERATION_MANAGEMENT = 'REMUNERATION_MANAGEMENT',\n /** Gestão de desenvolvimento */\n DEVELOPMENT_MANAGEMENT = 'DEVELOPMENT_MANAGEMENT',\n /** Folha de pagamento */\n PAYROLL = 'PAYROLL',\n /** Aplicativo */\n APP = 'APP',\n /** Moods */\n MOODS = 'MOODS'\n}\n","export enum Operators {\n EQUAL = 'eq',\n DIFFERENT = 'ne',\n LESS_THAN = 'it',\n GREATER_THAN = 'gt',\n LESS__EQUAL_THAN = 'le',\n GREATER_EQUAL_THAN = 'ge',\n CONTAINING = 'containing',\n LOWER = 'lower',\n AND = 'and',\n OR = 'or',\n}\n","/**\n * Enum com as funções de comparação da biblioteca Moment.js\n * Não contempla a função isBetween, será necessário fazer uma validação esoecÃfica para usá-la\n */\nexport enum CompareType {\n isBefore = \"isBefore\",\n isAfter = \"isAfter\",\n isSame = \"isSame\",\n isSameOrAfter = \"isSameOrAfter\",\n isSameOrBefore = \"isSameOrBefore\",\n isNotSame = \"isNotSame\",\n}\n","export enum ServiceType {\n ENTRY = 'entry',\n GENERAL_REGISTER = 'general_register',\n ORGANIZATION_REGISTER = 'organization_register',\n PAYROLL = 'payroll',\n DEPENDENT = 'dependent',\n}\n","export enum HttpRequestType {\n POST = \"post\",\n GET = \"get\",\n}\n","export enum ReportFormat {\n PDF = \"Pdf\",\n CSV = \"Csv\",\n HTML = \"Html\",\n XLS = \"Xls\",\n XLSX = \"Xlsx\",\n XML = \"Xml\",\n ODT = \"Odt\",\n RTF = \"Rtf\"\n}\n","export enum ParameterType {\n STRING = \"String\",\n INTEGER = \"Integer\",\n DOUBLE = \"Double\",\n BOOLEAN = \"Boolean\",\n DATE = \"Date\",\n DATETIME = \"DateTime\",\n TIME = \"Time\",\n OBJECT = \"Object\"\n}\n","export enum MenuType {\n DEFAULT = \"DEFAULT\",\n ACTION = \"ACTION\"\n}\n","export enum ReportStage {\n STARTING = \"Starting\",\n COMPILING = \"Compiling\",\n FILLING = \"Filling\",\n EXPORTING = \"Exporting\",\n DONE = \"Done\",\n CANCELLED = \"Cancelled\",\n GENERATED = \"Generated\",\n ERROR = \"Error\"\n}\n","import { AbstractControl, Validators } from '@angular/forms';\n\nexport class CNPJValidator {\n\n /**\n * Valida se o CNPJ é valido. Deve-se ser informado o cnpj sem máscara.\n */\n checkCNPJ(value) {\n let cnpj = value;\n\n if (cnpj) {\n let size, numbers, digits, sum, pos, result;\n cnpj = cnpj.replace(/[^\\d]+/g, '');\n\n if (cnpj.length !== 14) {\n return true;\n }\n\n // Elimina CNPJs invalidos conhecidos\n if (\n cnpj === '00000000000000' ||\n cnpj === '11111111111111' ||\n cnpj === '22222222222222' ||\n cnpj === '33333333333333' ||\n cnpj === '44444444444444' ||\n cnpj === '55555555555555' ||\n cnpj === '66666666666666' ||\n cnpj === '77777777777777' ||\n cnpj === '88888888888888' ||\n cnpj === '99999999999999'\n ) {\n return false;\n }\n\n // Valida DVs\n size = cnpj.length - 2;\n numbers = cnpj.substring(0, size);\n digits = cnpj.substring(size);\n sum = 0;\n pos = size - 7;\n for (let i = size; i >= 1; i--) {\n sum += numbers.charAt(size - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n if (result !== Number(digits.charAt(0))) {\n return false ;\n }\n\n size = size + 1;\n numbers = cnpj.substring(0, size);\n sum = 0;\n pos = size - 7;\n for (let i = size; i >= 1; i--) {\n sum += numbers.charAt(size - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n if (result !== Number(digits.charAt(1))) {\n return false;\n }\n\n return true;\n }\n return true;\n }\n}\n\nexport const cnpjValidator = new CNPJValidator();\n","export class StringMethods {\n\n constructor() {\n this.addStringFormat();\n }\n\n addStringFormat() {\n if (!String.prototype.hasOwnProperty('format')) {\n const format = {\n format: function () {\n let formatted = this;\n for (let i = 0; i < arguments.length; i++) {\n const regexp = new RegExp('\\\\{' + i + '\\\\}', 'gi');\n formatted = formatted.replace(regexp, arguments[i]);\n }\n return formatted;\n }\n };\n Object.assign(String.prototype, format);\n }\n }\n}\n\nexport const stringMethods = new StringMethods();\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'block-ui',\n templateUrl: './block-ui.component.html',\n styleUrls: ['./block-ui.component.css'],\n})\nexport class BlockUiComponent {\n @Input()\n blocked: boolean;\n @Input()\n target: string;\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BlockUIModule } from 'primeng/blockui';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\n\nimport { BlockUiComponent } from './block-ui.component';\n\n@NgModule({\n imports: [\n FormsModule,\n BlockUIModule,\n ProgressSpinnerModule\n ],\n declarations: [\n BlockUiComponent\n ],\n exports: [\n BlockUiComponent\n ]\n})\nexport class BlockUiModule {}\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MenuItem } from 'primeng/components/common/menuitem';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'c-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n})\nexport class BreadcrumbComponent implements OnInit {\n public items: MenuItem[];\n public title: string;\n\n constructor(private activatedRoute: ActivatedRoute, private router: Router, private translate: TranslateService) {\n this.items = [];\n }\n\n ngOnInit() {\n this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(() => {\n const root: ActivatedRoute = this.activatedRoute.root;\n this.items = this.getBreadcrumbs(root, []);\n });\n }\n\n private getBreadcrumbs(route: ActivatedRoute, breadcrumbs: MenuItem[]): MenuItem[] {\n const children: ActivatedRoute[] = route.children;\n if (children.length === 0) {\n return breadcrumbs;\n }\n\n this.generateBreadcrumb(children, breadcrumbs);\n\n const index = (breadcrumbs.length && breadcrumbs.length - 1) || 0;\n this.title = breadcrumbs[index] && breadcrumbs[index].label;\n return breadcrumbs;\n }\n\n private generateBreadcrumb(children: ActivatedRoute[], breadcrumbs: MenuItem[]) {\n const ROUTE_DATA_BREADCRUMB = 'breadcrumb';\n children.forEach((child: ActivatedRoute, index: number) => {\n if (child.snapshot.data.hasOwnProperty(ROUTE_DATA_BREADCRUMB)) {\n child.snapshot.data[ROUTE_DATA_BREADCRUMB].map(val => {\n const breadcrumb: MenuItem = {\n label: this.translate.instant(val.name),\n queryParams: child.snapshot.queryParams,\n routerLink: this.getFormattedUrl(child, val.routerLink),\n url: this.getFormattedUrl(child, val.url),\n };\n\n if (val.routerLink) {\n breadcrumb.disabled = true;\n breadcrumb.routerLinkActiveOptions = { exact: true };\n }\n breadcrumbs.push(breadcrumb);\n });\n }\n\n if (child.children && child.children.length) {\n this.generateBreadcrumb(child.children, breadcrumbs);\n }\n });\n }\n\n getFormattedUrl(activatedRoute: ActivatedRoute, url: string): string {\n if (url) {\n Object.keys(activatedRoute.snapshot.params).forEach(param => {\n url = url.replace(`:${param}`, activatedRoute.snapshot.params[param]);\n });\n\n if (url.includes(':') && activatedRoute.parent) {\n return this.getFormattedUrl(activatedRoute.parent, url);\n }\n }\n return url;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n imports: [\n CommonModule,\n ],\n exports: [\n CommonModule,\n TranslateModule,\n ]\n})\nexport class SharedModule {\n constructor() {\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BreadcrumbModule } from 'primeng/breadcrumb';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { BreadcrumbComponent } from './breadcrumb.component';\n\n@NgModule({\n imports: [\n FormsModule,\n BreadcrumbModule,\n SharedModule,\n ],\n declarations: [\n BreadcrumbComponent\n ],\n exports: [\n BreadcrumbComponent\n ]\n})\nexport class BreadcrumbSDSModule {\n}\n","import { Component, Input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'control-messages-error',\n templateUrl: \"./control-messages-error.component.html\",\n styleUrls: [\"./control-messages-error.component.css\"],\n})\nexport class ControlMessagesErrorComponent {\n @Input()\n control: FormControl;\n @Input()\n errorList: object;\n\n constructor() {}\n\n get errorMessage() {\n for (const propertyName in this.control.errors) {\n if (this.control.errors.hasOwnProperty(propertyName) && (this.control.touched || this.control.dirty)) {\n return this.errorList[propertyName];\n }\n }\n return null;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { ControlMessagesErrorComponent } from './control-messages-error.component';\n\n@NgModule({\n imports: [CommonModule, SharedModule, ReactiveFormsModule],\n declarations: [ControlMessagesErrorComponent],\n exports: [ControlMessagesErrorComponent],\n})\nexport class ControlMessagesErrorModule {}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nexport interface IField {\n field: string;\n label: string;\n type: string;\n regex: string;\n mask: string;\n value: string;\n}\n\n@Component({\n selector: 'custom-fields',\n templateUrl: './custom-fields.component.html',\n styleUrls: ['./custom-fields.component.css'],\n})\nexport class CustomFieldsComponent implements OnInit {\n @Input()\n params?: IField;\n @Input()\n disabled?: boolean;\n @Input()\n readonly?: boolean;\n @Input()\n required?: boolean;\n @Input()\n form: FormGroup;\n\n optionsBoolean = [{ label: 'Selecione', value: '' }, { label: 'Sim', value: 'true' }, { label: 'Não', value: 'false' }];\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild, OnDestroy } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { LocaleService } from '@seniorsistemas/angular-components';\nimport * as _moment from 'moment';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nconst moment = _moment;\n\n@Component({\n selector: 'input-date-calendar',\n templateUrl: './input-date.component.html',\n})\nexport class InputDateComponent implements OnInit, OnDestroy {\n @ViewChild('inputDateElement', { static: false })\n _inputDateElement: ElementRef;\n @Input()\n form: FormGroup;\n @Input()\n name: string;\n @Input()\n disabled?: boolean;\n @Input()\n unmask = true;\n @Input()\n inputId: string;\n @Input()\n withoutDay: boolean;\n @Input()\n readonly: boolean;\n\n @Output()\n onBlurGetMoment: EventEmitter<any> = new EventEmitter();\n\n private ngUnsubscribe = new Subject();\n private _date: any;\n private locale: any;\n private format: any;\n mask = null;\n\n constructor(private localeService: LocaleService) {}\n\n ngOnInit() {\n this.localeService\n .get()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(loc => {\n this.mask = this.formatMask(loc);\n this.format = this.setFormat();\n if (this.form.get(this.name).value) {\n const newDate = this.form.get(this.name).value.toString();\n const momentDate = moment(newDate, this.format || 'YYYY-MM-DD');\n this.form.get(this.name).setValue(momentDate.format(this.format || 'L'));\n this._date = momentDate;\n }\n });\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n formatMask(loc) {\n this.locale = loc;\n let dateMask = this.locale.calendar.dateFormat.toString();\n\n if (this.withoutDay) {\n dateMask = dateMask.replace('dd/', '').replace('-dd', '');\n }\n\n dateMask = dateMask.replace(/[d]|[m]/g, '9');\n return dateMask.replace(/[y]/g, '99');\n }\n\n setFormat() {\n let dateFormat = this.locale.calendar.dateFormat.toString();\n dateFormat = dateFormat.replace(/[y]/g, 'YY');\n\n if (this.withoutDay) {\n dateFormat = dateFormat.replace('dd/', '').replace('-dd', '');\n }\n\n return dateFormat.toUpperCase();\n }\n\n get placeholder() {\n return this.mask ? this.mask.toString().replace(/[9]/g, '_') : '';\n }\n\n onBlur(event) {\n if (event && event.target && event.target.value) {\n const dateComponent = this.form.get(this.name).value;\n this._date = moment(dateComponent, this.format);\n this.onBlurGetMoment.emit(this._date);\n } else {\n this._date = {};\n this.form.get(this.name).setValue(null);\n this.onBlurGetMoment.emit(null);\n }\n }\n\n @Input()\n get model() {\n const dateComponet = this.form.get(this.name).value;\n return moment(dateComponet, this.format);\n }\n\n get inputDateElement() {\n return this._inputDateElement;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\n\nimport { InputDateComponent } from './input-date.component';\n\n@NgModule({\n imports: [InputMaskModule, FormsModule, ReactiveFormsModule, CommonModule],\n declarations: [InputDateComponent],\n exports: [InputDateComponent],\n})\nexport class InputDateModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { SharedModule } from 'primeng/shared';\n\nimport { InputDateModule } from '../input-date/input-date.module';\nimport { CustomFieldsComponent } from './custom-fields.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SharedModule,\n InputTextModule,\n InputDateModule,\n DropdownModule,\n InputMaskModule\n ],\n declarations: [CustomFieldsComponent],\n providers: [],\n exports: [CustomFieldsComponent]\n})\nexport class CustomFieldsModule {\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[name-not-spaces]',\n})\nexport class NameNotSpacesDirective {\n private el: HTMLInputElement;\n\n constructor(private elementRef: ElementRef) {\n this.el = this.elementRef.nativeElement;\n }\n\n @HostListener('blur', ['$event.target.value'])\n onBlur(value) {\n this.cleanVar(value);\n }\n\n cleanVar(val) {\n const clean = val.trim().replace(/^\\s+|\\s+$|\\s+(?=\\s)/g, '');\n if (val !== clean) {\n this.el.value = clean;\n }\n return clean;\n }\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[only-number]',\n})\nexport class OnlyNumberDirective {\n constructor(private el: ElementRef) {}\n @HostListener('keydown', ['$event'])\n onKeyDown(event) {\n const e = <KeyboardEvent>event;\n\n if (\n [46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||\n // Allow: Ctrl+A\n (e.keyCode === 65 && (e.ctrlKey || e.metaKey)) ||\n // Allow: Ctrl+C\n (e.keyCode === 67 && (e.ctrlKey || e.metaKey)) ||\n // Allow: Ctrl+V\n (e.keyCode === 86 && (e.ctrlKey || e.metaKey)) ||\n // Allow: Ctrl+X\n (e.keyCode === 88 && (e.ctrlKey || e.metaKey)) ||\n // Allow: home, end, left, right\n (e.keyCode >= 35 && e.keyCode <= 39)\n ) {\n // let it happen, don't do anything\n return;\n }\n // Ensure that it is a number and stop the keypress\n if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {\n e.preventDefault();\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { NameNotSpacesDirective } from './name-not-spaces.directive';\nimport { OnlyNumberDirective } from './only-number.directive';\n\n@NgModule({\n imports: [],\n declarations: [OnlyNumberDirective, NameNotSpacesDirective],\n exports: [OnlyNumberDirective, NameNotSpacesDirective],\n providers: [],\n schemas: [],\n})\nexport class CoreDirectives {}\n","export enum CoreFieldType {\n searchValue = 'searchValue',\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class DataListRestService {\n constructor(private http: HttpClient) {}\n\n getList(endpoint: string, body: object): Observable<any> {\n return this.http.post(`${endpoint}`, body);\n }\n}\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Table } from 'primeng/table';\nimport { Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\nimport { DirectionEnumeration } from '../../core/enums';\nimport { DataListRestService } from './data-list-rest.service';\n\n@Component({\n selector: 'c-data-list-rest',\n templateUrl: './data-list-rest.component.html',\n styleUrls: ['./data-list-rest.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [DataListRestService],\n})\nexport class DataListRestComponent implements OnInit, OnDestroy {\n @ViewChild('dataListTable', { static: false })\n dataListTable: Table;\n\n @Input()\n id: string;\n @Input()\n dataKey: string;\n @Input()\n rows = 10;\n @Input()\n emptyMessage: string;\n @Input()\n columns: any[];\n @Input()\n paginator = true;\n @Input()\n first = 1;\n @Input()\n alwaysShowPaginator = true;\n @Input()\n actions?: Function;\n @Input()\n actionLabel: string;\n @Input()\n selectionMode: string;\n @Input()\n lazy: boolean;\n @Input()\n isMultipleSelection: boolean;\n @Input()\n isSortable: boolean;\n @Input()\n showHeaderCheckBox: boolean;\n @Input()\n sortMode = 'multiple';\n @Input()\n endpoint: string;\n @Input()\n totalRecords: number;\n @Input()\n orderBy: { field: string; direction: DirectionEnumeration }[];\n @Input()\n singularMessageRecords: string;\n @Input()\n pluralMessageRecords: string;\n @Input()\n keyPayload: string;\n @Input()\n initParameters: any;\n @Input()\n responsive = true;\n @Input()\n scrollable = false;\n\n @Output()\n lazyLoad: EventEmitter<any> = new EventEmitter();\n @Output()\n loadingChange: EventEmitter<any> = new EventEmitter();\n @Output()\n listDataChange: EventEmitter<any> = new EventEmitter();\n @Output()\n selectedDataChange: EventEmitter<any> = new EventEmitter();\n @Output()\n headerCheckboxToggle: EventEmitter<any> = new EventEmitter();\n\n private _loading: boolean;\n private _listData: any[];\n private _selectedData: any[];\n private _searchParameters: any;\n private ngUnsubscribe = new Subject();\n\n constructor(private dataListService: DataListRestService) {}\n\n ngOnInit() {\n if (!this.lazy) {\n this.getlistData();\n }\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n getActions(data: any, index: number) {\n return this.actions(data, index);\n }\n\n pagination(event) {\n if (!this.lazy) {\n this.getlistData(event.rows, Math.floor(event.first / event.rows));\n }\n }\n\n onLazyLoad(event) {\n this.loading = true;\n\n if (event.multiSortMeta && event.multiSortMeta.length) {\n this.orderBy = <{ field: string; direction: DirectionEnumeration }[]>[];\n event.multiSortMeta.map(value => {\n this.orderBy.push({ field: value.field, direction: value.order === 1 ? DirectionEnumeration.ASC : DirectionEnumeration.DESC });\n });\n }\n\n this.getlistData(event.rows, Math.floor(event.first / event.rows) + 1);\n }\n\n onFilter() {\n if (this.lazy) {\n this.loading = true;\n }\n\n this.getlistData();\n }\n\n get recordsMessage() {\n return `${this.totalRecords || 0} ${this.totalRecords === 1 ? this.singularMessageRecords : this.pluralMessageRecords}`;\n }\n\n getlistData(size = this.rows, offset = this.first): void {\n if (this.endpoint) {\n this.dataListService\n .getList(this.endpoint, {\n page: { current: offset, size: size, orderBy: this.orderBy },\n ...this.initParameters,\n ...this._searchParameters,\n })\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map((data: any) => data && data.result)\n )\n .subscribe((data: any) => {\n this.listData = data[this.keyPayload];\n this.totalRecords = data.countResult;\n if (this.lazy) {\n this.lazyLoad.emit(this.listData);\n }\n });\n } else {\n if (this.lazy) {\n this.lazyLoad.emit(this.listData);\n }\n }\n }\n\n onHeaderCheckboxToggle(event) {\n this.headerCheckboxToggle.emit(event);\n }\n\n getFieldValue(rowData, col) {\n if (col['field'] && col['field'].includes('.')) {\n const objectPath = col['field'].split('.');\n objectPath.map(value => (rowData = rowData && rowData[value]));\n return rowData;\n }\n return rowData[col['field']];\n }\n\n @Input()\n set parameters(searchParameters: any) {\n if (searchParameters) {\n this._searchParameters = { ...searchParameters };\n\n if (this.dataListTable) {\n this.dataListTable.first = 0;\n }\n\n this.onFilter();\n }\n }\n\n set loading(value: boolean) {\n this._loading = value;\n this.loadingChange.emit(this._loading);\n }\n\n @Input()\n get loading() {\n return this._loading;\n }\n\n set listData(value: any[]) {\n this._listData = value;\n this.listDataChange.emit(this._listData);\n }\n\n @Input()\n get listData() {\n return this._listData;\n }\n\n set selectedData(value: any[]) {\n this._selectedData = value;\n this.selectedDataChange.emit(this._selectedData);\n }\n\n @Input()\n get selectedData() {\n return this._selectedData;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule, LoadingStateModule } from '@seniorsistemas/angular-components';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TableModule } from 'primeng/table';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { DataListRestComponent } from './data-list-rest.component';\n\n@NgModule({\n imports: [\n CommonModule,\n SharedModule,\n // Angular Components\n ButtonModule,\n LoadingStateModule,\n // Primeng\n TableModule,\n TooltipModule,\n ],\n declarations: [DataListRestComponent],\n exports: [DataListRestComponent],\n})\nexport class DataListRestModule {}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class EmployeeSummaryService {\n private employeeBasicInformations = new Subject<any>();\n\n constructor(private http: HttpClient) {}\n\n findEmployee(path: string, employeeId: string): Observable<any> {\n return this.http.post(`hcm/payroll/queries/${path}`, { employeeId: employeeId });\n }\n\n findEmployeeAutoComplete(path: string, terms: string): Observable<any> {\n return this.http.post(`hcm/payroll/queries/${path}`, { valueSearch: terms });\n }\n\n blobServiceRequestAccess(path: string, body: object): Observable<any> {\n return this.http.post(`hcm/payroll/actions/${path}`, body);\n }\n\n setEmployeeBasicInformations(employeeBasicInformations: any) {\n this.employeeBasicInformations.next(employeeBasicInformations);\n }\n\n getEmployeeBasicInformations(): Observable<any> {\n return this.employeeBasicInformations.asObservable();\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Params } from \"@angular/router\";\nimport * as moment_ from \"moment\";\nimport { Subject } from \"rxjs\";\nimport { finalize, map, takeUntil } from \"rxjs/operators\";\n\nimport { EmployeeSummaryService } from \"./employee-summary.service\";\n\nexport interface IEmployeeSummary {\n name: string;\n jobPosition: string;\n photoSource?: string;\n employer?: string;\n location?: string;\n hireDate?: any;\n registernumber?: any;\n timeTrackingResumeType?: string;\n age?: string;\n}\n\nconst moment = moment_;\n\n@Component({\n selector: \"c-employee-summary\",\n templateUrl: \"./employee-summary.component.html\",\n})\nexport class EmployeeSummaryComponent implements OnInit, OnDestroy {\n @Input()\n public timetrackingLabel: string = \"Status\";\n @Input()\n public hireDate: string;\n @Input()\n public hireLabel: string = \"Admissão\";\n @Input()\n public registerNumberLabel: string = \"MatrÃcula\";\n @Input()\n public ageLabel: string = \"Idade\";\n @Input()\n public loadingLabel: string = \"...\";\n @Input()\n public loadingDescription: string = \"Carregando...\";\n public emploayeeData: IEmployeeSummary;\n public isLoading: boolean = false;\n\n private ngUnsubscribe = new Subject();\n\n constructor(private activatedRoute: ActivatedRoute, private employeeService: EmployeeSummaryService) {\n }\n\n public ngOnInit() {\n this.emploayeeData = {\n name: this.loadingLabel,\n jobPosition: this.loadingDescription,\n };\n\n this.activatedRoute.params.pipe(takeUntil(this.ngUnsubscribe)).subscribe((params: Params) => {\n if (params.employeeId) {\n this.getInformation(params.employeeId);\n }\n });\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next(true);\n this.ngUnsubscribe.complete();\n }\n\n private getInformation(employeeId: string) {\n this.isLoading = true;\n\n this.employeeService\n .findEmployee(\"employeeContractualInformations\", employeeId)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map((data: any) => data && data.result),\n finalize(() => {\n this.isLoading = false;\n }),\n )\n .subscribe(payload => {\n this.employeeService.setEmployeeBasicInformations(payload);\n\n this.emploayeeData = {\n ...payload,\n timeTrackingResumeType: payload.timeTrackingResumeType && payload.timeTrackingResumeType.value,\n };\n const location: string[] = [];\n\n if (payload.city) {\n location.push(payload.city);\n }\n if (payload.stateAbbreviation) {\n location.push(payload.stateAbbreviation);\n }\n\n this.emploayeeData.location = location.join(\" - \");\n\n if (payload.hireDate) {\n this.emploayeeData.hireDate = this.hireDate ? this.hireDate : moment(payload.hireDate).format(\"L\");\n }\n\n if (payload.idPicture) {\n const request = {\n fileId: payload.idPicture,\n ttl: 2,\n thumbnail: false,\n };\n\n this.employeeService\n .blobServiceRequestAccess(\"blobServiceRequestAccess\", request)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map((data: any) => data && data.result),\n )\n .subscribe((imageData: any) => {\n if (imageData) {\n this.emploayeeData.photoSource = imageData.locationURI;\n }\n });\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { LoadingStateModule, ObjectCardModule } from '@seniorsistemas/angular-components';\n\nimport { EmployeeSummaryComponent } from './employee-summary.component';\nimport { EmployeeSummaryService } from './employee-summary.service';\n\n@NgModule({\n imports: [ObjectCardModule, LoadingStateModule],\n declarations: [EmployeeSummaryComponent],\n exports: [EmployeeSummaryComponent],\n providers: [EmployeeSummaryService],\n})\nexport class EmployeeSummaryModule {}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class AdmissionDraftSummaryService {\n private admissionDraftBasicInformations = new Subject<any>();\n\n constructor(private http: HttpClient) {\n }\n\n findAdmissionDraft(draftId: string): Observable<any> {\n return this.http.post('hcm/payroll/queries/admissionDraftQuery', { id: draftId });\n }\n\n\n blobServiceRequestAccess(path: string, body: object): Observable<any> {\n return this.http.post(`hcm/payroll/actions/${path}`, body);\n }\n\n setAdmissionDraftBasicInformations(draftBasicInformations: any) {\n this.admissionDraftBasicInformations.next(draftBasicInformations);\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { TranslateService } from \"@ngx-translate/core\";\nimport * as moment_ from 'moment';\nimport { Subject } from 'rxjs';\nimport { finalize, map, takeUntil } from 'rxjs/operators';\n\nimport { AdmissionDraftSummaryService } from './admission-draft-summary.service';\n\nexport interface IAdmissionDraftSummary {\n id?: string;\n name: string;\n documentNumber: string;\n originDraftType: string;\n companyName: string;\n localeOfCompany: string;\n hiringDate: any;\n attachment?: any;\n photoSource?: string;\n}\n\nconst moment = moment_;\n\n@Component({\n selector: 'c-admission-draft-summary',\n templateUrl: './admission-draft-summary.component.html',\n})\nexport class AdmissionDraftSummaryComponent implements OnInit, OnDestroy {\n @Input()\n public originType: string;\n @Input()\n public hireLabel: string = 'Admissão';\n @Input()\n public hireDate: string = '...';\n @Input()\n public badgeText: string = 'Rascunho';\n @Input()\n public loadingLabel: string = '...';\n @Input()\n public documentNumberLabel: string = 'Documento';\n @Input()\n public loadingDescription: string = 'Carregando...';\n public draftData: IAdmissionDraftSummary;\n public isLoading: boolean = false;\n\n private ngUnsubscribe = new Subject();\n\n constructor(private activatedRoute: ActivatedRoute,\n private admissionDraftSummaryService: AdmissionDraftSummaryService,\n private translateService: TranslateService) {\n }\n\n public ngOnInit() {\n this.draftData = {\n name: this.loadingLabel,\n hiringDate: this.hireDate,\n documentNumber: this.loadingLabel,\n companyName: this.loadingLabel,\n localeOfCompany: this.loadingLabel,\n originDraftType: this.loadingLabel,\n };\n\n this.activatedRoute.params.pipe(takeUntil(this.ngUnsubscribe)).subscribe((params: Params) => {\n if (params.draftId) {\n this.getInformation(params.draftId);\n }\n });\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next(true);\n this.ngUnsubscribe.complete();\n }\n\n private getInformation(draftId: string) {\n this.isLoading = true;\n\n this.admissionDraftSummaryService\n .findAdmissionDraft(draftId)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map((data: any) => data && data.result),\n finalize(() => {\n this.isLoading = false;\n }),\n )\n .subscribe(payload => {\n this.admissionDraftSummaryService.setAdmissionDraftBasicInformations(payload);\n payload.hiringDate = this.hireDate;\n\n this.draftData = {\n ...payload,\n };\n\n this.draftData.originDraftType = this.originType;\n if (payload.attachment && payload.attachment.fileId) {\n const request = {\n fileId: this.draftData.attachment.fileId,\n ttl: 2,\n thumbnail: false,\n };\n\n this.admissionDraftSummaryService\n .blobServiceRequestAccess('blobServiceRequestAccess', request)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map((data: any) => data && data.result),\n )\n .subscribe((imageData: any) => {\n if (imageData) {\n this.draftData.photoSource = imageData.locationURI;\n }\n });\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { LoadingStateModule, ObjectCardModule } from '@seniorsistemas/angular-components';\n\nimport { AdmissionDraftSummaryComponent } from './admission-draft-summary.component';\nimport { AdmissionDraftSummaryService } from './admission-draft-summary.service';\n\n@NgModule({\n imports: [ObjectCardModule, LoadingStateModule],\n declarations: [AdmissionDraftSummaryComponent],\n exports: [AdmissionDraftSummaryComponent],\n providers: [AdmissionDraftSummaryService],\n})\nexport class AdmissionDraftSummaryModule {}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'error-page',\n templateUrl: './error-page.component.html',\n styleUrls: ['./error-page.component.css'],\n})\nexport class ErrorPageComponent implements OnInit {\n constructor() {}\n\n ngOnInit() {}\n}\n","import { NgModule } from '@angular/core';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { ErrorPageComponent } from './error-page.component';\n\n@NgModule({\n imports: [SharedModule],\n declarations: [ErrorPageComponent],\n exports: [ErrorPageComponent],\n providers: [],\n})\nexport class ErrorPageModule {}\n","import { Component, Input, OnChanges, OnInit } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\n\n@Component({\n selector: 'field-validator',\n templateUrl: './field-validator.component.html'\n})\nexport class FieldValidatorComponent implements OnInit, OnChanges {\n\n @Input()\n inputErrors: any;\n @Input()\n errorDefs: any;\n @Input()\n field: AbstractControl;\n @Input()\n onlyShowAfterTouched: boolean;\n\n errorMessage = '';\n\n constructor() { }\n\n ngOnInit() { }\n\n ngOnChanges(changes: any): void {\n const errors: any = changes.inputErrors.currentValue;\n this.errorMessage = '';\n if (errors) {\n Object.keys(this.errorDefs).some(key => {\n if (errors[key]) {\n this.errorMessage = this.errorDefs[key];\n return true;\n }\n });\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { FieldValidatorComponent } from './field-validator.component';\n\n@NgModule({\n imports: [CommonModule, SharedModule, ReactiveFormsModule],\n declarations: [FieldValidatorComponent],\n exports: [FieldValidatorComponent],\n providers: [],\n})\nexport class FieldValidatorModule {}\n","import { Observable, Subject } from 'rxjs';\n\nexport class ToastService {\n private messagesSubjectError = new Subject<object>();\n private messagesSubjectSuccess = new Subject<object>();\n private messagesSubjectWarning = new Subject<object>();\n\n constructor() {}\n\n /**\n * Exibe Toast de error (vermelho)\n * @param message\n * @param breakLine se deseja quebrar a mensagem caso tenha '\\n' contido\n */\n showError(message, breakLine = false) {\n this.messagesSubjectError.next({ message: message, breakLine: breakLine });\n }\n /**\n * Exibe Toast de success (verde)\n * @param message\n * @param breakLine se deseja quebrar a mensagem caso tenha '\\n' contido\n */\n showSuccess(message, breakLine = false) {\n this.messagesSubjectSuccess.next({ message: message, breakLine: breakLine });\n }\n /**\n * Exibe Toast de warning (amarelo)\n * @param message\n * @param breakLine se deseja quebrar a mensagem caso tenha '\\n' contido\n */\n showWarning(message, breakLine = false) {\n this.messagesSubjectWarning.next({ message: message, breakLine: breakLine });\n }\n\n loadErrorMessages(): Observable<any> {\n return this.messagesSubjectError.asObservable();\n }\n\n loadSuccessMessages(): Observable<any> {\n return this.messagesSubjectSuccess.asObservable();\n }\n\n loadWarningMessages(): Observable<any> {\n return this.messagesSubjectWarning.asObservable();\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ServiceType } from '../../core/enums/serviceType';\nimport { catchError} from \"rxjs/operators\";\nimport { MessageService } from 'primeng/api';\nimport { TranslateService } from '@ngx-translate/core';\nimport { throwError } from 'rxjs';\n\n@Injectable()\nexport class HttpClientService {\n constructor(private http: HttpClient, private messageService: MessageService, private translateService: TranslateService) {}\n\n query(path: string, body: object, service: ServiceType = ServiceType.PAYROLL): Observable<any> {\n const endpoit = `hcm/${service}/queries/${path}`;\n return this.http.post(endpoit, body)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed_search\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n enumQuery(path: string, body: object, server = 'payroll'): Observable<any> {\n const endpoit = `hcm/${server}/queries/${path}`;\n return this.http.post(endpoit, body)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed_search\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n action(path: string, body: object): Observable<any> {\n const endpoit = `hcm/payroll/actions/${path}`;\n return this.http.post(endpoit, body)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n recruitmentAction(path: string, body: object): Observable<any> {\n const endpoint = `hcm/recruitment/actions/${path}`;\n return this.http.post(endpoint, body)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n get(path: string): Observable<any> {\n const endpoit = `hcm/payroll/entities/${path}`;\n return this.http.get(endpoit)\n .pipe(\n catchError((exception: any): any => {\n if (exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed_search\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n getAutoComplete(entity: string, filter: string, service: ServiceType = ServiceType.PAYROLL): Observable<any> {\n const endpoit = `hcm/${service}/entities/${entity}?filter=${filter}&size=10&orderby=code+asc`;\n return this.http.get(endpoit)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed_search\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n patch(path: string, body: object): Observable<any> {\n const endpoit = `hcm/payroll/entities/${path}`;\n return this.http.patch(endpoit, body)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n post(path: string, body: object): Observable<any> {\n const endpoit = `hcm/payroll/${path}`;\n return this.http.post(endpoit, body)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n put(path: string, body: object): Observable<any> {\n const endpoit = `hcm/payroll/entities/${path}`;\n return this.http.put(endpoit, body)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n delete(path: string, key?: string): Observable<any> {\n const endpoit = key ? `hcm/payroll/entities/${path}/${key}` : `hcm/payroll/entities/${path}`;\n return this.http.delete(endpoit)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\n\n@Injectable()\nexport class FileUploadService {\n httpOptions: object;\n\n constructor(private http: HttpClientService) {}\n\n blobServiceRequestUpload(file: Blob): Observable<any> {\n const requestUpload = {\n fileName: file[\"name\"],\n thumbnail: this.isImage(file),\n };\n const endpoint = 'blobServiceRequestUpload';\n return this.http.action(endpoint, requestUpload);\n }\n\n blobServiceRequestAccess(fileId): Observable<any> {\n const request = {\n fileId: fileId,\n tll: 2,\n thumbnail: false,\n };\n const endpoint = 'blobServiceRequestAccess';\n return this.http.action(endpoint, request);\n }\n\n blobServiceFileDelete(fileId): Observable<any> {\n const request = {\n fileId: fileId,\n thumbnail: false,\n };\n const endpoint = 'blobServiceDelete';\n return this.http.action(endpoint, request);\n }\n\n private isImage(file: Blob): boolean {\n return /^image\\//.test(file.type);\n }\n}\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { forkJoin, Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { ToastService } from \"../toast/toast.service\";\n\nimport { FileUploadService } from \"./file-upload.service\";\n\n@Component({\n selector: \"c-file-upload\",\n templateUrl: \"./file-upload.component.html\",\n})\nexport class FileUploadComponent {\n @Input()\n errorTooltip: string;\n @Input()\n files: Blob[] = [];\n @Output()\n onUploadFile = new EventEmitter();\n @Output()\n onRemoveFile = new EventEmitter();\n\n constructor(private service: FileUploadService, private toastService: ToastService, private translate: TranslateService) {\n }\n\n uploadHandler(event: { files: Blob[] }) {\n const observables: any[] = [];\n if (event && event.files.length) {\n\n event.files.sort();\n if (event.files.length > 10 && event.files[10]) {\n delete event.files[10];\n }\n\n const countFiles: number = this.getFilesCountAndValidate(event.files);\n for (var i = 0; i < countFiles; i++) {\n const file = this.validateFileSize(event.files[i]);\n\n if (i <= 9 && file[\"isUploaded\"] && !file[\"complete\"])\n observables.push(this.saveFile(file));\n }\n\n forkJoin(...observables).subscribe(() => {\n this.onUploadFile.emit(this.files);\n });\n }\n }\n\n /**\n * Valida o tamanho do arquivo, limitando em 50mb.\n * @param file\n */\n private validateFileSize(file: Blob): Blob {\n if (file[\"isUploaded\"] && !file[\"complete\"] && file[\"size\"] > 50000000) {\n file[\"complete\"] = true;\n file[\"error\"] = this.translate.instant(\"hcm.payroll.attachments_max_mb\");\n this.toastService.showError(this.translate.instant(\"hcm.payroll.attachments_alert_error\"));\n }\n\n return file;\n }\n\n /**\n * Valida a quantidade de arquivos, limitando em 10 anexos.\n * @param files\n */\n private getFilesCountAndValidate(files: Blob[]): number {\n let countFiles = 0;\n if (files.length) {\n if (files.length > 10) {\n countFiles = 10;\n this.toastService.showError(this.translate.instant(\"hcm.payroll.attachments_max_length\"));\n } else {\n countFiles = files.length;\n }\n }\n return countFiles;\n }\n\n\n saveFile(file: Blob) {\n const obs = new Observable(observable => {\n return this.service\n .blobServiceRequestUpload(file)\n .pipe(map((response: any) => response && response.result))\n .subscribe(\n response => this.doUpload(response, file, observable),\n error => {\n file[\"complete\"] = true;\n file[\"error\"] = error.message;\n file[\"objectURL\"] = undefined;\n },\n );\n });\n return obs;\n }\n\n doUpload(response: any, file: any, observable: any) {\n const xhr = new XMLHttpRequest();\n file[\"id\"] = response.fileId;\n file[\"objectURL\"] = response.locationURI;\n file[\"version\"] = response.version;\n file[\"progress\"] = 0;\n\n xhr.upload.addEventListener(\n \"progress\",\n (evt: ProgressEvent) => {\n file[\"progress\"] = Math.round((evt.loaded * 100) / evt.total);\n },\n false,\n );\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n file[\"complete\"] = true;\n\n if (xhr.status < 200 || xhr.status >= 300) {\n file[\"objectURL\"] = undefined;\n file[\"error\"] = xhr.statusText || \"Erro ao anexar arquivo\";\n } else {\n file[\"error\"] = false;\n }\n observable.next(file);\n observable.complete();\n }\n };\n\n xhr.open(\"PUT\", file.objectURL, true);\n xhr.setRequestHeader(\"Translate\", \"f\");\n return xhr.send(file);\n }\n\n onCancelUpload(index: any) {\n this.files.splice(index, 1);\n }\n\n removeFile() {\n this.onRemoveFile.emit(this.files);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FileUploadModuleDeprecated } from '@senior-gestao-pessoas/angular-components';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { FileUploadComponent } from './file-upload.component';\nimport { FileUploadService } from './file-upload.service';\n\n@NgModule({\n imports: [CommonModule, FileUploadModuleDeprecated, SharedModule],\n declarations: [FileUploadComponent],\n providers: [FileUploadService],\n exports: [FileUploadComponent],\n})\nexport class FileUploadCoreModule {}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable()\nexport class ImageCropService {\n constructor(private http: HttpClient) { }\n\n async saveImage(file: Blob | File, sourceImage: string, service: string) {\n if (!file) {\n return;\n }\n\n let fileUpload = null;\n if (file) {\n fileUpload = { fileName: file[\"name\"] };\n } else if (sourceImage) {\n fileUpload = { fileName: sourceImage.split('/')[1] };\n }\n if (fileUpload) {\n const response = await this.blobServiceRequestUpload(service, fileUpload).toPromise();\n const request = new XMLHttpRequest();\n request.open('PUT', response.result.locationURI, true);\n request.setRequestHeader('Translate', 'f');\n request.send(file);\n return response.result;\n }\n }\n\n urltoFile(url, filename, mimeType = null): Observable<Blob> {\n mimeType = mimeType || (url.match(/^data:([^;]+);/) || '')[1];\n return this.http.request(\"GET\", url, { responseType: 'arraybuffer' })\n .pipe(map(blob => {\n const file = new Blob([blob], { type: mimeType });\n file[\"name\"] = filename;\n return file;\n }));\n }\n\n async getImage(data: any, service: string, thumbnail: boolean) {\n if (data && data.fileId) {\n const response = await this.blobServiceRequestAccess(service, data.fileId, thumbnail).toPromise();\n return response.result.locationURI;\n }\n }\n\n buildUrl(service: string, resource: string) {\n return `hcm/${service}/${resource}`;\n }\n\n query(service: string, path: string, body: object): Observable<any> {\n const endpoit = `queries/${path}`;\n return this.http.post(this.buildUrl(service, endpoit), body);\n }\n\n blobServiceRequestUpload(service, file): Observable<any> {\n const requestUpload = {\n fileName: file.fileName,\n thumbnail: true,\n };\n const endpoint = 'actions/blobServiceRequestUpload';\n return this.http.post(this.buildUrl(service, endpoint), requestUpload);\n }\n\n blobServiceRequestAccess(service, fileId, thumbnail): Observable<any> {\n const request = {\n fileId: fileId,\n tll: 2,\n thumbnail: thumbnail,\n };\n const endpoint = 'actions/blobServiceRequestAccess';\n return this.http.post(this.buildUrl(service, endpoint), request);\n }\n\n blobServiceFileDelete(service, fileId): Observable<any> {\n const request = {\n fileId: fileId,\n thumbnail: true,\n };\n const endpoint = 'actions/blobServiceDelete';\n return this.http.post(this.buildUrl(service, endpoint), request);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { CropperSettings, ImageCropperComponent } from 'ng2-img-cropper';\n\nimport { ToastService } from '../toast/toast.service';\nimport { ImageCropService } from './image-crop.service';\n\n@Component({\n selector: 'image-crop',\n templateUrl: './image-crop.component.html',\n styleUrls: ['./image-crop.component.css'],\n})\nexport class ImageCropComponent implements OnInit {\n @Input()\n service = 'payroll';\n @Output()\n onClickSave: EventEmitter<any> = new EventEmitter();\n\n private file: Blob;\n @ViewChild('cropper', { static: false })\n private cropper: ImageCropperComponent;\n defaulPerson = 'assets/default-person.png';\n personPhotoLink: string;\n personFirstName: string;\n display = false;\n cropperSettings: CropperSettings;\n imageCrop = [];\n data: any = {};\n\n constructor(private imageCropService: ImageCropService, private toastService: ToastService) {\n this.cropperSettings = new CropperSettings();\n this.cropperSettings.width = 100;\n this.cropperSettings.height = 100;\n this.cropperSettings.keepAspect = false;\n this.cropperSettings.preserveSize = true;\n this.cropperSettings.canvasWidth = 600;\n this.cropperSettings.canvasHeight = 450;\n this.cropperSettings.rounded = true;\n this.cropperSettings.minWithRelativeToResolution = false;\n this.cropperSettings.noFileInput = true;\n this.cropperSettings.cropperDrawSettings.strokeColor = 'rgba(255,255,255,1)';\n this.cropperSettings.cropperDrawSettings.strokeWidth = 1;\n }\n\n @Input()\n set image(data) {\n if (data && data.fileId && !this.personPhotoLink) {\n this.imageCropService.blobServiceRequestAccess(this.service, data.fileId, true).subscribe(response => {\n this.personPhotoLink = response.result.locationURI;\n });\n }\n }\n\n onUploadHandler($event) {\n this.file = $event.files[0];\n\n if (this.file && this.file.size > 5000000) {\n this.file = null;\n this.imageCrop = [];\n this.toastService.showError('O tamanho máximo permitido para a imagem é de 5MB');\n return;\n }\n this.display = false;\n\n const image: any = new Image();\n const myReader: FileReader = new FileReader();\n myReader.onloadend = (loadEvent: any) => {\n image.src = loadEvent.target.result;\n this.cropper.setImage(image);\n };\n\n myReader.readAsDataURL(this.file);\n this.display = true;\n }\n\n ngOnInit(): void {\n this.data.image = null;\n this.personPhotoLink = null;\n this.personFirstName = '';\n this.display = false;\n }\n\n showDialog(): void {\n this.display = true;\n }\n\n onHide() {\n this.display = false;\n }\n\n reset() {\n this.file = null;\n this.data = {};\n this.imageCrop = [];\n this.cropper.reset();\n this.data.image = null;\n this.personPhotoLink = null;\n this.personFirstName = '';\n }\n\n async saveImage() {\n if (!this.file) {\n this.onClickSave.emit(null);\n this.onHide();\n return;\n }\n\n const fileName = this.file['name'];\n if (this.cropper && this.cropper.image) {\n const fileImage = await this.urltoFile(this.cropper.image.image, fileName);\n this.personPhotoLink = this.data.image;\n let fileUpload = null;\n if (this.file) {\n fileUpload = { fileName: this.file['name'] };\n } else if (this.data) {\n fileUpload = { fileName: this.data.fileId.split('/')[1] };\n }\n if (fileUpload) {\n const thisContext = this;\n this.imageCropService.blobServiceRequestUpload(this.service, fileUpload).subscribe(response => {\n const request = new XMLHttpRequest();\n request.open('PUT', response.result.locationURI, true);\n request.setRequestHeader('Translate', 'f');\n request.send(fileImage);\n this.onClickSave.emit(response.result);\n this.onHide();\n });\n }\n }\n }\n\n urltoFile(url, filename, mimeType = null) {\n mimeType = mimeType || (url.match(/^data:([^;]+);/) || '')[1];\n return fetch(url)\n .then(function(res) {\n return res.arrayBuffer();\n })\n .then(function(buf) {\n return new File([buf], filename, { type: mimeType });\n });\n }\n\n deleteImage() {\n this.imageCropService.blobServiceFileDelete(this.service, this.data && this.data.image && this.data.image.fileId);\n this.reset();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ImageCropperModule } from 'ng2-img-cropper';\nimport { ButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\nimport { FileUploadModule } from 'primeng/fileupload';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { ImageCropComponent } from './image-crop.component';\nimport { ImageCropService } from './image-crop.service';\nimport { ThumbnailModule, ImageCropperService } from '@seniorsistemas/angular-components';\n\n@NgModule({\n imports: [\n CommonModule,\n SharedModule,\n DialogModule,\n ButtonModule,\n FileUploadModule,\n ImageCropperModule,\n ImageCropperModule,\n ThumbnailModule],\n declarations: [ImageCropComponent],\n providers: [ImageCropService, ImageCropperService],\n exports: [ImageCropComponent],\n})\n/**\n * @deprecated\n */\nexport class ImageCropModule {}\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\nimport * as _moment from \"moment\";\nimport { LocaleService } from \"@seniorsistemas/angular-components\";\n\nconst moment = _moment;\n\n@Component({\n selector: \"input-date-calendar-model\",\n templateUrl: \"./input-date-model.component.html\",\n})\nexport class InputDateModelComponent implements OnInit {\n @Input()\n name: string;\n @Input()\n disabled?: boolean;\n @Input()\n withoutDay: boolean;\n @Input()\n unmask: boolean;\n @Input()\n style: boolean;\n @Input()\n styleClass: string;\n\n @Output()\n onBlurGetMoment: EventEmitter<any> = new EventEmitter();\n @Output()\n modelChange: EventEmitter<any> = new EventEmitter();\n\n private _date: any;\n private locale: any;\n private format: any;\n private _model: any;\n mask = null;\n\n constructor(private localeService: LocaleService) {\n }\n\n ngOnInit() {\n this.localeService.get().subscribe(loc => {\n this.mask = this.formatMask(loc);\n this.format = this.getFormat();\n if (this.model) {\n const newDate = this.model;\n const momentDate = moment(newDate, this.format || \"YYYY-MM-DD\");\n if (momentDate.isValid()) {\n this.model = momentDate.format(this.format || \"L\");\n this._date = momentDate;\n } else {\n this._date = null;\n }\n }\n });\n }\n\n formatMask(loc) {\n this.locale = loc;\n let dateMask = this.locale.calendar.dateFormat.toString();\n\n if (this.withoutDay) {\n dateMask = dateMask.replace(\"dd/\", \"\").replace(\"-dd\", \"\");\n }\n\n dateMask = dateMask.replace(/[d]|[m]/g, \"9\");\n return dateMask.replace(/[y]/g, \"99\");\n }\n\n getFormat() {\n let dateFormat = this.locale.calendar.dateFormat.toString();\n dateFormat = dateFormat.replace(/[y]/g, \"YY\");\n\n if (this.withoutDay) {\n dateFormat = dateFormat.replace(\"dd/\", \"\").replace(\"-dd\", \"\");\n }\n\n return dateFormat.toUpperCase();\n }\n\n get placeholder() {\n return this.mask ? this.mask.toString().replace(/[9]/g, \"_\") : \"\";\n }\n\n onBlur() {\n const dateComponet = this.model;\n this._date = moment(dateComponet, this.format);\n this.onBlurGetMoment.emit(this._date);\n }\n\n set model(val) {\n this._model = val;\n this.modelChange.emit(this._model);\n }\n\n @Input()\n get model() {\n return this._model;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\n\nimport { InputDateModelComponent } from './input-date-model.component';\n\n@NgModule({\n imports: [InputMaskModule, FormsModule, ReactiveFormsModule, CommonModule],\n declarations: [InputDateModelComponent],\n exports: [InputDateModelComponent],\n})\nexport class InputDateModelModule {}\n","import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ValidatorFn } from '@angular/forms/';\nimport * as chance from 'chance';\nimport * as momentImported from 'moment';\nimport business from 'moment-business';\nimport { LocaleOptions } from '@seniorsistemas/angular-components';\nimport { FieldValidatorsObject } from '../../core/interfaces/field-validators-object';\n\nconst moment = momentImported;\n\nexport function isObject(item) {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n\nexport function isShallow(item) {\n return Array.isArray(item) && item.find(value => typeof value === 'object') ? false : true;\n}\n\nexport function convertBooleanString(value) {\n if (typeof value === 'boolean') {\n return value === true ? 'true' : 'false';\n }\n return value;\n}\n\nexport function convertStringToBoolean(value) {\n return value === true || value.toLowerCase() === 'true';\n}\n\nexport function assign(target, ...sources) {\n if (!sources.length) {\n return target;\n }\n\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) {\n Object.assign(target, { [key]: {} });\n }\n assign(target[key], source[key]);\n } else {\n if (isShallow(source[key])) {\n Object.assign(target, { [key]: source[key] });\n } else {\n if (!target[key]) {\n Object.assign(target, { [key]: [] });\n }\n Object.assign(target, { [key]: source[key].map((item, index) => assign(target[key][index] || {}, item)) });\n }\n }\n }\n }\n return assign(target, ...sources);\n}\n\nexport function isValid(value) {\n return value === 0 || typeof value === 'boolean' ? true : value !== undefined && value !== null && value !== '';\n}\n\nexport function isValidDate(value, withDays = true) {\n if (value && isFullDate(value, withDays)) {\n if (withDays) {\n return moment(value.replace(/[^\\d]+/g, ''), 'DDMMYYYY').isValid();\n } else {\n return moment(value.replace(/[^\\d]+/g, ''), 'MMYYYY').isValid();\n }\n }\n return true;\n}\n\nexport function isFullDate(value, withDays = true) {\n if (value) {\n let totalLength;\n if (withDays) {\n totalLength = 8;\n } else {\n totalLength = 6;\n }\n return value.replace(/[^\\d]+/g, '').length === totalLength;\n }\n return true;\n}\n\nexport function autoCompleteObjectForIdObject(tableIdObject) {\n if (!isObject(tableIdObject)) {\n console.error('Paramentro não é um objeto');\n return false;\n }\n\n if (tableIdObject.hasOwnProperty('tableId')) {\n console.error('Paramentro não é um objeto Auto Complete válido, falta tableId');\n }\n\n if (!isValid(tableIdObject.tableId)) {\n console.error('tableId esta vazio');\n }\n\n return { id: tableIdObject.tableId };\n}\n\nexport function isDateField(name, value) {\n const testDate = name.search('Date');\n if (testDate !== -1) {\n return invertFieldDate(value);\n }\n return value;\n}\n\nexport function invertFieldDate(value, inFormat = 'DDMMYYYY', outFormat = 'YYYY-MM-DD') {\n if (!isValid(value)) {\n return;\n }\n const formatIn = getFormatDate(value, inFormat);\n return moment(value.replace(/[^\\d]+/g, ''), formatIn).format(outFormat);\n}\n\nexport function getAddWeekDaysBusiness(value, quantidade) {\n return business.addWeekDays(getMoment(value), quantidade).format('DD/MM/YYYY');\n}\n\nexport function getWeekDaysBusiness(startDate, endDate) {\n const endMoment = endDate ? getMoment(endDate) : getMoment(startDate).endOf('month');\n return business.weekDays(getMoment(startDate), endMoment);\n}\n\nexport function getFormatDate(value, inFormat) {\n if (value.search('/') !== -1) {\n return 'DDMMYYYY';\n } else if (value.search('-') !== -1) {\n return 'YYYYMMDD';\n }\n return inFormat;\n}\n\n/**\n * FIXME - Está fixo para uso do calendário portugues Brasil\n * @param value\n * @param outFormat\n * @returns\n */\nexport function ngCalendarFormat(value, outFormat = 'DD/MM/YYYY') {\n if (isValidDate(value)) {\n if (typeof value === 'string') {\n return value;\n } else {\n return _moment(value).format(outFormat);\n }\n }\n}\n\nexport function getNowDate(outFormat = 'YYYY-MM-DD') {\n return moment().format(outFormat);\n}\n\nexport function getMoment(value, inFormat = 'DDMMYYYY') {\n const formatIn = getFormatDate(value, inFormat);\n return moment(value.replace(/[^\\d]+/g, ''), formatIn);\n}\n\nexport function _moment(value, format?: string) {\n if (format) {\n return moment(value, format);\n }\n return moment(value);\n}\n\nexport function getObjValids(objs) {\n const json = Object.assign({}, objs);\n const jsonReturn = {};\n Object.keys(json).map(key => {\n if (isValid(json[key])) {\n jsonReturn[key] = isDateField(key, json[key]);\n }\n });\n return jsonReturn;\n}\n\nexport function removeEmpty(obj) {\n Object.keys(obj).forEach(\n k => (obj[k] && typeof obj[k] === 'object' && removeEmpty(obj[k])) || (!obj[k] && obj[k] !== undefined && delete obj[k])\n );\n return obj;\n}\n\nexport function formatMoney(value, i18n = 'EN') {\n switch (i18n) {\n case 'EN':\n return isValid(value)\n ? value\n .toString()\n .replace('.', '')\n .replace(',', '.')\n : '';\n case 'BR':\n return isValid(value)\n ? value\n .toString()\n .replace('.', ',')\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1.')\n : '';\n default:\n return isValid(value)\n ? value\n .toString()\n .replace('.', '')\n .replace(',', '.')\n : '';\n }\n}\n\nexport function uiid() {\n return new chance()\n .guid()\n .replace(/[^a-zA-Z0-9.]/g, '')\n .toUpperCase();\n}\n\nexport function mountCustomForSave(custom, customEntity = null, locale = null) {\n const custonField = [];\n if (customEntity && custom.length) {\n customEntity.map((val, key) => {\n const field = Object.keys(custom[key]).toString();\n const valOrnull = isValid(custom[key][field]) ? custom[key][field] : null;\n const value =\n val.type === 'date' && locale && isValid(valOrnull) ? moment(valOrnull, getFormat(locale)).format('YYYY-MM-DD') : valOrnull;\n custonField.push({\n field: field,\n value: value,\n });\n });\n }\n return custonField.length ? custonField : null;\n}\n\n/**\n * Prepara o objeto de campos customizados para salvar as entidades que\n * são utilizadas a partir do CRUD customizado.\n * @param objectFields objeto com os campos customizados da entidade.\n */\nexport function mountCustomToSave(objectFields) {\n const customFields = [];\n Object.entries(objectFields).forEach(([field, value]) => {\n customFields.push({\n field: field,\n value: value,\n });\n });\n return customFields;\n}\n\n/**\n * Prepara o objeto de campos customizados para exibir as entidades que\n * são utilizadas a partir do CRUD customizado.\n * @param customFields objeto com os campos customizados da entidade.\n */\nexport function mountCustomToShow(customFields) {\n const customFieldsToShow = {};\n if (customFields && customFields.length) {\n customFields.forEach(item => {\n if (item.type === 'date' && item.value) {\n item.value = _moment(item.value).format('L');\n }\n customFieldsToShow[item.field] = item.value;\n });\n }\n return customFieldsToShow;\n}\n\n/**\n * Prepara o objeto de campos customizados para salvar as entidades que\n * são utilizadas a partir do CRUD gerado.\n * @param objectFields objeto com os campos customizados da entidade.\n */\nexport function mountGeneratedCustomToSave(objectFields) {\n Object.entries(objectFields).forEach(([key, value]) => {\n if (!value) {\n delete objectFields[key];\n }\n });\n return objectFields;\n}\n\nexport function mountCustomForShow(custom) {\n const customField = [];\n Object.keys(custom || {}).forEach(val => {\n if (custom[val].type === 'date' && custom[val].value) {\n custom[val].value = _moment(custom[val].value).format('L');\n }\n customField.push(custom[val]);\n });\n return customField;\n}\n\nexport function setValueCustom(custonFields, custom) {\n const isCustons = custom ? Object.keys(custom).length : 0;\n custonFields.map(val => {\n val.value = isCustons > 0 ? custom[val.field] : null;\n });\n return custonFields;\n}\n\n/**\n * Adiciona um erro no controle do formulário. Deve ser chamado com .call passando o contexto da class.\n * Ex.: setErrors.call(this.contractGroup, 'registerEmployeeNumber', 'exist', !payload)\n *\n * @param formControlName Nome do controle do formulário.\n * @param keyError Nome do error a ser exibido em tela.\n * @param isInvalid Se houver algum erro de validação no campo.\n */\nexport function setErrors(formControlName: string, keyError: string, isInvalid: boolean): void {\n setTimeout(() => {\n if (isInvalid) {\n const errors = Object.assign({}, this.get(formControlName).errors);\n errors[keyError] = isInvalid;\n this.get(formControlName).setErrors(errors);\n } else {\n const errors = this.get(formControlName).errors;\n\n if (errors && Object.keys(errors).length) {\n delete errors[keyError];\n\n if (!Object.keys(errors).length) {\n this.get(formControlName).setErrors(null);\n }\n }\n }\n }, 0);\n}\n\n/**\n * Faz loop do nos controls do formulário e subArray caso existir\n * setando os inválidos\n * Ex.: verifyValidationsForm.call(this.initialGroup);\n */\nexport function verifyValidationsForm() {\n Object.keys(this.controls).map(field => {\n const control = this.get(field);\n control.markAsDirty();\n if (control instanceof FormGroup || control instanceof FormArray) {\n verifyValidationsForm.call(control);\n }\n });\n}\n\n/**\n * Retorna a idade de acordo com a data de nascimento.\n *\n * @param birthdayDate Data de nascimento.\n */\nexport function getYears(birthday) {\n const currentDate = moment();\n const years = currentDate.diff(birthday, 'years', false);\n return years;\n}\n\nexport function setCustonFields(customFields) {\n customFields.map(val => {\n const addCuston = {};\n let value = val.value || null;\n if (typeof value === 'boolean') {\n value = value ? 'true' : 'false';\n }\n addCuston[val.field] = new FormControl(value);\n this.push(new FormGroup(addCuston));\n });\n return customFields;\n}\n\n export function setRequired(formGroup: FormGroup, name: string, required: boolean, validators?: ValidatorFn[]) {\n if (required) {\n formGroup.controls[name].setValidators(Validators.compose(validators && validators.length ? validators : [Validators.required]));\n formGroup.controls[name].updateValueAndValidity();\n } else {\n formGroup.controls[name].setValidators(null);\n formGroup.controls[name].updateValueAndValidity();\n }\n}\n\n/**\n * Esse método tem como função setar os campos enable ou disable.\n * @param formGroup FormGroup onde se encontra os campos a serem alterados.\n * @param condition Condição para validação. True = enabled, False = disabled.\n * @param fields Campos a serem manipulados.\n * @param fieldsToClear Campos a serem limpos. à opicional e se não foi passado o método limpará os mesmos campos dos fields.\n */\nexport function configEnabledFields(formGroup: FormGroup, condition: boolean, fields: Array<string>, fieldsToClear?: Array<string>) {\n if (condition) {\n fields.forEach(field => formGroup.get(field).enable());\n } else {\n fields.forEach(field => formGroup.get(field).disable());\n clearValues(formGroup, fieldsToClear ? fieldsToClear : fields);\n }\n}\n\n/**\n * Esse método tem como função setar os campos como requeridos ou não.\n *\n * @param formGroup FormGroup onde se encontra os campos a serem alterados.\n * @param condition Se será ou não requeridos.\n * @param fields Lista de campos.\n */\nexport function setRequiredFields(formGroup: FormGroup, condition: boolean, fields: Array<string>) {\n if (condition) {\n fields.forEach(field => setRequired(formGroup, field, true, [Validators.required]));\n } else {\n fields.forEach(field => setRequired(formGroup, field, false));\n }\n}\n\n\n/**\n * Esse método tem como função setar validações dinâmicas nos campos.\n *\n * @param formGroup FormGroup onde se encontra os campos a serem alterados.\n * @param fields Lista de objetos [{field: campo, validators: validações, disable: boolean}].\n */\nexport function setValidatorsAndDisableFields(formGroup: FormGroup, fields: Array<FieldValidatorsObject>) {\n fields.forEach((currentField: FieldValidatorsObject) => {\n setValidator(formGroup, currentField.field, currentField.validators);\n setDisableField(formGroup, currentField.disabled, currentField.field, currentField.clearValue);\n });\n}\n\n\nexport function setValidator(formGroup: FormGroup, name: string, validators?: ValidatorFn[]) {\n if (validators && validators.length) {\n formGroup.controls[name].setValidators(Validators.compose(validators));\n formGroup.controls[name].updateValueAndValidity();\n } else {\n formGroup.controls[name].setValidators(null);\n formGroup.controls[name].updateValueAndValidity();\n }\n}\n\n\n/**\n * Esse método tem como função setar os campos enable ou disable.\n * @param formGroup FormGroup onde se encontra os campos a serem alterados.\n * @param condition Condição para validação. True = disabled, False = enabled.\n * @param field Campo a ser manipulados.\n * @param clearValue Campos a ser limpos. à opicional e se não foi passado o método limpará o campo do field.\n */\nexport function setDisableField(formGroup: FormGroup, condition: boolean, field: string, clearValue: boolean = true) {\n if (condition) {\n formGroup.get(field).disable();\n if (clearValue) formGroup.get(field).reset();\n } else {\n formGroup.get(field).enable();\n }\n}\n\n/**\n * Ordena array de objetos\n * @param key o campo que deseja ordenar\n * @param order a ordem que deseja ordenar o campo\n */\nexport function compareValues(key: string, order: string = \"ASC\") {\n return function innerSort(a: any, b: any) {\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {\n return 0;\n }\n\n const varA = (typeof a[key] === \"string\")\n ? a[key].toUpperCase() : a[key];\n const varB = (typeof b[key] === \"string\")\n ? b[key].toUpperCase() : b[key];\n\n let comparison = 0;\n if (varA > varB) {\n comparison = 1;\n } else if (varA < varB) {\n comparison = -1;\n }\n return (\n (order === \"DESC\") ? (comparison * -1) : comparison\n );\n };\n}\n\n/**\n * Esse método tem como função limpar o valor dos campos.\n *\n * @param formGroup FormGroup onde se encontra os campos a serem limpos.\n * @param fields Campos a serem limpos.\n */\nexport function clearValues(formGroup: FormGroup, fields: Array<string>) {\n fields.forEach(field => formGroup.get(field).reset());\n}\n\n/**\n *\n * @param qs = window.location.search\n * @returns Object com parametros query string\n */\nexport function getQueryParams(qs) {\n qs = qs.split('+').join(' ');\n\n const params = {};\n let tokens;\n const re = /[?&]?([^=]+)=([^&]*)/g;\n\n while ((tokens = re.exec(qs))) {\n params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);\n }\n\n return params;\n}\n\nexport function getFormat(locale) {\n if (locale) {\n let dateFormat = locale.calendar.dateFormat.toString();\n dateFormat = dateFormat.replace(/[y]/g, 'YY');\n dateFormat = dateFormat.replace(/[/]/g, '');\n return dateFormat.toUpperCase();\n }\n}\n\n/**\n * Remove os caracteres que não sejam números do valor\n * @param value valor a ser tratado\n * @returns string O valor sem caracteres especiais\n */\nexport function removeCharacteresSpecials(value: any): string {\n return value ? value.toString().replace(/[&\\/\\\\#,+()$~%.'\":*?<>{}-]/g, \"\") : null;\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\nimport { ServiceType } from '../../core/enums/serviceType';\n\n@Injectable()\nexport class InputRestAutoCompleteService {\n constructor(private http: HttpClientService) {}\n\n query(path: string, body: object, service: ServiceType = ServiceType.PAYROLL): Observable<any> {\n return this.http.query(path, body, service);\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { _moment, isValid } from '../utils/helpers';\nimport { InputRestAutoCompleteService } from './input-rest-auto-complete.service';\nimport { ServiceType } from '../../core/enums/serviceType';\n\nexport interface IConditions {\n fields: Array<string[]>;\n fieldType: string;\n expression: string;\n value: string;\n}\n\n@Component({\n selector: 'input-rest-auto-complete',\n templateUrl: './input-rest-auto-complete.component.html',\n styleUrls: ['./input-rest-auto-complete.component.css'],\n})\nexport class InputRestAutoCompleteComponent implements OnInit {\n @ViewChild('autoCompleteObject', { static: true })\n _autoCompleteObject: ElementRef;\n @Input()\n name: string;\n @Input()\n table: string;\n @Input()\n order: Array<any[]>;\n @Input()\n enableEntityFilters: boolean;\n @Input()\n fields: Array<any[]>;\n @Input()\n conditionsFields?: Array<any[]>;\n @Input()\n conditions: Array<IConditions>;\n @Input()\n placeholder: string;\n @Input()\n readonly: boolean;\n @Input()\n required: boolean;\n @Input()\n disabled: boolean;\n @Input()\n dropdown: boolean;\n @Input()\n forceSelection = true;\n @Input()\n error: object;\n @Input()\n emptyMessage: string;\n @Input()\n keyCode?: string;\n @Input()\n keyName = 'name';\n @Input()\n concatFieldsForName?: any[];\n @Input()\n itemSelect: any;\n @Input()\n form: FormGroup;\n @Input()\n inputId: string;\n @Input()\n isTimetrackingSituation: boolean;\n @Input()\n isDepartmentFromCompany: boolean;\n @Input()\n companyId: string;\n @Input()\n referenceDate: string;\n @Input()\n isDismissalReason: boolean;\n @Input()\n keyToExclude: any = [];\n @Input()\n usingType: any = [];\n @Input()\n minCharactersToSearch = 3;\n @Input()\n isWagetype: boolean;\n private isDropdown: boolean;\n @Input()\n multiple = false;\n @Input()\n serviceType: ServiceType = ServiceType.PAYROLL;\n @Output()\n onBlur: EventEmitter<any> = new EventEmitter();\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter();\n @Output()\n onClear: EventEmitter<any> = new EventEmitter();\n\n suggestions: any[] = [];\n\n constructor(private service: InputRestAutoCompleteService) {}\n\n ngOnInit() {}\n\n filterQuery(event: any): any {\n const query = event.query;\n if (!(isNaN(query) && query.toString().length < this.minCharactersToSearch)) {\n try {\n if (this.isTimetrackingSituation) {\n return this.service\n .query('autocompleteTimetrackingSituation', {\n valueSearch: query,\n referenceDate: this.referenceDate,\n })\n .subscribe(payload => this.formaterResponce(payload.result));\n } else if (this.isDismissalReason) {\n const params = { valueSearch: query };\n if (this.referenceDate) {\n params['referenceDate'] = this.referenceDate;\n }\n return this.service\n .query('autocompleteDismissalReason', params, ServiceType.GENERAL_REGISTER)\n .subscribe(payload => this.formaterResponce(payload.result));\n } else if (this.usingType && this.usingType.length) {\n return this.service\n .query('autocompleteOtherCompanyFilterUsingType', {\n searchText: query,\n usingType: this.usingType,\n })\n .subscribe(payload => this.formaterResponce(payload.result));\n } else if (this.isDepartmentFromCompany) {\n return this.service\n .query('autocompleteDepartmentQuery', {\n searchText: query,\n companyId: this.companyId,\n referenceDate: this.referenceDate,\n })\n .subscribe(payload => this.formaterResponce(payload.result));\n } else if (this.isWagetype) {\n const params = { searchText: query, companyId: this.companyId };\n return this.service\n .query('autocompleteWagetypeQuery', params, ServiceType.ENTRY)\n .subscribe(payload => this.formaterResponce(payload.result));\n }\n this.service\n .query('autocomplete', this.getParamsRest(query), this.serviceType).subscribe(payload => this.formaterResponce(payload.result));\n } catch (e) {\n console.log(e);\n }\n }\n }\n\n formaterResponce(result) {\n this.suggestions = [];\n const valsResult = [];\n result.map(value => {\n const valueConcat = {\n tableId: value.tableId,\n name: '',\n };\n if (this.isTimetrackingSituation || this.isDismissalReason || (this.usingType && this.usingType.length)) {\n if (this.keyToExclude.includes(value.fields && value.fields[2] && value.fields[2].value)) {\n return;\n }\n\n let fieldName = '';\n\n value.fields.map(val => {\n valueConcat[val.name] = val.value;\n });\n\n fieldName += value.fields.filter(val => val.name.toLowerCase() === 'code').map(code => (code ? (code.value += ' - ') : ''))[0];\n if (this.usingType && this.usingType.length && (!fieldName || fieldName === 'undefined')) {\n fieldName = '';\n }\n fieldName += value.fields.filter(val => val.name.toLowerCase() === 'name').map(name => (name ? name.value : ''))[0];\n\n valueConcat.name = fieldName;\n valsResult.push(valueConcat);\n } else {\n value.fields.map(val => {\n valueConcat[val.name] = val.value;\n });\n let fieldName = '';\n if (this.concatFieldsForName) {\n this.concatFieldsForName.map(val => {\n // se o campo for data, formata pro locale do usuário\n if (val.includes('date') || val.includes('Birthday')) {\n valueConcat[val] = _moment(valueConcat[val]).format('DD/MM/YYYY');\n }\n fieldName += valueConcat[val] + ' - ';\n });\n fieldName = fieldName.slice(0, -3);\n } else {\n if (this.keyCode) {\n fieldName += valueConcat[this.keyCode] + ' - ';\n }\n if (this.keyName) {\n fieldName += valueConcat[this.keyName];\n }\n }\n valueConcat.name = fieldName;\n valsResult.push(valueConcat);\n }\n });\n this.suggestions = [...valsResult];\n return valsResult;\n }\n\n getParamsRest(search: string): object {\n return {\n table: this.table,\n fields: this.fields,\n order: this.order,\n conditions: this.getConditionsRest(search),\n enableEntityFilters: this.enableEntityFilters,\n };\n }\n\n getConditionsRest(search: string) {\n const conditiosReturn = [\n {\n fields: this.conditionsFields || this.fields,\n expression: 'LIKE',\n value: `${search}`,\n },\n ];\n\n if (this.conditions) {\n this.conditions.map(val => {\n if (['IS_NULL', 'IS_NOT_NULL', 'IS_TRUE'].includes(val.expression) || isValid(val.value)) {\n conditiosReturn.push(val);\n }\n });\n }\n\n return conditiosReturn;\n }\n\n /**\n * Externiza a função de select das opções\n * <input-rest-auto-complete (onSelect)=\"onSelectHandle($event)\" ></input-rest-auto-complete>\n * @param option\n */\n selectOption(option: object) {\n this.onSelect.emit(option);\n }\n\n async onClearItem(option: object) {\n await this.onClear.emit(option);\n this.form.get(this.name).reset();\n }\n\n onBlurItem(option: object) {\n if (!this.isDropdown) {\n this.form.controls[this.name].markAsDirty();\n this.onBlur.emit(option);\n } else {\n this.isDropdown = false;\n }\n }\n\n onDropdownClick() {\n this.isDropdown = true;\n }\n\n get autoCompleteObject() {\n return this._autoCompleteObject;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AutoCompleteModule } from 'primeng/autocomplete';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { InputRestAutoCompleteComponent } from './input-rest-auto-complete.component';\nimport { InputRestAutoCompleteService } from './input-rest-auto-complete.service';\n\n@NgModule({\n imports: [CommonModule, FormsModule, HttpClientModule, AutoCompleteModule, SharedModule, ReactiveFormsModule],\n declarations: [InputRestAutoCompleteComponent],\n providers: [InputRestAutoCompleteService],\n exports: [InputRestAutoCompleteComponent],\n})\nexport class InputRestAutoCompleteModule {}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\n\n@Injectable()\nexport class InputRestAutoCompleteEmployeeService {\n constructor(private http: HttpClientService) {}\n\n query(path: string, body: object): Observable<any> {\n const endpoit = `queries/${path}`;\n return this.http.post(endpoit, body);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { getMoment } from '../utils/helpers';\nimport { InputRestAutoCompleteEmployeeService } from './input-rest-auto-complete-employee.service';\n\nexport interface IConditions {\n fields: Array<string[]>;\n value: string;\n}\n\n@Component({\n selector: 'input-rest-auto-complete-employee',\n templateUrl: './input-rest-auto-complete-employee.component.html',\n styleUrls: ['./input-rest-auto-complete-employee.component.css'],\n})\nexport class InputRestAutoCompleteEmployeeComponent implements OnInit {\n @Input()\n name: string;\n @Input()\n value: string;\n @Input()\n company: any;\n @Input()\n branch: any;\n @Input()\n employeeType: any;\n @Input()\n otherContractType: any;\n @Input()\n filterEmployeeType: boolean;\n @Input()\n enableEntityFilters: boolean;\n @Input()\n placeholder: string;\n @Input()\n readonly: boolean;\n @Input()\n required: boolean;\n @Input()\n disabled: boolean;\n @Input()\n dropdown: boolean;\n @Input()\n forceSelection = true;\n @Input()\n error: object;\n @Input()\n emptyMessage: string;\n @Input()\n keyCode: string;\n @Input()\n keyName = 'name';\n @Input()\n itemSelect: any;\n @Input()\n form: FormGroup;\n @Input()\n inputId: string;\n private isDropdown: boolean;\n\n @Output()\n onBlur: EventEmitter<any> = new EventEmitter();\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter();\n @Output()\n onClear: EventEmitter<any> = new EventEmitter();\n\n suggestions: any[] = [];\n\n constructor(private service: InputRestAutoCompleteEmployeeService) {}\n\n ngOnInit() {}\n\n filterQuery(event: any) {\n const query = event.query;\n if (!(isNaN(query) && query.toString().length < 3)) {\n try {\n this.service.query('autocompleteEmployee', this.getParamsRest(query)).subscribe(payload => this.formaterResponce(payload.result));\n } catch (e) {\n console.log('Erro ao buscar no back');\n }\n }\n }\n\n formaterResponce(result) {\n this.suggestions = [];\n const valsResult = [];\n result.map(value => {\n const valueConcat = {\n tableId: value.tableId,\n code: '',\n name: '',\n fullname: '',\n admission: '',\n document: '',\n };\n\n if (value.fields && value.fields.length) {\n valueConcat.fullname = value.fields[0].value;\n valueConcat.admission = value.fields[1].value;\n valueConcat.document = value.fields[2].value;\n valueConcat.code = value.fields.length === 4 && value.fields[3].value;\n\n // Pode acontecer de não vim o código.\n if (valueConcat.code) {\n valueConcat.name = valueConcat.code\n .concat(' - ')\n .concat(valueConcat.fullname)\n .concat(' - ')\n .concat(getMoment(valueConcat.admission).format('DD/MM/YYYY'));\n } else {\n valueConcat.name = valueConcat.fullname.concat(' - ').concat(getMoment(valueConcat.admission).format('DD/MM/YYYY'));\n }\n\n valsResult.push(valueConcat);\n }\n });\n this.suggestions = valsResult;\n return valsResult;\n }\n\n getParamsRest(search: string): object {\n const returnFilter = {\n valueSearch: search,\n enableEntityFilters: this.enableEntityFilters,\n };\n if (this.company) {\n returnFilter['company'] = this.company;\n }\n if (this.branch) {\n returnFilter['companyBranch'] = this.branch;\n }\n if (this.employeeType) {\n returnFilter['employeeType'] = this.employeeType;\n }\n if (this.otherContractType) {\n returnFilter['otherContractType'] = this.otherContractType;\n }\n if (this.filterEmployeeType === false) {\n returnFilter['filterEmployeeType'] = this.filterEmployeeType;\n }\n return returnFilter;\n }\n\n /**\n * Externiza a função de select das opções\n * <input-rest-auto-complete-employee (onSelect)=\"onSelectHandle($event)\" ></input-rest-auto-complete-employee>\n * @param option\n */\n selectOption(option: object) {\n this.onSelect.emit(option);\n }\n\n onClearItem(option: object) {\n this.onClear.emit(option);\n }\n\n onBlurItem(option: object) {\n if (!this.isDropdown) {\n this.form.controls[this.name].markAsDirty();\n this.onBlur.emit(option);\n } else {\n this.isDropdown = false;\n }\n }\n\n onDropdownClick() {\n this.isDropdown = true;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AutoCompleteModule } from 'primeng/autocomplete';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { InputRestAutoCompleteEmployeeComponent } from './input-rest-auto-complete-employee.component';\nimport { InputRestAutoCompleteEmployeeService } from './input-rest-auto-complete-employee.service';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule\n ],\n declarations: [ InputRestAutoCompleteEmployeeComponent ],\n providers: [ InputRestAutoCompleteEmployeeService ],\n exports: [ InputRestAutoCompleteEmployeeComponent ]\n})\nexport class InputRestAutoCompleteEmployeeModule {\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\n\n@Injectable()\nexport class InputRestAutoCompleteEmployeeModelService {\n constructor(private http: HttpClientService) {}\n\n query(path: string, body: object): Observable<any> {\n const endpoit = `queries/${path}`;\n return this.http.post(endpoit, body);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { getMoment } from '../utils/helpers';\nimport { InputRestAutoCompleteEmployeeModelService } from './input-rest-auto-complete-employee-model.service';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport interface IConditions {\n fields: Array<string[]>;\n value: string;\n}\n\n@Component({\n selector: 'input-rest-auto-complete-employee-model',\n templateUrl: './input-rest-auto-complete-employee-model.component.html',\n styleUrls: ['./input-rest-auto-complete-employee-model.component.css'],\n})\nexport class InputRestAutoCompleteEmployeeModelComponent implements OnInit {\n private _model: any;\n @Input()\n name: string;\n @Input()\n value: string;\n @Input()\n company: any;\n @Input()\n branch: any;\n @Input()\n employeeType: any;\n @Input()\n placeholder: string;\n @Input()\n readonly: boolean;\n @Input()\n required: boolean;\n @Input()\n disabled: boolean;\n @Input()\n dropdown: boolean;\n @Input()\n forceSelection = true;\n @Input()\n error: object;\n @Input()\n emptyMessage: string;\n @Input()\n keyCode: string;\n @Input()\n keyName = 'name';\n @Input()\n itemSelect: any;\n @Input()\n style: any;\n @Input()\n inputStyle: any;\n\n @Output()\n onBlur: EventEmitter<any> = new EventEmitter();\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter();\n @Output()\n onClear: EventEmitter<any> = new EventEmitter();\n @Output()\n modelChange: EventEmitter<any> = new EventEmitter();\n\n suggestions: any[] = [];\n private useWorkflow: boolean;\n private ngUnsubscribe = new Subject();\n\n constructor(private service: InputRestAutoCompleteEmployeeModelService,\n private activatedRoute: ActivatedRoute,\n ) {}\n\n ngOnInit() {\n this.activatedRoute.data.pipe(takeUntil(this.ngUnsubscribe)).subscribe((data) => {\n this.useWorkflow = !!(data && data.useWorkflow);\n });\n }\n\n filterQuery(event: any) {\n const query = event.query;\n if (!(isNaN(query) && query.toString().length < 3)) {\n try {\n this.service.query('autocompleteEmployee', this.getParamsRest(query)).subscribe(payload => this.formaterResponce(payload.result));\n } catch (e) {\n console.log('Erro ao buscar no back');\n }\n }\n }\n\n formaterResponce(result) {\n this.suggestions = [];\n const valsResult = [];\n result.map(value => {\n const valueConcat = {\n tableId: value.tableId,\n code: '',\n name: '',\n fullname: '',\n admission: '',\n document: '',\n };\n\n if (value.fields && value.fields.length) {\n valueConcat.fullname = value.fields[0].value;\n valueConcat.admission = value.fields[1].value;\n valueConcat.document = value.fields[2].value;\n valueConcat.code = value.fields.length === 4 && value.fields[3].value;\n\n // Pode acontecer de não vim o código.\n if (valueConcat.code) {\n valueConcat.name = valueConcat.code\n .concat(' - ')\n .concat(valueConcat.fullname)\n .concat(' - ')\n .concat(getMoment(valueConcat.admission).format('DD/MM/YYYY'));\n } else {\n valueConcat.name = valueConcat.fullname.concat(' - ').concat(getMoment(valueConcat.admission).format('DD/MM/YYYY'));\n }\n\n valsResult.push(valueConcat);\n }\n });\n this.suggestions = valsResult;\n return valsResult;\n }\n\n getParamsRest(search: string): object {\n const returnFilter = {\n valueSearch: search,\n };\n if (this.company) {\n returnFilter['company'] = this.company;\n }\n if (this.branch) {\n returnFilter['companyBranch'] = this.branch;\n }\n if (this.employeeType) {\n returnFilter['employeeType'] = this.employeeType;\n }\n /**\n * If para uso do BPO\n * Serve para tirar os colaboradores demitidos do dropbox do autocomplete\n */\n if (this.useWorkflow) {\n returnFilter['timeTrackingResumeType'] = {key: \"FIRED\"};\n }\n\n return returnFilter;\n }\n\n /**\n * Externiza a função de select das opções\n * <input-rest-auto-complete-employee (onSelect)=\"onSelectHandle($event)\" ></input-rest-auto-complete-employee>\n * @param option\n */\n selectOption(option: object) {\n this.onSelect.emit(option);\n }\n\n onClearItem(option: object) {\n this.onClear.emit(option);\n }\n\n onBlurItem(option: object) {\n this.onBlur.emit(option);\n }\n\n set model(val) {\n this._model = val;\n this.modelChange.emit(this._model);\n }\n\n @Input()\n get model() {\n return this._model;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {HttpClientModule} from '@angular/common/http';\nimport {AutoCompleteModule} from 'primeng/autocomplete';\n\nimport {InputRestAutoCompleteEmployeeModelComponent} from './input-rest-auto-complete-employee-model.component';\nimport {InputRestAutoCompleteEmployeeModelService} from './input-rest-auto-complete-employee-model.service';\nimport {SharedModule} from '../shared/shared.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n SharedModule,\n HttpClientModule,\n AutoCompleteModule,\n ReactiveFormsModule\n ],\n declarations: [InputRestAutoCompleteEmployeeModelComponent],\n providers: [InputRestAutoCompleteEmployeeModelService],\n exports: [InputRestAutoCompleteEmployeeModelComponent]\n})\nexport class InputRestAutoCompleteEmployeeModelModule {\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\n\n@Injectable()\nexport class InputRestAutoCompleteEnumService {\n constructor(private http: HttpClientService) {}\n\n query(server: string, enumeration: string): Observable<any> {\n const endpoint = 'enumQuery';\n const request = {\n names: [enumeration],\n };\n return this.http.enumQuery(endpoint, request, server);\n }\n}\n","import { Component, OnInit, EventEmitter, Input, Output, ElementRef, ViewChild } from '@angular/core';\nimport { InputRestAutoCompleteEnumService } from './input-rest-auto-complete-enum.service';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'input-rest-auto-complete-enum',\n templateUrl: './input-rest-auto-complete-enum.component.html',\n styleUrls: ['./input-rest-auto-complete-enum.component.css']\n})\nexport class InputRestAutoCompleteEnumComponent implements OnInit {\n\n @ViewChild('autoCompleteObject', { static: true }) _autoCompleteObjectEl: ElementRef;\n @Input() name: string;\n @Input() placeholder: string;\n @Input() readonly: boolean;\n @Input() required: boolean;\n @Input() disabled: boolean;\n @Input() dropdown: boolean;\n @Input() forceSelection = true;\n @Input() error: object;\n @Input() emptyMessage: string;\n @Input() itemSelect: any;\n @Input() inputId: string;\n private isDropdown: boolean;\n @Input() keyToExclude: any = [];\n @Input() keyToKeep: any = [];\n\n @Input() server: string;\n @Input() enumeration: string;\n @Input() form: FormGroup;\n @Input() multiple = false;\n\n @Output() onSelect: EventEmitter<any> = new EventEmitter();\n @Output() onBlur: EventEmitter<any> = new EventEmitter();\n @Output() onClear: EventEmitter<any> = new EventEmitter();\n\n suggestions: any[] = [];\n payload: any[];\n\n constructor(private service: InputRestAutoCompleteEnumService) {\n }\n\n ngOnInit() {\n try {\n this.service.query(this.server, this.enumeration).subscribe(\n payload =>\n this.payload = payload.results[0].items);\n } catch (e) {\n console.log('Erro ao buscar no back');\n }\n }\n\n filterQuery(event: any) {\n const query = event.query;\n this.suggestions = [];\n if (!(isNaN(query) && (query.toString().length < 3))) {\n if (this.keyToExclude && this.keyToExclude.length) {\n this.payload = this.payload && this.payload.filter(record => !this.keyToExclude.includes(record.key));\n } else if (this.keyToKeep && this.keyToKeep.length) {\n this.payload = this.payload && this.payload.filter(record => this.keyToKeep.includes(record.key));\n }\n for (let i = 0; i < this.payload.length; i++) {\n const item = this.payload[i];\n if (item.value.toLowerCase().indexOf(query.toLowerCase()) !== -1) {\n this.suggestions.push(item);\n }\n }\n }\n }\n\n\n /**\n * Externiza a função de select das opções\n * <input-rest-auto-complete-enum (onSelect)=\"onSelectHandle($event)\" ></input-rest-auto-complete-enum>\n * @param option\n */\n selectOption(option: object) {\n this.onSelect.emit(option);\n }\n\n onBlurItem(option: object) {\n if (!this.isDropdown) {\n this.form.controls[this.name].markAsDirty();\n this.onBlur.emit(option);\n } else {\n this.isDropdown = false;\n }\n }\n\n onDropdownClick() {\n this.isDropdown = true;\n }\n\n async onClearItem(option: object) {\n await this.onClear.emit(option);\n this.form.get(this.name).reset();\n }\n\n get autoCompleteObject() {\n return this._autoCompleteObjectEl;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {HttpClientModule} from '@angular/common/http';\nimport {AutoCompleteModule} from 'primeng/autocomplete';\n\nimport {InputRestAutoCompleteEnumComponent} from './input-rest-auto-complete-enum.component';\nimport {InputRestAutoCompleteEnumService} from './input-rest-auto-complete-enum.service';\nimport {SharedModule} from '../shared/shared.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule\n ],\n declarations: [InputRestAutoCompleteEnumComponent],\n providers: [InputRestAutoCompleteEnumService],\n exports: [InputRestAutoCompleteEnumComponent]\n})\nexport class InputRestAutoCompleteEnumModule {\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ServiceType } from '../../core/enums';\n\nimport { HttpClientService } from '../shared/http-client.service';\n\n@Injectable()\nexport class InputRestAutoCompleteModelService {\n constructor(private http: HttpClientService) {}\n\n query(path: string, body: object, service: ServiceType = ServiceType.PAYROLL): Observable<any> {\n return this.http.query(path, body, service);\n }\n}\n","import { Component, OnInit, EventEmitter, Input, Output } from '@angular/core';\nimport { ServiceType } from '../../core/enums/serviceType';\nimport { InputRestAutoCompleteModelService } from './input-rest-auto-complete-model.service';\nimport { isValid, _moment } from '../utils/helpers';\n\nexport interface IConditions {\n fields: Array<string[]>;\n fieldType: string;\n expression: string;\n value: string;\n}\n\n@Component({\n selector: 'input-rest-auto-complete-model',\n templateUrl: './input-rest-auto-complete-model.component.html',\n styleUrls: ['./input-rest-auto-complete-model.component.css'],\n})\n\nexport class InputRestAutoCompleteModelComponent implements OnInit {\n\n private _model: any;\n @Input() name: string;\n @Input() table: string;\n @Input() order: Array<any[]>;\n @Input() fields: Array<any[]>;\n @Input() conditionsFields?: Array<any[]>;\n @Input() conditions: Array<IConditions>;\n @Input() placeholder: string;\n @Input() readonly: boolean;\n @Input() required: boolean;\n @Input() disabled: boolean;\n @Input() dropdown: boolean;\n @Input() forceSelection = true;\n @Input() error: object;\n @Input() emptyMessage: string;\n @Input() keyCode: string;\n @Input() keyName = 'name';\n @Input() concatFieldsForName?: any[];\n @Input() itemSelect: any;\n @Input() style: any;\n @Input() inputStyle: any;\n @Input() keysToExclude: any = [];\n @Input() isWagetype: boolean;\n @Input() companyId: string;\n @Input() wagetypeReferenceDates?: { entryReferenceStartDate: string, entryReferenceEndDate: string };\n @Output() onBlur: EventEmitter<any> = new EventEmitter();\n @Output() onSelect: EventEmitter<any> = new EventEmitter();\n @Output() onClear: EventEmitter<any> = new EventEmitter();\n @Output() onFocus: EventEmitter<any> = new EventEmitter();\n @Output() modelChange: EventEmitter<any> = new EventEmitter();\n\n suggestions: any[] = [];\n\n constructor(private service: InputRestAutoCompleteModelService) {\n }\n\n ngOnInit() {\n\n }\n\n filterQuery(event: any) {\n const query = event.query;\n if (!(isNaN(query) && (query.toString().length < 3))) {\n try {\n if (this.isWagetype) {\n const params = { searchText: query, companyId: this.companyId, ...this.wagetypeReferenceDates };\n return this.service\n .query('autocompleteWagetypeQuery', params, ServiceType.ENTRY)\n .subscribe(payload => this.formaterResponce(payload.result));\n }\n this.service.query('autocomplete', this.getParamsRest(query)).subscribe(payload => this.formaterResponce(payload.result));\n } catch (e) {\n console.log('Erro ao buscar no back');\n }\n }\n }\n\n formaterResponce(result) {\n this.suggestions = [];\n const valsResult = [];\n result.map((value) => {\n const valueConcat = {\n tableId: value.tableId,\n name: '',\n };\n value.fields.map((val) => {\n valueConcat[val.name] = val.value;\n });\n\n if (this.keysToExclude.includes(value && value.tableId)) {\n return;\n }\n\n let fieldName = '';\n if (this.concatFieldsForName) {\n this.concatFieldsForName.map(val => {\n // se o campo for data, formata pro locale do usuário\n if (val.includes('date')) {\n valueConcat[val] = _moment(valueConcat[val]).format('L');\n }\n fieldName += valueConcat[val] + ' - ';\n });\n fieldName = fieldName.slice(0, -3);\n } else {\n if (this.keyCode) {\n fieldName += valueConcat[this.keyCode] + ' - ';\n }\n if (this.keyName) {\n fieldName += valueConcat[this.keyName];\n }\n }\n valueConcat.name = fieldName;\n valsResult.push(valueConcat);\n });\n this.suggestions = valsResult;\n return valsResult;\n }\n\n getParamsRest(search: string): object {\n return {\n 'table': this.table,\n 'fields': this.fields,\n 'order': this.order,\n 'conditions': this.getConditionsRest(search),\n };\n }\n\n getConditionsRest(search: string) {\n const conditiosReturn = [{\n 'fields': this.conditionsFields || this.fields,\n 'expression': 'LIKE',\n 'value': `${ search }`,\n }];\n\n if (this.conditions) {\n this.conditions.map(val => {\n if (!['IS_NULL', 'IS_NOT_NULL', 'IS_TRUE'].includes(val.expression)\n && isValid(val.value)) {\n conditiosReturn.push(val);\n }\n });\n }\n\n return conditiosReturn;\n }\n\n /**\n * Externiza a função de select das opções\n * <input-rest-auto-complete (onSelect)=\"onSelectHandle($event)\" ></input-rest-auto-complete>\n * @param option\n */\n selectOption(option: object) {\n this.onSelect.emit(option);\n }\n\n onClearItem(option: object) {\n this.onClear.emit(option);\n }\n\n onBlurItem(option: object) {\n this.onBlur.emit(option);\n }\n\n onFocusItem(option: object) {\n this.onFocus.emit(option);\n }\n\n set model(val) {\n this._model = val;\n this.modelChange.emit(this._model);\n }\n\n @Input()\n get model() {\n return this._model;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {AutoCompleteModule} from 'primeng/autocomplete';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {HttpClientModule} from '@angular/common/http';\n\nimport {InputRestAutoCompleteModelComponent} from './input-rest-auto-complete-model.component';\nimport {InputRestAutoCompleteModelService} from './input-rest-auto-complete-model.service';\nimport {SharedModule} from '../shared/shared.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule\n ],\n declarations: [InputRestAutoCompleteModelComponent],\n providers: [InputRestAutoCompleteModelService],\n exports: [InputRestAutoCompleteModelComponent]\n})\nexport class InputRestAutoCompleteModelModule {\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\n\n@Injectable()\nexport class InputRestAutoCompleteModelEnumService {\n constructor(private http: HttpClientService) {}\n\n query(server: string, enumeration: string): Observable<any> {\n const endpoit = `enumQuery`;\n const request = {\n names: [enumeration],\n };\n return this.http.enumQuery(endpoit, request, server);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { InputRestAutoCompleteModelEnumService } from './input-rest-auto-complete-model-enum.service';\n\n@Component({\n selector: 'input-rest-auto-complete-model-enum',\n templateUrl: './input-rest-auto-complete-model-enum.component.html',\n styleUrls: ['./input-rest-auto-complete-model-enum.component.css'],\n})\nexport class InputRestAutoCompleteModelEnumComponent implements OnInit {\n private _model: any;\n @Input()\n name: string;\n @Input()\n placeholder: string;\n @Input()\n readonly: boolean;\n @Input()\n required: boolean;\n @Input()\n disabled: boolean;\n @Input()\n dropdown: boolean;\n @Input()\n forceSelection = true;\n @Input()\n error: object;\n @Input()\n emptyMessage: string;\n @Input()\n itemSelect: any;\n @Input()\n style: any;\n @Input()\n inputStyle: any;\n\n @Input()\n server: string;\n\n @Input()\n enumeration: string;\n\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter();\n @Output()\n onBlur: EventEmitter<any> = new EventEmitter();\n @Output()\n onClear: EventEmitter<any> = new EventEmitter();\n @Output()\n modelChange: EventEmitter<any> = new EventEmitter();\n\n suggestions: any[] = [];\n payload: any[];\n\n constructor(private service: InputRestAutoCompleteModelEnumService) {}\n\n ngOnInit() {\n try {\n this.service.query(this.server, this.enumeration).subscribe(payload => (this.payload = payload.results));\n } catch (e) {\n console.log('Erro ao buscar no back');\n }\n }\n\n filterQuery(event: any) {\n const query = event.query;\n this.suggestions = [];\n if (!(isNaN(query) && query.toString().length < 3)) {\n for (let i = 0; i < this.payload[0].items.length; i++) {\n const item = this.payload[0].items[i];\n if (item.value.toLowerCase().indexOf(query.toLowerCase()) !== -1) {\n this.suggestions.push(item);\n }\n }\n }\n }\n\n /**\n * Externiza a função de select das opções\n * <input-rest-auto-complete-enum (onSelect)=\"onSelectHandle($event)\" ></input-rest-auto-complete-enum>\n * @param option\n */\n selectOption(option: object) {\n this.onSelect.emit(option);\n }\n\n onBlurItem(option: object) {\n this.onBlur.emit(option);\n }\n\n onClearItem(option: object) {\n this.onClear.emit(option);\n }\n\n set model(val) {\n this._model = val;\n this.modelChange.emit(this._model);\n }\n\n @Input()\n get model() {\n return this._model;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {AutoCompleteModule} from 'primeng/autocomplete';\nimport {InputRestAutoCompleteModelEnumComponent} from './input-rest-auto-complete-model-enum.component';\nimport {InputRestAutoCompleteModelEnumService} from './input-rest-auto-complete-model-enum.service';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {HttpClientModule} from '@angular/common/http';\n\nimport {SharedModule} from '../shared/shared.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule\n ],\n declarations: [InputRestAutoCompleteModelEnumComponent],\n providers: [InputRestAutoCompleteModelEnumService],\n exports: [InputRestAutoCompleteModelEnumComponent]\n})\nexport class InputRestAutoCompleteModelEnumModule {\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\n\n@Injectable()\nexport class InputRestAutoCompleteJobpositionService {\n constructor(private http: HttpClientService) {}\n\n query(path: string, body: object): Observable<any> {\n const endpoit = `queries/${path}`;\n return this.http.post(endpoit, body);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { InputRestAutoCompleteJobpositionService } from './input-rest-auto-complete-jobposition.service';\n\n@Component({\n selector: 'input-rest-auto-complete-jobposition',\n templateUrl: './input-rest-auto-complete-jobposition.component.html',\n styleUrls: ['./input-rest-auto-complete-jobposition.component.css'],\n})\nexport class InputRestAutoCompleteJobpositionComponent implements OnInit {\n @Input()\n name: string;\n @Input()\n value: string;\n @Input()\n companyId: string;\n @Input()\n creationDate: string;\n @Input()\n expirationDate: string;\n @Input()\n jobpositionsFilter: Array<string>;\n @Input()\n ignoredJobpositions: Array<string>;\n @Input()\n order: Array<any>;\n @Input()\n placeholder: string;\n @Input()\n readonly: boolean;\n @Input()\n required: boolean;\n @Input()\n disabled: boolean;\n @Input()\n dropdown: boolean;\n @Input()\n forceSelection = true;\n @Input()\n error: object;\n @Input()\n emptyMessage: string;\n @Input()\n itemSelect: any;\n @Input()\n form: FormGroup;\n @Input()\n inputId: string;\n @Input()\n minCharactersToSearch = 3;\n @Input()\n multiple = false;\n private isDropdown: boolean;\n\n @Output()\n onBlur: EventEmitter<any> = new EventEmitter();\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter();\n @Output()\n onClear: EventEmitter<any> = new EventEmitter();\n @Output()\n onFocus: EventEmitter<any> = new EventEmitter();\n\n suggestions: any[] = [];\n\n constructor(private service: InputRestAutoCompleteJobpositionService) { }\n\n ngOnInit() { }\n\n filterQuery(event: any) {\n const query = event.query;\n if (!(isNaN(query) && query.toString().length < this.minCharactersToSearch)) {\n try {\n this.service.query('autocompleteJobpositionQuery',\n this.getParamsRest(query)).subscribe(payload => this.formaterResponse(payload.result));\n } catch (e) {\n console.log('Erro ao buscar no back');\n }\n }\n }\n\n formaterResponse(result) {\n this.suggestions = [];\n const valsResult = [];\n result.map(value => {\n const valueConcat = {\n tableId: value.tableId,\n name: '',\n };\n\n value.fields.map(val => {\n valueConcat[val.name] = val.value;\n });\n\n valueConcat.name = valueConcat['Code'] + ' - ' + valueConcat['Name'];\n valsResult.push(valueConcat);\n });\n this.suggestions = valsResult;\n return valsResult;\n }\n\n getParamsRest(search: string): object {\n const returnFilter = {\n searchText: search,\n companyId: this.companyId ? this.replace(this.companyId) : null,\n creationDate: this.creationDate ? this.replace(this.creationDate) : null,\n expirationDate: this.expirationDate ? this.replace(this.expirationDate) : null,\n jobpositionsFilter: this.jobpositionsFilter ? this.replaceArray(this.jobpositionsFilter) : null,\n ignoredJobpositions: this.ignoredJobpositions ? this.replaceArray(this.ignoredJobpositions) : null,\n order: this.order,\n };\n\n return returnFilter;\n }\n\n private replace(value: string): string {\n return value.replace(new RegExp(\"'\", 'g'), \"\");\n }\n\n private replaceArray(value: Array<string>): Array<string> {\n return value.map(e => this.replace(e));\n }\n\n /**\n * Externiza a função de select das opções\n * <input-rest-auto-complete-jobposition (onSelect)=\"onSelectHandle($event)\" ></input-rest-auto-complete-jobposition>\n * @param option\n */\n selectOption(option: object) {\n this.onSelect.emit(option);\n }\n\n onClearItem(option: object) {\n this.onClear.emit(option);\n }\n\n onBlurItem(option: object) {\n if (!this.isDropdown) {\n this.form.controls[this.name].markAsDirty();\n this.onBlur.emit(option);\n } else {\n this.isDropdown = false;\n }\n }\n\n onDropdownClick() {\n this.isDropdown = true;\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { AutoCompleteModule } from \"primeng/autocomplete\";\nimport { SharedModule } from \"primeng/shared\";\nimport { InputRestAutoCompleteJobpositionComponent } from \"./input-rest-auto-complete-jobposition.component\";\nimport { InputRestAutoCompleteJobpositionService } from \"./input-rest-auto-complete-jobposition.service\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule\n ],\n declarations: [ InputRestAutoCompleteJobpositionComponent ],\n providers: [ InputRestAutoCompleteJobpositionService ],\n exports: [ InputRestAutoCompleteJobpositionComponent ]\n})\nexport class InputRestAutoCompleteJobpositionModule {\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\n\n@Injectable()\nexport class ListRestService {\n constructor(private http: HttpClientService) {}\n\n query(path: string, body: object): Observable<any> {\n const endpoit = `queries/${path}`;\n return this.http.post(endpoit, body);\n }\n\n queryEntity(path: string, body: object): Observable<any> {\n return this.http.get(path);\n }\n}\n","import { Component, OnInit, OnChanges, SimpleChanges, Input, Output, EventEmitter, ViewEncapsulation } from '@angular/core';\nimport { ListRestService } from './list-rest.service';\nimport { TranslateService } from '@ngx-translate/core';\n\nexport interface IColumns {\n label: string;\n field: string;\n}\n\n@Component({\n selector: 'list-rest',\n templateUrl: './list-rest.component.html',\n styleUrls: ['./list-rest.component.scss'],\n})\nexport class ListRestComponent implements OnInit, OnChanges {\n @Input()\n emptyMessage: string;\n @Input()\n urlRest: string;\n @Input()\n keyPayload: string;\n @Input()\n columns: Array<IColumns[]>;\n @Input()\n arguments? = { page: { current: 1, size: '10' } };\n @Input()\n filterValues?: (event?: any) => void;\n @Input()\n getRowActionsFun?: Function;\n @Input()\n scope?: any;\n @Input()\n reload?: boolean;\n @Input()\n isEntity?: boolean;\n @Input() alwaysShowPaginator: boolean = false;\n\n @Output()\n onLoadPayload: EventEmitter<any> = new EventEmitter();\n @Output()\n loadedList = new EventEmitter<boolean>();\n\n totalRecords: number;\n payload: any[];\n\n constructor(private translateService: TranslateService, private service: ListRestService) {}\n\n ngOnInit() {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.hasOwnProperty('arguments')) {\n this.arguments = Object.assign({}, changes.arguments.currentValue);\n this.getList(1);\n }\n if (changes.hasOwnProperty('reload') && changes.reload.currentValue === true) {\n this.getList(1);\n }\n }\n\n getList(page: number) {\n this.loadedList.emit(true);\n try {\n const args = Object.assign({}, this.arguments);\n args.page.current = page;\n if (this.isEntity) {\n this.service.queryEntity(this.urlRest, args).subscribe(payload => {\n this.onResponseQuery(payload, page);\n this.loadedList.emit(false);\n });\n } else {\n this.service.query(this.urlRest, args).subscribe(payload => {\n this.onResponseQuery(payload.result, page);\n this.loadedList.emit(false);\n });\n }\n } catch (e) {\n console.log('Erro ao tentar buscar lista no back');\n }\n }\n\n onResponseQuery(payload, page) {\n this.payload = this.filterValues ? this.filterValues.bind(this.scope)(payload[this.keyPayload]) : payload[this.keyPayload];\n this.onLoadPayload.emit({\n result: payload[this.keyPayload],\n page: page,\n });\n this.totalRecords = this.isEntity ? payload.totalElements : payload.countResult;\n }\n\n onHandlePage(event) {\n const currentPage = event.first / event.rows + 1;\n this.getList(currentPage);\n }\n\n getRowActions(data: any) {\n return this.getRowActionsFun.call(this.scope, data);\n }\n\n handleClickActions(button): void {\n const toClick = button.containerViewChild.nativeElement.getElementsByClassName('ui-splitbutton-menubutton')[0] as HTMLElement;\n toClick.click();\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { ButtonModule } from \"primeng/button\";\nimport { TableModule } from \"primeng/table\";\nimport { SplitButtonModule } from \"primeng/splitbutton\";\nimport { InputTextModule } from \"primeng/inputtext\";\n\nimport { SharedModule } from \"../shared/shared.module\";\nimport { ListRestComponent } from \"./list-rest.component\";\nimport { ListRestService } from \"./list-rest.service\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n SharedModule,\n HttpClientModule,\n TableModule,\n InputTextModule,\n ButtonModule,\n SplitButtonModule,\n ],\n declarations: [ListRestComponent],\n providers: [ListRestService],\n exports: [ListRestComponent],\n})\nexport class ListRestModule {\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'spinner-loader',\n templateUrl: './spinner-loader.component.html'\n})\nexport class SpinnerLoaderComponent {\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\nimport { SpinnerLoaderComponent } from './spinner-loader.component';\n\n@NgModule({\n imports: [\n FormsModule,\n ProgressSpinnerModule\n ],\n declarations: [\n SpinnerLoaderComponent\n ],\n exports: [\n SpinnerLoaderComponent\n ]\n})\nexport class SpinnerLoaderModule {}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class TypeAdmissionServices {\n private company: any = {};\n private contractNationality: any = {};\n private contractType: any = {};\n\n constructor() {}\n\n public setCompany(company: any) {\n this.company = company;\n }\n\n public getCompanyId() {\n return this.company.companyId;\n }\n\n public setContractNationality(contractNationality: any) {\n this.contractNationality = contractNationality;\n }\n\n public isBrazilianAdmission() {\n return this.company.abbreviation === 'BR' && this.contractNationality.key === 'National';\n }\n\n public isBrazilAndforeignContract() {\n return this.company.abbreviation === 'BR' && this.contractNationality.key !== 'National';\n }\n\n public isForeignAdmission() {\n return this.company.abbreviation !== 'BR' && this.contractNationality.key === 'National';\n }\n\n public isForeignAndforeignContract() {\n return this.company.abbreviation !== 'BR' && this.contractNationality.key !== 'National';\n }\n\n public isBrazilianCompany() {\n return this.company.abbreviation === 'BR';\n }\n\n public isNationalContract() {\n return this.contractNationality.key === 'National';\n }\n\n public getCountryID() {\n return this.company.id;\n }\n\n public get contractNationalityKey() {\n return this.contractNationality.key;\n }\n\n public get abbreviation() {\n return this.company.abbreviation;\n }\n\n public getCurrency() {\n return this.company.currency;\n }\n\n public getStructureID() {\n return this.company.structure;\n }\n\n public setContractType(contractType: any) {\n this.contractType = contractType;\n }\n\n public get contractTypeKey() {\n return this.contractType ? this.contractType.key : this.contractType;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TypeAdmissionServices} from './type-admission.services';\n\n@NgModule({\n imports: [CommonModule],\n providers: [TypeAdmissionServices],\n})\nexport class TypeAdmissionModule {\n}\n","import * as _moment from 'moment';\n\nconst moment = _moment;\n\nexport function isRequired(value) {\n return value !== undefined && value !== null && value.length > 0;\n}\n\nexport function isMax(value, max) {\n return value.length <= max;\n}\n\nexport function isNumber(value) {\n const regex = /^\\d*$/;\n return regex.test(value);\n}\n\nexport function notEmpty(value) {\n return value ? value : false;\n}\n\nexport function numberOrZero(value) {\n return isNumber(notEmpty(value)) ? Number.parseInt(value) : 0;\n}\n\nexport function sun(...val) {\n return val.reduce((pv, cv) => numberOrZero(cv) + pv, 0);\n}\n\nexport function firstNameLengthIsValid(name) {\n const firstName = name.split(' ');\n return firstName[0].trim().length > 0 ? firstName[0].trim().length >= 2 : true;\n}\n\nexport function firstNameIsValid(name) {\n const firstName = name.split(' ');\n return firstName.length >= 2 && firstName[1].length >= 1;\n}\n\nexport function fullNameLengthIsValid(fullName) {\n return fullName.length <= 70;\n}\n\nexport function containsMoreThanTwoRepeatedCharacters(fullName) {\n const regex = /([a-zA-Z])\\1{2}/g;\n return !regex.test(fullName);\n}\n\nexport function containsMoreThanOneConsecutiveAbbreviation(fullName) {\n const regex = /(\\b.\\s)(.\\s)(.\\b)\\1?/g;\n return !regex.test(fullName);\n}\n\nexport function containsMoreThanOneConsecutiveBlankSpace(fullName) {\n const regex = /(\\w[ ]{2,}\\w)/;\n return !regex.test(fullName);\n}\n\n/**\n* Validada se nome não contém caracteres especiais.\n* @param fullName Nome completo.\n* @returns boolean de acordo com a validação.\n */\nexport function containsSpecialCharacters(fullName) {\n const regex = /[[\\]!@#$%&*_+=`´{}^~<>.,:;?|()\\/\\\\-]/;\n return !regex.test(fullName);\n}\n\nexport function removeWhiteSpaces(msg: string) {\n if (msg && String(msg)) {\n return String(msg).replace(/\\s/g,\"\");\n }\n return String(msg);\n}\n\nexport function isValidPIS(pis) {\n const multiplicadorBase = '3298765432';\n let total = 0;\n let resto = 0;\n let multiplicando = 0;\n let multiplicador = 0;\n let digito = 99;\n\n // Retira a mascara\n const numeroPIS = pis.replace(/[^\\d]+/g, '');\n\n if (\n numeroPIS.length !== 11 ||\n numeroPIS === '00000000000' ||\n numeroPIS === '11111111111' ||\n numeroPIS === '22222222222' ||\n numeroPIS === '33333333333' ||\n numeroPIS === '44444444444' ||\n numeroPIS === '55555555555' ||\n numeroPIS === '66666666666' ||\n numeroPIS === '77777777777' ||\n numeroPIS === '88888888888' ||\n numeroPIS === '99999999999'\n ) {\n return false;\n } else {\n for (let i = 0; i < 10; i++) {\n multiplicando = parseInt(numeroPIS.substring(i, i + 1));\n multiplicador = parseInt(multiplicadorBase.substring(i, i + 1));\n total += multiplicando * multiplicador;\n }\n\n resto = 11 - (total % 11);\n resto = resto === 10 || resto === 11 ? 0 : resto;\n\n digito = parseInt('' + numeroPIS.charAt(10));\n return resto === digito;\n }\n}\n\nexport function validateBirthDate(birthday, date) {\n if (birthday && date) {\n const birthdayCompare = moment(typeof birthday === 'string' ? birthday.replace(/[^\\d]+/g, '') : birthday, 'DDMMYYYY')\n .format('YYYY-MM-DD')\n .toString();\n const dateCompare = moment(date.replace(/[^\\d]+/g, ''), 'DDMMYYYY')\n .format('YYYY-MM-DD')\n .toString();\n return moment(dateCompare).isSameOrAfter(birthdayCompare);\n }\n}\n\nexport function isBirthDayValid(birthdayCompare, dateCompare) {\n if (birthdayCompare && dateCompare) {\n return dateCompare.isSameOrAfter(birthdayCompare);\n }\n}\n\nexport function isDateExpirationBeforeExpeditionDate(expeditionDateCompare, dateCompare) {\n if (expeditionDateCompare && dateCompare) {\n return dateCompare.isSameOrAfter(expeditionDateCompare);\n }\n}\n\nexport function isDateSameOrAfterCurrentDate(dateCompareMoment) {\n if (dateCompareMoment) {\n const currentDateCompare = moment();\n return dateCompareMoment.isSameOrAfter(currentDateCompare);\n }\n}\n\nexport function isDateCompare(momentDate, momentDateCompare, compare) {\n if (momentDate && momentDate.isValid() && momentDateCompare && compare) {\n return momentDate[compare](momentDateCompare);\n }\n return true;\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HttpClientService } from '../components/shared/http-client.service';\nimport { CompanyIndicationType } from '../core/enums';\n\n@Injectable()\nexport class CompanyIndicationsService {\n private companyUseWorkstationGroupSubject = new Subject<any>();\n private useWorkstationGroup: any;\n private structure;\n\n constructor(private http: HttpClientService) {}\n\n getCompanyIndications(companyId: string, companyIndicationTypes: CompanyIndicationType[]) {\n return this.http\n .query('companyIndicationQuery', { companyId: companyId, companyIndicationType: companyIndicationTypes })\n .pipe(map((payload: any) => payload.result));\n }\n\n setCompanyUseWorkstationGroup(indication) {\n this.companyUseWorkstationGroupSubject.next(indication);\n }\n\n setStructure(indication) {\n this.structure = indication;\n }\n\n getStructure() {\n return this.structure;\n }\n\n getCompanyUseWorkstationGroup(): Observable<any> {\n return this.companyUseWorkstationGroupSubject.asObservable();\n }\n\n setUseWorkstationGroup(useIndication) {\n this.useWorkstationGroup = useIndication;\n }\n\n getUseWorkstationGroup() {\n return this.useWorkstationGroup;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { HttpClientService } from '../components/shared/http-client.service';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class IntegrationService {\n constructor(private http: HttpClientService) {}\n\n hasModule(module): Observable<any> {\n return this.http.query('hasModule', { module: module });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { MessageService } from \"primeng/api\";\nimport { map, catchError } from \"rxjs/operators\";\nimport { Observable, throwError } from \"rxjs\";\nimport { EntityODataParameter } from '../core/entities';\nimport { FieldType, FormField } from '@seniorsistemas/angular-components';\nimport * as moment_ from 'moment';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { PaginationData } from '../core/interfaces';\n\nconst moment = moment_;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LookupParametersService {\n\n private searchLookupFields: any;\n private endpoint: string;\n private parameters: any;\n private concatFields: any;\n private concatOtherFields: any;\n private lookupDisplayField: string;\n private searchFields: any;\n private httpPostParams: any;\n private page: PaginationData;\n private _httpParams: HttpParams = new HttpParams();\n\n constructor(private http: HttpClient, private messageService: MessageService, private translateService: TranslateService) {\n }\n\n\n lookupRequestPost(httpPostParams: any, endpoint: string, concatFields: Array<FormField> = null, lookupDisplayField: string) {\n this.httpPostParams = httpPostParams;\n this.postConfigPageSize(httpPostParams);\n this.lookupDisplayField = lookupDisplayField;\n this.concatFields = concatFields;\n return this.postDataLookup(endpoint);\n }\n\n postConfigPageSize(httpPostParams: any) {\n if (httpPostParams) {\n this.httpPostParams.page.size = httpPostParams.page && httpPostParams.page.size ? httpPostParams.page.size : 10;\n this.httpPostParams.page.current = httpPostParams.page && httpPostParams.page.current ? httpPostParams.page.current : 0;\n }\n }\n\n /**\n * Função chamada no change do autocomplete (Lookup fechado).\n * @param event valor atribuido no autocomplete do lookup fechado\n * @param endpoint endpoint que sera feito a requisição.\n * @param searchLookupFields campos que seram filtrados pelo autocomplete (lookup fechado)\n * @param searchFields array com os campos do filtro\n * @param concatFields array com os formFields que seram concatenados\n * @param concatOtherFields converte os campos enumeração para serem concatenados na grid\n * @param lookupDisplayField campo que sera alterado com os dados concatenados informado acima\n * @param params parâmetros para ser usado no lookup\n */\n lookupRequest(event: any, endpoint: string, searchLookupFields: Array<String>, searchFields: Array<FormField>,\n concatFields: Array<FormField>, lookupDisplayField: string, concatOtherFields: Array<FormField> = [], params: any = []) {\n\n this.searchLookupFields = searchLookupFields;\n this.endpoint = endpoint;\n this.parameters = params;\n this.concatFields = concatFields;\n this.concatOtherFields = concatOtherFields;\n this.lookupDisplayField = lookupDisplayField;\n this.searchFields = searchFields;\n\n this.generateLookupParameters(event);\n this.configHttpParamsPagination('10', '0');\n this.configHttpParamsOrderBy(event.multiSortMeta);\n return this.getDataLookup();\n }\n\n /**\n * Função chamada no change do filtro do lookup (Lookup aberto).\n * @param event valor atribuido no autocomplete do lookup fechado\n * @param endpoint endpoint que sera feito a requisição.\n * @param searchFields array com os campos do filtro\n * @param concatFields array com os formFields que seram concatenados\n * @param concatOtherFields converte os campos enumeração para serem concatenados na grid\n * @param lookupDisplayField campo que sera alterado com os dados concatenados informado acima\n * @param params parâmetros para ser usado no lookup\n */\n searchRequest(event: any, endpoint: string, searchFields: Array<FormField>,\n concatFields: Array<FormField>, lookupDisplayField: string, concatOtherFields: Array<FormField> = [], params: any = []) {\n\n this.endpoint = endpoint;\n this.parameters = params;\n this.concatFields = concatFields;\n this.concatOtherFields = concatOtherFields;\n this.lookupDisplayField = lookupDisplayField;\n this.searchFields = searchFields;\n this.generateGridParameters(event.filterData);\n this.configHttpParamsPagination(event.rows.toString(), Math.floor(event.first / event.rows).toString());\n this.configHttpParamsOrderBy(event.multiSortMeta);\n return this.getDataLookup();\n }\n\n\n /**\n * GET\n * @param endpoint Busca e faz o tratamento dos dados do lookup.\n * @param httpParams HttpParams\n */\n private getDataLookup() {\n return this.getUrlDataLookup(this.endpoint, this.httpParams).pipe(\n map((payload: any) => {\n const { contents } = payload;\n\n if (this.concatFields && this.concatFields.length) {\n contents.map(value => {\n this.convertGridFieldValue(value);\n value[this.lookupDisplayField] = this.generateDisplayFieldValue({ ...value });\n });\n }\n\n return payload;\n }),\n );\n }\n\n\n /**\n * POST\n * @param endpoint Busca e faz o tratamento dos dados do lookup.\n * @param httpParams HttpParams\n */\n private postDataLookup(endpoint) {\n return this.postUrlDataLookup(endpoint, this.httpPostParams).pipe(\n map((payload: any) => {\n const { contents } = payload;\n\n if (this.concatFields && this.concatFields.length) {\n contents.map(value => {\n if (this.concatOtherFields) {\n this.convertGridFieldValue(value);\n }\n value[this.lookupDisplayField] = this.generateDisplayFieldValue({ ...value });\n });\n }\n\n return payload;\n }),\n );\n }\n\n /**\n * Converte o valor do campo para apresentação no lookup.\n *\n * @param content Valor do campo para conversão.\n * @param field FormField do campo.\n */\n private convertLookupFieldValue(content: any, field: FormField): any {\n if (content) {\n switch (field.type) {\n case FieldType.Date:\n content = moment(content).format('L');\n break;\n case FieldType.Enum:\n const enumValue = field.options.filter((enumeration: any) => enumeration.value === content)[0];\n content = enumValue ? enumValue.label : content;\n break;\n }\n }\n\n return content;\n }\n\n /**\n * Converte os dados para visualização na grid\n * @param content\n */\n private convertGridFieldValue(content: any): void {\n if (content) {\n this.concatOtherFields.forEach((field: FormField) => {\n switch (field.type) {\n case FieldType.Enum:\n const enumValue = field.options.filter((enumeration: any) => enumeration.value === content[field.name])[0];\n content[field.name] = enumValue ? enumValue.label : content[field.name];\n break;\n }\n });\n }\n }\n\n /**\n * Faz a concatenação de valores do registro para ser apresentado no lookup ao selecionar o dado.\n * @param contentValue Valor do registro.\n */\n private generateDisplayFieldValue(contentValue: any): string {\n let displayField = '';\n\n this.concatFields.forEach((field: FormField) => {\n const fieldValue = this.convertLookupFieldValue(contentValue[field.name], field);\n if (fieldValue) {\n if (displayField) {\n displayField += ` - ${fieldValue}`;\n } else {\n displayField = fieldValue;\n }\n }\n });\n return displayField;\n }\n\n /**\n * Gera os parametros de pesquisa via lookup\n * @param value\n */\n private generateLookupParameters(value?: string): void {\n let lookupParameters = '';\n this.searchLookupFields.forEach((lookupField: string) => {\n const searchField = this.searchFields.filter(field => lookupField === field.name)[0];\n if (lookupParameters) {\n lookupParameters += ` or ${this.getParameterByType(searchField.type, lookupField, value)}`;\n } else {\n lookupParameters = `${this.getParameterByType(searchField.type, lookupField, value)}`;\n }\n });\n\n this.parameters.forEach((parameter: EntityODataParameter) => {\n if (lookupParameters) {\n lookupParameters += ` and ${parameter.toString()}`;\n } else {\n lookupParameters = `${parameter.toString()}`;\n }\n });\n\n this.httpParams = new HttpParams().set('filter', lookupParameters);\n }\n\n /**\n * Gera os parametros de pesquisa via pesquisa na grid\n * @param filterData\n */\n private generateGridParameters(filterData: object): void {\n let gridParameters = '';\n Object.keys(filterData).forEach((attribute: string) => {\n if (filterData[attribute]) {\n const searchField = this.searchFields.filter(field => attribute === field.name)[0];\n if (gridParameters) {\n gridParameters += ` and ${this.getParameterByType(searchField.type, attribute, filterData[attribute])}`;\n } else {\n gridParameters += this.getParameterByType(searchField.type, attribute, filterData[attribute]);\n }\n }\n });\n\n this.parameters.forEach((parameter: EntityODataParameter) => {\n if (gridParameters) {\n gridParameters += ` and ${parameter.toString()}`;\n } else {\n gridParameters = `${parameter.toString()}`;\n }\n });\n\n this.httpParams = new HttpParams().set('filter', gridParameters);\n }\n\n /**\n * Gera a string de consulta CRUD de um campo.\n * @param type Tipo do campo.\n * @param attribute Nome do atribute da entidade\n * @param value Valor do campo\n */\n private getParameterByType(type: FieldType, attribute: string, value: any): string {\n switch (type) {\n case FieldType.Date:\n return `${attribute} eq '${moment(value).format('YYYY-MM-DD')}'`;\n case FieldType.Enum:\n return `${attribute} eq '${value}'`;\n case FieldType.Integer:\n return `${attribute} eq ${value}`;\n case FieldType.Autocomplete:\n return `${attribute} eq '${value.id}'`;\n default:\n return `containing(lower(${attribute}), lower('${value}'))`;\n }\n }\n\n /**\n *\n * @param size a quantidade de registros na página.\n * @param offset o número da página a ser recuperada, lembrando que a numeração de páginas começa em 0 (zero).\n */\n private configHttpParamsPagination(size: string, offset: string): void {\n this.httpParams = this.httpParams.set('size', size);\n this.httpParams = this.httpParams.set('offset', offset);\n }\n\n /**\n * Gera o orderby do HttpParams\n */\n private configHttpParamsOrderBy(multiSortMeta: { field: string; order: number }[]): void {\n if (multiSortMeta && multiSortMeta.length) {\n let orderBy = '';\n multiSortMeta.map(value => {\n if (orderBy) {\n orderBy += `,${value.field}+${value.order === 1 ? 'asc' : 'desc'}`;\n } else {\n orderBy += `${value.field}+${value.order === 1 ? 'asc' : 'desc'}`;\n }\n });\n\n this.httpParams = this.httpParams.set('orderby', orderBy);\n }\n }\n\n set httpParams(value: HttpParams) {\n this._httpParams = value;\n }\n\n get httpParams() {\n return this._httpParams;\n }\n\n private getUrlDataLookup(endpoint: string, httpParams: HttpParams): Observable<any> {\n if (httpParams) {\n return this.http.get(`${endpoint}`, { params: httpParams })\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed_search\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n } else {\n return this.http.get(`${endpoint}`)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed_search\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n }\n\n private postUrlDataLookup(endpoint: string, httpParams: any): Observable<any> {\n if (httpParams) {\n return this.http.post(`${endpoint}`, { ...httpParams })\n .pipe(\n catchError((exception: any): any => {\n if (exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n } else {\n return this.http.post(`${endpoint}`, {})\n .pipe(\n catchError((exception: any): any => {\n if (exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClientService } from '../components/shared/http-client.service';\nimport { CoreFieldType } from '../core/enums/coreFieldType';\nimport { FieldType } from '@seniorsistemas/angular-components';\nimport * as _moment from 'moment';\nimport { map } from 'rxjs/operators';\nimport { ServiceType } from '../core/enums/serviceType';\n\n\nconst moment = _moment;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AutocompleteParametersService {\n\n constructor(private httpClienteService: HttpClientService) { }\n\n public getAutoComplete(entity: string, params: object, searchFields: any, codeIsString: boolean, service: ServiceType) {\n const getParams = this.generateGridParameters(params, searchFields, codeIsString);\n return this.httpClienteService.getAutoComplete(entity, getParams, service)\n .pipe(map((result) => result && result.contents));\n }\n\n public getAutoCompleteQuery(query: string, params: object) {\n return this.httpClienteService.query(query, params)\n .pipe(map((data) => data && data.result));\n }\n\n /**\n * Gera os parametros de pesquisa via pesquisa na grid\n * @param filterData\n */\n private generateGridParameters(filterData: object, searchFields: any, codeIsString: boolean): string {\n let gridParameters = \"\";\n Object.keys(filterData).forEach((attribute: string) => {\n const filterSearchField = searchFields && searchFields.filter(field => attribute === field.name)[0];\n let filterQueryString = null;\n let operatorsQuery = \"\";\n let searchField: any = filterSearchField && filterSearchField.type;\n if (!filterSearchField && attribute != CoreFieldType.searchValue) searchField = FieldType.String;\n if (!filterSearchField && attribute === CoreFieldType.searchValue) searchField = CoreFieldType.searchValue;\n if (gridParameters) operatorsQuery = \" and \";\n filterQueryString = this.getParameterByType(searchField, attribute, filterData[attribute], codeIsString);\n if (filterQueryString) gridParameters += ` ${operatorsQuery} ${filterQueryString}`;\n });\n return gridParameters;\n }\n\n /**\n * Gera a string de consulta CRUD de um campo.\n * @param type Tipo do campo.\n * @param attribute Nome do atribute da entidade\n * @param value Valor do campo\n */\n private getParameterByType(type: any, attribute: string, value: any, codeIsString: boolean): string {\n if (!value && type != CoreFieldType.searchValue) return `${attribute} is null`;\n if (value && value === 'not null' && type != CoreFieldType.searchValue) return `${attribute} is not null`;\n switch (type) {\n case FieldType.Date:\n return `${attribute} eq '${moment(value).format('YYYY-MM-DD')}'`;\n case FieldType.Enum:\n return `${attribute} eq '${value}'`;\n case FieldType.Integer:\n return `${attribute} eq ${value}`;\n case FieldType.Autocomplete:\n return `${attribute} eq '${value.id}'`;\n case CoreFieldType.searchValue:\n return `${this.getParameterBySearchType(value, codeIsString)}`;\n default:\n return this.getSearchFilterString(attribute, value);\n }\n }\n\n /**\n * Retorna o filtro formatador para ser chamdo no endpoint\n * @param valueFilterSearch valor pra adicionar no filtro\n */\n private getParameterBySearchType(valueFilterSearch: any, codeIsString: boolean): string {\n let searchFilter = \"\";\n if (valueFilterSearch) {\n for (const [key, value] of Object.entries(valueFilterSearch)) {\n if (key === \"code\" && Number(value)) {\n const hasQuote = codeIsString ? \"'\" : \"\";\n if (searchFilter)\n searchFilter += ` or ${key} eq ${hasQuote}${value}${hasQuote}`;\n else\n searchFilter += `${key} eq ${hasQuote}${value}${hasQuote}`;\n } else if (key != \"code\") {\n if (searchFilter)\n searchFilter += ` or ${this.getSearchFilterString(key, value)}`;\n else\n searchFilter += this.getSearchFilterString(key, value);\n }\n }\n searchFilter = searchFilter ? `(${searchFilter})` : '';\n }\n return searchFilter;\n }\n\n /**\n * Formata o filtro quando for \"Ou\"\n * @param attribute\n * @param value\n */\n private getSearchFilterString(attribute: string, value: any): string { return `containing(lower(${attribute}), lower('${value}'))`; }\n\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { Report, ReportIn, ReportOut, GetParametersOut } from \"../core/interfaces\";\n\nconst ENDPOINTS = {\n reportParameters: \"platform/report/queries/getParameters\",\n reportUri: \"platform/report/queries/getReportUri\",\n reportStatus: \"platform/report/queries/getReportStatus\",\n reportsByName: \"platform/report/queries/findReportsByName\",\n reportsRunning: \"platform/report/queries/getRunningReports\",\n reportsGenerate: \"platform/report/actions/generateReport\"\n};\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class ReportService {\n constructor(private http: HttpClient) {}\n\n /**\n * Procura por relatórios que contenham no seu nome a string conforme parâmetro `name`\n * @param name Nome ou parte do nome do relatório\n */\n public findReportsByName(\n name: string,\n ): Observable<Report[]> {\n return this.http\n .post(`${ENDPOINTS.reportsByName}`, {\n name: name\n })\n .pipe(\n map((payload: any) => {\n const result = payload.reports ? payload.reports : [];\n return result as Report[];\n })\n );\n }\n\n /**\n * Procura por relatórios que contenham o nome exato conforme parâmetro `name`.\n * No momento a plataforma não disponibilza uma query exata para isso.\n * Portanto este método procura pelo nome informado dentro do resultado da query `findReportsByName`\n * @param name Nome exato do relatório\n */\n public findReportByName(\n name: string,\n ): Observable<Report> {\n name = name || \"\";\n return this.findReportsByName(name).pipe(\n map((payload: any) => {\n const filtered =\n payload && payload.filter((report: any) => report.name && report.name === name);\n return filtered && filtered.length == 1 ? (filtered[0] as Report) : null;\n })\n );\n }\n\n /**\n * Retorna a lista de parâmetros de entrada do relatório\n * @param reportId Id do relatório\n * @param reportFileId Identificador de um arquivo de relatório (opcional)\n */\n public getParameters(reportId: string, reportFileId?: any): Observable<GetParametersOut> {\n return this.http\n .post(`${ENDPOINTS.reportParameters}`, { id: reportId, reportFileId: reportFileId })\n .pipe(\n map((payload: any) => {\n return payload ? (payload as GetParametersOut) : null;\n })\n );\n }\n\n /**\n * Retorna a URL para visualização do relatório gerado\n * @param reportTicket Ticket do relatório gerado\n */\n public getReportUri(reportTicket: string): Observable<string> {\n return this.http.post(`${ENDPOINTS.reportUri}`, { reportTicket: reportTicket }).pipe(\n map((payload: any) => {\n return payload && payload.reportUri;\n })\n );\n }\n\n /**\n * Retorna o status do relatório\n * @param reportTicket Ticket do relatório gerado\n */\n public getReportStatus(reportTicket: string): Observable<string> {\n return this.http.post(`${ENDPOINTS.reportStatus}`, { reportTicket: reportTicket }).pipe(\n map((payload: any) => {\n return payload && payload.reportStatus;\n })\n );\n }\n\n /**\n * Gera o relatório\n * @param reportIn Dados do relatório a ser gerado\n */\n public generateReport(reportIn: ReportIn): Observable<ReportOut> {\n return this.http.post(`${ENDPOINTS.reportsGenerate}`, reportIn).pipe(\n map((payload: any) => {\n return payload ? (payload as ReportOut) : null;\n })\n );\n }\n\n /**\n * Retorna uma lista com os relatórios sendo executados ou já finalizados\n * @param page página inicial\n * @param size tamanho da página\n */\n public getRunningReports(page: number, size: number): Observable<any> {\n return this.http.post(`${ENDPOINTS.reportsRunning}`, {\n offset: page,\n limit: size,\n orderByDesc: true,\n filterCancelled: true\n });\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject, Subject, Observable } from \"rxjs\";\n\n@Injectable()\nexport class WorkflowDataService {\n private useWorkflowValueChange: Subject<boolean> = new Subject<boolean>();\n private _draftJSON: BehaviorSubject<string> = new BehaviorSubject<string>(null);\n\n constructor() {\n }\n\n public setUseWorkflow(useWorkflow: boolean): void {\n this.useWorkflowValueChange.next(useWorkflow);\n }\n\n public getUseWorkflow() {\n return this.useWorkflowValueChange.asObservable();\n }\n\n public setDraftJSON(draftJSON: string) {\n this._draftJSON.next(draftJSON);\n }\n\n public getDraftJSON(): Observable<string> {\n return this._draftJSON.asObservable();\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nexport interface Divergence {\n oldValue: any;\n newValue: any;\n}\n\nexport interface DivergenceArray extends Divergence {\n key: string;\n}\n\n@Injectable()\nexport class FormComparatorService {\n private _oldFormData: object;\n private _newFormData: object;\n private _divergentFormData: { divergentKey?: Divergence };\n\n constructor() {\n this.resetDivergentFormData();\n }\n\n public resetDivergentFormData() {\n this._divergentFormData = {};\n }\n\n /**\n * checkFormDisagreements\n *\n * @description\n * Checa se existem divergẽncias entre os objetos armazenados nas\n * propriedades *oldFormData* e *newFormData*.\n *\n * `Se forem idênticos:`\n * levanta uma exceção.\n *\n * `Se houverem divergências:`\n * as armazena na propriedade divergentFormData.\n */\n public checkFormDisagreements(ignoreId: boolean = false): void {\n this.resetDivergentFormData();\n this._sanitizeEmptyStrings();\n if (ignoreId) this._removeIdsFromFormDatas();\n\n if (this._oldFormData === this._newFormData) {\n this._throwIdenticalMessage();\n } else {\n Object.keys(this._oldFormData).forEach((key) => {\n if (this._oldFormData[key] !== this._newFormData[key]) {\n this._divergentFormData[key] = this._createDivergencePair(key);\n }\n });\n\n Object.keys(this._newFormData).forEach((key) => {\n if (this._newFormData[key] !== this._oldFormData[key]) {\n this._divergentFormData[key] = this._createDivergencePair(key);\n }\n });\n\n if (this._isDivergentFormDataEmpty) this._throwIdenticalMessage();\n }\n }\n\n private _removeIdsFromFormDatas() {\n [this._oldFormData, this._newFormData].forEach((formData) => {\n delete formData[\"id\"];\n });\n }\n\n private _sanitizeEmptyStrings(): void {\n [this._oldFormData, this._newFormData].forEach((formData) => {\n Object.keys(formData).map((key) => {\n if (formData[key] === \"\") formData[key] = null;\n });\n });\n }\n\n private _createDivergencePair(key: string): Divergence {\n const divergence: Divergence = { oldValue: null, newValue: null };\n\n divergence.oldValue = this._oldFormData[key];\n divergence.newValue = this._newFormData[key];\n\n return divergence;\n }\n\n private _throwIdenticalMessage() {\n throw new Error(\"The objects oldFormData and newFormData are identical\");\n }\n\n public set oldFormData(v: object) {\n this._oldFormData = v;\n }\n\n public get oldFormData(): object {\n return this._oldFormData;\n }\n\n public set newFormData(v: object) {\n this._newFormData = v;\n }\n\n public get newFormData(): object {\n return this._newFormData;\n }\n\n public get divergentFormArray(): Array<DivergenceArray> {\n const divergentFormArray: Array<DivergenceArray> = [];\n\n Object.entries(this._divergentFormData).map(([key, divergence]) => {\n const object = { key: null, oldValue: null, newValue: null };\n\n object.key = key;\n object.oldValue = divergence.oldValue;\n object.newValue = divergence.newValue;\n\n divergentFormArray.push(object);\n });\n\n return divergentFormArray;\n }\n\n public get _isDivergentFormDataEmpty(): boolean {\n return Object.entries(this._divergentFormData).length === 0;\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { CompanyIndicationsService } from \"./company-indications.service\";\nimport { IntegrationService } from \"./integration.service\";\nimport { LookupParametersService } from \"./lookup-parameters.service\";\nimport { AutocompleteParametersService } from \"./autocomplete-parameters.service\";\nimport { ReportService } from \"./report.service\";\nimport { WorkflowDataService } from './workflow-data.service';\nimport { FormComparatorService } from \"./form-comparator.service\";\n\nexport { WorkflowDataService } from './workflow-data.service';\n\n@NgModule({\n imports: [CommonModule],\n providers: [\n CompanyIndicationsService,\n IntegrationService,\n LookupParametersService,\n AutocompleteParametersService,\n ReportService,\n WorkflowDataService,\n FormComparatorService\n ]\n})\nexport class ServicesModule {}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { service, user } from '@seniorsistemas/senior-platform-data';\nimport { from, Observable } from 'rxjs';\nimport { flatMap, map } from 'rxjs/operators';\n\n@Injectable()\nexport class PermissionService {\n private actionUrl = `platform/authorization/queries/checkAccess`;\n private resourceAddress = `res://senior.com.br/hcm/payroll/`;\n private defaultActions = ['Visualizar', 'Incluir', 'Editar', 'Excluir'];\n private _resources: string[] = [];\n private _attributes: { name: string; value: string }[] = [];\n private observable: Observable<any>;\n private permissions: any;\n private httpOptions;\n private restUrl;\n\n constructor(private http: HttpClient) {\n user.getAuthHeader().then(token => {\n this.httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: token,\n }),\n };\n });\n\n service.getRestUrl().then(restUrl => (this.restUrl = restUrl));\n }\n\n protected get(resource: string = ''): Observable<any> {\n if (this.permissions) {\n this.observable = Observable.of(this.permissions);\n } else if (!this.observable) {\n this.observable = this.getPermissions().pipe(map((permissions: any) => (this.permissions = permissions)));\n }\n\n return this.observable.pipe(map((permissions: any) => (resource ? permissions[resource] : permissions)));\n }\n\n protected getAbac(resource: string, attributes: { name: string; value: string }[]): Observable<any> {\n this.attributes = attributes;\n\n return this.getAbacPermission(resource);\n }\n\n private getAbacPermission(resource: string): Observable<any> {\n return this.http.post(\n this.actionUrl,\n {\n includeFilters: false,\n permissions: [\n {\n resource: `${this.resourceAddress}${resource}`,\n action: 'Visualizar',\n attributes: this._attributes.map((res: { name: string; value: string }) => ({\n attribute: res.name,\n value: res.value,\n })),\n }\n ]\n },\n this.httpOptions\n );\n }\n\n private getPermissions() {\n const permissions = [];\n this._resources.forEach((resource: string) =>\n this.defaultActions.forEach((action: string) =>\n permissions.push({ action, resource: `${this.resourceAddress}${resource}` })\n )\n );\n return this.http\n .post(this.actionUrl, {\n includeFilters: false,\n permissions: [\n ...permissions\n ]\n },\n this.httpOptions\n )\n .pipe(\n map((res: any) => {\n const permissoes = res.permissions;\n const values = {};\n\n permissoes.forEach((perm: any) => {\n const name = perm.resource.replace(this.resourceAddress, '');\n values[name] = values[name] || {};\n values[name][perm.action.toLowerCase()] = perm.authorized;\n });\n\n return values;\n })\n );\n }\n\n private set attributes(value: { name: string; value: string }[]) {\n this._attributes = value;\n }\n\n protected setResources(values: string[]) {\n this._resources = values;\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MessageService } from 'primeng/api';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ToastService } from './toast.service';\n\n@Component({\n selector: 'c-toast',\n template: `\n <p-toast [ngClass]=\"breakLine ? 'ui-toast-break-line' : ''\" [key]=\"key\"></p-toast>\n `,\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n // Chave para garantir que as mensagens adicionadas por esse serviço\n // sejam exibidas apenas nesse componente.\n public key = 'TOAST';\n public breakLine: boolean = false;\n private ngUnsubscribe = new Subject();\n\n constructor(private toastService: ToastService, private messageService: MessageService, private translateService: TranslateService) {}\n\n ngOnInit() {\n this.toastService\n .loadErrorMessages()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(payload => {\n this.createErrorMessage(payload && payload.message);\n this.breakLine = payload && payload.breakLine;\n });\n\n this.toastService\n .loadSuccessMessages()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(payload => {\n this.createSuccessMessage(payload && payload.message);\n this.breakLine = payload && payload.breakLine;\n });\n\n this.toastService\n .loadWarningMessages()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(payload => {\n this.createWarningMessage(payload && payload.message);\n this.breakLine = payload && payload.breakLine;\n });\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next(true);\n this.ngUnsubscribe.complete();\n }\n\n createErrorMessage(message: string, summary?: string) {\n this.messageService.clear();\n this.messageService.add({\n severity: 'error',\n summary: summary || this.translateService.instant('hcm.payroll.error'),\n detail: message,\n sticky: true,\n key: this.key,\n });\n }\n\n createSuccessMessage(message: string, summary?: string) {\n this.messageService.add({\n severity: 'success',\n summary: summary || this.translateService.instant('hcm.payroll.success'),\n detail: message,\n key: this.key,\n });\n }\n\n createWarningMessage(message: string, summary?: string) {\n this.messageService.add({\n severity: 'warn',\n summary: summary || this.translateService.instant('hcm.payroll.warn'),\n detail: message,\n sticky: true,\n key: this.key,\n });\n }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MessageService } from 'primeng/api';\nimport { ToastModule as ToastModulePrimeng } from 'primeng/toast';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { ToastComponent } from './toast.component';\nimport { ToastService } from './toast.service';\n\n@NgModule({\n imports: [CommonModule, SharedModule, ToastModulePrimeng],\n declarations: [ToastComponent],\n providers: [ToastService, MessageService],\n exports: [ToastComponent],\n})\nexport class ToastModule {}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class DataListService {\n constructor(private http: HttpClient) {}\n\n getList(endpoint: string, httpParams: HttpParams): Observable<any> {\n return this.http.get(`${endpoint}`, { params: httpParams });\n }\n}\n","import { HttpParams } from '@angular/common/http';\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { SplitButton } from 'primeng/splitbutton';\nimport { Table } from 'primeng/table';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { EntityODataParameter } from '../../core/entities';\nimport { DirectionEnumeration } from '../../core/enums';\nimport { DataListService } from './data-list.service';\nimport { EntityODataResponse } from './entity-odata-response';\n\n@Component({\n selector: 'c-data-list',\n templateUrl: './data-list.component.html',\n styleUrls: ['./data-list.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class DataListComponent implements OnInit, OnDestroy {\n @ViewChild('dataListTable', { static: false })\n dataListTable: Table;\n\n @Input()\n id: string;\n @Input()\n dataKey: string;\n @Input()\n rows = 10;\n @Input()\n emptyMessage: string;\n @Input()\n columns: any[];\n @Input()\n paginator = true;\n @Input()\n first = 0;\n @Input()\n alwaysShowPaginator = true;\n @Input()\n actions?: Function;\n @Input()\n actionLabel: string;\n @Input()\n selectionMode: string;\n @Input()\n lazy: boolean;\n @Input()\n isMultipleSelection: boolean;\n @Input()\n isSortable: boolean;\n @Input()\n showHeaderCheckBox: boolean;\n @Input()\n sortMode = 'multiple';\n @Input()\n endpoint: string;\n @Input()\n displayFields: string[];\n @Input()\n orderBy: { field: string; direction: DirectionEnumeration }[];\n @Input()\n singularMessageRecords: string;\n @Input()\n pluralMessageRecords: string;\n @Input()\n initParameters: EntityODataParameter[];\n\n @Output()\n lazyLoad: EventEmitter<any> = new EventEmitter();\n @Output()\n loadingChange: EventEmitter<any> = new EventEmitter();\n @Output()\n totalRecordsChange: EventEmitter<any> = new EventEmitter();\n @Output()\n listDataChange: EventEmitter<any> = new EventEmitter();\n @Output()\n selectedDataChange: EventEmitter<any> = new EventEmitter();\n @Output()\n headerCheckboxToggle: EventEmitter<any> = new EventEmitter();\n\n private _httpParams: HttpParams = new HttpParams();\n private _loading: boolean;\n private _totalRecords: number;\n private _listData: any[];\n private _selectedData: any[];\n private ngUnsubscribe = new Subject();\n\n constructor(private dataListService: DataListService) {}\n\n ngOnInit() {\n if (!this.lazy) {\n this.getlistData();\n }\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n getActions(data: any, index: number) {\n return this.actions(data, index);\n }\n\n handleClickActions(button: SplitButton) {\n const toClick = button.containerViewChild.nativeElement.getElementsByClassName('ui-splitbutton-menubutton')[0] as HTMLElement;\n toClick.click();\n }\n\n pagination(event) {\n if (!this.lazy) {\n this.getlistData(event.rows, Math.floor(event.first / event.rows));\n }\n }\n\n onLazyLoad(event) {\n this.loading = true;\n\n if (event.multiSortMeta && event.multiSortMeta.length) {\n this.orderBy = <{ field: string; direction: DirectionEnumeration }[]>[];\n event.multiSortMeta.map(value => {\n this.orderBy.push({ field: value.field, direction: value.order === 1 ? DirectionEnumeration.ASC : DirectionEnumeration.DESC });\n });\n }\n\n this.getlistData(event.rows, Math.floor(event.first / event.rows));\n }\n\n onFilter() {\n if (this.lazy) {\n this.loading = true;\n }\n\n this.getlistData();\n }\n\n get recordsMessage() {\n return `${this.totalRecords || 0} ${this.totalRecords === 1 ? this.singularMessageRecords : this.pluralMessageRecords}`;\n }\n\n getlistData(size = this.rows, offset = this.first): void {\n if (this.endpoint) {\n this.configParameters(this.initParameters);\n this.configHttpParamsDisplayFields();\n this.configHttpParamsPagination(size.toString(), offset.toString());\n this.configHttpParamsOrderBy();\n this.dataListService\n .getList(this.endpoint, this.httpParams)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data: EntityODataResponse) => {\n this.listData = data.contents;\n this.totalRecords = data.totalElements;\n if (this.lazy) {\n this.lazyLoad.emit(this.listData);\n }\n });\n } else {\n if (this.lazy) {\n this.lazyLoad.emit(this.listData);\n }\n }\n }\n\n /**\n *\n * @param size a quantidade de registros na página.\n * @param offset o número da página a ser recuperada, lembrando que a numeração de páginas começa em 0 (zero).\n */\n configHttpParamsPagination(size: string, offset: string): void {\n this.httpParams = this.httpParams.set('size', size);\n this.httpParams = this.httpParams.set('offset', offset);\n }\n\n /**\n * Gera o orderby do HttpParams\n */\n configHttpParamsOrderBy(): void {\n if (this.orderBy && this.orderBy.length) {\n let orderBy = '';\n this.orderBy.map(value => {\n if (orderBy) {\n orderBy += `,${value.field}+${value.direction}`;\n } else {\n orderBy += `${value.field}+${value.direction}`;\n }\n });\n\n this.httpParams = this.httpParams.set('orderby', orderBy);\n }\n }\n\n /**\n * Gera HttpParams dos campos a serem retornados na requisição.\n */\n configHttpParamsDisplayFields(): void {\n if (this.displayFields && this.displayFields.length) {\n this.httpParams = this.httpParams.set('displayfields', this.displayFields.toString());\n }\n }\n\n onHeaderCheckboxToggle(event) {\n this.headerCheckboxToggle.emit(event);\n }\n\n getFieldValue(rowData, col) {\n if (col['field'] && col['field'].includes('.')) {\n const objectPath = col['field'].split('.');\n objectPath.map(value => (rowData = rowData && rowData[value]));\n return rowData;\n }\n return rowData[col['field']];\n }\n\n private configParameters(entityODataParameters: EntityODataParameter[]) {\n let parameters = '';\n if (entityODataParameters) {\n entityODataParameters.forEach((parameter: EntityODataParameter) => {\n if (parameters) {\n parameters += ` and ${parameter.toString()}`;\n } else {\n parameters = `${parameter.toString()}`;\n }\n });\n\n this.httpParams = new HttpParams().set('filter', parameters);\n }\n }\n\n @Input()\n set parameters(entityODataParameters: EntityODataParameter[]) {\n this.configParameters(entityODataParameters);\n if (entityODataParameters) {\n if (this.dataListTable) {\n this.dataListTable.first = 0;\n }\n this.onFilter();\n }\n }\n\n set httpParams(value: HttpParams) {\n this._httpParams = value;\n }\n\n get httpParams() {\n return this._httpParams;\n }\n\n set loading(value: boolean) {\n this._loading = value;\n this.loadingChange.emit(this._loading);\n }\n\n @Input()\n get loading() {\n return this._loading;\n }\n\n set listData(value: any[]) {\n this._listData = value;\n this.listDataChange.emit(this._listData);\n }\n\n @Input()\n get listData() {\n return this._listData;\n }\n\n set selectedData(value: any[]) {\n this._selectedData = value;\n this.selectedDataChange.emit(this._selectedData);\n }\n\n @Input()\n get selectedData() {\n return this._selectedData;\n }\n\n set totalRecords(value: number) {\n this._totalRecords = value;\n this.totalRecordsChange.emit(this.totalRecords);\n }\n\n @Input()\n get totalRecords(): number {\n return this._totalRecords;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule, LoadingStateModule } from '@seniorsistemas/angular-components';\nimport { SplitButtonModule } from 'primeng/splitbutton';\nimport { TableModule } from 'primeng/table';\nimport { TooltipModule } from 'primeng/tooltip';\n\nimport { DataListComponent } from './data-list.component';\nimport { DataListService } from './data-list.service';\n\n@NgModule({\n imports: [\n CommonModule,\n // Angular Components\n ButtonModule,\n LoadingStateModule,\n // Primeng\n TableModule,\n TooltipModule,\n ],\n declarations: [DataListComponent],\n exports: [DataListComponent],\n providers: [DataListService],\n})\nexport class DataListModule {}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { MessageService } from \"primeng/api\";\nimport { Observable, throwError } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\n\n@Injectable()\nexport class LookupService {\n constructor(private http: HttpClient, private messageService: MessageService, private translateService: TranslateService) {}\n\n getDataLookup(endpoint: string, httpParams: HttpParams): Observable<any> {\n if (httpParams) {\n return this.http.get(`${endpoint}`, { params: httpParams })\n .pipe(\n catchError((exception: any): any => {\n if (exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n } else {\n return this.http.get(`${endpoint}`)\n .pipe(\n catchError((exception: any): any => {\n if (exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n }\n}\n","import { HttpParams } from '@angular/common/http';\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FieldType, FormField } from '@seniorsistemas/angular-components';\nimport * as moment_ from 'moment';\nimport { Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\nimport { EntityODataParameter } from '../../core/entities';\nimport { LookupService } from './lookup.service';\n\nconst moment = moment_;\n\n@Component({\n selector: 'c-lookup',\n templateUrl: './lookup.component.html',\n})\nexport class LookupComponent implements OnInit, OnDestroy {\n @Input()\n id: string;\n @Input()\n dataKey: string;\n @Input()\n concatFields: FormField[];\n @Input()\n searchTitle: string;\n @Input()\n formGroup: FormGroup;\n @Input()\n controlName: string;\n @Input()\n multiple: boolean;\n @Input()\n endpoint: string;\n @Input()\n lookupDisplayField: string;\n @Input()\n searchTotalRecordsLabel = 'hcm.payroll.lookup_search_total_records_label';\n @Input()\n filterLabel = 'hcm.payroll.lookup_generic_filter_label';\n @Input()\n clearLabel = 'hcm.payroll.lookup_generic_clean_filter_label';\n @Input()\n cancelLabel = 'hcm.payroll.lookup_generic_btn_cancel_label';\n @Input()\n selectLabel = 'hcm.payroll.lookup_btn_select_label';\n @Input()\n lookupEmptyMessage = 'hcm.payroll.lookup_auto_complete_empty_message';\n @Input()\n searchTotalRecords: number;\n @Input()\n lookupSuggestions: any[] = [];\n @Input()\n searchGridFields: FormField[] = [];\n @Input()\n searchLookupFields: string[] = [];\n @Input()\n searchGridData: FormField[] = [];\n @Input()\n searchFields: any[] = [];\n @Input()\n parameters: EntityODataParameter[] = [];\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter();\n @Output()\n onClear: EventEmitter<any> = new EventEmitter();\n @Output()\n modelChange: EventEmitter<any> = new EventEmitter();\n private _httpParams: HttpParams = new HttpParams();\n private _model: any;\n private ngUnsubscribe = new Subject();\n\n constructor(private lookupService: LookupService) {}\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n lookupRequest(event) {\n this.generateLookupParameters(event);\n this.configHttpParamsPagination('10', '0');\n this.getDataLookup(this.endpoint, this.httpParams)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(data => (this.lookupSuggestions = data && [...data.contents]));\n }\n\n searchRequest(event: any) {\n this.generateGridParameters(event.filterData);\n this.configHttpParamsPagination(event.rows.toString(), Math.floor(event.first / event.rows).toString());\n this.configHttpParamsOrderBy(event.multiSortMeta);\n this.getDataLookup(this.endpoint, this.httpParams)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(data => (this.searchGridData = data && [...data.contents]));\n }\n\n /**\n *\n * @param endpoint Busca e faz o tratamento dos dados do lookup.\n * @param httpParams HttpParams\n */\n private getDataLookup(endpoint: string, httpParams: HttpParams) {\n return this.lookupService.getDataLookup(this.endpoint, this.httpParams).pipe(\n map((payload: any) => {\n const { totalElements, contents } = payload;\n this.searchTotalRecords = totalElements;\n\n if (this.concatFields && this.concatFields.length) {\n contents.map(value => {\n this.convertGridFieldValue(value);\n value[this.lookupDisplayField] = this.generateDisplayFieldValue({ ...value });\n });\n }\n\n return payload;\n })\n );\n }\n\n /**\n * Converte o valor do campo para apresentação no lookup.\n *\n * @param content Valor do campo para conversão.\n * @param field FormField do campo.\n */\n private convertLookupFieldValue(content: any, field: FormField): any {\n if (content) {\n switch (field.type) {\n case FieldType.Date:\n content = moment(content).format('L');\n break;\n case FieldType.Enum:\n const enumValue = field.options.filter((enumeration: any) => enumeration.value === content)[0];\n content = enumValue ? enumValue.label : content;\n break;\n }\n }\n\n return content;\n }\n\n /**\n * Converte os dados para visualização na grid\n * @param content\n */\n private convertGridFieldValue(content: any): void {\n if (content) {\n this.searchGridFields.forEach((field: FormField) => {\n switch (field.type) {\n case FieldType.Enum:\n const enumValue = field.options.filter((enumeration: any) => enumeration.value === content[field.name])[0];\n content[field.name] = enumValue ? enumValue.label : content[field.name];\n break;\n }\n });\n }\n }\n\n /**\n * Faz a concatenação de valores do registro para ser apresentado no lookup ao selecionar o dado.\n * @param contentValue Valor do registro.\n */\n private generateDisplayFieldValue(contentValue: any): string {\n let displayField = '';\n\n this.concatFields.forEach((field: FormField) => {\n const fieldValue = this.convertLookupFieldValue(contentValue[field.name], field);\n if (fieldValue) {\n if (displayField) {\n displayField += ` - ${fieldValue}`;\n } else {\n displayField = fieldValue;\n }\n }\n });\n return displayField;\n }\n\n /**\n * Gera os parametros de pesquisa via lookup\n * @param value\n */\n private generateLookupParameters(value?: string): void {\n let lookupParameters = '';\n this.searchLookupFields.forEach((lookupField: string) => {\n const searchField = this.searchFields.filter(field => lookupField === field.name)[0];\n if (lookupParameters) {\n lookupParameters += ` or ${this.getParameterByType(searchField.type, lookupField, value)}`;\n } else {\n lookupParameters = `${this.getParameterByType(searchField.type, lookupField, value)}`;\n }\n });\n\n this.parameters.forEach((parameter: EntityODataParameter) => {\n if (lookupParameters) {\n lookupParameters += ` and ${parameter.toString()}`;\n } else {\n lookupParameters = `${parameter.toString()}`;\n }\n });\n\n this.httpParams = new HttpParams().set('filter', lookupParameters);\n }\n\n /**\n * Gera os parametros de pesquisa via pesquisa na grid\n * @param filterData\n */\n private generateGridParameters(filterData: object): void {\n let gridParameters = '';\n Object.keys(filterData).forEach((attribute: string) => {\n if (filterData[attribute]) {\n const searchField = this.searchFields.filter(field => attribute === field.name)[0];\n if (gridParameters) {\n gridParameters += ` and ${this.getParameterByType(searchField.type, attribute, filterData[attribute])}`;\n } else {\n gridParameters += this.getParameterByType(searchField.type, attribute, filterData[attribute]);\n }\n }\n });\n\n this.parameters.forEach((parameter: EntityODataParameter) => {\n if (gridParameters) {\n gridParameters += ` and ${parameter.toString()}`;\n } else {\n gridParameters = `${parameter.toString()}`;\n }\n });\n\n this.httpParams = new HttpParams().set('filter', gridParameters);\n }\n\n /**\n * Gera a string de consulta CRUD de um campo.\n * @param type Tipo do campo.\n * @param attribute Nome do atribute da entidade\n * @param value Valor do campo\n */\n private getParameterByType(type: FieldType, attribute: string, value: any): string {\n switch (type) {\n case FieldType.Date:\n return `${attribute} eq '${moment(value).format('YYYY-MM-DD')}'`;\n case FieldType.Enum:\n return `${attribute} eq '${value}'`;\n case FieldType.Integer:\n return `${attribute} eq ${value}`;\n case FieldType.Autocomplete:\n return `${attribute} eq ${value.id}`;\n default:\n return `containing(lower(${attribute}), lower('${value}'))`;\n }\n }\n\n /**\n *\n * @param size a quantidade de registros na página.\n * @param offset o número da página a ser recuperada, lembrando que a numeração de páginas começa em 0 (zero).\n */\n private configHttpParamsPagination(size: string, offset: string): void {\n this.httpParams = this.httpParams.set('size', size);\n this.httpParams = this.httpParams.set('offset', offset);\n }\n\n /**\n * Gera o orderby do HttpParams\n */\n private configHttpParamsOrderBy(multiSortMeta: { field: string; order: number }[]): void {\n if (multiSortMeta && multiSortMeta.length) {\n let orderBy = '';\n multiSortMeta.map(value => {\n if (orderBy) {\n orderBy += `,${value.field}+${value.order === 1 ? 'asc' : 'desc'}`;\n } else {\n orderBy += `${value.field}+${value.order === 1 ? 'asc' : 'desc'}`;\n }\n });\n\n this.httpParams = this.httpParams.set('orderby', orderBy);\n }\n }\n\n set httpParams(value: HttpParams) {\n this._httpParams = value;\n }\n\n get httpParams() {\n return this._httpParams;\n }\n\n set model(value: any) {\n this._model = value;\n this.modelChange.emit(value);\n }\n\n @Input()\n get model() {\n return this._model;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DynamicFormModule } from '@seniorsistemas/angular-components';\n\nimport { LookupComponent } from './lookup.component';\nimport { LookupService } from './lookup.service';\n\n@NgModule({\n imports: [CommonModule, FormsModule, DynamicFormModule, ReactiveFormsModule, TranslateModule],\n declarations: [LookupComponent],\n exports: [LookupComponent],\n providers: [LookupService],\n})\nexport class LookupModule {}\n","import { Injectable } from '@angular/core';\nimport { HttpClientService } from '../shared/http-client.service';\nimport { CoreFieldType } from '../../core/enums/coreFieldType';\nimport { FieldType } from '@seniorsistemas/angular-components';\nimport * as _moment from 'moment';\nimport { map } from 'rxjs/operators';\nimport { ServiceType } from '../../core/enums/serviceType';\n\n\nconst moment = _moment;\n\n@Injectable()\nexport class AutocompleteService {\n\n constructor(private httpClienteService: HttpClientService) { }\n\n public getAutoComplete(entity: string, params: object, searchFields: any, codeIsString: boolean, service: ServiceType) {\n const getParams = this.generateGridParameters(params, searchFields, codeIsString);\n return this.httpClienteService.getAutoComplete(entity, getParams, service)\n .pipe(map((result) => result && result.contents));\n }\n\n public getAutoCompleteQuery(query: string, params: object) {\n return this.httpClienteService.query(query, params)\n .pipe(map((data) => data && data.result));\n }\n\n /**\n * Gera os parametros de pesquisa via pesquisa na grid\n * @param filterData\n */\n private generateGridParameters(filterData: object, searchFields: any, codeIsString: boolean): string {\n let gridParameters = \"\";\n Object.keys(filterData).forEach((attribute: string) => {\n const filterSearchField = searchFields && searchFields.filter(field => attribute === field.name)[0];\n let filterQueryString = null;\n let operatorsQuery = \"\";\n let searchField: any = filterSearchField && filterSearchField.type;\n if (!filterSearchField && attribute != CoreFieldType.searchValue) searchField = FieldType.String;\n if (!filterSearchField && attribute === CoreFieldType.searchValue) searchField = CoreFieldType.searchValue;\n if (gridParameters) operatorsQuery = \" and \";\n filterQueryString = this.getParameterByType(searchField, attribute, filterData[attribute], codeIsString);\n if (filterQueryString) gridParameters += ` ${operatorsQuery} ${filterQueryString}`;\n });\n return gridParameters;\n }\n\n /**\n * Gera a string de consulta CRUD de um campo.\n * @param type Tipo do campo.\n * @param attribute Nome do atribute da entidade\n * @param value Valor do campo\n */\n private getParameterByType(type: any, attribute: string, value: any, codeIsString: boolean): string {\n if (!value && type != CoreFieldType.searchValue) return `${attribute} is null`;\n if (value && value === 'not null' && type != CoreFieldType.searchValue) return `${attribute} is not null`;\n switch (type) {\n case FieldType.Date:\n return `${attribute} eq '${moment(value).format('YYYY-MM-DD')}'`;\n case FieldType.Enum:\n return `${attribute} eq '${value}'`;\n case FieldType.Integer:\n return `${attribute} eq ${value}`;\n case FieldType.Autocomplete:\n return `${attribute} eq '${value.id}'`;\n case CoreFieldType.searchValue:\n return `${this.getParameterBySearchType(value, codeIsString)}`;\n default:\n return this.getSearchFilterString(attribute, value);\n }\n }\n\n /**\n * Retorna o filtro formatador para ser chamdo no endpoint\n * @param valueFilterSearch valor pra adicionar no filtro\n */\n private getParameterBySearchType(valueFilterSearch: any, codeIsString: boolean): string {\n let searchFilter = \"\";\n if (valueFilterSearch) {\n for (const [key, value] of Object.entries(valueFilterSearch)) {\n if (key === \"code\" && Number(value)) {\n const hasQuote = codeIsString ? \"'\" : \"\";\n if (searchFilter)\n searchFilter += ` or ${key} eq ${hasQuote}${value}${hasQuote}`;\n else\n searchFilter += `${key} eq ${hasQuote}${value}${hasQuote}`;\n } else if (key != \"code\") {\n if (searchFilter)\n searchFilter += ` or ${this.getSearchFilterString(key, value)}`;\n else\n searchFilter += this.getSearchFilterString(key, value);\n }\n }\n searchFilter = searchFilter ? `(${searchFilter})` : '';\n }\n return searchFilter;\n }\n\n /**\n * Formata o filtro quando for \"Ou\"\n * @param attribute\n * @param value\n */\n private getSearchFilterString(attribute: string, value: any): string { return `containing(lower(${attribute}), lower('${value}'))`; }\n\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { FieldType, FormField } from \"@seniorsistemas/angular-components\";\nimport * as moment_ from \"moment\";\nimport { MessageService } from \"primeng/api\";\nimport { Observable, throwError } from \"rxjs\";\nimport { map, catchError } from \"rxjs/operators\";\nimport { PaginationData } from \"../../core/interfaces\";\n\nconst moment = moment_;\n\n@Injectable()\nexport class LookupService {\n\n private concatFields: any;\n private concatOtherFields: any;\n private lookupDisplayField: string;\n private httpPostParams: any;\n private page: PaginationData;\n\n constructor(private http: HttpClient, private messageService: MessageService, private translateService: TranslateService) {\n }\n\n\n lookupRequestPost(httpPostParams: any, endpoint: string, concatFields: Array<FormField> = null, lookupDisplayField: string) {\n this.httpPostParams = httpPostParams;\n this.postConfigPageSize(httpPostParams);\n this.lookupDisplayField = lookupDisplayField;\n this.concatFields = concatFields;\n return this.postDataLookup(endpoint);\n }\n\n postConfigPageSize(httpPostParams: any) {\n if (httpPostParams) {\n this.httpPostParams.page.size = httpPostParams.page && httpPostParams.page.size ? httpPostParams.page.size : 10;\n this.httpPostParams.page.current = httpPostParams.page && httpPostParams.page.current ? httpPostParams.page.current : 0;\n }\n }\n\n /**\n * POST\n * @param endpoint Busca e faz o tratamento dos dados do lookup.\n * @param httpParams HttpParams\n */\n private postDataLookup(endpoint) {\n return this.postUrlDataLookup(endpoint, this.httpPostParams).pipe(\n map((payload: any) => {\n const { contents } = payload;\n\n if (this.concatFields && this.concatFields.length) {\n contents.map(value => {\n if (this.concatOtherFields) {\n this.convertGridFieldValue(value);\n }\n value[this.lookupDisplayField] = this.generateDisplayFieldValue({ ...value });\n });\n }\n\n return payload;\n }),\n );\n }\n\n /**\n * Converte o valor do campo para apresentação no lookup.\n *\n * @param content Valor do campo para conversão.\n * @param field FormField do campo.\n */\n private convertLookupFieldValue(content: any, field: FormField): any {\n if (content) {\n switch (field.type) {\n case FieldType.Date:\n content = moment(content).format(\"L\");\n break;\n case FieldType.Enum:\n const enumValue = field.options.filter((enumeration: any) => enumeration.value === content)[0];\n content = enumValue ? enumValue.label : content;\n break;\n }\n }\n\n return content;\n }\n\n /**\n * Converte os dados para visualização na grid\n * @param content\n */\n private convertGridFieldValue(content: any): void {\n if (content) {\n this.concatOtherFields.forEach((field: FormField) => {\n switch (field.type) {\n case FieldType.Enum:\n const enumValue = field.options.filter((enumeration: any) => enumeration.value === content[field.name])[0];\n content[field.name] = enumValue ? enumValue.label : content[field.name];\n break;\n }\n });\n }\n }\n\n /**\n * Faz a concatenação de valores do registro para ser apresentado no lookup ao selecionar o dado.\n * @param contentValue Valor do registro.\n */\n private generateDisplayFieldValue(contentValue: any): string {\n let displayField = \"\";\n\n this.concatFields.forEach((field: FormField) => {\n const fieldValue = this.convertLookupFieldValue(contentValue[field.name], field);\n if (fieldValue) {\n if (displayField) {\n displayField += ` - ${ fieldValue }`;\n } else {\n displayField = fieldValue;\n }\n }\n });\n return displayField;\n }\n\n private postUrlDataLookup(endpoint: string, httpParams: any): Observable<any> {\n if (httpParams) {\n return this.http.post(`${ endpoint }`, { ...httpParams })\n .pipe(\n catchError((exception: any): any => {\n if (exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n } else {\n return this.http.post(`${ endpoint }`, {})\n .pipe(\n catchError((exception: any): any => {\n if (exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n }\n}\n","export class WorkstationgroupLookupDto {\n private code?: string;\n private name?: string;\n private companyId?: string;\n private companyBranchId?: string;\n private departmentId?: string;\n private costcenterId?: string;\n private jobpositionIds?: any;\n private syndicateId?: string;\n private shiftId?: string;\n private workshiftId?: string;\n private workshiftGroupId?: string;\n private intervalGroupId?: string;\n private scaleTeamId?: string;\n private scaleCategoryId?: string;\n private employmentRelationshipId?: string;\n private contractType?: string;\n private expenseNatureId?: string;\n private allowDeficient?: string;\n private disabilityIds?: any;\n private listExpired?: boolean;\n private referenceDate?: string;\n private searchText?: string;\n private manager: string;\n private page: any;\n\n constructor(payload: any, referenceDate?: string) {\n const { filterData } = payload;\n this.name = filterData.name || null;\n this.code = filterData.code || null;\n this.searchText = filterData.searchText || null;\n this.companyId = filterData.headoffice || null;\n this.companyBranchId = filterData.branchoffice && filterData.branchoffice.id || null;\n this.departmentId = filterData.department && filterData.department.tableId || null;\n this.costcenterId = filterData.costcenter && filterData.costcenter.id || null;\n this.jobpositionIds = filterData.jobposition || null;\n this.syndicateId = filterData.syndicate && filterData.syndicate.id || null;\n this.shiftId = filterData.workshiftScale || null;\n this.workshiftId = filterData.workshiftId && filterData.workshiftId.id || null;\n this.workshiftGroupId = filterData.workshiftGroupId && filterData.workshiftGroupId.id || null;\n this.intervalGroupId = filterData.intervalGroupId && filterData.intervalGroupId.is || null;\n this.scaleTeamId = filterData.scaleTeamId && filterData.scaleTeamId.id || null;\n this.scaleCategoryId = filterData.scaleCategoryId && filterData.scaleCategoryId.id || null;\n this.employmentRelationshipId = filterData.employmentRelationshipId && filterData.employmentRelationshipId.id || null;\n this.contractType = filterData.contractType || null;\n this.expenseNatureId = filterData.expenseNatureId && filterData.expenseNatureId.id || null;\n this.allowDeficient = filterData.allowDeficient || null;\n this.disabilityIds = filterData.disabilityIds || null;\n this.listExpired = filterData.hasOwnProperty('listExpired') ? filterData.listExpired : false;\n this.manager = filterData.manager ? filterData.manager.tableId : null;\n this.referenceDate = referenceDate || null;\n this.page = {\n current: payload.first ? payload.first : 0,\n size: payload.rows ? payload.rows : 10\n } || null;\n\n }\n\n getToFilter() {\n const objDTO = this;\n objDTO.jobpositionIds = this.convertListIds(this.jobpositionIds);\n objDTO.disabilityIds = this.convertListIds(this.disabilityIds);\n return objDTO;\n }\n\n\n convertListIds(list: any) {\n if (list)\n return list.map((index: any) => {\n if (index.tableId)\n return index.tableId;\n else\n return index.id;\n });\n }\n\n}\n","import {\n Component,\n OnDestroy,\n OnInit,\n ViewChild,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n AfterViewInit,\n ChangeDetectorRef,\n} from \"@angular/core\";\nimport { FormGroup } from \"@angular/forms\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { FieldType, FormField } from \"@seniorsistemas/angular-components\";\nimport * as moment_ from \"moment\";\nimport { now } from \"moment\";\nimport { Subject, BehaviorSubject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { ServiceType } from \"../../core/enums\";\nimport { invertFieldDate, getNowDate } from \"../utils/helpers\";\nimport { AutocompleteService } from \"./autocomplete.service\";\nimport { LookupService } from \"./lookup.service\";\nimport { WorkstationgroupLookupDto } from \"./workstationgroup-lookup.dto\";\n\nconst moment = moment_;\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: \"c-workstationgroup-lookup\",\n templateUrl: \"./workstationgroup-lookup.component.html\",\n})\nexport class WorkstationgroupLookupComponent implements OnInit, OnDestroy, AfterViewInit {\n\n @ViewChild(\"workstationgroupEl\", { static: false })\n workstationgroupEl: ElementRef;\n\n @Input()\n public currentCompanyId: string = null;\n @Input()\n public currentCompanyName: string = null;\n @Input()\n public hireDate: string;\n @Input()\n public dateFormat: string;\n @Input()\n public required: boolean;\n @Input()\n public disabled: boolean;\n @Input()\n public form: FormGroup;\n @Input()\n public name: string;\n\n @Output()\n public onSelect: EventEmitter<any> = new EventEmitter();\n @Output()\n public onClear: EventEmitter<any> = new EventEmitter();\n @Output()\n public onBlur: EventEmitter<any> = new EventEmitter();\n\n private companyBranchId: string = null;\n\n public lookupSuggestions: any[] = [];\n public searchGridData: FormField[] = [];\n public suggestionsObservable: BehaviorSubject<any> = new BehaviorSubject([]);\n public totalRecords: number = 0;\n private valueEnumShift = [\n {\n label: this.translate.instant(\"hcm.payroll.enum_WorkshiftScale_FIRST_SHIFT\"),\n value: \"0\",\n enum: \"FIRST_SHIFT\",\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_WorkshiftScale_SECOND_SHIFT\"),\n value: \"1\",\n enum: \"SECOND_SHIFT\",\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_WorkshiftScale_THIRD_SHIFT\"),\n value: \"2\",\n enum: \"THIRD_SHIFT\",\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_WorkshiftScale_FOURTH_SHIFT\"),\n value: \"3\",\n enum: \"FOURTH_SHIFT\",\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_WorkshiftScale_MIXED\"),\n value: \"4\",\n enum: \"MIXED\",\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_WorkshiftScale_GENERAL\"),\n value: \"5\",\n enum: \"GENERAL\",\n },\n ];\n private concatFieldsName = [\n new FormField({\n name: \"code\",\n label: this.translate.instant(\"hcm.payroll.code\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"name\",\n label: this.translate.instant(\"hcm.payroll.employees_addition_workstation\"),\n type: FieldType.String,\n }),\n ];\n\n private concatName = [\n new FormField({\n name: \"code\",\n label: this.translate.instant(\"hcm.payroll.code\"),\n type: FieldType.String,\n }),\n ];\n public gridFields = [\n new FormField({\n name: \"name\",\n label: this.translate.instant(\"hcm.payroll.employees_addition_workstation\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"manager\",\n label: this.translate.instant(\"hcm.payroll.workstation_form_lookup_search_manager_label\"),\n type: FieldType.String,\n }),\n ];\n public searchFields = [\n ...this.concatName,\n {\n name: \"name\",\n label: this.translate.instant(\"hcm.payroll.movimentation_name\"),\n type: FieldType.String,\n },\n {\n name: \"headoffice\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_company\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"companyname\",\n },\n {\n name: \"branchoffice\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_branch\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onRemove: () => this.companyBranchId = null,\n onSelect: ({ id }: { id: string }) => this.companyBranchId = id,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"company\",\n val ? { companyname: val, code: val } : null,\n \"code\", \"companyname\",\n { headquarter: this.currentCompanyId ? this.currentCompanyId : \"not null\" },\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"companyname\",\n },\n {\n name: \"manager\",\n type: FieldType.Autocomplete,\n multiple: false,\n label: this.translate.instant(\"hcm.payroll.workstation_form_lookup_search_manager_label\"),\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocompleteQuery(\n \"autocompleteManager\",\n {\n valueSearch: val ? val : \"\",\n companyId: {tableId: this.currentCompanyId},\n companyBranchId: {tableId: this.companyBranchId ? this.companyBranchId : \"\"},\n },\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"manager\",\n },\n {\n name: \"department\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.movimentation_historical_department_tab\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocompleteQuery(\n \"autocompleteDepartmentQuery\",\n {\n searchText: val ? val : \"\",\n companyId: this.currentCompanyId,\n referenceDate: moment(now()).format(\"YYYY-MM-DD\"),\n },\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n {\n name: \"costcenter\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_cost_center\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"costcenter\",\n val ? { name: val, code: val } : null,\n \"code\", \"name\",\n this.currentCompanyId ? { company: this.currentCompanyId } : null,\n true,\n ServiceType.ORGANIZATION_REGISTER,\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n {\n name: \"jobposition\",\n type: FieldType.Autocomplete,\n multiple: true,\n label: this.translate.instant(\"hcm.payroll.movimentation_historical_job_position_tab\"),\n dataKey: \"tableId\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocompleteQuery(\n \"autocompleteJobpositionQuery\",\n {\n searchText: val ? val : \"\",\n companyId: this.currentCompanyId,\n creationDate: moment().format(\"YYYY-MM-DD\"),\n expirationDate: moment().format(\"YYYY-MM-DD\"),\n },\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n {\n name: \"syndicate\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_syndicate\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"syndicate\",\n val ? { name: val, code: val } : null,\n \"code\", \"name\",\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n {\n name: \"workshiftScale\",\n type: FieldType.Enum,\n label: this.translate.instant(\"hcm.payroll.SHIFT\"),\n showClear: true,\n size: { md: 12 },\n onChange: () => {\n this.resetDependenciesOfShift(true);\n },\n options: this.valueEnumShift,\n },\n {\n name: \"workshiftId\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_scale\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"workshift\",\n val ? { description: val, code: val } : null,\n \"code\", \"description\",\n this.workstationFilterForm.get(\"workshiftScale\").value ?\n { workshiftScale: this.valueEnumShift[this.workstationFilterForm.get(\"workshiftScale\").value].enum } : null,\n );\n },\n onSelect: () => {\n this.resetDependenciesOfShift();\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"description\",\n },\n {\n name: \"workshiftGroupId\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_workshift-group\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"workshiftGroup\",\n val ? { code: val } : null,\n \"code\", \"baseDate\",\n this.workstationFilterForm.get(\"workshiftId\").value ?\n { workshift: this.workstationFilterForm.get(\"workshiftId\").value.id } : null,\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"baseDate\",\n },\n {\n name: \"intervalGroupId\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_class_interval\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"intervalGroup\",\n val ? { description: val, code: val } : null,\n \"code\", \"description\",\n this.workstationFilterForm.get(\"workshiftId\").value ?\n { workshift: this.workstationFilterForm.get(\"workshiftId\").value.id } : null,\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"description\",\n },\n {\n name: \"scaleTeamId\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_scale_team\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"scaleTeam\",\n val ? { name: val, code: val } : null,\n \"code\", \"name\",\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n {\n name: \"scaleCategoryId\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_scale_category\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"scaleCategory\",\n val ? { name: val, code: val } : null,\n \"code\", \"name\",\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n {\n name: \"employmentRelationshipId\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_employment_relationship\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"employmentRelationship\",\n val ? { name: val, code: val } : null,\n \"code\", \"name\",\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n {\n name: \"contractType\",\n type: FieldType.Enum,\n label: this.translate.instant(\"hcm.payroll.employees_temporary_contract_temporary_contract_type\"),\n showClear: true,\n size: { md: 12 },\n options: [\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_Employee\"),\n value: \"0\",\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_Manager\"),\n value: 1,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_FarmWorker\"),\n value: 2,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_Retired\"),\n value: 3,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_Trainee\"),\n value: 4,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_Apprentice\"),\n value: 5,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_FixedDueDate\"),\n value: 6,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_RetiredManager\"),\n value: 7,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_PublicAgent\"),\n value: 8,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_Teacher\"),\n value: 9,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_CooperativeWorker\"),\n value: 10,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_DomesticWorker\"),\n value: 11,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_TeacherFixedDueDate\"),\n value: 12,\n },\n ],\n },\n {\n name: \"expenseNatureId\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_expense_nature\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"expenseNature\",\n val ? { name: val, code: val } : null,\n \"code\", \"name\",\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n {\n name: \"allowDeficient\",\n type: FieldType.Enum,\n label: this.translate.instant(\"hcm.payroll.allow_deficient\"),\n showClear: true,\n size: { md: 12 },\n options: [\n {\n label: this.translate.instant(\"hcm.payroll.enum_DecisionPcD_No\"),\n value: \"0\",\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_DecisionPcD_Also\"),\n value: 1,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_DecisionPcD_Only\"),\n value: 2,\n },\n ],\n },\n {\n name: \"disabilityIds\",\n type: FieldType.Autocomplete,\n multiple: true,\n label: this.translate.instant(\"hcm.payroll.employees_addition_disability\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n // visible: () => Number(this.workstationFilterForm.get('allowDeficient').value),\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"disability\",\n val ? { name: val, code: val } : null,\n \"code\", \"name\",\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n ];\n\n private ngUnsubscribe = new Subject();\n\n constructor(\n private translate: TranslateService,\n private cd: ChangeDetectorRef,\n private autocompleteParametersService: AutocompleteService,\n private lookupParametersService: LookupService) {\n }\n\n public ngOnInit() {\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public ngAfterViewInit() {\n this.cd.detectChanges();\n const companyForm = this.workstationFilterForm.get(\"headoffice\");\n companyForm.setValue({ id: this.currentCompanyId, companyname: this.currentCompanyName });\n companyForm.disable();\n }\n\n public get workstationFilterForm() {\n return this.workstationgroupEl && this.workstationgroupEl[\"formGroupDialog\"];\n }\n\n public selectOption(option: object) {\n this.onSelect.emit(option);\n }\n\n async onClearItem(option: object) {\n await this.onClear.emit(option);\n this.form.get(this.name).reset();\n }\n\n private resetDependenciesOfShift(isShift: boolean = false): void {\n if (isShift) {\n this.workstationFilterForm.get(\"workshiftId\").reset();\n }\n this.workstationFilterForm.get(\"workshiftGroupId\").reset();\n this.workstationFilterForm.get(\"intervalGroupId\").reset();\n }\n\n public searchRequest($event: any) {\n const endpoint = \"hcm/payroll/queries/workstationgroupFilterQuery\";\n const company = this.workstationFilterForm.get(\"headoffice\");\n const isLookupOpen: boolean = $event && $event.filterData;\n company.setValue({\n id: this.currentCompanyId,\n companyname: this.currentCompanyName,\n });\n\n $event = { ...this.getValueEvent($event, isLookupOpen)};\n\n const referenceDate = this.getHireDate().replace(/\\'/g, \"\");\n const filter = new WorkstationgroupLookupDto($event, referenceDate);\n this.lookupParametersService.lookupRequestPost(filter.getToFilter(), endpoint, [...this.concatFieldsName], \"name\")\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data: any) => {\n if (isLookupOpen) {\n this.searchGridData = data && [...data.contents];\n } else {\n this.lookupSuggestions = data && [...data.contents];\n }\n this.totalRecords = data && data.totalPages;\n });\n }\n\n private getValueEvent($event: any, isLookupOpen: boolean): Object {\n if (isLookupOpen) {\n $event.filterData.headoffice = this.currentCompanyId;\n } else {\n $event = {\n filterData: {\n headoffice: this.currentCompanyId,\n searchText: $event\n },\n };\n }\n return $event;\n }\n\n private getAutocompleteQuery(nameQuery: string, searchValue: object) {\n this.autocompleteParametersService.getAutoCompleteQuery(nameQuery, searchValue)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data: any) => {\n if (nameQuery === \"autocompleteDepartmentQuery\") {\n data.filter((field: any) => {\n if (field.fields && field.fields[0]) {\n field[\"name\"] = `${ field.fields[1].value } - ${ field.fields[0].value }`;\n }\n });\n } else if (nameQuery === \"autocompleteJobpositionQuery\") {\n data.filter((field: any) => {\n if (field.fields && field.fields[0] && field.fields[1]) {\n field[\"name\"] = `${ field.fields[0].value } - ${ field.fields[1].value }`;\n }\n });\n } else if (nameQuery === \"autocompleteManager\") {\n data.map((field: any) => {\n field[\"manager\"] = field.fields[0].value ? field.fields[0].value : field.fields[3].value;\n });\n }\n\n this.suggestionsObservable.next(data);\n });\n }\n\n private getAutocomplete(\n nameEntity: string,\n searchValue: object,\n concatOtherFields: string,\n nameFieldConcat: string,\n additionalParams: object = null,\n codeIsString: boolean = false,\n service: ServiceType = ServiceType.PAYROLL,\n ) {\n this.autocompleteParametersService.getAutoComplete(\n nameEntity, {\n ...additionalParams,\n searchValue: { ...searchValue },\n }, this.searchFields, codeIsString, service)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data: any) => {\n if (nameEntity === \"workshiftGroup\") {\n data.filter((filterData: any) => {\n if (filterData.baseDate) {\n const dateIsMoment = moment(filterData.baseDate, \"YYYY-MM-DD\");\n if (dateIsMoment.isValid()) {\n return filterData.baseDate = dateIsMoment.format(this.dateFormat);\n }\n }\n });\n }\n this.suggestionsObservable.next(this.getConcatFields(data, concatOtherFields, nameFieldConcat));\n });\n }\n\n private getConcatFields(data: any, concatOtherFields: string, nameFieldConcat: string) {\n if (nameFieldConcat && concatOtherFields) {\n data.filter((field: any) => {\n field[nameFieldConcat] = `${ field[concatOtherFields] } - ${ field[nameFieldConcat] }`;\n });\n }\n return data;\n }\n\n public getHireDate() {\n const momentHireDate = moment(this.hireDate).format(this.dateFormat);\n return momentHireDate ? `'${ invertFieldDate(momentHireDate, this.dateFormat) }'` : `'${ getNowDate() }'`;\n }\n\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { DynamicFormModule } from \"@seniorsistemas/angular-components\";\nimport { AutocompleteService } from \"./autocomplete.service\";\nimport { LookupService } from \"./lookup.service\";\n\nimport { WorkstationgroupLookupComponent } from \"./workstationgroup-lookup.component\";\n\n@NgModule({\n imports: [FormsModule, DynamicFormModule, ReactiveFormsModule, CommonModule, TranslateModule],\n declarations: [WorkstationgroupLookupComponent],\n exports: [WorkstationgroupLookupComponent],\n providers: [AutocompleteService, LookupService],\n})\nexport class WorkstationgroupLookupModule {\n}\n","import {\n Component,\n OnInit,\n ViewChild,\n Input,\n ChangeDetectorRef,\n AfterViewInit,\n OnDestroy, EventEmitter,\n} from \"@angular/core\";\nimport { FormGroup, FormBuilder } from \"@angular/forms\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { CustomFieldsComponent, NumberLocaleOptions } from \"@seniorsistemas/angular-components\";\nimport { ConfirmationService } from \"primeng/api\";\nimport { compareValues, isValid, mountCustomToSave } from \"../utils/helpers\";\nimport { DirectionEnumeration } from \"../../core/enums\";\nimport { Subject } from \"rxjs\";\n\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: \"c-historical-bank-account\",\n templateUrl: \"./historical-bank-account.component.html\",\n styleUrls: [\"./historical-bank-account.component.scss\"],\n})\nexport class HistoricalBankAccountComponent implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild(CustomFieldsComponent, { static: false })\n public customFields: CustomFieldsComponent;\n @Input()\n public formGroup: FormGroup;\n @Input()\n public fieldFormGroup: string;\n @Input()\n public _dateWhen: string;\n @Input()\n public _displayDateWhen: string;\n @Input()\n public recordByRow: number = 1;\n @Input()\n public showDateWhen: boolean = false;\n @Input()\n public msgTooltipAdd: string;\n @Input()\n public isEditMode: boolean = false;\n @Input()\n public isViewMode: boolean = false;\n @Input()\n public currency: NumberLocaleOptions;\n @Input()\n public customEntity: string;\n @Input()\n public customService: string;\n @Input()\n public withSideBar: boolean = true;\n\n private visibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n private ngUnsubscribe = new Subject();\n private historicalBankAccountList: FormGroup;\n private orderBy: { field: string; direction: DirectionEnumeration } = {\n field: \"displayDateWhen\",\n direction: DirectionEnumeration.DESC,\n };\n\n private _visible: boolean;\n public bankAccountItemInput: object = {};\n public totalRecords: number = 0;\n public actionLabel: string = this.translateService.instant(\"hcm.payroll.entries_query_actions_total_title\");\n public loading = true;\n public parameters: any;\n public msgTotalLimitByPercentage: string;\n public listData: object[] = [];\n public listDataNoPage: object[] = [];\n public cols = [\n {\n label: this.translateService.instant(\"hcm.payroll.historical_bank_account_label_date_when\"),\n field: \"displayDateWhen\",\n },\n {\n label: this.translateService.instant(\"hcm.payroll.historical_bank_account_label_bank\"),\n field: \"bank\",\n },\n {\n label: this.translateService.instant(\"hcm.payroll.historical_bank_account_label_bank_branch\"),\n field: \"bankBranch\",\n },\n {\n label: this.translateService.instant(\"hcm.payroll.historical_bank_account_label_account_type\"),\n field: \"accountType\",\n },\n {\n label: this.translateService.instant(\"hcm.payroll.historical_bank_account_label_account\"),\n field: \"bankAccount\",\n },\n {\n label: this.translateService.instant(\"hcm.payroll.historical_bank_account_label_digit\"),\n field: \"digit\",\n },\n {\n label: this.translateService.instant(\"hcm.payroll.historical_bank_account_label_percentage\"),\n field: \"percentage\",\n },\n ];\n actions = (rowData: any = {}, key: any) => {\n return [\n {\n visible: this.isEditMode,\n label: this.translateService.instant(\"hcm.payroll.employees_image_cropper_view\"),\n command: () => {\n rowData[\"index\"] = key;\n this.bankAccountItemInput = { currentItem: rowData, listData: this.listDataNoPage, isEditMode: false };\n this.visible = true;\n },\n },\n {\n visible: !!(!this.isEditMode && this.withSideBar),\n label: this.translateService.instant(\"hcm.payroll.edit\"),\n command: () => {\n rowData[\"index\"] = key;\n this.bankAccountItemInput = { currentItem: rowData, listData: this.listDataNoPage, isEditMode: true };\n this.visible = true;\n },\n },\n {\n visible: !this.isEditMode,\n label: this.translateService.instant(\"hcm.payroll.delete\"),\n command: () => {\n this.loading = true;\n this.deleteAnnuityItem(key);\n },\n },\n ];\n }\n\n constructor(\n private confirmationService: ConfirmationService,\n private translateService: TranslateService,\n private activatedRoute: ActivatedRoute,\n private cd: ChangeDetectorRef,\n private formBuilder: FormBuilder,\n ) {\n this.createFormGroup();\n }\n\n ngOnInit() {\n this.formGroup.setControl(this.fieldFormGroup, this.historicalBankAccountList);\n }\n\n private createFormGroup(): void {\n this.historicalBankAccountList = this.formBuilder.group({\n historicalBankAccountList: this.formBuilder.control(null),\n });\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n }\n\n public onLazyLoad(event?: any): void {\n const first = event && event.first ? event.first : 0;\n const rows = event && event.rows ? event.rows : this.recordByRow;\n const arrList = this.getHistoricalBankAccountList();\n this.listData = [];\n this.totalRecords = null;\n\n if (event && event.multiSortMeta && event.multiSortMeta.length) {\n event.multiSortMeta.map((value: any) => {\n this.orderBy.field = value.field;\n this.orderBy.direction = value.order === 1 ? DirectionEnumeration.ASC : DirectionEnumeration.DESC;\n });\n }\n\n if (arrList && arrList.length) {\n this.totalRecords = arrList.length;\n this.listData = arrList;\n this.listDataNoPage = [...arrList];\n this.listData.sort(compareValues(this.orderBy.field, this.orderBy.direction));\n this.listData = this.listData.slice(first, (first + rows));\n } else {\n this.listDataNoPage = [];\n }\n\n if (this.isEditMode || arrList && arrList.length === 1) {\n this.refreshCssInIE11();\n }\n\n this.loading = false;\n\n }\n\n /**\n * Um Bug de CSS que acontece nas linhas da tabela, que resolve só atualizando qualquer parte do CSS da pagina.\n */\n private refreshCssInIE11() {\n if (/msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent)) {\n setTimeout( () => {\n const row = document.getElementsByClassName(\"row0\");\n if (row && row[0])\n row[0].className = 'refresh';\n }, 1);\n }\n }\n\n public add(): void {\n this.bankAccountItemInput = {};\n this.visible = true;\n }\n\n private deleteAnnuityItem(index: number): void {\n let newlist = [...this.getHistoricalBankAccountList()];\n newlist.sort(compareValues(this.orderBy.field, this.orderBy.direction));\n delete newlist[index];\n newlist = newlist.filter(val => val);\n this.historicalBankAccountList.get(\"historicalBankAccountList\").setValue(newlist);\n this.verifyTotalPercentage();\n this.onLazyLoad();\n }\n\n public getHistoricalBankAccountList(): object[] {\n if (this.historicalBankAccountList.get(\"historicalBankAccountList\") &&\n this.historicalBankAccountList.get(\"historicalBankAccountList\").value &&\n this.historicalBankAccountList.get(\"historicalBankAccountList\").value.length)\n return this.historicalBankAccountList.get(\"historicalBankAccountList\") && this.historicalBankAccountList.get(\"historicalBankAccountList\").value;\n else\n return [];\n }\n\n public addItemInList($event: any): void {\n const index = $event && $event.index >= 0 ? $event.index : null;\n const newDataList = this.getHistoricalBankAccountList() ? this.getHistoricalBankAccountList() : [];\n\n if (index != null) {\n newDataList[index] = $event;\n delete $event.index;\n } else {\n if (isValid($event[\"customFields\"]) && Object.keys($event[\"customFields\"]).length) {\n const customValue = mountCustomToSave($event[\"customFields\"]);\n $event[\"customFields\"] = [...customValue];\n }\n $event[\"dateWhen\"] = this.dateWhen;\n newDataList.push($event);\n }\n\n\n\n this.historicalBankAccountList.get(\"historicalBankAccountList\").setValue(newDataList);\n this.verifyTotalPercentage();\n this.onLazyLoad({ first: this.getNumberPageByIndex(index, newDataList) });\n }\n\n private getNumberPageByIndex(index: number, list: object[]): number {\n if (index) {\n const total = list.length;\n const sub = this.recordByRow - 1;\n return Math.ceil(total / this.recordByRow) * this.recordByRow - sub - 1;\n }\n return null;\n }\n\n private verifyTotalPercentage(): void {\n const list = this.getHistoricalBankAccountList() ? this.getHistoricalBankAccountList() : [];\n const arrayPercentage = [];\n\n if (!list.length) return this.msgTotalLimitByPercentage = null;\n\n list.filter(item => arrayPercentage.push(item && item[\"percentage\"]));\n\n const sumPercentage = arrayPercentage.reduce((total: number, percentage: number) => {\n return total + percentage;\n }, 0);\n\n if (sumPercentage === 100) {\n this.msgTotalLimitByPercentage = this.translateService.instant(\"hcm.payroll.historical_bank_account_msg_limit_total_by_percentage\");\n } else {\n this.msgTotalLimitByPercentage = null;\n }\n\n }\n\n public get scopedActions() {\n return this.actions.bind(this);\n }\n\n public get recordsMessage() {\n return `${ this.totalRecords || 0 } ${ this.totalRecords === 1 ? this.translateService.instant(\"hcm.payroll.admission_register\") : this.translateService.instant(\"hcm.payroll.admission_registers\") }`;\n }\n\n public get getTooltipAndDisableButtonAdd() {\n return this.dateWhen ? null : this.msgTooltipAdd;\n }\n\n @Input()\n public get dateWhen(): string {\n return this._dateWhen;\n }\n\n public set dateWhen(value: string) {\n this._dateWhen = value;\n if (this._dateWhen) {\n this.listData.filter(row => row[\"dateWhen\"] = this._dateWhen);\n }\n }\n\n @Input()\n public get displayDateWhen(): string {\n return this._displayDateWhen;\n }\n\n public set displayDateWhen(value: string) {\n this._displayDateWhen = value;\n if (this._displayDateWhen) {\n this.listData.filter(row => row[\"displayDateWhen\"] = this._displayDateWhen);\n }\n }\n\n @Input()\n public set addListData(list: object[]) {\n this.loading = true;\n this.historicalBankAccountList.get(\"historicalBankAccountList\").patchValue(list);\n this.verifyTotalPercentage();\n this.onLazyLoad();\n }\n\n @Input()\n public get visible(): boolean {\n return this._visible;\n }\n\n public set visible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(this.visible);\n }\n public close(): void {\n this.visible = false;\n }\n\n}\n","import {\n Component,\n OnInit,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n OnDestroy,\n AfterViewInit,\n ViewChild,\n} from \"@angular/core\";\nimport { FormGroup, FormBuilder, Validators, ValidatorFn, AbstractControl } from \"@angular/forms\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { NumberLocaleOptions, CustomFieldsComponent } from \"@seniorsistemas/angular-components\";\nimport { Subject } from \"rxjs\";\nimport {\n verifyValidationsForm,\n clearValues,\n configEnabledFields,\n mountCustomToShow,\n} from \"../../utils/helpers\";\n\n@Component({\n selector: \"bank-account\",\n templateUrl: \"./historical-bank-account-form.component.html\",\n styleUrls: [\"../historical-bank-account.component.scss\"]\n})\nexport class HistoricalBankAccountFormComponent implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild(CustomFieldsComponent, { static: true })\n customFields: CustomFieldsComponent;\n\n @Input()\n public currency: NumberLocaleOptions;\n @Input()\n public customEntity: string;\n @Input()\n public customService: string;\n @Input()\n public withSideBar: boolean = true;\n @Input()\n public isEditMode: boolean = false;\n\n @Output()\n public visibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output()\n public bankAccountItemToList: EventEmitter<any> = new EventEmitter<any>();\n\n private _visible: boolean;\n private ngUnsubscribe = new Subject();\n private employeeId: string;\n private bankAccountList: object[];\n private initialValidatorOfPercentage: ValidatorFn[] = [Validators.required, Validators.min(0.01)];\n private initialValidatorOfBankAccount: ValidatorFn[] = [Validators.required, Validators.maxLength(12)];\n\n\n public labelBtnAdd: string = \"hcm.payroll.employees_add\";\n public bankAccountFormGroup: FormGroup;\n public maxValuePercentage: number = 100.00;\n public visibleBtnSave: boolean = true;\n public isView: boolean = false;\n\n constructor(\n private translate: TranslateService,\n private formBuilder: FormBuilder,\n private route: ActivatedRoute,\n private cd: ChangeDetectorRef,\n ) {\n this.createFormGroup();\n this.registerSubjects();\n }\n\n /**\n * Método valida se o número atual informado na conta para o mesmo banco, agencia e tipo já foi inserido em outro registro da tabela.\n * Caso esta conta já esteja em uso por outro registro, retorna \"bankAccountDuplicate\" = true.\n * @param listCompare\n * @param accountTypeValue\n * @param bankValue\n * @param bankBranchValue\n */\n private validateDuplicateBankAccount(\n listCompare: object[],\n accountTypeValue: string,\n bankValue: string,\n bankBranchValue: string) {\n\n return (control: AbstractControl): Validators => {\n const value = control && control.value;\n let condition = false;\n listCompare.filter((item, key) => {\n if (key != item[\"index\"] && value && item[\"bank\"] && item[\"bank\"].tableId === bankValue &&\n item[\"bankBranch\"] && item[\"bankBranch\"].tableId === bankBranchValue &&\n item[\"accountType\"] && item[\"accountType\"].key === accountTypeValue &&\n Number(item[\"bankAccount\"]) === Number(value)) {\n return condition = true;\n }\n });\n\n if (condition) {\n return { bankAccountDuplicate: true };\n } else {\n return null;\n }\n };\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next(true);\n this.ngUnsubscribe.unsubscribe();\n }\n\n private registerSubjects(): void {\n }\n\n private createFormGroup(): void {\n this.bankAccountFormGroup = this.formBuilder.group({\n id: this.formBuilder.control(null),\n index: this.formBuilder.control(null),\n employee: this.formBuilder.control({ value: { tableId: null }, disabled: true }),\n dateWhen: this.formBuilder.control(null),\n displayDateWhen: this.formBuilder.control(null),\n bank: this.formBuilder.control(null, Validators.required),\n bankBranch: this.formBuilder.control(null, Validators.required),\n accountType: this.formBuilder.control(null, Validators.required),\n bankAccount: this.formBuilder.control(null, Validators.compose([...this.initialValidatorOfBankAccount])),\n digit: this.formBuilder.control(null, Validators.maxLength(3)),\n percentage: this.formBuilder.control(null, Validators.compose([\n ...this.initialValidatorOfPercentage,\n Validators.max(this.maxValuePercentage),\n ])),\n customFields: this.formBuilder.control(null),\n });\n }\n\n // Actions Bank\n public onSelectBank() {\n this.cleanBankInformation();\n this.beforeSetBankAccountValidator();\n }\n\n public onClearBank() {\n this.bankAccountFormGroup.get(\"bank\").reset();\n this.cleanBankInformation();\n this.beforeSetBankAccountValidator();\n }\n\n private cleanBankInformation(): void {\n const fields = [\"bankBranch\"];\n clearValues(this.bankAccountFormGroup, fields);\n }\n\n // Actions BankBranch\n public onClearBankBranch() {\n this.bankAccountFormGroup.get(\"bankBranch\").reset();\n this.beforeSetBankAccountValidator();\n }\n\n // Actions BankBranch\n public onClearAccountType() {\n this.bankAccountFormGroup.get(\"accountType\").reset();\n this.beforeSetBankAccountValidator();\n }\n\n @Input()\n public get visible(): boolean {\n return this._visible;\n }\n\n public set visible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(this.visible);\n }\n\n @Input()\n public set isEditAndViewValue(value: any) {\n this.resetForm();\n this.visibleBtnSave = true;\n if (value && value.currentItem && Object.keys(value.currentItem).length) {\n this.bankAccountFormGroup.patchValue(this.convertDTOToShowWithCustomFields({...value.currentItem}));\n this.labelBtnAdd = \"hcm.payroll.employees_update\";\n this.setValidatorsAccordingList(value.listData, value.currentItem[\"index\"]);\n if (!this.isView) {\n this.configEnableFields(value && value[\"isEditMode\"]);\n }\n } else {\n this.labelBtnAdd = \"hcm.payroll.employees_add\";\n }\n\n }\n\n public convertDTOToShowWithCustomFields(data: object): object {\n const obj = {... data};\n obj[\"customFields\"] = mountCustomToShow(obj[\"customFields\"]);\n return obj;\n }\n\n private configEnableFields(isEditMode: boolean) {\n this.visibleBtnSave = isEditMode;\n configEnabledFields(this.bankAccountFormGroup, isEditMode, [\n \"bank\",\n \"bankBranch\",\n \"accountType\",\n \"bankAccount\",\n \"digit\",\n \"percentage\",\n \"customFields\",\n ], []);\n }\n\n public close(): void {\n this.resetForm();\n this.visible = false;\n }\n\n public addItem(): void {\n this.bankAccountFormGroup.updateValueAndValidity();\n verifyValidationsForm.call(this.bankAccountFormGroup);\n\n if (this.bankAccountFormGroup.valid) {\n if (this.employeeId) {\n this.bankAccountFormGroup.get(\"employee\").setValue({\n tableId: this.employeeId,\n name: \"\",\n });\n }\n this.bankAccountItemToList.emit(this.bankAccountFormGroup.getRawValue());\n this.visible = false;\n this.resetForm();\n }\n }\n\n public resetForm(): void {\n this.bankAccountFormGroup.reset();\n this.labelBtnAdd = \"hcm.payroll.employees_add\";\n if (this.customFields && this.customFields.formGroup) this.customFields.formGroup.reset();\n }\n\n public getBankTableId() {\n return this.bankAccountFormGroup.controls.bank.value\n ? `'${ this.bankAccountFormGroup.controls.bank.value.tableId }'`\n : null;\n }\n\n\n public get percentagePlaceholder(): string {\n return `0${ this.currency && this.currency.decimalSeparator }00`;\n }\n\n public get optionsPercentage(): object {\n return { ...this.getOptions(), precision: 2 };\n }\n\n private getOptions(): any {\n return {\n prefix: \"\",\n thousands: this.currency.thousandsSeparator,\n decimal: this.currency.decimalSeparator,\n };\n }\n\n /**\n * O Input que recebe a lista do component pai e chama o método de validação passando a lista recebida.\n * @param bankAccountList\n */\n @Input()\n public set getListBankAccount(bankAccountList: object[]) {\n if (bankAccountList) {\n this.setValidatorsAccordingList(bankAccountList);\n } else {\n this.resetForm();\n }\n }\n\n /**\n * Recebe a lista de registros já inseridos na tabela adiciona em uma variável os valores que serão usados para\n * a validação dos campos \"percentage\" e \"bankAccount\".\n * Quando tem index significa que está em uma edição, os valores na posição do registro da edição (index) não serão adicionados\n * no array de comparação dos validators.\n * @param bankAccountList\n * @param index\n */\n private setValidatorsAccordingList(bankAccountList: object[], index: number = null) {\n this.bankAccountList = bankAccountList && bankAccountList.length ? [...bankAccountList] : [];\n\n const percentageIncluded = [];\n\n if (this.bankAccountList && this.bankAccountList.length) {\n this.bankAccountList.filter((field, key) => {\n if (field[\"percentage\"] && key != index) {\n percentageIncluded.push(field[\"percentage\"]);\n }\n });\n\n }\n this.beforeSetBankAccountValidator();\n this.validatePercentageValid(percentageIncluded);\n }\n\n /**\n * Antes de setar o validator prepara as variáveis necessária para que seja feita a validação do campo.\n */\n public beforeSetBankAccountValidator() {\n const bankAccount = this.bankAccountFormGroup.get(\"bankAccount\");\n\n const accountTypeValue = this.bankAccountFormGroup.get(\"accountType\") &&\n this.bankAccountFormGroup.get(\"accountType\").value &&\n this.bankAccountFormGroup.get(\"accountType\").value[\"key\"];\n\n const bankValue = this.bankAccountFormGroup.get(\"bank\") &&\n this.bankAccountFormGroup.get(\"bank\").value &&\n this.bankAccountFormGroup.get(\"bank\").value[\"tableId\"];\n\n const bankBranchValue = this.bankAccountFormGroup.get(\"bankBranch\") &&\n this.bankAccountFormGroup.get(\"bankBranch\").value &&\n this.bankAccountFormGroup.get(\"bankBranch\").value[\"tableId\"];\n\n if (bankValue &&\n bankBranchValue &&\n accountTypeValue &&\n this.bankAccountList &&\n this.bankAccountList.length) {\n\n bankAccount\n .setValidators(Validators.compose([\n ...this.initialValidatorOfBankAccount,\n this.validateDuplicateBankAccount(this.bankAccountList, accountTypeValue, bankValue, bankBranchValue),\n ]));\n bankAccount.updateValueAndValidity();\n } else {\n bankAccount\n .setValidators(Validators.compose([\n ...this.initialValidatorOfBankAccount,\n ]));\n }\n\n }\n\n /**\n * Este método calcula as parcentagens que já foram inseridas, e seta a diferença para chegar em\n * 100% na validação do campo \"percentage\" como um novo maxValue;\n * @param listValue\n */\n private validatePercentageValid(listValue: number[]) {\n const percentage = this.bankAccountFormGroup.get(\"percentage\");\n this.maxValuePercentage = listValue\n .reduce((currentValue, total) => currentValue - total,\n 100.00,\n );\n\n percentage\n .setValidators(Validators.compose([\n ...this.initialValidatorOfPercentage,\n Validators.max(this.maxValuePercentage),\n ]));\n percentage.updateValueAndValidity();\n }\n\n @Input()\n public set isViewMode(condition: boolean) {\n this.isView = !!(condition && !this.withSideBar);\n this.configEnableFields(!this.isView);\n if (!this.isView) this.resetForm();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\nimport { ServiceType } from '../../core/enums/serviceType';\n\n@Injectable()\nexport class HistoricalBankAccountService {\n constructor(private http: HttpClientService) {}\n\n query(path: string, body: object, service: ServiceType = ServiceType.PAYROLL): Observable<any> {\n return this.http.query(path, body, service);\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport {\n ButtonModule,\n LoadingStateModule,\n SidebarModule, ControlErrorsModule, CustomFieldsModule,\n} from \"@seniorsistemas/angular-components\";\nimport { CurrencyMaskModule } from \"ng2-currency-mask\";\nimport { ConfirmationService } from \"primeng/api\";\nimport { AutoCompleteModule } from \"primeng/autocomplete\";\nimport { FieldsetModule } from \"primeng/fieldset\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { PanelModule } from \"primeng/panel\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { CoreDirectives } from \"../directives/index\";\nimport { HistoricalBankAccountFormComponent } from \"./historical-bank-account-form/historical-bank-account-form.component\";\nimport { InputDateModule } from \"../input-date/index\";\nimport { InputRestAutoCompleteModule } from \"../input-rest-auto-complete/index\";\nimport { InputRestAutoCompleteEnumModule } from \"../input-rest-auto-complete-enum/index\";\n\nimport { SharedModule } from \"../shared/shared.module\";\nimport { HistoricalBankAccountComponent } from \"./historical-bank-account.component\";\nimport { HistoricalBankAccountService } from \"./historical-bank-account.service\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule,\n TableModule,\n ButtonModule,\n TooltipModule,\n LoadingStateModule,\n SidebarModule,\n InputDateModule,\n ControlErrorsModule,\n InputRestAutoCompleteEnumModule,\n CurrencyMaskModule,\n InputRestAutoCompleteModule,\n InputTextModule,\n CoreDirectives,\n FieldsetModule,\n CustomFieldsModule,\n PanelModule,\n ],\n declarations: [HistoricalBankAccountComponent, HistoricalBankAccountFormComponent],\n providers: [HistoricalBankAccountService, ConfirmationService],\n exports: [HistoricalBankAccountComponent],\n})\nexport class HistoricalBankAccountModule {\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { ServiceType } from '../../core/enums/serviceType';\n\nimport { HttpClientService } from \"../shared/http-client.service\";\n\n@Injectable()\nexport class HistoricalBankAccountListService {\n constructor(private http: HttpClientService, private httpClient: HttpClient) {\n }\n\n public remove(id: any, dateWhen: string, service: ServiceType = ServiceType.PAYROLL, dependentId?: string) {\n if (service === ServiceType.DEPENDENT) {\n return this.httpClient\n .post(\"hcm/dependent/queries/historicalJudicialPensionBankAccountDelete\", {\n dependentId: dependentId,\n dateWhen: dateWhen,\n });\n } else {\n return this.http.post(\"actions/historicalEmployeeBankAccountDelete\", {\n employeeId: id,\n dateWhen: dateWhen\n });\n }\n }\n\n}\n","import {\n Component,\n OnInit,\n ViewChild,\n ChangeDetectorRef,\n AfterViewInit,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n} from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { CustomFieldsComponent } from \"@seniorsistemas/angular-components\";\nimport * as moment_ from \"moment\";\nimport { ConfirmationService, MessageService } from \"primeng/api\";\nimport { ServiceType } from '../../core/enums/serviceType';\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { HistoricalBankAccountListService } from \"./historical-bank-account-list.service\";\n\nconst moment = moment_;\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: \"c-historical-bank-account-list\",\n templateUrl: \"./historical-bank-account-list.component.html\",\n styleUrls: [\"./historical-bank-account-list.component.scss\"],\n})\nexport class HistoricalBankAccountListComponent implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild(CustomFieldsComponent, { static: false })\n public customFields: CustomFieldsComponent;\n\n @Input()\n public permission: object;\n @Input()\n public employeeId: string;\n @Input()\n public dependentId: string;\n @Input()\n public dateFormat: string;\n @Input()\n public endPoint: string = \"hcm/payroll/queries/historicalEmployeeBankAccountQuery\";\n @Input()\n public keyPayload: string = \"historicalEmployeeBankAccount\";\n @Input()\n public withSidebar: boolean = true;\n\n\n @Output()\n public enableView: EventEmitter<any> = new EventEmitter<any>();\n\n private lastRecord: any;\n private ngUnsubscribe = new Subject();\n public initParameters: any;\n public loading: boolean = true;\n public parameters: any;\n\n public columns = [\n {\n label: this.translateService.instant(\n \"hcm.payroll.historical_bank_account_label_date_when\",\n ),\n field: \"dateWhen\",\n },\n {\n label: this.translateService.instant(\n \"hcm.payroll.historical_bank_account_label_bank\",\n ),\n field: \"bank.name\",\n },\n {\n label: this.translateService.instant(\n \"hcm.payroll.historical_bank_account_label_bank_branch\",\n ),\n field: \"bankBranch.name\",\n },\n {\n label: this.translateService.instant(\n \"hcm.payroll.historical_bank_account_label_account\",\n ),\n field: \"bankAccount\",\n },\n {\n label: this.translateService.instant(\n \"hcm.payroll.historical_bank_account_label_percentage\",\n ),\n field: \"percentage\",\n },\n {\n label: this.translateService.instant(\n \"hcm.payroll.historical_bank_account_label_qtd_account\",\n ),\n field: \"numberOfBankAccount\",\n },\n ];\n\n constructor(\n private confirmationService: ConfirmationService,\n private translateService: TranslateService,\n private activatedRoute: ActivatedRoute,\n private cd: ChangeDetectorRef,\n private router: Router,\n private messageService: MessageService,\n private historicalBankAccountListService: HistoricalBankAccountListService,\n ) {\n }\n\n ngOnInit() {\n this.initParameters = { employeeId: this.employeeId, dependentId: this.dependentId };\n }\n\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n }\n\n public onLazyLoad(payload: any) {\n payload.forEach((value: any) => {\n value.dateWhen = moment(value.dateWhen).format(this.dateFormat);\n });\n\n this.onGridLoad(payload);\n\n this.loading = false;\n }\n\n public getMenuActions(rowData: any) {\n return [\n {\n label: this.translateService.instant(\"hcm.payroll.employees_image_cropper_view\"),\n command: () => {\n const dateWhen = rowData && rowData.dateWhen && moment(rowData.dateWhen, this.dateFormat).format(\"YYYY-MM-DD\");\n if (this.withSidebar)\n this.router.navigate([`historical-bank-account/${ dateWhen }`], {\n relativeTo: this.activatedRoute,\n });\n else\n this.enableView.emit(dateWhen);\n },\n },\n {\n label: this.translateService.instant(\"hcm.payroll.delete\"),\n command: () => {\n if (this.isAllowToDeleteHistorical && rowData) {\n this.delete(rowData.id, rowData.dateWhen);\n } else {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n });\n }\n },\n },\n ];\n }\n\n public delete(id: any, dateWhen: string) {\n if (id === this.lastRecord.id) {\n const dateWhenToDto = moment(dateWhen, this.dateFormat).format(\"YYYY-MM-DD\");\n this.confirmationService.confirm({\n message: `${ this.translateService.instant(\n \"hcm.payroll.employees_movimentation_historical_bank_account_question_confirm_delete\",\n ) }?`,\n accept: () => {\n this.loading = true;\n const service = this.withSidebar ? ServiceType.PAYROLL : ServiceType.DEPENDENT;\n this.historicalBankAccountListService\n .remove(this.employeeId, dateWhenToDto, service, this.dependentId)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n () => {\n this.messageService.add({\n severity: \"success\",\n summary: this.translateService.instant(\"hcm.payroll.success\"),\n detail: this.translateService.instant(\"hcm.payroll.employees_movimentation_historical_bank_account_remove\"),\n });\n this.parameters = (this.parameters && { ...this.parameters }) || {};\n },\n () => {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.employees_movimentation_historical_bank_account_error_remove\"),\n });\n this.loading = false;\n },\n );\n },\n });\n } else {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.not_allowed_delete_last\"),\n });\n }\n }\n\n public add() {\n if (this.isAllowToAddHistorical) {\n this.router.navigate([\"historical-irrf-new\"], {\n relativeTo: this.activatedRoute,\n });\n } else {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n });\n }\n }\n\n private onGridLoad(payload: any) {\n if (payload && payload.length) {\n this.lastRecord = payload[0];\n }\n }\n\n private get isAllowToAddHistorical() {\n return (\n this.permission[\"incluir\"]\n );\n }\n\n private get isAllowToDeleteHistorical() {\n return (\n this.permission[\"excluir\"]\n );\n }\n\n public get scopedActions() {\n return this.getMenuActions.bind(this);\n }\n\n @Input()\n public set reloadList(condition: boolean) {\n if (condition) {\n this.loading = true;\n this.parameters = (this.parameters && { ...this.parameters }) || {};\n }\n }\n\n}\n","import { CommonModule } from \"@angular/common\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { ButtonModule, LoadingStateModule } from \"@seniorsistemas/angular-components\";\nimport { AutoCompleteModule } from \"primeng/autocomplete\";\nimport { ConfirmDialogModule } from \"primeng/confirmdialog\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { DataListRestModule } from \"../data-list-rest/index\";\n\nimport { SharedModule } from \"../shared/shared.module\";\nimport { HistoricalBankAccountListComponent } from \"./historical-bank-account-list.component\";\nimport { HistoricalBankAccountListService } from \"./historical-bank-account-list.service\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule,\n TableModule,\n ButtonModule,\n TooltipModule,\n LoadingStateModule,\n DataListRestModule,\n ConfirmDialogModule,\n ],\n declarations: [HistoricalBankAccountListComponent],\n providers: [HistoricalBankAccountListService],\n exports: [HistoricalBankAccountListComponent],\n})\nexport class HistoricalBankAccountListModule {\n}\n","import { Operators } from '../enums';\n\nexport class EntityODataParameter {\n private _field: string;\n private _operation: Operators;\n private _value: any;\n\n constructor(entityODataParameter: { field: string; value: string; operation?: Operators }) {\n this.field = entityODataParameter.field;\n this.value = entityODataParameter.value;\n this.operation = entityODataParameter.operation;\n }\n\n set field(value) {\n this._field = value;\n }\n\n get field() {\n return this._field;\n }\n\n set operation(value) {\n this._operation = value;\n }\n\n get operation() {\n return this._operation;\n }\n\n set value(value) {\n this._value = value;\n }\n\n get value() {\n return this._value;\n }\n\n public toString(): string {\n if (this.operation === Operators.CONTAINING) {\n return `${this.operation}(lower(${this.field}), lower(${this.value}))`;\n }\n return `${this.field} ${this.operation || ''} ${this.value}`;\n }\n}\n","import { AbstractControl, Validators, ValidatorFn, ValidationErrors } from \"@angular/forms\";\nimport { CalendarLocaleOptions } from \"@seniorsistemas/angular-components\";\nimport * as _moment from \"moment\";\nimport { unitOfTime } from \"moment\";\nimport { CompareType } from \"../../../core/enums\";\nimport { DateValidateOptions, DateCompareOptions } from \"../../../core/interfaces\";\nimport { removeCharacteresSpecials } from \"../helpers\";\n\nconst moment = _moment;\nconst dateStartG5 = moment('31/12/1900', 'DD/MM/YYYY');\nconst dateEndG5 = moment('04/06/2080', 'DD/MM/YYYY');\n\nexport class DateValidator {\n constructor() { }\n\n /**\n * Validador que verifica se a data está no formato correto.\n * @param dateFormat Formato da data\n * @param options Opções para validar a data\n * @returns Objeto no formato { invalidDate: true } indicando que a data não é válida\n */\n static isValidDate(dateFormat: string, options?: DateValidateOptions): ValidatorFn {\n const validator: ValidatorFn = (control: AbstractControl): Validators => {\n const useG5DateRange = options && options.hasOwnProperty('useG5DateRange') ? options.useG5DateRange : true;\n const value = removeCharacteresSpecials(control.value);\n dateFormat = removeCharacteresSpecials(dateFormat);\n if (value && dateFormat && value.length === dateFormat.length && !control.value.includes('_')) {\n const dateValue = moment(value, dateFormat);\n const valid = dateValue.isValid();\n const isValidRange = useG5DateRange ? dateValue.isBetween(dateStartG5, dateEndG5, null, '[]') : true;\n return valid && isValidRange ? null : { invalidDate: true };\n }\n return null;\n };\n return validator;\n }\n /**\n * Validador que verifica se data inserida no formulário é inferior à data informada.\n * @param compareToDate Data a ser comparada.\n * @param dateFormat Informações do local\n * @param granularity Granularidade da comparação. Ex.: 'day', 'mounth', 'year'.\n * @returns Objeto no formato { lowerDate: true } indicando que a data é menor\n */\n static isDateLower(compareToDate: string, dateFormat: string, granularity: unitOfTime.StartOf = 'day'): ValidatorFn {\n const options: DateCompareOptions = { compareName: \"lowerDate\", granularity: granularity };\n const validator = this.isValidDateCompare(compareToDate, dateFormat, CompareType.isBefore, options);\n return validator;\n }\n\n /**\n * Validador genérico usando comparação entre datas\n * @param compareToDate Data a ser comparada\n * @param dateFormat Informações do local\n * @param compareType Tipo de comparação\n * @param options Opções para a comparação\n * @returns Objeto no formato { nomeChave: true } indicando que a data não é válida\n */\n static isValidDateCompare(compareToDate: string, dateFormat: string, compareType: CompareType, options?: DateCompareOptions):\n ValidatorFn {\n const validator: ValidatorFn = (control: AbstractControl): Validators => {\n const value = removeCharacteresSpecials(control.value);\n dateFormat = removeCharacteresSpecials(dateFormat);\n if (value && dateFormat && value.length === dateFormat.length && !control.value.includes('_')) {\n const referenceDate = moment(value, dateFormat);\n const compareTo = moment(compareToDate, dateFormat);\n return this.dateCompare(referenceDate, compareTo, compareType, options);\n }\n return null;\n };\n return validator;\n }\n\n /**\n * Retorna o formato da data de acordo com o local\n * @param calendar Informações de calendário\n * @param removeDayPart Remove os dias do formato da data (Opcional)\n * @returns Exemplo de retornos 'DDMMYYYY', 'MMYYYY', ou seja, retorna o formato somente com letras\n */\n static getDateFormatFromLocale(calendar: CalendarLocaleOptions, removeDayPart?: boolean): string {\n const dateFormat = calendar && calendar.dateFormat;\n if (dateFormat) {\n let result = dateFormat.replace(/[y]/g, \"YY\").replace(/[^a-zA-Z]/g, \"\").toUpperCase();\n if (removeDayPart) {\n result = result.replace(\"DD\", \"\");\n }\n return result;\n }\n return null;\n }\n\n /**\n * Retorna o formato da data/hora de acordo com o local\n * @param calendar Informações de calendário\n * @returns Exemplo de retornos 'DD/MM/YYYY HH:mm:ss'\n */\n static getDateTimeFormatFromLocale(calendar: CalendarLocaleOptions): string {\n if (calendar) {\n let dateFormat = calendar.dateFormat.toString();\n dateFormat = dateFormat.replace(/[y]/g, \"YY\").toUpperCase();\n dateFormat = dateFormat + \" HH:mm:ss\";\n\n return dateFormat;\n }\n return null;\n }\n\n /**\n * Retorna o formato da data de acordo com o local\n * @param calendar Informações de calendário\n * @returns Exemplo de retornos 'DD/MM/YYYY'\n */\n static getDateFormatFromCalendar(calendar: CalendarLocaleOptions): string {\n if (calendar && calendar.dateFormat) {\n let dateFormat = calendar.dateFormat.toString();\n dateFormat = dateFormat.replace(/[y]/g, \"YY\").toUpperCase();\n\n return dateFormat;\n }\n return null;\n }\n\n /**\n * Método auxiliar que realiza a comparação entre as datas e retorna um objeto caso a validação seja válida\n * @param referenceDate Data de referência para a comparação\n * @param compareToDate Data a ser comparada.\n * @param compareType Tipo de comparação.\n * @param options Opções para a comparação\n * @returns Objeto no formato { nomeChave: true } indicando que a data não é válida\n */\n private static dateCompare(referenceDate: any, compareToDate: any, compareType: CompareType, options?: DateCompareOptions):\n ValidationErrors {\n const compareTypeName: string = compareType === CompareType.isNotSame ? CompareType.isSame : compareType;\n const granularity = options && options.granularity ? options.granularity : \"day\";\n\n let comparison = referenceDate[compareTypeName](compareToDate, granularity);\n comparison = compareType === CompareType.isNotSame ? !comparison : comparison;\n if (comparison) {\n const keyName = options && options.compareName ? options.compareName : compareType;\n const result = {};\n result[keyName] = true;\n return result;\n }\n return null;\n }\n\n /**\n * Retorna uma mascara com as barras Ex: âDD/MM/YYYYâ\n * @param calendar\n */\n static getFormatDateWithBar(calendar: CalendarLocaleOptions): string {\n if (calendar && calendar.dateFormat) {\n let dateFormat = calendar.dateFormat.toString();\n dateFormat = dateFormat\n .replace(\"dd\", \"DD\")\n .replace(\"mm\", \"MM\")\n .replace(\"yy\", \"YYYY\");\n return dateFormat;\n }\n return null;\n }\n\n}\n","/**\n * WorkflowIntegrator\n * @version 1.0\n * @releaseDate 2020-05-27\n * @author Kallico Fróis <kallico.silva@senior.com.br>\n * @thanks Adriner Andrade <adriner.andrade@senior.com.br>\n *\n * @description Módulo desenvolvido para facilitar a integração entre a API do\n * Senior Workflow e Formulários WEB. A ferramenta foi desenvolvida para\n * interferir o mÃnimo possÃvel no formulário, desacoplando seus métodos,\n * tratando as lógicas dentro da ferramenta, minimizando os impactos no\n * componente na qual é implementada.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\ndeclare const workflowCockpit: any;\n\nexport interface TaskData {\n processName: string;\n taskName: string;\n}\n\nexport interface NextAction {\n connectsWithAutomaticGateway: boolean; // Se a ação está associada a algum elemento de decisão automática.\n finish: boolean; // Se a ação finaliza a execução do processo.\n name: string; // Nome da ação a ser realizada.\n}\n\n@Injectable()\nexport class WorkflowIntegrator {\n private workflowCockpit: any;\n private _isRequestNew: boolean;\n private _nextAction: NextAction;\n private _nextActionName: string;\n private _taskData: TaskData;\n private _isFinishing: any;\n private _processVariables: object = {};\n private _workflowPayload: object = {};\n\n private onLoadActions: object;\n private onSubmitActions: object;\n private onRollbackActions: object;\n public processInstanceId: BehaviorSubject<number> = new BehaviorSubject(null);\n\n /**\n * ### WorkflowIntegrator - Integrador de componentes ao Senior Workflow.\n *\n * @Description\n * Instancia a classe do integrador com Senior Workflow.\n * Ao instanciar a classe automaticamente as Actions são resetadas.\n *\n * @Actions\n * As Actions são ações a serem executadas durante o ciclo de vida do Workflow\n * Estas podem ser definidas usando os métodos:\n * `addOnLoadAction()`, `addOnSubmitAction()`, `addOnRollbackAction()`.\n *\n *\n */\n constructor() {\n this.resetActions();\n }\n\n /**\n * Instancia o workflowCockpit (API de integração)\n *\n * @description\n * Ao executar este método, as `onLoadAtions` serão executadas!\n * Se houverem ações para executar logo após o carregamento do formulário no\n * Senior Workflow as **ações devem ser adicionadas anteriormente** à \n * chamada dessa função, através do método `addOnLoadAction()`.\n *\n */\n public init(): void {\n this.workflowCockpit = workflowCockpit({\n init: async (data: any, info: any): Promise<any> => {\n this._isRequestNew = info && info.isRequestNew();\n this._taskData = info && (await info.getTaskData());\n\n if (!this._isRequestNew) {\n const processVariablesFromWorkflow = await info.getInfoFromProcessVariables();\n\n this.addProcessVariable(\n \"processVariablesFromWorkflow\",\n processVariablesFromWorkflow\n );\n }\n\n this.processInstanceId.next(data.processInstanceId);\n\n return await this._onLoadWorkflow(data, info);\n },\n onSubmit: async (data: any, info: any): Promise<object> => {\n this._nextAction = data && (await data.nextAction);\n this._isFinishing = this._nextAction.finish;\n this._nextActionName = this._nextAction.name;\n\n\n await this._onSubmitWorkflow(data, info);\n\n return this._workflowPayload;\n },\n onError: async (data: any, info: any): Promise<any> => {\n await this._onRollbackWorkflow(data, info);\n },\n });\n }\n\n /** # Workflow LOAD Section # **/\n\n /**\n * Método chamado no carregamento do formulário no Senior Workflow.\n *\n ** @important\n * Deve finalizar chamando o método `_runActions(this.onSbumitActions)`.\n */\n private async _onLoadWorkflow(data: any, info: any): Promise<any> {\n return await this._runActions(this.onLoadActions);\n }\n\n /** # Workflow SUBMIT Section # **/\n\n /**\n * Método chamado ao clicar no botão `Enviar` do Senior Workflow.\n *\n * @important\n * Deve iniciar chamando o método `_runActions(this.onSbumitActions)`.\n */\n private async _onSubmitWorkflow(data: any, info: any): Promise<any> {\n return await this._runActions(this.onSubmitActions);\n }\n\n /** # Workflow ROLLBACK Section # **/\n\n /**\n * Método chamado ao ocorrer um erro no processamento do formulário por\n * parte do Senior Workflow\n *\n * * @important\n * Deve iniciar chamando o método `_runActions(this.onRollbackActions)`.\n */\n private async _onRollbackWorkflow(data: any, info: any): Promise<any> {\n return await this._runActions(this.onRollbackActions);\n }\n\n /** # ACTIONS Section # **/\n\n /**\n * Reseta os objetos com as Ações a serem efetuadas no ciclo de vida do\n * Senior Workflow.\n */\n public resetActions(): void {\n this.onLoadActions = {};\n this.onSubmitActions = {};\n this.onRollbackActions = {};\n }\n\n /**\n * Executa as ações do objeto passado nos argumentos\n *\n * @param actionsToRun Objeto onde que deve conter uma chave\n * identificadora e um valor com um *método* ou *promise* a ser executada/\n * resolvida\n */\n private async _runActions(actionsToRun: object): Promise<any> {\n const result: object = {};\n\n await Promise.all(\n Object.entries(actionsToRun).map(async ([key, value]) => {\n try {\n result[key] = await value();\n return;\n } catch (err) {\n throw Error(err);\n }\n })\n );\n\n return result;\n }\n\n /** # Actions SETTERs # */\n\n /**\n * Adiciona um ação à pilha para execução no momento do carregamento do\n * formulário no Senior Workflow;\n *\n * @important\n * As Ações de carregamento **devem ser adicionadas antes da chamada do\n * método** `init()`!\n *\n * @param id Nome identificador para a callback a ser executada;\n * @param callback Função a ser executada;\n */\n public addOnLoadAction(id: string, callback: any) {\n this.onLoadActions[id] = callback;\n }\n\n /**\n * Adiciona um ação à pilha para execução no momento do envio do formulário\n * para o Senior Workflow\n *\n * @param id Nome identificador para a callback a ser executada;\n * @param callback Função a ser executada;\n */\n public addOnSubmitAction(id: string, callback: any) {\n this.onSubmitActions[id] = callback;\n }\n\n /**\n * Adiciona um ação à pilha para execução em caso de haver um erro no\n * processamento do formulário por parte do Senior Workflow.\n *\n * @param id Nome identificador para a callback a ser executada;\n * @param callback Função a ser executada;\n */\n public addOnRollbackAction(id: string, callback: any) {\n this.onRollbackActions[id] = callback;\n }\n\n /**\n * Adiciona um objeto à s Variáveis do Processo (`_processVariables`)\n *\n * @param id Nome identificador do objeto a ser adicionado\n * @param processVariable Objeto a ser adicionado as variáveis do processo\n */\n public addProcessVariable(id: string, processVariable: any): void {\n try {\n this._processVariables[id] = processVariable;\n } catch (err) {\n const error = {\n erro: err,\n message: `Não foi possÃvel adicionar a variável ${id} à s variáveis do processo.`,\n };\n throw error;\n }\n }\n\n /**\n * Define o objecto payload que será enviado ao Senior Worfkflow quando o usuário\n * clicar no botão enviar.\n *\n * @param payload Objeto a ser enviado para o Workflow\n */\n public setWorkflowPayload(payload: object): void {\n\n this._workflowPayload = payload;\n\n return;\n }\n\n /** # Actions GETTERs # */\n\n public get loadActions(): object {\n return this.onLoadActions;\n }\n\n public get submitActions(): object {\n return this.onSubmitActions;\n }\n\n public get rollbackActions(): object {\n return this.onRollbackActions;\n }\n\n /** # GETTERs # **/\n\n public get isRequestNew(): boolean {\n return this._isRequestNew;\n }\n\n public get isFinishing(): boolean {\n return this._isFinishing;\n }\n\n public get nextActionName(): string {\n return this._nextActionName;\n }\n\n public get taskData(): TaskData {\n return this._taskData;\n }\n\n public get processVariables(): any {\n const p = new Promise((resolve, reject) => {\n if (this._processVariables) {\n resolve(this._processVariables);\n } else {\n reject(\"Não foram encontradas variáveis para o processo\");\n }\n });\n\n p.then((data: any) => {\n this._processVariables = data;\n }).catch((err: any) => {\n throw err;\n });\n\n return this._processVariables;\n }\n}\n","import { OnDestroy } from \"@angular/core\";\nimport { Component, OnInit } from \"@angular/core\";\nimport { Router, ActivatedRoute } from \"@angular/router\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { WorkflowDataService } from \"../../services/workflow-data.service\";\n\n\n@Component({\n selector: \"lib-employee-selector\",\n templateUrl: \"./employee-selector.component.html\",\n styleUrls: [\"./employee-selector.component.scss\"],\n})\nexport class EmployeeSelectorComponent implements OnInit, OnDestroy {\n public results: any[];\n public employeeSelected: any;\n private _useWorkflow: boolean;\n\n private ngUnsubscribe = new Subject();\n private _routeEndpoint: string;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private workflowDataService: WorkflowDataService\n ) {}\n\n public ngOnInit(): void {\n this.registerSubscribers();\n }\n\n public registerSubscribers(): void {\n this.activatedRoute.data.pipe(takeUntil(this.ngUnsubscribe)).subscribe((data) => {\n this.useWorkflow = !!(data && data.useWorkflow);\n this.routeEndpoint = data && data.routeEndpoint;\n\n if (this.useWorkflow) {\n this.workflowDataService.setUseWorkflow(this.useWorkflow);\n }\n });\n }\n\n public onSelectEmployee(): void {\n const { tableId } = this.employeeSelected;\n\n if (tableId) {\n this.navigate(tableId);\n }\n }\n\n private navigate(employeeId: string): void {\n this.router.navigate([`workflow/${employeeId}/${this._routeEndpoint}`]);\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next(true);\n this.ngUnsubscribe.complete();\n }\n\n public set useWorkflow(v: boolean) {\n this._useWorkflow = v;\n }\n\n public get useWorkflow(): boolean {\n return this._useWorkflow;\n }\n\n public set routeEndpoint(routeEndpoint: string) {\n this._routeEndpoint = routeEndpoint;\n }\n\n public get routeEndpoint(): string {\n return this._routeEndpoint;\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { PanelModule } from \"primeng/panel\";\nimport { InputRestAutoCompleteEmployeeModelModule } from \"../input-rest-auto-complete-employee-model/index\";\nimport { SharedModule } from \"../shared/shared.module\";\n\nimport { EmployeeSelectorComponent } from \"./employee-selector.component\";\n\nexport { WorkflowDataService } from \"../../services/workflow-data.service\";\n\n@NgModule({\n imports: [SharedModule, PanelModule, InputRestAutoCompleteEmployeeModelModule],\n declarations: [EmployeeSelectorComponent],\n exports: [EmployeeSelectorComponent],\n})\nexport class EmployeeSelectorModule {}\n","import { Component, Input } from \"@angular/core\";\nimport { DivergenceArray } from \"../../services/form-comparator.service\";\n\n@Component({\n selector: \"from-to\",\n templateUrl: \"./from-to.component.html\",\n})\nexport class FromToComponent {\n @Input()\n divergentFormData: DivergenceArray[];\n\n constructor() {}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FromToComponent } from \"./from-to.component\";\nimport { PanelModule } from \"primeng/panel\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { InputTextModule } from \"primeng/inputtext\";\n\n@NgModule({\n imports: [CommonModule, PanelModule, TranslateModule, ReactiveFormsModule, InputTextModule],\n declarations: [FromToComponent],\n exports: [FromToComponent],\n})\nexport class FromToModule {}\n","export class FormatUtilsService {\n\n /**\n * Retorna o CPF formatado\n * @param cpf CPF\n */\n static getFormattedCpf(cpf: string): string {\n if (cpf) {\n return cpf\n .replace(/\\D/g, \"\")\n .replace(/(\\d{3})(\\d)/, \"$1.$2\")\n .replace(/(\\d{3})(\\d)/, \"$1.$2\")\n .replace(/(\\d{3})(\\d)/, \"$1-$2\");\n }\n return null;\n }\n\n /**\n * Retorna o CNPJ formatado\n * @param cnpj CNPJ\n */\n static getFormattedCnpj(cnpj: string): string {\n if (cnpj) {\n return cnpj\n .replace(/\\D/g, \"\")\n .replace(/(\\d{2})(\\d)/, \"$1.$2\")\n .replace(/(\\d{3})(\\d)/, \"$1.$2\")\n .replace(/(\\d{3})(\\d)/, \"$1/$2\")\n .replace(/(\\d{4})(\\d)/, \"$1-$2\");\n }\n return null;\n }\n\n /**\n * Retorna a mascara do CPF/CNPJ\n * @param key Valores possÃveis são CPF ou CNPJ\n */\n static getCpfCnpjMask(key: string) {\n switch (key) {\n case \"CPF\":\n return \"999.999.999-99\";\n case \"CNPJ\":\n return \"99.999.999/9999-99\";\n default:\n return \"\";\n }\n }\n\n /**\n * Metódo para formatar o número de telefone.\n * @param telephoneNumber String contendo o número de telefone.\n * @returns String formatada com o número de telefone.\n */\n static getFormattedTelephoneNumber(telephoneNumber: string): string {\n let tel = telephoneNumber.replace(/\\D/g, '');\n tel = tel.replace(/^0/, '');\n if (tel.length > 10) {\n // ########## -> (##) #####-####\n tel = tel.replace(/^(\\d{2})?(\\d{5})?(\\d{4}).*/, '($1) $2-$3');\n } else if (tel.length > 9) {\n // AA######### -> (AA) ####-####\n tel = tel.replace(/^(\\d{2})?(\\d{4})?(\\d{4}).*/, '($1) $2-$3');\n } else if (tel.length > 5) {\n // ####### -> (##) ####-#\n tel = tel.replace(/^(\\d{2})?(\\d{4})?(\\d{0,4}).*/, '($1) $2-$3');\n } else if (tel.length > 1) {\n // #### -> (##) ##\n tel = tel.replace(/^(\\d{2})?(\\d{0,5}).*/, '($1) $2');\n } else {\n if (tel !== '') { tel = tel.replace(/^(\\d*)/, '($1'); }\n }\n\n return tel;\n }\n\n /**\n * Metódo para formatar o número de telefone de um campo Input.\n * @param event Evento do Input do campo de telefone.\n */\n static formatTelephoneInputEvent(event: any) {\n let telephoneNumber = event.target.value;\n\n // Permite Backspace para usuário remover \")\" e \"-\"\n if (event.keyCode === 8 && (telephoneNumber.length === 9 || telephoneNumber.length === 4 || telephoneNumber.length === 3)) {\n return;\n }\n\n event.target.value = FormatUtilsService.getFormattedTelephoneNumber(telephoneNumber);\n }\n\n /**\n * Metódo para formatar a porcentagem para 2 casas decimais.\n * @param value Número a ser formatado.\n */\n static getFormattedPercentage(value: string): string {\n return parseFloat(value).toFixed(2).replace('.', ',') + '%';\n }\n}\n","import {\n Component,\n OnInit,\n ViewChild,\n Input,\n ChangeDetectorRef,\n AfterViewInit,\n OnDestroy,\n EventEmitter,\n Output,\n OnChanges,\n SimpleChanges,\n} from \"@angular/core\";\nimport { FormGroup, FormBuilder } from \"@angular/forms\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { CustomFieldsComponent, NumberLocaleOptions } from \"@seniorsistemas/angular-components\";\nimport { compareValues, isValid, mountCustomToSave } from \"../utils/helpers\";\nimport { DirectionEnumeration } from \"../../core/enums\";\nimport { Subject } from \"rxjs\";\nimport { FormatUtilsService } from \"../utils/format-utils/format-utils.service\";\nimport { MessageService } from \"primeng/api\";\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: \"c-historical-pix-account\",\n templateUrl: \"./historical-pix-account.component.html\",\n styleUrls: [\"./historical-pix-account.component.scss\"],\n})\nexport class HistoricalPixAccountComponent implements OnInit, OnDestroy, AfterViewInit, OnChanges {\n @ViewChild(CustomFieldsComponent, { static: false })\n public customFields: CustomFieldsComponent;\n @Input()\n public formGroup: FormGroup;\n @Input()\n public fieldFormGroup: string;\n @Input()\n public _dateChange: string;\n @Input()\n public _displayDateChange: string;\n @Input()\n public recordByRow: number = 1;\n @Input()\n public showDateChange: boolean = false;\n @Input()\n public msgTooltipAdd: string;\n @Input()\n public isEditMode: boolean = false;\n @Input()\n public isViewMode: boolean = false;\n @Input()\n public currency: NumberLocaleOptions;\n @Input()\n public customEntity: string;\n @Input()\n public customService: string;\n @Input()\n public withSideBar: boolean = true;\n @Input()\n public paramsForm: FormGroup;\n @Input()\n public defaultCpfNumber: string = null;\n @Input()\n public permission: object;\n @Input()\n public listDataReciever: any[] = [];\n\n @Output()\n public isViewModeActive: EventEmitter<any> = new EventEmitter<boolean>();\n @Output()\n public isEditModeActive: EventEmitter<any> = new EventEmitter<boolean>();\n @Output()\n public isDeleteModeActive: EventEmitter<any> = new EventEmitter<boolean>();\n\n private listFromApp: any[] = [];\n private visibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n private ngUnsubscribe = new Subject();\n private historicalPixAccountList: FormGroup;\n private orderBy: { field: string; direction: DirectionEnumeration } = {\n field: \"dateChange\",\n direction: DirectionEnumeration.DESC,\n };\n\n private _visible: boolean;\n public enableAction: boolean = true;\n public pixAccountItemInput: object = {};\n public totalRecords: number = 0;\n public actionLabel: string = this.translateService.instant(\"hcm.payroll.entries_query_actions_total_title\");\n public loading = true;\n public parameters: any;\n public msgTotalLimitByPercentage: string;\n public listData: object[] = [];\n public listDataNoPage: object[] = [];\n public cols = [\n {\n label: this.translateService.instant(\"hcm.payroll.employees_addition_pix_key_type\"),\n field: \"pixKeyType\",\n },\n {\n label: this.translateService.instant(\"hcm.payroll.employees_addition_pix_key\"),\n field: \"pixKey\",\n },\n {\n label: this.translateService.instant(\"hcm.payroll.historical_pix_account_label_percentage\"),\n field: \"percentage\",\n },\n ];\n actions = (rowData: any = {}, key: any) => {\n return [\n {\n visible: this.isEditMode,\n label: this.translateService.instant(\"hcm.payroll.employees_image_cropper_view\"),\n command: () => {\n if (this.isAllowToViewHistorical) {\n rowData[\"index\"] = key;\n this.pixAccountItemInput = { currentItem: rowData, listData: this.listDataNoPage, isEditMode: false };\n this.visible = true;\n } else {\n this.isViewModeActive.emit(true);\n }\n },\n },\n {\n visible: !!(!this.isEditMode && this.withSideBar),\n label: this.translateService.instant(\"hcm.payroll.edit\"),\n command: () => {\n if (this.isAllowToEditHistorical) {\n rowData[\"index\"] = key;\n this.pixAccountItemInput = { currentItem: rowData, listData: this.listDataNoPage, isEditMode: true };\n this.visible = true;\n } else {\n this.isEditModeActive.emit(true);\n if (this.listFromApp.length == 0) {\n rowData[\"index\"] = key;\n this.pixAccountItemInput = { currentItem: rowData, listData: this.listDataNoPage, isEditMode: true };\n this.visible = true;\n }\n }\n },\n },\n {\n visible: !this.isEditMode,\n label: this.translateService.instant(\"hcm.payroll.delete\"),\n command: () => {\n if (this.isAllowToDeleteHistorical) {\n this.loading = true;\n this.deleteAnnuityItem(key);\n } else {\n this.isDeleteModeActive.emit(true);\n if (this.listFromApp.length == 0) {\n this.loading = true;\n this.deleteAnnuityItem(key);\n }\n }\n },\n },\n ];\n }\n\n constructor(\n private translateService: TranslateService,\n private cd: ChangeDetectorRef,\n private formBuilder: FormBuilder,\n private messageService: MessageService,\n ) {\n this.createFormGroup();\n }\n\n ngOnInit() {\n this.formGroup.setControl(this.fieldFormGroup, this.historicalPixAccountList);\n if(!this.isViewMode) {\n this.enableAction =false;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['listDataReciever'] && changes['listDataReciever'].currentValue) {\n this.listFromApp = changes['listDataReciever'].currentValue;\n }\n }\n\n private createFormGroup(): void {\n this.historicalPixAccountList = this.formBuilder.group({\n historicalPixAccountList: this.formBuilder.control(null),\n });\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n }\n\n public onLazyLoad(event?: any): void {\n const first = event && event.first ? event.first : 0;\n const rows = event && event.rows ? event.rows : this.recordByRow;\n const arrList = this.getHistoricalPixAccountList();\n this.listData = [];\n this.totalRecords = null;\n\n if (event && event.multiSortMeta && event.multiSortMeta.length) {\n event.multiSortMeta.map((value: any) => {\n this.orderBy.field = value.field;\n this.orderBy.direction = value.order === 1 ? DirectionEnumeration.ASC : DirectionEnumeration.DESC;\n });\n }\n\n if (arrList && arrList.length) {\n this.totalRecords = arrList.length;\n this.listData = arrList;\n this.listDataNoPage = [...arrList];\n this.listData.sort(compareValues(this.orderBy.field, this.orderBy.direction));\n this.listData = this.listData.slice(first, (first + rows));\n } else {\n this.listDataNoPage = [];\n }\n\n if (this.isEditMode || arrList && arrList.length === 1) {\n this.refreshCssInIE11();\n }\n\n this.loading = false;\n\n }\n\n /**\n * Um Bug de CSS que acontece nas linhas da tabela, que resolve só atualizando qualquer parte do CSS da pagina.\n */\n private refreshCssInIE11() {\n if (/msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent)) {\n setTimeout( () => {\n const row = document.getElementsByClassName(\"row0\");\n if (row && row[0])\n row[0].className = 'refresh';\n }, 1);\n }\n }\n\n public add(): void {\n this.pixAccountItemInput = {};\n this.visible = true;\n }\n\n private isNotAllowMessage() {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n });\n }\n\n private deleteAnnuityItem(index: number): void {\n let newlist = [...this.getHistoricalPixAccountList()];\n newlist.sort(compareValues(this.orderBy.field, this.orderBy.direction));\n delete newlist[index];\n newlist = newlist.filter(val => val);\n this.historicalPixAccountList.get(\"historicalPixAccountList\").setValue(newlist);\n this.verifyTotalPercentage();\n this.onLazyLoad();\n }\n\n public getHistoricalPixAccountList(): object[] {\n if (this.historicalPixAccountList.get(\"historicalPixAccountList\") &&\n this.historicalPixAccountList.get(\"historicalPixAccountList\").value &&\n this.historicalPixAccountList.get(\"historicalPixAccountList\").value.length)\n return this.historicalPixAccountList.get(\"historicalPixAccountList\") && this.historicalPixAccountList.get(\"historicalPixAccountList\").value;\n else\n return [];\n }\n\n public addItemInList($event: any): void {\n const index = $event && $event.index >= 0 ? $event.index : null;\n const newDataList = this.getHistoricalPixAccountList() ? this.getHistoricalPixAccountList() : [];\n\n if (index != null) {\n newDataList[index] = $event;\n delete $event.index;\n } else {\n if (isValid($event[\"customFields\"]) && Object.keys($event[\"customFields\"]).length) {\n const customValue = mountCustomToSave($event[\"customFields\"]);\n $event[\"customFields\"] = [...customValue];\n }\n $event[\"dateChange\"] = this.dateChange;\n newDataList.push($event);\n }\n\n\n\n this.historicalPixAccountList.get(\"historicalPixAccountList\").setValue(newDataList);\n this.verifyTotalPercentage();\n this.onLazyLoad({ first: this.getNumberPageByIndex(index, newDataList) });\n }\n\n private getNumberPageByIndex(index: number, list: object[]): number {\n if (index) {\n const total = list.length;\n const sub = this.recordByRow - 1;\n return Math.ceil(total / this.recordByRow) * this.recordByRow - sub - 1;\n }\n return null;\n }\n\n private verifyTotalPercentage(): void {\n const list = this.getHistoricalPixAccountList() ? this.getHistoricalPixAccountList() : [];\n const arrayPercentage: any = [];\n\n if (!list.length) return this.msgTotalLimitByPercentage = null;\n\n list.filter((item: any) => arrayPercentage.push(item && item[\"percentage\"]));\n\n const sumPercentage = arrayPercentage.reduce((total: number, percentage: number) => {\n return total + percentage;\n }, 0);\n\n if (sumPercentage === 100) {\n this.msgTotalLimitByPercentage = this.translateService.instant(\"hcm.payroll.historical_pix_account_msg_limit_total_by_percentage\");\n } else {\n this.msgTotalLimitByPercentage = null;\n }\n\n }\n\n public get scopedActions() {\n return this.actions.bind(this);\n }\n\n public get recordsMessage() {\n return `${ this.totalRecords || 0 } ${ this.totalRecords === 1 ? this.translateService.instant(\"hcm.payroll.admission_register\") : this.translateService.instant(\"hcm.payroll.admission_registers\") }`;\n }\n\n public get getTooltipAndDisableButtonAdd() {\n return this.dateChange ? null : this.msgTooltipAdd;\n }\n\n @Input()\n public get dateChange(): string {\n return this._dateChange;\n }\n\n public set dateChange(value: string) {\n this._dateChange = value;\n if (this._dateChange) {\n this.listData.filter((row: any) => row[\"dateChange\"] = this._dateChange);\n }\n }\n\n @Input()\n public get displayDateChange(): string {\n return this._displayDateChange;\n }\n\n public set displayDateChange(value: string) {\n this._displayDateChange = value;\n if (this._displayDateChange) {\n this.listData.filter((row: any) => row[\"displayDateChange\"] = this._displayDateChange);\n }\n }\n\n @Input()\n public set addListData(list: object[]) {\n this.loading = true;\n this.historicalPixAccountList.get(\"historicalPixAccountList\").patchValue(list);\n this.verifyTotalPercentage();\n this.onLazyLoad();\n }\n\n @Input()\n public get visible(): boolean {\n return this._visible;\n }\n\n public set visible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(this.visible);\n }\n public close(): void {\n this.visible = false;\n }\n\n public getFormattedTelephoneNumber(telephoneNumber: string): string {\n return FormatUtilsService.getFormattedTelephoneNumber(telephoneNumber);\n }\n\n public getFormattedCpf(cpf: string): string {\n return FormatUtilsService.getFormattedCpf(cpf);\n }\n\n public getFormattedCnpj(cnpj: string): string {\n return FormatUtilsService.getFormattedCnpj(cnpj);\n }\n\n public getFormattedPercentage(value: string): string {\n return FormatUtilsService.getFormattedPercentage(value);\n }\n\n private get isAllowToAddHistorical() {\n return (\n this.permission[\"incluir\"]\n );\n }\n\n private get isAllowToDeleteHistorical() {\n return (\n this.permission[\"excluir\"]\n );\n }\n\n private get isAllowToEditHistorical() {\n return (\n this.permission[\"editar\"]\n );\n }\n\n private get isAllowToViewHistorical() {\n return (\n this.permission[\"visualizar\"]\n );\n }\n}\n","import { Validators, AbstractControl } from \"@angular/forms\";\n\nexport class GenericValidator {\n constructor() { }\n\n /**\n * Valida o CEI (Cadastro especÃfico de INSS) digitado.\n */\n static isValidCei(control: AbstractControl): Validators {\n const cei = control.value;\n\n if (!cei) return null;\n else if (cei.length != 11) return null;\n\n const multiplicadorBase = \"3298765432\";\n let total = 0;\n let resto = 0;\n let multiplicando = 0;\n let multiplicador = 0;\n\n if (\n cei.length !== 11 ||\n cei === \"00000000000\" ||\n cei === \"11111111111\" ||\n cei === \"22222222222\" ||\n cei === \"33333333333\" ||\n cei === \"44444444444\" ||\n cei === \"55555555555\" ||\n cei === \"66666666666\" ||\n cei === \"77777777777\" ||\n cei === \"88888888888\" ||\n cei === \"99999999999\"\n )\n return { invalidCei: true };\n else {\n for (let i = 0; i < 10; i++) {\n multiplicando = parseInt(cei.substring(i, i + 1), 10);\n multiplicador = parseInt(multiplicadorBase.substring(i, i + 1), 10);\n total += multiplicando * multiplicador;\n }\n\n resto = 11 - (total % 11);\n resto = resto === 10 || resto === 11 ? 0 : resto;\n\n const digito = parseInt(\"\" + cei.charAt(10), 10);\n return resto === digito ? null : { invalidCei: true };\n }\n }\n\n /**\n * Valida se o CPF é valido. Deve-se ser informado o cpf sem máscara.\n */\n static isValidCpf(control: AbstractControl): Validators {\n const cpf = control.value;\n if (cpf) {\n let numbers, digits, sum, i, result, equalDigits;\n equalDigits = 1;\n if (cpf.length < 11) {\n return null;\n }\n\n for (i = 0; i < cpf.length - 1; i++) {\n if (cpf.charAt(i) !== cpf.charAt(i + 1)) {\n equalDigits = 0;\n break;\n }\n }\n if (!equalDigits) {\n numbers = cpf.substring(0, 9);\n digits = cpf.substring(9);\n sum = 0;\n for (i = 10; i > 1; i--) {\n sum += numbers.charAt(10 - i) * i;\n }\n result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n if (result !== Number(digits.charAt(0))) {\n return { cpfNotValid: true };\n }\n numbers = cpf.substring(0, 10);\n sum = 0;\n for (i = 11; i > 1; i--) {\n sum += numbers.charAt(11 - i) * i;\n }\n result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n if (result !== Number(digits.charAt(1))) {\n return { cpfNotValid: true };\n }\n return null;\n } else {\n return { cpfNotValid: true };\n }\n }\n return null;\n }\n\n /**\n * Valida se o CNPJ é valido. Deve-se ser informado o cpf sem máscara.\n */\n static isValidCnpj(control: AbstractControl): Validators {\n let cnpj = control.value;\n\n if (cnpj) {\n let size, numbers, digits, sum, pos, result;\n cnpj = cnpj.replace(/[^\\d]+/g, '');\n\n if (cnpj.length !== 14) {\n return null;\n }\n\n // Elimina CNPJs invalidos conhecidos\n if (\n cnpj === '00000000000000' ||\n cnpj === '11111111111111' ||\n cnpj === '22222222222222' ||\n cnpj === '33333333333333' ||\n cnpj === '44444444444444' ||\n cnpj === '55555555555555' ||\n cnpj === '66666666666666' ||\n cnpj === '77777777777777' ||\n cnpj === '88888888888888' ||\n cnpj === '99999999999999'\n ) {\n return { cnpjNotValid: true };\n }\n\n // Valida DVs\n size = cnpj.length - 2;\n numbers = cnpj.substring(0, size);\n digits = cnpj.substring(size);\n sum = 0;\n pos = size - 7;\n for (let i = size; i >= 1; i--) {\n sum += numbers.charAt(size - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n if (result !== Number(digits.charAt(0))) {\n return { cnpjNotValid: true };\n }\n\n size = size + 1;\n numbers = cnpj.substring(0, size);\n sum = 0;\n pos = size - 7;\n for (let i = size; i >= 1; i--) {\n sum += numbers.charAt(size - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n if (result !== Number(digits.charAt(1))) {\n return { cnpjNotValid: true };\n }\n\n return null;\n }\n return null;\n }\n\n /**\n * Válida o número de telefone da chave PIX.\n */\n static isValidPhoneNumber(control: AbstractControl): Validators {\n let cellPhoneKey = control.value || '';\n cellPhoneKey = cellPhoneKey.replace(/[\\s()-]/g, '');\n const regexNumberTelephone = /^[1-9][\\d]{1,2}\\d{8,10}$/;\n\n const isValidNumberTelephone = regexNumberTelephone.test(cellPhoneKey);\n\n return isValidNumberTelephone ? null : { invalidPhoneNumber: true };\n }\n\n /**\n * Valida o email da chave PIX.\n */\n static isValidEmail(control: AbstractControl): Validators {\n const emailKey = control.value;\n const regexValidEmail = /^[\\w-\\.]+@[\\w-]+(\\.[\\w-]{2,4}){1,2}$/;\n\n const isValidEmail = regexValidEmail.test(emailKey);\n\n return isValidEmail ? null : { invalidEmail: true };\n }\n}\n","import {\n Component,\n OnInit,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n OnDestroy,\n AfterViewInit,\n ViewChild,\n} from \"@angular/core\";\nimport { FormGroup, FormBuilder, Validators, ValidatorFn, AbstractControl } from \"@angular/forms\";\nimport { NumberLocaleOptions, CustomFieldsComponent } from \"@seniorsistemas/angular-components\";\nimport { Subject } from \"rxjs\";\nimport {\n verifyValidationsForm,\n configEnabledFields,\n mountCustomToShow,\n} from \"../../utils/helpers\";\nimport { GenericValidator } from \"../../utils/generic-validators\";\nimport { FormatUtilsService } from \"../../utils/format-utils/format-utils.service\";\n\n@Component({\n selector: \"pix-account\",\n templateUrl: \"./historical-pix-account-form.component.html\",\n styleUrls: [\"../historical-pix-account.component.scss\"]\n})\nexport class HistoricalPixAccountFormComponent implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild(CustomFieldsComponent, { static: true })\n customFields: CustomFieldsComponent;\n\n @Input()\n public currency: NumberLocaleOptions;\n @Input()\n public customEntity: string;\n @Input()\n public customService: string;\n @Input()\n public withSideBar: boolean = true;\n @Input()\n public isEditMode: boolean = false;\n @Input()\n public paramsForm: FormGroup = new FormGroup({});\n @Input()\n public defaultCpfNumber: string = null;\n\n @Output()\n public visibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output()\n public pixAccountItemToList: EventEmitter<any> = new EventEmitter<any>();\n\n private _visible: boolean;\n private ngUnsubscribe = new Subject();\n private employeeId: string;\n private pixAccountList: object[];\n private initialValidatorOfPercentage: ValidatorFn[] = [Validators.required, Validators.min(0.01)];\n\n\n public labelBtnAdd: string = \"hcm.payroll.employees_add\";\n public pixAccountFormGroup: FormGroup;\n public maxValuePercentage: number = 100.00;\n public visibleBtnSave: boolean = true;\n public isView: boolean = false;\n public pixKeyType: string;\n public isShowPixKeyFieldValidatorMessage = false;\n\n constructor(\n private formBuilder: FormBuilder,\n private cd: ChangeDetectorRef,\n ) {\n this.createFormGroup();\n this.registerSubjects();\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next(true);\n this.ngUnsubscribe.unsubscribe();\n }\n\n private registerSubjects(): void {\n }\n\n private createFormGroup(): void {\n this.pixAccountFormGroup = this.formBuilder.group({\n id: this.formBuilder.control(null),\n index: this.formBuilder.control(null),\n employee: this.formBuilder.control({ value: { tableId: null }, disabled: true }),\n dateChange: this.formBuilder.control(null),\n pixKeyType: this.formBuilder.control(null, Validators.required),\n pixKey: this.formBuilder.control(null),\n percentage: this.formBuilder.control(null, Validators.compose([\n ...this.initialValidatorOfPercentage,\n Validators.max(this.maxValuePercentage),\n ])),\n externalId: this.formBuilder.control(null),\n customFields: this.formBuilder.control(null),\n });\n }\n\n public onChangePixKeyType(item: any) {\n if (item.key) {\n this.pixKeyType = item.key;\n this.isShowPixKeyFieldValidatorMessage = true;\n this.pixAccountFormGroup.get(\"pixKey\").reset();\n this.setPixKeyValidators(true);\n\n if(item.key === \"CPF\") {\n this.setDefaultCpfPixKey();\n }\n }\n }\n\n public onClearPixKeyType() {\n this.isShowPixKeyFieldValidatorMessage = false;\n this.pixAccountFormGroup.get(\"pixKey\").reset();\n }\n\n @Input()\n public get visible(): boolean {\n return this._visible;\n }\n\n public set visible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(this.visible);\n }\n\n @Input()\n public set isEditAndViewValue(value: any) {\n this.resetForm();\n this.visibleBtnSave = true;\n if (value && value.currentItem && Object.keys(value.currentItem).length) {\n this.pixAccountFormGroup.patchValue(this.convertDTOToShowWithCustomFields({...value.currentItem}));\n this.labelBtnAdd = \"hcm.payroll.employees_update\";\n this.setValidatorsAccordingList(value.listData, value.currentItem[\"index\"], value && value[\"isEditMode\"]);\n if (!this.isView) {\n this.configEnableFields(value && value[\"isEditMode\"]);\n } else {\n if(this.pixAccountFormGroup.get(\"pixKeyType\").value) {\n this.pixKeyType = this.pixAccountFormGroup.get(\"pixKeyType\").value.key;\n\n this.formatPixKeyTelephoneNumber();\n }\n }\n } else {\n this.labelBtnAdd = \"hcm.payroll.employees_add\";\n }\n\n }\n\n private formatPixKeyTelephoneNumber() {\n if (this.pixKeyType === \"TELEPHONE\") {\n this.pixAccountFormGroup.get(\"pixKey\").setValue(FormatUtilsService.getFormattedTelephoneNumber(this.pixAccountFormGroup.get(\"pixKey\").value));\n }\n }\n\n public convertDTOToShowWithCustomFields(data: object): object {\n const obj: any = {... data};\n obj[\"customFields\"] = mountCustomToShow(obj[\"customFields\"]);\n return obj;\n }\n\n private configEnableFields(isEditMode: boolean) {\n this.visibleBtnSave = isEditMode;\n\n if(this.pixAccountFormGroup.get(\"pixKeyType\").value) {\n this.pixKeyType = this.pixAccountFormGroup.get(\"pixKeyType\").value.key;\n this.setPixKeyValidators(isEditMode);\n\n this.formatPixKeyTelephoneNumber();\n }\n\n configEnabledFields(this.pixAccountFormGroup, isEditMode, [\n \"pixKeyType\",\n \"pixKey\",\n \"percentage\",\n \"customFields\",\n ], []);\n }\n\n public close(): void {\n this.resetForm();\n this.visible = false;\n }\n\n public addItem(): void {\n this.pixAccountFormGroup.updateValueAndValidity();\n verifyValidationsForm.call(this.pixAccountFormGroup);\n\n if (this.pixAccountFormGroup.valid) {\n if (this.employeeId) {\n this.pixAccountFormGroup.get(\"employee\").setValue({\n tableId: this.employeeId,\n name: \"\",\n });\n }\n this.pixAccountItemToList.emit(this.pixAccountFormGroup.getRawValue());\n this.visible = false;\n this.resetForm();\n }\n }\n\n public resetForm(): void {\n this.pixAccountFormGroup.reset();\n this.labelBtnAdd = \"hcm.payroll.employees_add\";\n if (this.customFields && this.customFields.formGroup) this.customFields.formGroup.reset();\n }\n\n public get percentagePlaceholder(): string {\n return `0${ this.currency && this.currency.decimalSeparator }00`;\n }\n\n public get optionsPercentage(): object {\n return { ...this.getOptions(), precision: 2 };\n }\n\n private getOptions(): any {\n return {\n prefix: \"\",\n thousands: this.currency.thousandsSeparator,\n decimal: this.currency.decimalSeparator,\n };\n }\n\n /**\n * O Input que recebe a lista do component pai e chama o método de validação passando a lista recebida.\n * @param pixAccountList\n */\n @Input()\n public set getListPixAccount(pixAccountList: object[]) {\n if (pixAccountList) {\n this.setValidatorsAccordingList(pixAccountList, null, false);\n } else {\n this.resetForm();\n }\n }\n\n /**\n * Recebe a lista de registros já inseridos na tabela adiciona em uma variável os valores que serão usados para\n * a validação dos campos \"percentage\" e \"pixAccount\".\n * Quando tem index significa que está em uma edição, os valores na posição do registro da edição (index) não serão adicionados\n * no array de comparação dos validators.\n * @param pixAccountList\n * @param index\n */\n private setValidatorsAccordingList(pixAccountList: object[], index: number = null, isEditMode: boolean = true) {\n this.pixAccountList = pixAccountList && pixAccountList.length ? [...pixAccountList] : [];\n\n const percentageIncluded: any = [];\n\n if (this.pixAccountList && this.pixAccountList.length) {\n this.pixAccountList.filter((field: any, key) => {\n if (field[\"percentage\"] && key != index) {\n percentageIncluded.push(field[\"percentage\"]);\n }\n });\n\n }\n this.beforeSetPixKeyTypeValidator();\n this.setPixKeyValidators(isEditMode);\n this.validatePercentageValid(percentageIncluded);\n }\n\n /**\n * Antes de setar o validator prepara as variáveis necessária para que seja feita a validação do campo.\n */\n public setPixKeyValidators(isEditMode: boolean) {\n const genericPixKey = this.pixAccountFormGroup.get(\"pixKey\");\n if (this.pixKeyType) {\n switch (this.pixKeyType) {\n case \"TELEPHONE\":\n genericPixKey.setValidators(Validators.compose([\n Validators.required, GenericValidator.isValidPhoneNumber,\n ]));\n break;\n case \"EMAIL\":\n genericPixKey.setValidators(Validators.compose([\n Validators.required, GenericValidator.isValidEmail,\n ]));\n break;\n case \"CPF\":\n genericPixKey.setValidators(Validators.compose([\n Validators.required, GenericValidator.isValidCpf,\n ]));\n break;\n case \"CNPJ\":\n genericPixKey.setValidators(Validators.compose([\n Validators.required, GenericValidator.isValidCnpj,\n ]));\n break;\n case \"RANDOM_KEY\":\n genericPixKey.setValidators(Validators.required);\n break;\n default:\n genericPixKey.setValidators(null);\n break;\n }\n\n if(isEditMode) {\n genericPixKey.enable();\n }\n\n genericPixKey.updateValueAndValidity();\n }\n\n }\n\n /**\n * Este método calcula as parcentagens que já foram inseridas, e seta a diferença para chegar em\n * 100% na validação do campo \"percentage\" como um novo maxValue;\n * @param listValue\n */\n private validatePercentageValid(listValue: number[]) {\n const percentage = this.pixAccountFormGroup.get(\"percentage\");\n this.maxValuePercentage = listValue\n .reduce((currentValue, total) => currentValue - total,\n 100.00,\n );\n\n percentage\n .setValidators(Validators.compose([\n ...this.initialValidatorOfPercentage,\n Validators.max(this.maxValuePercentage),\n ]));\n percentage.updateValueAndValidity();\n }\n\n @Input()\n public set isViewMode(condition: boolean) {\n this.isView = !!(condition && !this.withSideBar);\n this.configEnableFields(!this.isView);\n if (!this.isView) this.resetForm();\n }\n\n public phoneMask(event: any) {\n FormatUtilsService.formatTelephoneInputEvent(event);\n }\n\n setDefaultCpfPixKey() {\n if(this.defaultCpfNumber) {\n this.pixAccountFormGroup.get(\"pixKey\").setValue(this.defaultCpfNumber);\n }\n else {\n const sheetDocument = this.paramsForm.get(\"sheetDocument\");\n if(sheetDocument) {\n const cpf = sheetDocument.get(\"cpfNumber\").value;\n if(cpf) {\n this.pixAccountFormGroup.get(\"pixKey\").setValue(cpf);\n }\n }\n }\n }\n\n public beforeSetPixKeyTypeValidator() {\n const pixKeyType = this.pixAccountFormGroup.get(\"pixKeyType\");\n\n if (this.pixAccountList && this.pixAccountList.length && pixKeyType) {\n pixKeyType\n .setValidators(Validators.compose([\n Validators.required,\n this.validateDuplicatePixKeyTypeBankAccount(this.pixAccountList),\n ]));\n\n } else {\n pixKeyType.setValidators(Validators.required);\n }\n }\n\n private validateDuplicatePixKeyTypeBankAccount(listCompare: object[]) {\n return (control: AbstractControl): Validators => {\n const value = control && control.value;\n let condition = false;\n listCompare.filter((field: any) => {\n if(value) {\n if (field[\"pixKeyType\"].key === 'BANK_ACCOUNT' && value.key === field[\"pixKeyType\"].key) {\n return condition = true;\n }\n }\n });\n\n if (condition) {\n return { pixKeyTypeBankAccountDuplicate: true };\n } else {\n return null;\n }\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\nimport { ServiceType } from '../../core/enums/serviceType';\n\n@Injectable()\nexport class HistoricalPixAccountService {\n constructor(private http: HttpClientService) {}\n\n query(path: string, body: object, service: ServiceType = ServiceType.PAYROLL): Observable<any> {\n return this.http.query(path, body, service);\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport {\n ButtonModule,\n LoadingStateModule,\n SidebarModule, ControlErrorsModule, CustomFieldsModule,\n} from \"@seniorsistemas/angular-components\";\nimport { CurrencyMaskModule } from \"ng2-currency-mask\";\nimport { ConfirmationService } from \"primeng/api\";\nimport { AutoCompleteModule } from \"primeng/autocomplete\";\nimport { FieldsetModule } from \"primeng/fieldset\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { PanelModule } from \"primeng/panel\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { CoreDirectives } from \"../directives/index\";\nimport { HistoricalPixAccountFormComponent } from \"./historical-pix-account-form/historical-pix-account-form.component\";\nimport { InputDateModule } from \"../input-date/index\";\nimport { InputRestAutoCompleteModule } from \"../input-rest-auto-complete/index\";\nimport { InputRestAutoCompleteEnumModule } from \"../input-rest-auto-complete-enum/index\";\n\nimport { SharedModule } from \"../shared/shared.module\";\nimport { HistoricalPixAccountComponent } from \"./historical-pix-account.component\";\nimport { HistoricalPixAccountService } from \"./historical-pix-account.service\";\nimport { InputMaskModule } from \"primeng/inputmask\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule,\n TableModule,\n ButtonModule,\n TooltipModule,\n LoadingStateModule,\n SidebarModule,\n InputDateModule,\n ControlErrorsModule,\n InputRestAutoCompleteEnumModule,\n CurrencyMaskModule,\n InputRestAutoCompleteModule,\n InputTextModule,\n CoreDirectives,\n FieldsetModule,\n CustomFieldsModule,\n PanelModule,\n InputMaskModule,\n ],\n declarations: [HistoricalPixAccountComponent, HistoricalPixAccountFormComponent],\n providers: [HistoricalPixAccountService, ConfirmationService],\n exports: [HistoricalPixAccountComponent],\n})\nexport class HistoricalPixAccountModule {\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { ServiceType } from '../../core/enums/serviceType';\n\nimport { HttpClientService } from \"../shared/http-client.service\";\n\n@Injectable()\nexport class HistoricalPixAccountListService {\n constructor(private http: HttpClientService, private httpClient: HttpClient) {\n }\n\n public remove(id: any, dateWhen: string, service: ServiceType = ServiceType.PAYROLL, dependentId?: string) {\n if (service === ServiceType.DEPENDENT) {\n return this.httpClient\n .post(\"hcm/dependent/queries/historicalDependentJudicialPensionPixDelete\", {\n dependentId: dependentId,\n dateWhen: dateWhen,\n });\n } else {\n return this.http.post(\"actions/historicalEmployeePixDelete\", {\n employeeId: id,\n dateWhen: dateWhen\n });\n }\n }\n\n}\n","import {\n Component,\n OnInit,\n ViewChild,\n ChangeDetectorRef,\n AfterViewInit,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n} from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { CustomFieldsComponent } from \"@seniorsistemas/angular-components\";\nimport * as moment_ from \"moment\";\nimport { ConfirmationService, MessageService } from \"primeng/api\";\nimport { ServiceType } from '../../core/enums/serviceType';\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { HistoricalPixAccountListService } from \"./historical-pix-account-list.service\";\n\nconst moment = moment_;\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: \"c-historical-pix-account-list\",\n templateUrl: \"./historical-pix-account-list.component.html\",\n styleUrls: [\"./historical-pix-account-list.component.scss\"],\n})\nexport class HistoricalPixAccountListComponent implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild(CustomFieldsComponent, { static: false })\n public customFields: CustomFieldsComponent;\n\n @Input()\n public permission: object;\n @Input()\n public employeeId: string;\n @Input()\n public dependentId: string;\n @Input()\n public dateFormat: string;\n @Input()\n public endPoint: string = \"hcm/payroll/queries/historicalEmployeePixQuery\";\n @Input()\n public keyPayload: string = \"historicalEmployeePix\";\n @Input()\n public withSidebar: boolean = true;\n\n @Output()\n public isOnlyView: EventEmitter<any> = new EventEmitter<boolean>();\n @Output()\n public isOnlyEdit: EventEmitter<any> = new EventEmitter<boolean>();\n @Output()\n public enableView: EventEmitter<any> = new EventEmitter<any>();\n\n private lastRecord: any;\n private ngUnsubscribe = new Subject();\n public initParameters: any;\n public loading: boolean = true;\n public parameters: any;\n\n public columns = [\n {\n label: this.translateService.instant(\n \"hcm.payroll.historical_pix_account_label_date_change\",\n ),\n field: \"dateChange\",\n },\n {\n label: this.translateService.instant(\n \"hcm.payroll.employees_movimentation_historical_pix_account_label_qtd_account\",\n ),\n field: \"numberOfPixAccount\",\n },\n ];\n\n constructor(\n private confirmationService: ConfirmationService,\n private translateService: TranslateService,\n private activatedRoute: ActivatedRoute,\n private cd: ChangeDetectorRef,\n private router: Router,\n private messageService: MessageService,\n private historicalPixAccountListService: HistoricalPixAccountListService,\n ) {\n }\n\n ngOnInit() {\n this.initParameters = { employeeId: this.employeeId, dependentId: this.dependentId };\n }\n\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n }\n\n public onLazyLoad(payload: any) {\n payload.forEach((value: any) => {\n value.dateChange = moment(value.dateChange).format(this.dateFormat);\n });\n\n this.onGridLoad(payload);\n\n this.loading = false;\n }\n\n public getMenuActions(rowData: any) {\n return [\n {\n label: this.translateService.instant(\"hcm.payroll.employees_image_cropper_view\"),\n command: () => {\n if(this.isAllowToViewHistorical) {\n const dateChange = rowData && rowData.dateChange && moment(rowData.dateChange, this.dateFormat).format(\"YYYY-MM-DD\");\n if (this.withSidebar) {\n this.isOnlyView.emit(true);\n this.router.navigate([`historical-pix-account/${ dateChange }`], {\n relativeTo: this.activatedRoute,\n });\n } else {\n\n this.enableView.emit(dateChange);\n }\n } else {\n this.isNotAllowMessage();\n }\n },\n }, \n {\n label: this.translateService.instant(\"hcm.payroll.edit\"),\n command: () => {\n if(this.isAllowToEditHistorical) {\n const dateChange = rowData && rowData.dateChange && moment(rowData.dateChange, this.dateFormat).format(\"YYYY-MM-DD\");\n if (this.withSidebar) {\n this.isOnlyView.emit(false);\n this.isOnlyEdit.emit(true);\n this.router.navigate([`historical-pix-account/${ dateChange }`], {\n relativeTo: this.activatedRoute,\n });\n } else {\n this.enableView.emit(dateChange);\n }\n } else {\n this.isNotAllowMessage();\n }\n },\n },\n {\n label: this.translateService.instant(\"hcm.payroll.delete\"),\n command: () => {\n if (this.isAllowToDeleteHistorical && rowData) {\n this.delete(rowData.id, rowData.dateChange);\n } else {\n this.isNotAllowMessage();\n }\n },\n }\n ];\n }\n\n public delete(id: any, dateChange: string) {\n if (id === this.lastRecord.id) {\n const dateChangeToDto = moment(dateChange, this.dateFormat).format(\"YYYY-MM-DD\");\n this.confirmationService.confirm({\n message: `${ this.translateService.instant(\n \"hcm.payroll.employees_movimentation_historical_pix_account_question_confirm_delete\",\n ) }?`,\n accept: () => {\n this.loading = true;\n const service = this.withSidebar ? ServiceType.PAYROLL : ServiceType.DEPENDENT;\n this.historicalPixAccountListService\n .remove(this.employeeId, dateChangeToDto, service, this.dependentId)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n () => {\n this.messageService.add({\n severity: \"success\",\n summary: this.translateService.instant(\"hcm.payroll.success\"),\n detail: this.translateService.instant(\"hcm.payroll.employees_movimentation_historical_pix_account_remove\"),\n });\n this.parameters = (this.parameters && { ...this.parameters }) || {};\n },\n () => {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.employees_movimentation_historical_pix_account_error_remove\"),\n });\n this.loading = false;\n },\n );\n },\n });\n } else {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.not_allowed_delete_last\"),\n });\n }\n }\n\n public add() {\n if (this.isAllowToAddHistorical) {\n this.router.navigate([\"historical-pix-account-new\"], {\n relativeTo: this.activatedRoute,\n });\n } else {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n });\n }\n }\n\n private isNotAllowMessage() {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n });\n }\n\n private onGridLoad(payload: any) {\n if (payload && payload.length) {\n this.lastRecord = payload[0];\n }\n }\n\n private get isAllowToAddHistorical() {\n return (\n this.permission[\"incluir\"]\n );\n }\n\n private get isAllowToDeleteHistorical() {\n return (\n this.permission[\"excluir\"]\n );\n }\n\n private get isAllowToViewHistorical() {\n return (\n this.permission[\"visualizar\"]\n );\n }\n\n private get isAllowToEditHistorical() {\n return (\n this.permission[\"editar\"]\n );\n }\n\n public get scopedActions() {\n return this.getMenuActions.bind(this);\n }\n\n @Input()\n public set reloadList(condition: boolean) {\n if (condition) {\n this.loading = true;\n this.parameters = (this.parameters && { ...this.parameters }) || {};\n }\n }\n\n}\n","import { CommonModule } from \"@angular/common\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { ButtonModule, LoadingStateModule } from \"@seniorsistemas/angular-components\";\nimport { AutoCompleteModule } from \"primeng/autocomplete\";\nimport { ConfirmDialogModule } from \"primeng/confirmdialog\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { DataListRestModule } from \"../data-list-rest/index\";\n\nimport { SharedModule } from \"../shared/shared.module\";\nimport { HistoricalPixAccountListComponent } from \"./historical-pix-account-list.component\";\nimport { HistoricalPixAccountListService } from \"./historical-pix-account-list.service\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule,\n TableModule,\n ButtonModule,\n TooltipModule,\n LoadingStateModule,\n DataListRestModule,\n ConfirmDialogModule,\n ],\n declarations: [HistoricalPixAccountListComponent],\n providers: [HistoricalPixAccountListService],\n exports: [HistoricalPixAccountListComponent],\n})\nexport class HistoricalPixAccountListModule {\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","ng://@senior-gestao-pessoas/payroll-core/components/utils/cpf-validator.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/usingType.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/companyIndicationType.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/direction.enumeration.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/moduleType.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/operators.enumeration.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/comparetype.enumeration.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/serviceType.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/httpRequestType.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/report-format.enumeration.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/parameter-type.enumeration.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/menu-type.enumeration.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/report-stage.enumeration.ts","ng://@senior-gestao-pessoas/payroll-core/components/utils/cnpj-validator.ts","ng://@senior-gestao-pessoas/payroll-core/components/vanilla/string-methods.ts","ng://@senior-gestao-pessoas/payroll-core/components/block-ui/block-ui.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/block-ui/block-ui.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/breadcrumb/breadcrumb.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/shared/shared.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/breadcrumb/breadcrumb.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/control-messages-error/control-messages-error.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/control-messages-error/control-messages-error.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/custom-fields/custom-fields.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-date/input-date.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-date/input-date.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/custom-fields/custom-fields.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/directives/name-not-spaces.directive.ts","ng://@senior-gestao-pessoas/payroll-core/components/directives/only-number.directive.ts","ng://@senior-gestao-pessoas/payroll-core/components/directives/directives.module.ts","ng://@senior-gestao-pessoas/payroll-core/core/enums/coreFieldType.ts","ng://@senior-gestao-pessoas/payroll-core/components/data-list-rest/data-list-rest.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/data-list-rest/data-list-rest.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/data-list-rest/data-list-rest.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/employee-summary/employee-summary.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/employee-summary/employee-summary.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/employee-summary/employee-summary.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/admission-draft-summary/admission-draft-summary.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/admission-draft-summary/admission-draft-summary.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/admission-draft-summary/admission-draft-summary.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/error-page/error-page.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/error-page/error-page.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/field-validator/field-validator.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/field-validator/field-validator.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/toast/toast.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/shared/http-client.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/file-upload/file-upload.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/file-upload/file-upload.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/file-upload/file-upload.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/image-cropper/image-crop.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/image-cropper/image-crop.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/image-cropper/image-crop.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-date-model/input-date-model.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-date-model/input-date-model.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/utils/helpers.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete/input-rest-auto-complete.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete/input-rest-auto-complete.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete/input-rest-auto-complete.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-employee/input-rest-auto-complete-employee.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-employee-model/input-rest-auto-complete-employee-model.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-enum/input-rest-auto-complete-enum.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-model/input-rest-auto-complete-model.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-model/input-rest-auto-complete-model.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-model/input-rest-auto-complete-model.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-model-enum/input-rest-auto-complete-model-enum.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/input-rest-auto-complete-jobposition/input-rest-auto-complete-jobposition.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/list-rest/list-rest.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/list-rest/list-rest.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/list-rest/list-rest.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/spinner/spinner-loader.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/spinner/spinner-loader.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/type-admission/type-admission.services.ts","ng://@senior-gestao-pessoas/payroll-core/components/type-admission/type-admission.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/utils/validations.ts","ng://@senior-gestao-pessoas/payroll-core/services/company-indications.service.ts","ng://@senior-gestao-pessoas/payroll-core/services/integration.service.ts","ng://@senior-gestao-pessoas/payroll-core/services/lookup-parameters.service.ts","ng://@senior-gestao-pessoas/payroll-core/services/autocomplete-parameters.service.ts","ng://@senior-gestao-pessoas/payroll-core/services/report.service.ts","ng://@senior-gestao-pessoas/payroll-core/services/workflow-data.service.ts","ng://@senior-gestao-pessoas/payroll-core/services/form-comparator.service.ts","ng://@senior-gestao-pessoas/payroll-core/services/services.module.ts","ng://@senior-gestao-pessoas/payroll-core/services/permissions.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/toast/toast.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/toast/toast.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/data-list/data-list.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/data-list/data-list.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/data-list/data-list.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/lookup/lookup.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/lookup/lookup.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/lookup/lookup.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/workstationgroup-lookup/autocomplete.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/workstationgroup-lookup/lookup.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/workstationgroup-lookup/workstationgroup-lookup.dto.ts","ng://@senior-gestao-pessoas/payroll-core/components/workstationgroup-lookup/workstationgroup-lookup.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/workstationgroup-lookup/workstationgroup-lookup.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-bank-account/historical-bank-account.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-bank-account/historical-bank-account-form/historical-bank-account-form.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-bank-account/historical-bank-account.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-bank-account/historical-bank-account.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-bank-account-list/historical-bank-account-list.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-bank-account-list/historical-bank-account-list.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-bank-account-list/historical-bank-account-list.module.ts","ng://@senior-gestao-pessoas/payroll-core/core/entities/entity-odata-parameter.ts","ng://@senior-gestao-pessoas/payroll-core/components/utils/date-validator/date-validators.ts","ng://@senior-gestao-pessoas/payroll-core/services/workflow-integrator.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/employee-selector/employee-selector.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/employee-selector/employee-selector.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/from-to/from-to.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/from-to/from-to.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/utils/format-utils/format-utils.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-pix-account/historical-pix-account.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/utils/generic-validators.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-pix-account/historical-pix-account.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-pix-account/historical-pix-account.module.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-pix-account-list/historical-pix-account-list.service.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-pix-account-list/historical-pix-account-list.component.ts","ng://@senior-gestao-pessoas/payroll-core/components/historical-pix-account-list/historical-pix-account-list.module.ts"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__values","o","m","__read","ar","error","__spread","concat","UsingType","CompanyIndicationType","DirectionEnumeration","ModuleType","Operators","CompareType","ServiceType","HttpRequestType","ReportFormat","ParameterType","MenuType","ReportStage","CPFValidator","calcChecker1","firstNineDigits","sum","j","toString","charAt","lastSumChecker1","calcChecker2","cpfWithChecker1","k","lastSumChecker2","checkCPF","cleanCPF","replace","substring","checker","Array","join","checker1","checker2","cpfValidator","CNPJValidator","checkCNPJ","cnpj","size","numbers","digits","pos","Number","cnpjValidator","StringMethods","addStringFormat","String","format","formatted","regexp","RegExp","stringMethods","BlockUiComponent","tslib_1.__decorate","Input","Component","selector","template","BlockUiModule","NgModule","imports","FormsModule","BlockUIModule","ProgressSpinnerModule","declarations","exports","BreadcrumbComponent","activatedRoute","router","translate","items","ngOnInit","_this","events","pipe","filter","event","NavigationEnd","subscribe","root","getBreadcrumbs","route","breadcrumbs","children","generateBreadcrumb","index","title","forEach","child","snapshot","data","map","val","breadcrumb","instant","name","queryParams","routerLink","getFormattedUrl","url","disabled","routerLinkActiveOptions","exact","keys","params","param","includes","parent","ActivatedRoute","Router","TranslateService","SharedModule","CommonModule","TranslateModule","BreadcrumbSDSModule","BreadcrumbModule","ControlMessagesErrorComponent","propertyName","control","errors","touched","dirty","errorList","ControlMessagesErrorModule","ReactiveFormsModule","CustomFieldsComponent","optionsBoolean","moment","_moment","InputDateComponent","localeService","unmask","onBlurGetMoment","EventEmitter","ngUnsubscribe","Subject","mask","get","takeUntil","loc","formatMask","setFormat","form","newDate","momentDate","setValue","_date","ngOnDestroy","complete","locale","dateMask","calendar","dateFormat","withoutDay","toUpperCase","onBlur","dateComponent","emit","dateComponet","_inputDateElement","LocaleService","ViewChild","static","Output","InputDateModule","InputMaskModule","CustomFieldsModule","InputTextModule","DropdownModule","providers","NameNotSpacesDirective","elementRef","el","nativeElement","cleanVar","clean","trim","ElementRef","HostListener","Directive","OnlyNumberDirective","onKeyDown","indexOf","keyCode","ctrlKey","metaKey","shiftKey","preventDefault","CoreDirectives","schemas","CoreFieldType","DataListRestService","http","getList","endpoint","post","HttpClient","Injectable","DataListRestComponent","dataListService","rows","paginator","first","alwaysShowPaginator","sortMode","responsive","scrollable","lazyLoad","loadingChange","listDataChange","selectedDataChange","headerCheckboxToggle","lazy","getlistData","getActions","actions","pagination","Math","floor","onLazyLoad","loading","multiSortMeta","orderBy","field","direction","order","ASC","DESC","onFilter","totalRecords","singularMessageRecords","pluralMessageRecords","offset","page","current","initParameters","_searchParameters","listData","keyPayload","countResult","onHeaderCheckboxToggle","getFieldValue","rowData","col","split","searchParameters","dataListTable","_loading","_listData","_selectedData","encapsulation","ViewEncapsulation","None","DataListRestModule","ButtonModule","LoadingStateModule","TableModule","TooltipModule","EmployeeSummaryService","employeeBasicInformations","findEmployee","path","employeeId","findEmployeeAutoComplete","terms","valueSearch","blobServiceRequestAccess","setEmployeeBasicInformations","getEmployeeBasicInformations","asObservable","moment_","EmployeeSummaryComponent","employeeService","timetrackingLabel","hireLabel","registerNumberLabel","ageLabel","loadingLabel","loadingDescription","isLoading","emploayeeData","jobPosition","getInformation","finalize","payload","timeTrackingResumeType","location","city","stateAbbreviation","hireDate","idPicture","request","fileId","ttl","thumbnail","imageData","photoSource","locationURI","EmployeeSummaryModule","ObjectCardModule","AdmissionDraftSummaryService","admissionDraftBasicInformations","findAdmissionDraft","draftId","id","setAdmissionDraftBasicInformations","draftBasicInformations","AdmissionDraftSummaryComponent","admissionDraftSummaryService","translateService","badgeText","documentNumberLabel","draftData","hiringDate","documentNumber","companyName","localeOfCompany","originDraftType","originType","attachment","AdmissionDraftSummaryModule","ErrorPageComponent","ErrorPageModule","FieldValidatorComponent","errorMessage","ngOnChanges","changes","inputErrors","currentValue","errorDefs","some","FieldValidatorModule","ToastService","messagesSubjectError","messagesSubjectSuccess","messagesSubjectWarning","showError","message","breakLine","showSuccess","showWarning","loadErrorMessages","loadSuccessMessages","loadWarningMessages","HttpClientService","messageService","query","service","PAYROLL","endpoit","catchError","exception","status","add","severity","summary","detail","sticky","throwError","enumQuery","server","action","recruitmentAction","getAutoComplete","entity","patch","put","delete","MessageService","FileUploadService","blobServiceRequestUpload","file","requestUpload","fileName","isImage","tll","blobServiceFileDelete","test","type","FileUploadComponent","toastService","files","onUploadFile","onRemoveFile","uploadHandler","observables","sort","countFiles","getFilesCountAndValidate","validateFileSize","saveFile","forkJoin","Observable","observable","response","doUpload","undefined","xhr","XMLHttpRequest","version","upload","addEventListener","evt","round","loaded","total","onreadystatechange","readyState","statusText","open","objectURL","setRequestHeader","send","onCancelUpload","splice","removeFile","FileUploadCoreModule","FileUploadModuleDeprecated","ImageCropService","saveImage","sourceImage","fileUpload","toPromise","_a","urltoFile","filename","mimeType","match","responseType","blob","Blob","getImage","buildUrl","resource","ImageCropComponent","imageCropService","onClickSave","defaulPerson","display","imageCrop","cropperSettings","CropperSettings","width","height","keepAspect","preserveSize","canvasWidth","canvasHeight","rounded","minWithRelativeToResolution","noFileInput","cropperDrawSettings","strokeColor","strokeWidth","personPhotoLink","onUploadHandler","$event","image","Image","myReader","FileReader","onloadend","loadEvent","src","cropper","setImage","readAsDataURL","personFirstName","showDialog","onHide","reset","fileImage_1","fetch","res","arrayBuffer","buf","File","deleteImage","ImageCropModule","DialogModule","FileUploadModule","ImageCropperModule","ThumbnailModule","ImageCropperService","InputDateModelComponent","modelChange","getFormat","model","isValid","_model","InputDateModelModule","momentImported","isObject","item","isArray","isShallow","find","isValidDate","withDays","isFullDate","totalLength","isDateField","search","invertFieldDate","inFormat","outFormat","formatIn","getFormatDate","getNowDate","getMoment","mountCustomToSave","objectFields","customFields","entries","_b","mountCustomToShow","customFieldsToShow","verifyValidationsForm","controls","markAsDirty","FormGroup","FormArray","setRequired","formGroup","required","validators","setValidators","Validators","compose","updateValueAndValidity","configEnabledFields","condition","fields","fieldsToClear","enable","disable","clearValues","setValidator","setDisableField","clearValue","compareValues","a","b","varA","varB","comparison","removeCharacteresSpecials","InputRestAutoCompleteService","InputRestAutoCompleteComponent","forceSelection","keyName","keyToExclude","usingType","minCharactersToSearch","multiple","serviceType","onSelect","onClear","suggestions","filterQuery","isNaN","isTimetrackingSituation","referenceDate","formaterResponce","isDismissalReason","GENERAL_REGISTER","searchText","isDepartmentFromCompany","companyId","isWagetype","ENTRY","getParamsRest","console","log","valsResult","valueConcat","tableId","fieldName","toLowerCase","code","fieldName_1","concatFieldsForName","slice","table","conditions","getConditionsRest","enableEntityFilters","conditiosReturn","conditionsFields","expression","selectOption","option","onClearItem","onBlurItem","isDropdown","onDropdownClick","_autoCompleteObject","InputRestAutoCompleteModule","HttpClientModule","AutoCompleteModule","InputRestAutoCompleteEmployeeService","InputRestAutoCompleteEmployeeComponent","fullname","admission","document","returnFilter","company","branch","employeeType","otherContractType","filterEmployeeType","InputRestAutoCompleteEmployeeModule","InputRestAutoCompleteEmployeeModelService","InputRestAutoCompleteEmployeeModelComponent","useWorkflow","InputRestAutoCompleteEmployeeModelModule","InputRestAutoCompleteEnumService","enumeration","names","InputRestAutoCompleteEnumComponent","keyToKeep","results","record","_autoCompleteObjectEl","InputRestAutoCompleteEnumModule","InputRestAutoCompleteModelService","InputRestAutoCompleteModelComponent","keysToExclude","onFocus","wagetypeReferenceDates","onFocusItem","InputRestAutoCompleteModelModule","InputRestAutoCompleteModelEnumService","InputRestAutoCompleteModelEnumComponent","InputRestAutoCompleteModelEnumModule","InputRestAutoCompleteJobpositionService","InputRestAutoCompleteJobpositionComponent","formaterResponse","creationDate","expirationDate","jobpositionsFilter","replaceArray","ignoredJobpositions","InputRestAutoCompleteJobpositionModule","ListRestService","queryEntity","ListRestComponent","onLoadPayload","loadedList","reload","args","isEntity","urlRest","onResponseQuery","filterValues","bind","scope","totalElements","onHandlePage","currentPage","getRowActions","getRowActionsFun","handleClickActions","button","containerViewChild","getElementsByClassName","click","ListRestModule","SplitButtonModule","SpinnerLoaderComponent","SpinnerLoaderModule","TypeAdmissionServices","contractNationality","contractType","setCompany","getCompanyId","setContractNationality","isBrazilianAdmission","abbreviation","isBrazilAndforeignContract","isForeignAdmission","isForeignAndforeignContract","isBrazilianCompany","isNationalContract","getCountryID","getCurrency","currency","getStructureID","structure","setContractType","TypeAdmissionModule","isNumber","notEmpty","numberOrZero","parseInt","CompanyIndicationsService","companyUseWorkstationGroupSubject","getCompanyIndications","companyIndicationTypes","companyIndicationType","setCompanyUseWorkstationGroup","indication","setStructure","getStructure","getCompanyUseWorkstationGroup","setUseWorkstationGroup","useIndication","useWorkstationGroup","getUseWorkstationGroup","IntegrationService","hasModule","module","LookupParametersService","_httpParams","HttpParams","lookupRequestPost","httpPostParams","concatFields","lookupDisplayField","postConfigPageSize","postDataLookup","lookupRequest","searchLookupFields","searchFields","concatOtherFields","parameters","generateLookupParameters","configHttpParamsPagination","configHttpParamsOrderBy","getDataLookup","searchRequest","generateGridParameters","filterData","getUrlDataLookup","httpParams","contents","convertGridFieldValue","generateDisplayFieldValue","postUrlDataLookup","convertLookupFieldValue","content","FieldType","Date","Enum","enumValue","options","contentValue","displayField","fieldValue","lookupParameters","lookupField","searchField","getParameterByType","parameter","set","gridParameters","attribute","Integer","Autocomplete","orderBy_1","providedIn","AutocompleteParametersService","httpClienteService","codeIsString","getParams","getAutoCompleteQuery","filterQueryString","filterSearchField","operatorsQuery","searchValue","getParameterBySearchType","getSearchFilterString","valueFilterSearch","searchFilter","tslib_1.__values","_c","_d","hasQuote","ENDPOINTS","ReportService","findReportsByName","reports","findReportByName","filtered","report","getParameters","reportId","reportFileId","getReportUri","reportTicket","reportUri","getReportStatus","reportStatus","generateReport","reportIn","getRunningReports","limit","orderByDesc","filterCancelled","WorkflowDataService","useWorkflowValueChange","_draftJSON","BehaviorSubject","setUseWorkflow","getUseWorkflow","setDraftJSON","draftJSON","getDraftJSON","FormComparatorService","resetDivergentFormData","_divergentFormData","checkFormDisagreements","ignoreId","_sanitizeEmptyStrings","_removeIdsFromFormDatas","_oldFormData","_newFormData","_throwIdenticalMessage","_createDivergencePair","_isDivergentFormDataEmpty","formData","divergence","oldValue","newValue","Error","divergentFormArray","object","ServicesModule","PermissionService","actionUrl","resourceAddress","defaultActions","_resources","_attributes","user","getAuthHeader","token","httpOptions","headers","HttpHeaders","Content-Type","Accept","Authorization","getRestUrl","restUrl","permissions","of","getPermissions","getAbac","attributes","getAbacPermission","includeFilters","permissoes","values","perm","authorized","setResources","ToastComponent","createErrorMessage","createSuccessMessage","createWarningMessage","clear","ToastModule","ToastModulePrimeng","DataListService","DataListComponent","totalRecordsChange","configParameters","configHttpParamsDisplayFields","displayFields","entityODataParameters","_totalRecords","DataListModule","LookupService","LookupComponent","lookupService","searchTotalRecordsLabel","filterLabel","clearLabel","cancelLabel","selectLabel","lookupEmptyMessage","lookupSuggestions","searchGridFields","searchGridData","searchTotalRecords","LookupModule","DynamicFormModule","AutocompleteService","LookupService$1","WorkstationgroupLookupDto","headoffice","companyBranchId","branchoffice","departmentId","department","costcenterId","costcenter","jobpositionIds","jobposition","syndicateId","syndicate","shiftId","workshiftScale","workshiftId","workshiftGroupId","intervalGroupId","is","scaleTeamId","scaleCategoryId","employmentRelationshipId","expenseNatureId","allowDeficient","disabilityIds","listExpired","manager","getToFilter","convertListIds","list","WorkstationgroupLookupComponent","cd","autocompleteParametersService","lookupParametersService","currentCompanyId","currentCompanyName","suggestionsObservable","valueEnumShift","enum","concatFieldsName","FormField","concatName","gridFields","dataKey","appendTo","fullWidth","onRemove","onSearch","getAutocomplete","companyname","headquarter","getAutocompleteQuery","now","ORGANIZATION_REGISTER","showClear","md","onChange","resetDependenciesOfShift","description","workstationFilterForm","workshift","ngAfterViewInit","detectChanges","companyForm","workstationgroupEl","isShift","isLookupOpen","getValueEvent","getHireDate","totalPages","nameQuery","nameEntity","nameFieldConcat","additionalParams","baseDate","dateIsMoment","getConcatFields","momentHireDate","ChangeDetectorRef","WorkstationgroupLookupModule","HistoricalBankAccountComponent","confirmationService","formBuilder","recordByRow","showDateWhen","isEditMode","isViewMode","withSideBar","visibleChange","bankAccountItemInput","actionLabel","listDataNoPage","cols","visible","command","currentItem","deleteAnnuityItem","createFormGroup","setControl","fieldFormGroup","historicalBankAccountList","group","arrList","getHistoricalBankAccountList","refreshCssInIE11","window","navigator","userAgent","setTimeout","row","className","newlist","verifyTotalPercentage","addItemInList","newDataList","customValue","dateWhen","getNumberPageByIndex","sub","ceil","arrayPercentage","msgTotalLimitByPercentage","sumPercentage","reduce","percentage","msgTooltipAdd","_dateWhen","_displayDateWhen","patchValue","_visible","close","ConfirmationService","FormBuilder","HistoricalBankAccountFormComponent","bankAccountItemToList","initialValidatorOfPercentage","min","initialValidatorOfBankAccount","maxLength","labelBtnAdd","maxValuePercentage","visibleBtnSave","isView","registerSubjects","validateDuplicateBankAccount","listCompare","accountTypeValue","bankValue","bankBranchValue","bankAccountDuplicate","unsubscribe","bankAccountFormGroup","employee","displayDateWhen","bank","bankBranch","accountType","bankAccount","digit","max","onSelectBank","cleanBankInformation","beforeSetBankAccountValidator","onClearBank","onClearBankBranch","onClearAccountType","resetForm","convertDTOToShowWithCustomFields","setValidatorsAccordingList","configEnableFields","obj","addItem","valid","getRawValue","getBankTableId","decimalSeparator","getOptions","precision","prefix","thousands","thousandsSeparator","decimal","bankAccountList","percentageIncluded","validatePercentageValid","listValue","HistoricalBankAccountService","HistoricalBankAccountModule","SidebarModule","ControlErrorsModule","CurrencyMaskModule","FieldsetModule","PanelModule","HistoricalBankAccountListService","httpClient","remove","dependentId","DEPENDENT","HistoricalBankAccountListComponent","historicalBankAccountListService","endPoint","withSidebar","enableView","columns","onGridLoad","getMenuActions","navigate","relativeTo","isAllowToDeleteHistorical","lastRecord","dateWhenToDto_1","confirm","accept","isAllowToAddHistorical","permission","HistoricalBankAccountListModule","ConfirmDialogModule","EntityODataParameter","entityODataParameter","operation","_field","_operation","_value","CONTAINING","dateStartG5","dateEndG5","DateValidator","useG5DateRange","dateValue","isValidRange","isBetween","invalidDate","isDateLower","compareToDate","granularity","compareName","isValidDateCompare","isBefore","compareType","compareTo","dateCompare","getDateFormatFromLocale","removeDayPart","getDateTimeFormatFromLocale","getDateFormatFromCalendar","compareTypeName","isNotSame","isSame","getFormatDateWithBar","WorkflowIntegrator","_processVariables","_workflowPayload","processInstanceId","resetActions","init","workflowCockpit","info","_isRequestNew","isRequestNew","getTaskData","_taskData","getInfoFromProcessVariables","processVariablesFromWorkflow","addProcessVariable","_onLoadWorkflow","onSubmit","nextAction","_nextAction","_isFinishing","finish","_nextActionName","_onSubmitWorkflow","onError","_onRollbackWorkflow","_runActions","onLoadActions","onSubmitActions","onRollbackActions","actionsToRun","all","_e","err_1","addOnLoadAction","callback","addOnSubmitAction","addOnRollbackAction","processVariable","err","erro","setWorkflowPayload","catch","EmployeeSelectorComponent","workflowDataService","registerSubscribers","routeEndpoint","onSelectEmployee","employeeSelected","_routeEndpoint","_useWorkflow","EmployeeSelectorModule","FromToComponent","FromToModule","FormatUtilsService","getFormattedCpf","cpf","getFormattedCnpj","getCpfCnpjMask","getFormattedTelephoneNumber","telephoneNumber","tel","formatTelephoneInputEvent","getFormattedPercentage","parseFloat","toFixed","HistoricalPixAccountComponent","showDateChange","defaultCpfNumber","listDataReciever","isViewModeActive","isEditModeActive","isDeleteModeActive","listFromApp","pixAccountItemInput","isAllowToViewHistorical","isAllowToEditHistorical","historicalPixAccountList","getHistoricalPixAccountList","isNotAllowMessage","dateChange","_dateChange","_displayDateChange","GenericValidator","isValidCei","cei","resto","invalidCei","isValidCpf","equalDigits","cpfNotValid","isValidCnpj","cnpjNotValid","isValidPhoneNumber","cellPhoneKey","invalidPhoneNumber","isValidEmail","emailKey","invalidEmail","HistoricalPixAccountFormComponent","paramsForm","pixAccountItemToList","isShowPixKeyFieldValidatorMessage","pixAccountFormGroup","pixKeyType","pixKey","externalId","onChangePixKeyType","setPixKeyValidators","setDefaultCpfPixKey","onClearPixKeyType","formatPixKeyTelephoneNumber","pixAccountList","beforeSetPixKeyTypeValidator","genericPixKey","phoneMask","sheetDocument","validateDuplicatePixKeyTypeBankAccount","pixKeyTypeBankAccountDuplicate","HistoricalPixAccountService","HistoricalPixAccountModule","HistoricalPixAccountListService","HistoricalPixAccountListComponent","historicalPixAccountListService","isOnlyView","isOnlyEdit","dateChangeToDto_1","HistoricalPixAccountListModule","sources","_i","source","shift","tableIdObject","fullName","firstName","i18n","quantidade","business","addWeekDays","objs","json","jsonReturn","qs","tokens","re","exec","decodeURIComponent","startDate","endDate","endMoment","endOf","weekDays","birthday","diff","birthdayCompare","isSameOrAfter","momentDateCompare","compare","expeditionDateCompare","dateCompareMoment","currentDateCompare","pis","numeroPIS","custom","customEntity","custonField","valOrnull","customField","removeEmpty","msg","addCuston","FormControl","formControlName","keyError","isInvalid","setErrors","currentField","custonFields","isCustons","pv","cv","chance","guid","date"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { AbstractControl, Validators } from '@angular/forms';\n\n/**\n * Created by Bruno.Curioletti on 30/05/2017.\n */\nexport class CPFValidator {\n calcChecker1(firstNineDigits) {\n let sum = null;\n\n for (let j = 0; j < 9; ++j) {\n sum += firstNineDigits.toString().charAt(j) * (10 - j);\n }\n\n const lastSumChecker1 = sum % 11;\n const checker1 = lastSumChecker1 < 2 ? 0 : 11 - lastSumChecker1;\n\n return checker1;\n }\n\n calcChecker2(cpfWithChecker1) {\n let sum = null;\n\n for (let k = 0; k < 10; ++k) {\n sum += cpfWithChecker1.toString().charAt(k) * (11 - k);\n }\n\n const lastSumChecker2 = sum % 11;\n const checker2 = lastSumChecker2 < 2 ? 0 : 11 - lastSumChecker2;\n\n return checker2;\n }\n\n checkCPF(value) {\n const cleanCPF = value.replace(/\\.|\\-|\\s/g, ''),\n firstNineDigits = cleanCPF.substring(0, 9),\n checker = cleanCPF.substring(9, 11);\n\n if (cleanCPF.length !== 11) {\n return false;\n }\n\n // Checking if all digits are equal\n for (let i = 0; i < 10; i++) {\n if ('' + firstNineDigits + checker === Array(12).join(i.toString())) {\n return false;\n }\n }\n const checker1 = this.calcChecker1(firstNineDigits);\n const checker2 = this.calcChecker2(firstNineDigits + '' + checker1);\n\n if (checker.toString() === checker1.toString() + checker2.toString()) {\n return true;\n } else {\n return false;\n }\n }\n}\n\nexport const cpfValidator = new CPFValidator();\n","export enum UsingType {\n // \"Empresas de transporte.\"\n TYPE_1 = 'TYPE_1',\n // \"Clientes de agência de emprego.\"\n TYPE_2 = 'TYPE_2',\n // \"Entidades de ensino.\"\n TYPE_3 = 'TYPE_3',\n // \"Conveniados médicos.\"\n TYPE_4 = 'TYPE_4',\n // \"Seguradoras.\"\n TYPE_6 = 'TYPE_6',\n // \"Escritórios advocacia.\"\n TYPE_7 = 'TYPE_7',\n // \"Conveniados tickets.\"\n TYPE_8 = 'TYPE_8',\n // \"Empregos anteriores.\"\n TYPE_9 = 'TYPE_9',\n // \"Cooperativa de trabalho.\"\n TYPE_10 = 'TYPE_10',\n // \"Fornecedor/Fabricante de EPI/EPC.\"\n TYPE_11 = 'TYPE_11',\n // \"Escolas de educação infantil.\"\n TYPE_12 = 'TYPE_12',\n // \"Entidade de ensino - NÃvel superior.\"\n TYPE_14 = 'TYPE_14',\n // \"Empresas de refeição.\"\n TYPE_15 = 'TYPE_15',\n // \"Entidades de ensino - NÃvel médio.\"\n TYPE_16 = 'TYPE_16',\n // \"Fornecedor para treinamento.\"\n TYPE_17 = 'TYPE_17',\n // \"Higienização ou serviços gerais.\"\n TYPE_18 = 'TYPE_18',\n // \"Agente de integração.\"\n TYPE_19 = 'TYPE_19',\n // \"Empresas de software.\"\n TYPE_20 = 'TYPE_20',\n // \"Laboratório.\"\n TYPE_21 = 'TYPE_21',\n}\n","export enum CompanyIndicationType {\n // Usa rotinas de dependente\n USE_DEPENDENTS = 'USE_DEPENDENTS',\n // Controla frequência de vacinação\n VACCINATION_FREQUENCY = 'VACCINATION_FREQUENCY',\n // Usa calculo de rateio\n APPORTIONMENT_CALCULATION = 'APPORTIONMENT_CALCULATION',\n // Assinalamento usa posto de trabalho para colaborador\n USE_WORKSTATION_GROUP_EMPLOYEE = 'USE_WORKSTATION_GROUP_EMPLOYEE',\n // Estrutura\n STRUCTURE = 'STRUCTURE',\n // Anuidade\n PAY_ANNUITY = 'PAY_ANNUITY',\n // Usa histórico de contas bancárias\n USE_HISTORICAL_BANK_ACCOUNT = 'USE_HISTORICAL_BANK_ACCOUNT'\n}\n","export enum DirectionEnumeration {\n ASC = 'ASC',\n DESC = 'DESC',\n}\n","export enum ModuleType {\n /** Painel de gestão */\n MANAGEMENT_PANEL = 'MANAGEMENT_PANEL',\n /** Gestão de desempenho*/\n PERFORMANCE_MANAGEMENT = 'PERFORMANCE_MANAGEMENT',\n /** Carreira e sucessão */\n CAREER_SUCCESSION = 'CAREER_SUCCESSION',\n /** Recrutamento */\n RECRUIT_MANAGEMENT = 'RECRUIT_MANAGEMENT',\n /** Gestão de remuneração */\n REMUNERATION_MANAGEMENT = 'REMUNERATION_MANAGEMENT',\n /** Gestão de desenvolvimento */\n DEVELOPMENT_MANAGEMENT = 'DEVELOPMENT_MANAGEMENT',\n /** Folha de pagamento */\n PAYROLL = 'PAYROLL',\n /** Aplicativo */\n APP = 'APP',\n /** Moods */\n MOODS = 'MOODS'\n}\n","export enum Operators {\n EQUAL = 'eq',\n DIFFERENT = 'ne',\n LESS_THAN = 'it',\n GREATER_THAN = 'gt',\n LESS__EQUAL_THAN = 'le',\n GREATER_EQUAL_THAN = 'ge',\n CONTAINING = 'containing',\n LOWER = 'lower',\n AND = 'and',\n OR = 'or',\n}\n","/**\n * Enum com as funções de comparação da biblioteca Moment.js\n * Não contempla a função isBetween, será necessário fazer uma validação esoecÃfica para usá-la\n */\nexport enum CompareType {\n isBefore = \"isBefore\",\n isAfter = \"isAfter\",\n isSame = \"isSame\",\n isSameOrAfter = \"isSameOrAfter\",\n isSameOrBefore = \"isSameOrBefore\",\n isNotSame = \"isNotSame\",\n}\n","export enum ServiceType {\n ENTRY = 'entry',\n GENERAL_REGISTER = 'general_register',\n ORGANIZATION_REGISTER = 'organization_register',\n PAYROLL = 'payroll',\n DEPENDENT = 'dependent',\n}\n","export enum HttpRequestType {\n POST = \"post\",\n GET = \"get\",\n}\n","export enum ReportFormat {\n PDF = \"Pdf\",\n CSV = \"Csv\",\n HTML = \"Html\",\n XLS = \"Xls\",\n XLSX = \"Xlsx\",\n XML = \"Xml\",\n ODT = \"Odt\",\n RTF = \"Rtf\"\n}\n","export enum ParameterType {\n STRING = \"String\",\n INTEGER = \"Integer\",\n DOUBLE = \"Double\",\n BOOLEAN = \"Boolean\",\n DATE = \"Date\",\n DATETIME = \"DateTime\",\n TIME = \"Time\",\n OBJECT = \"Object\"\n}\n","export enum MenuType {\n DEFAULT = \"DEFAULT\",\n ACTION = \"ACTION\"\n}\n","export enum ReportStage {\n STARTING = \"Starting\",\n COMPILING = \"Compiling\",\n FILLING = \"Filling\",\n EXPORTING = \"Exporting\",\n DONE = \"Done\",\n CANCELLED = \"Cancelled\",\n GENERATED = \"Generated\",\n ERROR = \"Error\"\n}\n","import { AbstractControl, Validators } from '@angular/forms';\n\nexport class CNPJValidator {\n\n /**\n * Valida se o CNPJ é valido. Deve-se ser informado o cnpj sem máscara.\n */\n checkCNPJ(value) {\n let cnpj = value;\n\n if (cnpj) {\n let size, numbers, digits, sum, pos, result;\n cnpj = cnpj.replace(/[^\\d]+/g, '');\n\n if (cnpj.length !== 14) {\n return true;\n }\n\n // Elimina CNPJs invalidos conhecidos\n if (\n cnpj === '00000000000000' ||\n cnpj === '11111111111111' ||\n cnpj === '22222222222222' ||\n cnpj === '33333333333333' ||\n cnpj === '44444444444444' ||\n cnpj === '55555555555555' ||\n cnpj === '66666666666666' ||\n cnpj === '77777777777777' ||\n cnpj === '88888888888888' ||\n cnpj === '99999999999999'\n ) {\n return false;\n }\n\n // Valida DVs\n size = cnpj.length - 2;\n numbers = cnpj.substring(0, size);\n digits = cnpj.substring(size);\n sum = 0;\n pos = size - 7;\n for (let i = size; i >= 1; i--) {\n sum += numbers.charAt(size - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n if (result !== Number(digits.charAt(0))) {\n return false ;\n }\n\n size = size + 1;\n numbers = cnpj.substring(0, size);\n sum = 0;\n pos = size - 7;\n for (let i = size; i >= 1; i--) {\n sum += numbers.charAt(size - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n if (result !== Number(digits.charAt(1))) {\n return false;\n }\n\n return true;\n }\n return true;\n }\n}\n\nexport const cnpjValidator = new CNPJValidator();\n","export class StringMethods {\n\n constructor() {\n this.addStringFormat();\n }\n\n addStringFormat() {\n if (!String.prototype.hasOwnProperty('format')) {\n const format = {\n format: function () {\n let formatted = this;\n for (let i = 0; i < arguments.length; i++) {\n const regexp = new RegExp('\\\\{' + i + '\\\\}', 'gi');\n formatted = formatted.replace(regexp, arguments[i]);\n }\n return formatted;\n }\n };\n Object.assign(String.prototype, format);\n }\n }\n}\n\nexport const stringMethods = new StringMethods();\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'block-ui',\n templateUrl: './block-ui.component.html',\n styleUrls: ['./block-ui.component.css'],\n})\nexport class BlockUiComponent {\n @Input()\n blocked: boolean;\n @Input()\n target: string;\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BlockUIModule } from 'primeng/blockui';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\n\nimport { BlockUiComponent } from './block-ui.component';\n\n@NgModule({\n imports: [\n FormsModule,\n BlockUIModule,\n ProgressSpinnerModule\n ],\n declarations: [\n BlockUiComponent\n ],\n exports: [\n BlockUiComponent\n ]\n})\nexport class BlockUiModule {}\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MenuItem } from 'primeng/components/common/menuitem';\nimport { filter } from 'rxjs/operators';\n\n@Component({\n selector: 'c-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n})\nexport class BreadcrumbComponent implements OnInit {\n public items: MenuItem[];\n public title: string;\n\n constructor(private activatedRoute: ActivatedRoute, private router: Router, private translate: TranslateService) {\n this.items = [];\n }\n\n ngOnInit() {\n this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(() => {\n const root: ActivatedRoute = this.activatedRoute.root;\n this.items = this.getBreadcrumbs(root, []);\n });\n }\n\n private getBreadcrumbs(route: ActivatedRoute, breadcrumbs: MenuItem[]): MenuItem[] {\n const children: ActivatedRoute[] = route.children;\n if (children.length === 0) {\n return breadcrumbs;\n }\n\n this.generateBreadcrumb(children, breadcrumbs);\n\n const index = (breadcrumbs.length && breadcrumbs.length - 1) || 0;\n this.title = breadcrumbs[index] && breadcrumbs[index].label;\n return breadcrumbs;\n }\n\n private generateBreadcrumb(children: ActivatedRoute[], breadcrumbs: MenuItem[]) {\n const ROUTE_DATA_BREADCRUMB = 'breadcrumb';\n children.forEach((child: ActivatedRoute, index: number) => {\n if (child.snapshot.data.hasOwnProperty(ROUTE_DATA_BREADCRUMB)) {\n child.snapshot.data[ROUTE_DATA_BREADCRUMB].map(val => {\n const breadcrumb: MenuItem = {\n label: this.translate.instant(val.name),\n queryParams: child.snapshot.queryParams,\n routerLink: this.getFormattedUrl(child, val.routerLink),\n url: this.getFormattedUrl(child, val.url),\n };\n\n if (val.routerLink) {\n breadcrumb.disabled = true;\n breadcrumb.routerLinkActiveOptions = { exact: true };\n }\n breadcrumbs.push(breadcrumb);\n });\n }\n\n if (child.children && child.children.length) {\n this.generateBreadcrumb(child.children, breadcrumbs);\n }\n });\n }\n\n getFormattedUrl(activatedRoute: ActivatedRoute, url: string): string {\n if (url) {\n Object.keys(activatedRoute.snapshot.params).forEach(param => {\n url = url.replace(`:${param}`, activatedRoute.snapshot.params[param]);\n });\n\n if (url.includes(':') && activatedRoute.parent) {\n return this.getFormattedUrl(activatedRoute.parent, url);\n }\n }\n return url;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n imports: [\n CommonModule,\n ],\n exports: [\n CommonModule,\n TranslateModule,\n ]\n})\nexport class SharedModule {\n constructor() {\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BreadcrumbModule } from 'primeng/breadcrumb';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { BreadcrumbComponent } from './breadcrumb.component';\n\n@NgModule({\n imports: [\n FormsModule,\n BreadcrumbModule,\n SharedModule,\n ],\n declarations: [\n BreadcrumbComponent\n ],\n exports: [\n BreadcrumbComponent\n ]\n})\nexport class BreadcrumbSDSModule {\n}\n","import { Component, Input } from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\n@Component({\n selector: 'control-messages-error',\n templateUrl: \"./control-messages-error.component.html\",\n styleUrls: [\"./control-messages-error.component.css\"],\n})\nexport class ControlMessagesErrorComponent {\n @Input()\n control: FormControl;\n @Input()\n errorList: object;\n\n constructor() {}\n\n get errorMessage() {\n for (const propertyName in this.control.errors) {\n if (this.control.errors.hasOwnProperty(propertyName) && (this.control.touched || this.control.dirty)) {\n return this.errorList[propertyName];\n }\n }\n return null;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { ControlMessagesErrorComponent } from './control-messages-error.component';\n\n@NgModule({\n imports: [CommonModule, SharedModule, ReactiveFormsModule],\n declarations: [ControlMessagesErrorComponent],\n exports: [ControlMessagesErrorComponent],\n})\nexport class ControlMessagesErrorModule {}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nexport interface IField {\n field: string;\n label: string;\n type: string;\n regex: string;\n mask: string;\n value: string;\n}\n\n@Component({\n selector: 'custom-fields',\n templateUrl: './custom-fields.component.html',\n styleUrls: ['./custom-fields.component.css'],\n})\nexport class CustomFieldsComponent implements OnInit {\n @Input()\n params?: IField;\n @Input()\n disabled?: boolean;\n @Input()\n readonly?: boolean;\n @Input()\n required?: boolean;\n @Input()\n form: FormGroup;\n\n optionsBoolean = [{ label: 'Selecione', value: '' }, { label: 'Sim', value: 'true' }, { label: 'Não', value: 'false' }];\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild, OnDestroy } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { LocaleService } from '@seniorsistemas/angular-components';\nimport * as _moment from 'moment';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nconst moment = _moment;\n\n@Component({\n selector: 'input-date-calendar',\n templateUrl: './input-date.component.html',\n})\nexport class InputDateComponent implements OnInit, OnDestroy {\n @ViewChild('inputDateElement', { static: false })\n _inputDateElement: ElementRef;\n @Input()\n form: FormGroup;\n @Input()\n name: string;\n @Input()\n disabled?: boolean;\n @Input()\n unmask = true;\n @Input()\n inputId: string;\n @Input()\n withoutDay: boolean;\n @Input()\n readonly: boolean;\n\n @Output()\n onBlurGetMoment: EventEmitter<any> = new EventEmitter();\n\n private ngUnsubscribe = new Subject();\n private _date: any;\n private locale: any;\n private format: any;\n mask = null;\n\n constructor(private localeService: LocaleService) {}\n\n ngOnInit() {\n this.localeService\n .get()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(loc => {\n this.mask = this.formatMask(loc);\n this.format = this.setFormat();\n if (this.form.get(this.name).value) {\n const newDate = this.form.get(this.name).value.toString();\n const momentDate = moment(newDate, this.format || 'YYYY-MM-DD');\n this.form.get(this.name).setValue(momentDate.format(this.format || 'L'));\n this._date = momentDate;\n }\n });\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n formatMask(loc) {\n this.locale = loc;\n let dateMask = this.locale.calendar.dateFormat.toString();\n\n if (this.withoutDay) {\n dateMask = dateMask.replace('dd/', '').replace('-dd', '');\n }\n\n dateMask = dateMask.replace(/[d]|[m]/g, '9');\n return dateMask.replace(/[y]/g, '99');\n }\n\n setFormat() {\n let dateFormat = this.locale.calendar.dateFormat.toString();\n dateFormat = dateFormat.replace(/[y]/g, 'YY');\n\n if (this.withoutDay) {\n dateFormat = dateFormat.replace('dd/', '').replace('-dd', '');\n }\n\n return dateFormat.toUpperCase();\n }\n\n get placeholder() {\n return this.mask ? this.mask.toString().replace(/[9]/g, '_') : '';\n }\n\n onBlur(event) {\n if (event && event.target && event.target.value) {\n const dateComponent = this.form.get(this.name).value;\n this._date = moment(dateComponent, this.format);\n this.onBlurGetMoment.emit(this._date);\n } else {\n this._date = {};\n this.form.get(this.name).setValue(null);\n this.onBlurGetMoment.emit(null);\n }\n }\n\n @Input()\n get model() {\n const dateComponet = this.form.get(this.name).value;\n return moment(dateComponet, this.format);\n }\n\n get inputDateElement() {\n return this._inputDateElement;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\n\nimport { InputDateComponent } from './input-date.component';\n\n@NgModule({\n imports: [InputMaskModule, FormsModule, ReactiveFormsModule, CommonModule],\n declarations: [InputDateComponent],\n exports: [InputDateComponent],\n})\nexport class InputDateModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { InputMaskModule } from 'primeng/inputmask';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { SharedModule } from 'primeng/shared';\n\nimport { InputDateModule } from '../input-date/input-date.module';\nimport { CustomFieldsComponent } from './custom-fields.component';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n SharedModule,\n InputTextModule,\n InputDateModule,\n DropdownModule,\n InputMaskModule\n ],\n declarations: [CustomFieldsComponent],\n providers: [],\n exports: [CustomFieldsComponent]\n})\nexport class CustomFieldsModule {\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[name-not-spaces]',\n})\nexport class NameNotSpacesDirective {\n private el: HTMLInputElement;\n\n constructor(private elementRef: ElementRef) {\n this.el = this.elementRef.nativeElement;\n }\n\n @HostListener('blur', ['$event.target.value'])\n onBlur(value) {\n this.cleanVar(value);\n }\n\n cleanVar(val) {\n const clean = val.trim().replace(/^\\s+|\\s+$|\\s+(?=\\s)/g, '');\n if (val !== clean) {\n this.el.value = clean;\n }\n return clean;\n }\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[only-number]',\n})\nexport class OnlyNumberDirective {\n constructor(private el: ElementRef) {}\n @HostListener('keydown', ['$event'])\n onKeyDown(event) {\n const e = <KeyboardEvent>event;\n\n if (\n [46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||\n // Allow: Ctrl+A\n (e.keyCode === 65 && (e.ctrlKey || e.metaKey)) ||\n // Allow: Ctrl+C\n (e.keyCode === 67 && (e.ctrlKey || e.metaKey)) ||\n // Allow: Ctrl+V\n (e.keyCode === 86 && (e.ctrlKey || e.metaKey)) ||\n // Allow: Ctrl+X\n (e.keyCode === 88 && (e.ctrlKey || e.metaKey)) ||\n // Allow: home, end, left, right\n (e.keyCode >= 35 && e.keyCode <= 39)\n ) {\n // let it happen, don't do anything\n return;\n }\n // Ensure that it is a number and stop the keypress\n if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {\n e.preventDefault();\n }\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { NameNotSpacesDirective } from './name-not-spaces.directive';\nimport { OnlyNumberDirective } from './only-number.directive';\n\n@NgModule({\n imports: [],\n declarations: [OnlyNumberDirective, NameNotSpacesDirective],\n exports: [OnlyNumberDirective, NameNotSpacesDirective],\n providers: [],\n schemas: [],\n})\nexport class CoreDirectives {}\n","export enum CoreFieldType {\n searchValue = 'searchValue',\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class DataListRestService {\n constructor(private http: HttpClient) {}\n\n getList(endpoint: string, body: object): Observable<any> {\n return this.http.post(`${endpoint}`, body);\n }\n}\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { Table } from 'primeng/table';\nimport { Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\nimport { DirectionEnumeration } from '../../core/enums';\nimport { DataListRestService } from './data-list-rest.service';\n\n@Component({\n selector: 'c-data-list-rest',\n templateUrl: './data-list-rest.component.html',\n styleUrls: ['./data-list-rest.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [DataListRestService],\n})\nexport class DataListRestComponent implements OnInit, OnDestroy {\n @ViewChild('dataListTable', { static: false })\n dataListTable: Table;\n\n @Input()\n id: string;\n @Input()\n dataKey: string;\n @Input()\n rows = 10;\n @Input()\n emptyMessage: string;\n @Input()\n columns: any[];\n @Input()\n paginator = true;\n @Input()\n first = 1;\n @Input()\n alwaysShowPaginator = true;\n @Input()\n actions?: Function;\n @Input()\n actionLabel: string;\n @Input()\n selectionMode: string;\n @Input()\n lazy: boolean;\n @Input()\n isMultipleSelection: boolean;\n @Input()\n isSortable: boolean;\n @Input()\n showHeaderCheckBox: boolean;\n @Input()\n sortMode = 'multiple';\n @Input()\n endpoint: string;\n @Input()\n totalRecords: number;\n @Input()\n orderBy: { field: string; direction: DirectionEnumeration }[];\n @Input()\n singularMessageRecords: string;\n @Input()\n pluralMessageRecords: string;\n @Input()\n keyPayload: string;\n @Input()\n initParameters: any;\n @Input()\n responsive = true;\n @Input()\n scrollable = false;\n\n @Output()\n lazyLoad: EventEmitter<any> = new EventEmitter();\n @Output()\n loadingChange: EventEmitter<any> = new EventEmitter();\n @Output()\n listDataChange: EventEmitter<any> = new EventEmitter();\n @Output()\n selectedDataChange: EventEmitter<any> = new EventEmitter();\n @Output()\n headerCheckboxToggle: EventEmitter<any> = new EventEmitter();\n\n private _loading: boolean;\n private _listData: any[];\n private _selectedData: any[];\n private _searchParameters: any;\n private ngUnsubscribe = new Subject();\n\n constructor(private dataListService: DataListRestService) {}\n\n ngOnInit() {\n if (!this.lazy) {\n this.getlistData();\n }\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n getActions(data: any, index: number) {\n return this.actions(data, index);\n }\n\n pagination(event) {\n if (!this.lazy) {\n this.getlistData(event.rows, Math.floor(event.first / event.rows));\n }\n }\n\n onLazyLoad(event) {\n this.loading = true;\n\n if (event.multiSortMeta && event.multiSortMeta.length) {\n this.orderBy = <{ field: string; direction: DirectionEnumeration }[]>[];\n event.multiSortMeta.map(value => {\n this.orderBy.push({ field: value.field, direction: value.order === 1 ? DirectionEnumeration.ASC : DirectionEnumeration.DESC });\n });\n }\n\n this.getlistData(event.rows, Math.floor(event.first / event.rows) + 1);\n }\n\n onFilter() {\n if (this.lazy) {\n this.loading = true;\n }\n\n this.getlistData();\n }\n\n get recordsMessage() {\n return `${this.totalRecords || 0} ${this.totalRecords === 1 ? this.singularMessageRecords : this.pluralMessageRecords}`;\n }\n\n getlistData(size = this.rows, offset = this.first): void {\n if (this.endpoint) {\n this.dataListService\n .getList(this.endpoint, {\n page: { current: offset, size: size, orderBy: this.orderBy },\n ...this.initParameters,\n ...this._searchParameters,\n })\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map((data: any) => data && data.result)\n )\n .subscribe((data: any) => {\n this.listData = data[this.keyPayload];\n this.totalRecords = data.countResult;\n if (this.lazy) {\n this.lazyLoad.emit(this.listData);\n }\n });\n } else {\n if (this.lazy) {\n this.lazyLoad.emit(this.listData);\n }\n }\n }\n\n onHeaderCheckboxToggle(event) {\n this.headerCheckboxToggle.emit(event);\n }\n\n getFieldValue(rowData, col) {\n if (col['field'] && col['field'].includes('.')) {\n const objectPath = col['field'].split('.');\n objectPath.map(value => (rowData = rowData && rowData[value]));\n return rowData;\n }\n return rowData[col['field']];\n }\n\n @Input()\n set parameters(searchParameters: any) {\n if (searchParameters) {\n this._searchParameters = { ...searchParameters };\n\n if (this.dataListTable) {\n this.dataListTable.first = 0;\n }\n\n this.onFilter();\n }\n }\n\n set loading(value: boolean) {\n this._loading = value;\n this.loadingChange.emit(this._loading);\n }\n\n @Input()\n get loading() {\n return this._loading;\n }\n\n set listData(value: any[]) {\n this._listData = value;\n this.listDataChange.emit(this._listData);\n }\n\n @Input()\n get listData() {\n return this._listData;\n }\n\n set selectedData(value: any[]) {\n this._selectedData = value;\n this.selectedDataChange.emit(this._selectedData);\n }\n\n @Input()\n get selectedData() {\n return this._selectedData;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule, LoadingStateModule } from '@seniorsistemas/angular-components';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { TableModule } from 'primeng/table';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { DataListRestComponent } from './data-list-rest.component';\n\n@NgModule({\n imports: [\n CommonModule,\n SharedModule,\n // Angular Components\n ButtonModule,\n LoadingStateModule,\n // Primeng\n TableModule,\n TooltipModule,\n ],\n declarations: [DataListRestComponent],\n exports: [DataListRestComponent],\n})\nexport class DataListRestModule {}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class EmployeeSummaryService {\n private employeeBasicInformations = new Subject<any>();\n\n constructor(private http: HttpClient) {}\n\n findEmployee(path: string, employeeId: string): Observable<any> {\n return this.http.post(`hcm/payroll/queries/${path}`, { employeeId: employeeId });\n }\n\n findEmployeeAutoComplete(path: string, terms: string): Observable<any> {\n return this.http.post(`hcm/payroll/queries/${path}`, { valueSearch: terms });\n }\n\n blobServiceRequestAccess(path: string, body: object): Observable<any> {\n return this.http.post(`hcm/payroll/actions/${path}`, body);\n }\n\n setEmployeeBasicInformations(employeeBasicInformations: any) {\n this.employeeBasicInformations.next(employeeBasicInformations);\n }\n\n getEmployeeBasicInformations(): Observable<any> {\n return this.employeeBasicInformations.asObservable();\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from \"@angular/core\";\nimport { ActivatedRoute, Params } from \"@angular/router\";\nimport * as moment_ from \"moment\";\nimport { Subject } from \"rxjs\";\nimport { finalize, map, takeUntil } from \"rxjs/operators\";\n\nimport { EmployeeSummaryService } from \"./employee-summary.service\";\n\nexport interface IEmployeeSummary {\n name: string;\n jobPosition: string;\n photoSource?: string;\n employer?: string;\n location?: string;\n hireDate?: any;\n registernumber?: any;\n timeTrackingResumeType?: string;\n age?: string;\n}\n\nconst moment = moment_;\n\n@Component({\n selector: \"c-employee-summary\",\n templateUrl: \"./employee-summary.component.html\",\n})\nexport class EmployeeSummaryComponent implements OnInit, OnDestroy {\n @Input()\n public timetrackingLabel: string = \"Status\";\n @Input()\n public hireDate: string;\n @Input()\n public hireLabel: string = \"Admissão\";\n @Input()\n public registerNumberLabel: string = \"MatrÃcula\";\n @Input()\n public ageLabel: string = \"Idade\";\n @Input()\n public loadingLabel: string = \"...\";\n @Input()\n public loadingDescription: string = \"Carregando...\";\n public emploayeeData: IEmployeeSummary;\n public isLoading: boolean = false;\n\n private ngUnsubscribe = new Subject();\n\n constructor(private activatedRoute: ActivatedRoute, private employeeService: EmployeeSummaryService) {\n }\n\n public ngOnInit() {\n this.emploayeeData = {\n name: this.loadingLabel,\n jobPosition: this.loadingDescription,\n };\n\n this.activatedRoute.params.pipe(takeUntil(this.ngUnsubscribe)).subscribe((params: Params) => {\n if (params.employeeId) {\n this.getInformation(params.employeeId);\n }\n });\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next(true);\n this.ngUnsubscribe.complete();\n }\n\n private getInformation(employeeId: string) {\n this.isLoading = true;\n\n this.employeeService\n .findEmployee(\"employeeContractualInformations\", employeeId)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map((data: any) => data && data.result),\n finalize(() => {\n this.isLoading = false;\n }),\n )\n .subscribe(payload => {\n this.employeeService.setEmployeeBasicInformations(payload);\n\n this.emploayeeData = {\n ...payload,\n timeTrackingResumeType: payload.timeTrackingResumeType && payload.timeTrackingResumeType.value,\n };\n const location: string[] = [];\n\n if (payload.city) {\n location.push(payload.city);\n }\n if (payload.stateAbbreviation) {\n location.push(payload.stateAbbreviation);\n }\n\n this.emploayeeData.location = location.join(\" - \");\n\n if (payload.hireDate) {\n this.emploayeeData.hireDate = this.hireDate ? this.hireDate : moment(payload.hireDate).format(\"L\");\n }\n\n if (payload.idPicture) {\n const request = {\n fileId: payload.idPicture,\n ttl: 2,\n thumbnail: false,\n };\n\n this.employeeService\n .blobServiceRequestAccess(\"blobServiceRequestAccess\", request)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map((data: any) => data && data.result),\n )\n .subscribe((imageData: any) => {\n if (imageData) {\n this.emploayeeData.photoSource = imageData.locationURI;\n }\n });\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { LoadingStateModule, ObjectCardModule } from '@seniorsistemas/angular-components';\n\nimport { EmployeeSummaryComponent } from './employee-summary.component';\nimport { EmployeeSummaryService } from './employee-summary.service';\n\n@NgModule({\n imports: [ObjectCardModule, LoadingStateModule],\n declarations: [EmployeeSummaryComponent],\n exports: [EmployeeSummaryComponent],\n providers: [EmployeeSummaryService],\n})\nexport class EmployeeSummaryModule {}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class AdmissionDraftSummaryService {\n private admissionDraftBasicInformations = new Subject<any>();\n\n constructor(private http: HttpClient) {\n }\n\n findAdmissionDraft(draftId: string): Observable<any> {\n return this.http.post('hcm/payroll/queries/admissionDraftQuery', { id: draftId });\n }\n\n\n blobServiceRequestAccess(path: string, body: object): Observable<any> {\n return this.http.post(`hcm/payroll/actions/${path}`, body);\n }\n\n setAdmissionDraftBasicInformations(draftBasicInformations: any) {\n this.admissionDraftBasicInformations.next(draftBasicInformations);\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { TranslateService } from \"@ngx-translate/core\";\nimport * as moment_ from 'moment';\nimport { Subject } from 'rxjs';\nimport { finalize, map, takeUntil } from 'rxjs/operators';\n\nimport { AdmissionDraftSummaryService } from './admission-draft-summary.service';\n\nexport interface IAdmissionDraftSummary {\n id?: string;\n name: string;\n documentNumber: string;\n originDraftType: string;\n companyName: string;\n localeOfCompany: string;\n hiringDate: any;\n attachment?: any;\n photoSource?: string;\n}\n\nconst moment = moment_;\n\n@Component({\n selector: 'c-admission-draft-summary',\n templateUrl: './admission-draft-summary.component.html',\n})\nexport class AdmissionDraftSummaryComponent implements OnInit, OnDestroy {\n @Input()\n public originType: string;\n @Input()\n public hireLabel: string = 'Admissão';\n @Input()\n public hireDate: string = '...';\n @Input()\n public badgeText: string = 'Rascunho';\n @Input()\n public loadingLabel: string = '...';\n @Input()\n public documentNumberLabel: string = 'Documento';\n @Input()\n public loadingDescription: string = 'Carregando...';\n public draftData: IAdmissionDraftSummary;\n public isLoading: boolean = false;\n\n private ngUnsubscribe = new Subject();\n\n constructor(private activatedRoute: ActivatedRoute,\n private admissionDraftSummaryService: AdmissionDraftSummaryService,\n private translateService: TranslateService) {\n }\n\n public ngOnInit() {\n this.draftData = {\n name: this.loadingLabel,\n hiringDate: this.hireDate,\n documentNumber: this.loadingLabel,\n companyName: this.loadingLabel,\n localeOfCompany: this.loadingLabel,\n originDraftType: this.loadingLabel,\n };\n\n this.activatedRoute.params.pipe(takeUntil(this.ngUnsubscribe)).subscribe((params: Params) => {\n if (params.draftId) {\n this.getInformation(params.draftId);\n }\n });\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next(true);\n this.ngUnsubscribe.complete();\n }\n\n private getInformation(draftId: string) {\n this.isLoading = true;\n\n this.admissionDraftSummaryService\n .findAdmissionDraft(draftId)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map((data: any) => data && data.result),\n finalize(() => {\n this.isLoading = false;\n }),\n )\n .subscribe(payload => {\n this.admissionDraftSummaryService.setAdmissionDraftBasicInformations(payload);\n payload.hiringDate = this.hireDate;\n\n this.draftData = {\n ...payload,\n };\n\n this.draftData.originDraftType = this.originType;\n if (payload.attachment && payload.attachment.fileId) {\n const request = {\n fileId: this.draftData.attachment.fileId,\n ttl: 2,\n thumbnail: false,\n };\n\n this.admissionDraftSummaryService\n .blobServiceRequestAccess('blobServiceRequestAccess', request)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n map((data: any) => data && data.result),\n )\n .subscribe((imageData: any) => {\n if (imageData) {\n this.draftData.photoSource = imageData.locationURI;\n }\n });\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { LoadingStateModule, ObjectCardModule } from '@seniorsistemas/angular-components';\n\nimport { AdmissionDraftSummaryComponent } from './admission-draft-summary.component';\nimport { AdmissionDraftSummaryService } from './admission-draft-summary.service';\n\n@NgModule({\n imports: [ObjectCardModule, LoadingStateModule],\n declarations: [AdmissionDraftSummaryComponent],\n exports: [AdmissionDraftSummaryComponent],\n providers: [AdmissionDraftSummaryService],\n})\nexport class AdmissionDraftSummaryModule {}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'error-page',\n templateUrl: './error-page.component.html',\n styleUrls: ['./error-page.component.css'],\n})\nexport class ErrorPageComponent implements OnInit {\n constructor() {}\n\n ngOnInit() {}\n}\n","import { NgModule } from '@angular/core';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { ErrorPageComponent } from './error-page.component';\n\n@NgModule({\n imports: [SharedModule],\n declarations: [ErrorPageComponent],\n exports: [ErrorPageComponent],\n providers: [],\n})\nexport class ErrorPageModule {}\n","import { Component, Input, OnChanges, OnInit } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\n\n@Component({\n selector: 'field-validator',\n templateUrl: './field-validator.component.html'\n})\nexport class FieldValidatorComponent implements OnInit, OnChanges {\n\n @Input()\n inputErrors: any;\n @Input()\n errorDefs: any;\n @Input()\n field: AbstractControl;\n @Input()\n onlyShowAfterTouched: boolean;\n\n errorMessage = '';\n\n constructor() { }\n\n ngOnInit() { }\n\n ngOnChanges(changes: any): void {\n const errors: any = changes.inputErrors.currentValue;\n this.errorMessage = '';\n if (errors) {\n Object.keys(this.errorDefs).some(key => {\n if (errors[key]) {\n this.errorMessage = this.errorDefs[key];\n return true;\n }\n });\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { FieldValidatorComponent } from './field-validator.component';\n\n@NgModule({\n imports: [CommonModule, SharedModule, ReactiveFormsModule],\n declarations: [FieldValidatorComponent],\n exports: [FieldValidatorComponent],\n providers: [],\n})\nexport class FieldValidatorModule {}\n","import { Observable, Subject } from 'rxjs';\n\nexport class ToastService {\n private messagesSubjectError = new Subject<object>();\n private messagesSubjectSuccess = new Subject<object>();\n private messagesSubjectWarning = new Subject<object>();\n\n constructor() {}\n\n /**\n * Exibe Toast de error (vermelho)\n * @param message\n * @param breakLine se deseja quebrar a mensagem caso tenha '\\n' contido\n */\n showError(message, breakLine = false) {\n this.messagesSubjectError.next({ message: message, breakLine: breakLine });\n }\n /**\n * Exibe Toast de success (verde)\n * @param message\n * @param breakLine se deseja quebrar a mensagem caso tenha '\\n' contido\n */\n showSuccess(message, breakLine = false) {\n this.messagesSubjectSuccess.next({ message: message, breakLine: breakLine });\n }\n /**\n * Exibe Toast de warning (amarelo)\n * @param message\n * @param breakLine se deseja quebrar a mensagem caso tenha '\\n' contido\n */\n showWarning(message, breakLine = false) {\n this.messagesSubjectWarning.next({ message: message, breakLine: breakLine });\n }\n\n loadErrorMessages(): Observable<any> {\n return this.messagesSubjectError.asObservable();\n }\n\n loadSuccessMessages(): Observable<any> {\n return this.messagesSubjectSuccess.asObservable();\n }\n\n loadWarningMessages(): Observable<any> {\n return this.messagesSubjectWarning.asObservable();\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ServiceType } from '../../core/enums/serviceType';\nimport { catchError} from \"rxjs/operators\";\nimport { MessageService } from 'primeng/api';\nimport { TranslateService } from '@ngx-translate/core';\nimport { throwError } from 'rxjs';\n\n@Injectable()\nexport class HttpClientService {\n constructor(private http: HttpClient, private messageService: MessageService, private translateService: TranslateService) {}\n\n query(path: string, body: object, service: ServiceType = ServiceType.PAYROLL): Observable<any> {\n const endpoit = `hcm/${service}/queries/${path}`;\n return this.http.post(endpoit, body)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed_search\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n enumQuery(path: string, body: object, server = 'payroll'): Observable<any> {\n const endpoit = `hcm/${server}/queries/${path}`;\n return this.http.post(endpoit, body)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed_search\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n action(path: string, body: object): Observable<any> {\n const endpoit = `hcm/payroll/actions/${path}`;\n return this.http.post(endpoit, body)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n recruitmentAction(path: string, body: object): Observable<any> {\n const endpoint = `hcm/recruitment/actions/${path}`;\n return this.http.post(endpoint, body)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n get(path: string): Observable<any> {\n const endpoit = `hcm/payroll/entities/${path}`;\n return this.http.get(endpoit)\n .pipe(\n catchError((exception: any): any => {\n if (exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed_search\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n getAutoComplete(entity: string, filter: string, service: ServiceType = ServiceType.PAYROLL): Observable<any> {\n const endpoit = `hcm/${service}/entities/${entity}?filter=${filter}&size=10&orderby=code+asc`;\n return this.http.get(endpoit)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed_search\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n patch(path: string, body: object): Observable<any> {\n const endpoit = `hcm/payroll/entities/${path}`;\n return this.http.patch(endpoit, body)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n post(path: string, body: object): Observable<any> {\n const endpoit = `hcm/payroll/${path}`;\n return this.http.post(endpoit, body)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n put(path: string, body: object): Observable<any> {\n const endpoit = `hcm/payroll/entities/${path}`;\n return this.http.put(endpoit, body)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n\n delete(path: string, key?: string): Observable<any> {\n const endpoit = key ? `hcm/payroll/entities/${path}/${key}` : `hcm/payroll/entities/${path}`;\n return this.http.delete(endpoit)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\n\n@Injectable()\nexport class FileUploadService {\n httpOptions: object;\n\n constructor(private http: HttpClientService) {}\n\n blobServiceRequestUpload(file: Blob): Observable<any> {\n const requestUpload = {\n fileName: file[\"name\"],\n thumbnail: this.isImage(file),\n };\n const endpoint = 'blobServiceRequestUpload';\n return this.http.action(endpoint, requestUpload);\n }\n\n blobServiceRequestAccess(fileId): Observable<any> {\n const request = {\n fileId: fileId,\n tll: 2,\n thumbnail: false,\n };\n const endpoint = 'blobServiceRequestAccess';\n return this.http.action(endpoint, request);\n }\n\n blobServiceFileDelete(fileId): Observable<any> {\n const request = {\n fileId: fileId,\n thumbnail: false,\n };\n const endpoint = 'blobServiceDelete';\n return this.http.action(endpoint, request);\n }\n\n private isImage(file: Blob): boolean {\n return /^image\\//.test(file.type);\n }\n}\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { forkJoin, Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { ToastService } from \"../toast/toast.service\";\n\nimport { FileUploadService } from \"./file-upload.service\";\n\n@Component({\n selector: \"c-file-upload\",\n templateUrl: \"./file-upload.component.html\",\n})\nexport class FileUploadComponent {\n @Input()\n errorTooltip: string;\n @Input()\n files: Blob[] = [];\n @Output()\n onUploadFile = new EventEmitter();\n @Output()\n onRemoveFile = new EventEmitter();\n\n constructor(private service: FileUploadService, private toastService: ToastService, private translate: TranslateService) {\n }\n\n uploadHandler(event: { files: Blob[] }) {\n const observables: any[] = [];\n if (event && event.files.length) {\n\n event.files.sort();\n if (event.files.length > 10 && event.files[10]) {\n delete event.files[10];\n }\n\n const countFiles: number = this.getFilesCountAndValidate(event.files);\n for (var i = 0; i < countFiles; i++) {\n const file = this.validateFileSize(event.files[i]);\n\n if (i <= 9 && file[\"isUploaded\"] && !file[\"complete\"])\n observables.push(this.saveFile(file));\n }\n\n forkJoin(...observables).subscribe(() => {\n this.onUploadFile.emit(this.files);\n });\n }\n }\n\n /**\n * Valida o tamanho do arquivo, limitando em 50mb.\n * @param file\n */\n private validateFileSize(file: Blob): Blob {\n if (file[\"isUploaded\"] && !file[\"complete\"] && file[\"size\"] > 50000000) {\n file[\"complete\"] = true;\n file[\"error\"] = this.translate.instant(\"hcm.payroll.attachments_max_mb\");\n this.toastService.showError(this.translate.instant(\"hcm.payroll.attachments_alert_error\"));\n }\n\n return file;\n }\n\n /**\n * Valida a quantidade de arquivos, limitando em 10 anexos.\n * @param files\n */\n private getFilesCountAndValidate(files: Blob[]): number {\n let countFiles = 0;\n if (files.length) {\n if (files.length > 10) {\n countFiles = 10;\n this.toastService.showError(this.translate.instant(\"hcm.payroll.attachments_max_length\"));\n } else {\n countFiles = files.length;\n }\n }\n return countFiles;\n }\n\n\n saveFile(file: Blob) {\n const obs = new Observable(observable => {\n return this.service\n .blobServiceRequestUpload(file)\n .pipe(map((response: any) => response && response.result))\n .subscribe(\n response => this.doUpload(response, file, observable),\n error => {\n file[\"complete\"] = true;\n file[\"error\"] = error.message;\n file[\"objectURL\"] = undefined;\n },\n );\n });\n return obs;\n }\n\n doUpload(response: any, file: any, observable: any) {\n const xhr = new XMLHttpRequest();\n file[\"id\"] = response.fileId;\n file[\"objectURL\"] = response.locationURI;\n file[\"version\"] = response.version;\n file[\"progress\"] = 0;\n\n xhr.upload.addEventListener(\n \"progress\",\n (evt: ProgressEvent) => {\n file[\"progress\"] = Math.round((evt.loaded * 100) / evt.total);\n },\n false,\n );\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n file[\"complete\"] = true;\n\n if (xhr.status < 200 || xhr.status >= 300) {\n file[\"objectURL\"] = undefined;\n file[\"error\"] = xhr.statusText || \"Erro ao anexar arquivo\";\n } else {\n file[\"error\"] = false;\n }\n observable.next(file);\n observable.complete();\n }\n };\n\n xhr.open(\"PUT\", file.objectURL, true);\n xhr.setRequestHeader(\"Translate\", \"f\");\n return xhr.send(file);\n }\n\n onCancelUpload(index: any) {\n this.files.splice(index, 1);\n }\n\n removeFile() {\n this.onRemoveFile.emit(this.files);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FileUploadModuleDeprecated } from '@senior-gestao-pessoas/angular-components';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { FileUploadComponent } from './file-upload.component';\nimport { FileUploadService } from './file-upload.service';\n\n@NgModule({\n imports: [CommonModule, FileUploadModuleDeprecated, SharedModule],\n declarations: [FileUploadComponent],\n providers: [FileUploadService],\n exports: [FileUploadComponent],\n})\nexport class FileUploadCoreModule {}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\n@Injectable()\nexport class ImageCropService {\n constructor(private http: HttpClient) { }\n\n async saveImage(file: Blob | File, sourceImage: string, service: string) {\n if (!file) {\n return;\n }\n\n let fileUpload = null;\n if (file) {\n fileUpload = { fileName: file[\"name\"] };\n } else if (sourceImage) {\n fileUpload = { fileName: sourceImage.split('/')[1] };\n }\n if (fileUpload) {\n const response = await this.blobServiceRequestUpload(service, fileUpload).toPromise();\n const request = new XMLHttpRequest();\n request.open('PUT', response.result.locationURI, true);\n request.setRequestHeader('Translate', 'f');\n request.send(file);\n return response.result;\n }\n }\n\n urltoFile(url, filename, mimeType = null): Observable<Blob> {\n mimeType = mimeType || (url.match(/^data:([^;]+);/) || '')[1];\n return this.http.request(\"GET\", url, { responseType: 'arraybuffer' })\n .pipe(map(blob => {\n const file = new Blob([blob], { type: mimeType });\n file[\"name\"] = filename;\n return file;\n }));\n }\n\n async getImage(data: any, service: string, thumbnail: boolean) {\n if (data && data.fileId) {\n const response = await this.blobServiceRequestAccess(service, data.fileId, thumbnail).toPromise();\n return response.result.locationURI;\n }\n }\n\n buildUrl(service: string, resource: string) {\n return `hcm/${service}/${resource}`;\n }\n\n query(service: string, path: string, body: object): Observable<any> {\n const endpoit = `queries/${path}`;\n return this.http.post(this.buildUrl(service, endpoit), body);\n }\n\n blobServiceRequestUpload(service, file): Observable<any> {\n const requestUpload = {\n fileName: file.fileName,\n thumbnail: true,\n };\n const endpoint = 'actions/blobServiceRequestUpload';\n return this.http.post(this.buildUrl(service, endpoint), requestUpload);\n }\n\n blobServiceRequestAccess(service, fileId, thumbnail): Observable<any> {\n const request = {\n fileId: fileId,\n tll: 2,\n thumbnail: thumbnail,\n };\n const endpoint = 'actions/blobServiceRequestAccess';\n return this.http.post(this.buildUrl(service, endpoint), request);\n }\n\n blobServiceFileDelete(service, fileId): Observable<any> {\n const request = {\n fileId: fileId,\n thumbnail: true,\n };\n const endpoint = 'actions/blobServiceDelete';\n return this.http.post(this.buildUrl(service, endpoint), request);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { CropperSettings, ImageCropperComponent } from 'ng2-img-cropper';\n\nimport { ToastService } from '../toast/toast.service';\nimport { ImageCropService } from './image-crop.service';\n\n@Component({\n selector: 'image-crop',\n templateUrl: './image-crop.component.html',\n styleUrls: ['./image-crop.component.css'],\n})\nexport class ImageCropComponent implements OnInit {\n @Input()\n service = 'payroll';\n @Output()\n onClickSave: EventEmitter<any> = new EventEmitter();\n\n private file: Blob;\n @ViewChild('cropper', { static: false })\n private cropper: ImageCropperComponent;\n defaulPerson = 'assets/default-person.png';\n personPhotoLink: string;\n personFirstName: string;\n display = false;\n cropperSettings: CropperSettings;\n imageCrop = [];\n data: any = {};\n\n constructor(private imageCropService: ImageCropService, private toastService: ToastService) {\n this.cropperSettings = new CropperSettings();\n this.cropperSettings.width = 100;\n this.cropperSettings.height = 100;\n this.cropperSettings.keepAspect = false;\n this.cropperSettings.preserveSize = true;\n this.cropperSettings.canvasWidth = 600;\n this.cropperSettings.canvasHeight = 450;\n this.cropperSettings.rounded = true;\n this.cropperSettings.minWithRelativeToResolution = false;\n this.cropperSettings.noFileInput = true;\n this.cropperSettings.cropperDrawSettings.strokeColor = 'rgba(255,255,255,1)';\n this.cropperSettings.cropperDrawSettings.strokeWidth = 1;\n }\n\n @Input()\n set image(data) {\n if (data && data.fileId && !this.personPhotoLink) {\n this.imageCropService.blobServiceRequestAccess(this.service, data.fileId, true).subscribe(response => {\n this.personPhotoLink = response.result.locationURI;\n });\n }\n }\n\n onUploadHandler($event) {\n this.file = $event.files[0];\n\n if (this.file && this.file.size > 5000000) {\n this.file = null;\n this.imageCrop = [];\n this.toastService.showError('O tamanho máximo permitido para a imagem é de 5MB');\n return;\n }\n this.display = false;\n\n const image: any = new Image();\n const myReader: FileReader = new FileReader();\n myReader.onloadend = (loadEvent: any) => {\n image.src = loadEvent.target.result;\n this.cropper.setImage(image);\n };\n\n myReader.readAsDataURL(this.file);\n this.display = true;\n }\n\n ngOnInit(): void {\n this.data.image = null;\n this.personPhotoLink = null;\n this.personFirstName = '';\n this.display = false;\n }\n\n showDialog(): void {\n this.display = true;\n }\n\n onHide() {\n this.display = false;\n }\n\n reset() {\n this.file = null;\n this.data = {};\n this.imageCrop = [];\n this.cropper.reset();\n this.data.image = null;\n this.personPhotoLink = null;\n this.personFirstName = '';\n }\n\n async saveImage() {\n if (!this.file) {\n this.onClickSave.emit(null);\n this.onHide();\n return;\n }\n\n const fileName = this.file['name'];\n if (this.cropper && this.cropper.image) {\n const fileImage = await this.urltoFile(this.cropper.image.image, fileName);\n this.personPhotoLink = this.data.image;\n let fileUpload = null;\n if (this.file) {\n fileUpload = { fileName: this.file['name'] };\n } else if (this.data) {\n fileUpload = { fileName: this.data.fileId.split('/')[1] };\n }\n if (fileUpload) {\n const thisContext = this;\n this.imageCropService.blobServiceRequestUpload(this.service, fileUpload).subscribe(response => {\n const request = new XMLHttpRequest();\n request.open('PUT', response.result.locationURI, true);\n request.setRequestHeader('Translate', 'f');\n request.send(fileImage);\n this.onClickSave.emit(response.result);\n this.onHide();\n });\n }\n }\n }\n\n urltoFile(url, filename, mimeType = null) {\n mimeType = mimeType || (url.match(/^data:([^;]+);/) || '')[1];\n return fetch(url)\n .then(function(res) {\n return res.arrayBuffer();\n })\n .then(function(buf) {\n return new File([buf], filename, { type: mimeType });\n });\n }\n\n deleteImage() {\n this.imageCropService.blobServiceFileDelete(this.service, this.data && this.data.image && this.data.image.fileId);\n this.reset();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ImageCropperModule } from 'ng2-img-cropper';\nimport { ButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\nimport { FileUploadModule } from 'primeng/fileupload';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { ImageCropComponent } from './image-crop.component';\nimport { ImageCropService } from './image-crop.service';\nimport { ThumbnailModule, ImageCropperService } from '@seniorsistemas/angular-components';\n\n@NgModule({\n imports: [\n CommonModule,\n SharedModule,\n DialogModule,\n ButtonModule,\n FileUploadModule,\n ImageCropperModule,\n ImageCropperModule,\n ThumbnailModule],\n declarations: [ImageCropComponent],\n providers: [ImageCropService, ImageCropperService],\n exports: [ImageCropComponent],\n})\n/**\n * @deprecated\n */\nexport class ImageCropModule {}\n","import { Component, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\nimport * as _moment from \"moment\";\nimport { LocaleService } from \"@seniorsistemas/angular-components\";\n\nconst moment = _moment;\n\n@Component({\n selector: \"input-date-calendar-model\",\n templateUrl: \"./input-date-model.component.html\",\n})\nexport class InputDateModelComponent implements OnInit {\n @Input()\n name: string;\n @Input()\n disabled?: boolean;\n @Input()\n withoutDay: boolean;\n @Input()\n unmask: boolean;\n @Input()\n style: boolean;\n @Input()\n styleClass: string;\n\n @Output()\n onBlurGetMoment: EventEmitter<any> = new EventEmitter();\n @Output()\n modelChange: EventEmitter<any> = new EventEmitter();\n\n private _date: any;\n private locale: any;\n private format: any;\n private _model: any;\n mask = null;\n\n constructor(private localeService: LocaleService) {\n }\n\n ngOnInit() {\n this.localeService.get().subscribe(loc => {\n this.mask = this.formatMask(loc);\n this.format = this.getFormat();\n if (this.model) {\n const newDate = this.model;\n const momentDate = moment(newDate, this.format || \"YYYY-MM-DD\");\n if (momentDate.isValid()) {\n this.model = momentDate.format(this.format || \"L\");\n this._date = momentDate;\n } else {\n this._date = null;\n }\n }\n });\n }\n\n formatMask(loc) {\n this.locale = loc;\n let dateMask = this.locale.calendar.dateFormat.toString();\n\n if (this.withoutDay) {\n dateMask = dateMask.replace(\"dd/\", \"\").replace(\"-dd\", \"\");\n }\n\n dateMask = dateMask.replace(/[d]|[m]/g, \"9\");\n return dateMask.replace(/[y]/g, \"99\");\n }\n\n getFormat() {\n let dateFormat = this.locale.calendar.dateFormat.toString();\n dateFormat = dateFormat.replace(/[y]/g, \"YY\");\n\n if (this.withoutDay) {\n dateFormat = dateFormat.replace(\"dd/\", \"\").replace(\"-dd\", \"\");\n }\n\n return dateFormat.toUpperCase();\n }\n\n get placeholder() {\n return this.mask ? this.mask.toString().replace(/[9]/g, \"_\") : \"\";\n }\n\n onBlur() {\n const dateComponet = this.model;\n this._date = moment(dateComponet, this.format);\n this.onBlurGetMoment.emit(this._date);\n }\n\n set model(val) {\n this._model = val;\n this.modelChange.emit(this._model);\n }\n\n @Input()\n get model() {\n return this._model;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InputMaskModule } from 'primeng/inputmask';\n\nimport { InputDateModelComponent } from './input-date-model.component';\n\n@NgModule({\n imports: [InputMaskModule, FormsModule, ReactiveFormsModule, CommonModule],\n declarations: [InputDateModelComponent],\n exports: [InputDateModelComponent],\n})\nexport class InputDateModelModule {}\n","import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { ValidatorFn } from '@angular/forms/';\nimport * as chance from 'chance';\nimport * as momentImported from 'moment';\nimport business from 'moment-business';\nimport { LocaleOptions } from '@seniorsistemas/angular-components';\nimport { FieldValidatorsObject } from '../../core/interfaces/field-validators-object';\n\nconst moment = momentImported;\n\nexport function isObject(item) {\n return item && typeof item === 'object' && !Array.isArray(item);\n}\n\nexport function isShallow(item) {\n return Array.isArray(item) && item.find(value => typeof value === 'object') ? false : true;\n}\n\nexport function convertBooleanString(value) {\n if (typeof value === 'boolean') {\n return value === true ? 'true' : 'false';\n }\n return value;\n}\n\nexport function convertStringToBoolean(value) {\n return value === true || value.toLowerCase() === 'true';\n}\n\nexport function assign(target, ...sources) {\n if (!sources.length) {\n return target;\n }\n\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) {\n Object.assign(target, { [key]: {} });\n }\n assign(target[key], source[key]);\n } else {\n if (isShallow(source[key])) {\n Object.assign(target, { [key]: source[key] });\n } else {\n if (!target[key]) {\n Object.assign(target, { [key]: [] });\n }\n Object.assign(target, { [key]: source[key].map((item, index) => assign(target[key][index] || {}, item)) });\n }\n }\n }\n }\n return assign(target, ...sources);\n}\n\nexport function isValid(value) {\n return value === 0 || typeof value === 'boolean' ? true : value !== undefined && value !== null && value !== '';\n}\n\nexport function isValidDate(value, withDays = true) {\n if (value && isFullDate(value, withDays)) {\n if (withDays) {\n return moment(value.replace(/[^\\d]+/g, ''), 'DDMMYYYY').isValid();\n } else {\n return moment(value.replace(/[^\\d]+/g, ''), 'MMYYYY').isValid();\n }\n }\n return true;\n}\n\nexport function isFullDate(value, withDays = true) {\n if (value) {\n let totalLength;\n if (withDays) {\n totalLength = 8;\n } else {\n totalLength = 6;\n }\n return value.replace(/[^\\d]+/g, '').length === totalLength;\n }\n return true;\n}\n\nexport function autoCompleteObjectForIdObject(tableIdObject) {\n if (!isObject(tableIdObject)) {\n console.error('Paramentro não é um objeto');\n return false;\n }\n\n if (tableIdObject.hasOwnProperty('tableId')) {\n console.error('Paramentro não é um objeto Auto Complete válido, falta tableId');\n }\n\n if (!isValid(tableIdObject.tableId)) {\n console.error('tableId esta vazio');\n }\n\n return { id: tableIdObject.tableId };\n}\n\nexport function isDateField(name, value) {\n const testDate = name.search('Date');\n if (testDate !== -1) {\n return invertFieldDate(value);\n }\n return value;\n}\n\nexport function invertFieldDate(value, inFormat = 'DDMMYYYY', outFormat = 'YYYY-MM-DD') {\n if (!isValid(value)) {\n return;\n }\n const formatIn = getFormatDate(value, inFormat);\n return moment(value.replace(/[^\\d]+/g, ''), formatIn).format(outFormat);\n}\n\nexport function getAddWeekDaysBusiness(value, quantidade) {\n return business.addWeekDays(getMoment(value), quantidade).format('DD/MM/YYYY');\n}\n\nexport function getWeekDaysBusiness(startDate, endDate) {\n const endMoment = endDate ? getMoment(endDate) : getMoment(startDate).endOf('month');\n return business.weekDays(getMoment(startDate), endMoment);\n}\n\nexport function getFormatDate(value, inFormat) {\n if (value.search('/') !== -1) {\n return 'DDMMYYYY';\n } else if (value.search('-') !== -1) {\n return 'YYYYMMDD';\n }\n return inFormat;\n}\n\n/**\n * FIXME - Está fixo para uso do calendário portugues Brasil\n * @param value\n * @param outFormat\n * @returns\n */\nexport function ngCalendarFormat(value, outFormat = 'DD/MM/YYYY') {\n if (isValidDate(value)) {\n if (typeof value === 'string') {\n return value;\n } else {\n return _moment(value).format(outFormat);\n }\n }\n}\n\nexport function getNowDate(outFormat = 'YYYY-MM-DD') {\n return moment().format(outFormat);\n}\n\nexport function getMoment(value, inFormat = 'DDMMYYYY') {\n const formatIn = getFormatDate(value, inFormat);\n return moment(value.replace(/[^\\d]+/g, ''), formatIn);\n}\n\nexport function _moment(value, format?: string) {\n if (format) {\n return moment(value, format);\n }\n return moment(value);\n}\n\nexport function getObjValids(objs) {\n const json = Object.assign({}, objs);\n const jsonReturn = {};\n Object.keys(json).map(key => {\n if (isValid(json[key])) {\n jsonReturn[key] = isDateField(key, json[key]);\n }\n });\n return jsonReturn;\n}\n\nexport function removeEmpty(obj) {\n Object.keys(obj).forEach(\n k => (obj[k] && typeof obj[k] === 'object' && removeEmpty(obj[k])) || (!obj[k] && obj[k] !== undefined && delete obj[k])\n );\n return obj;\n}\n\nexport function formatMoney(value, i18n = 'EN') {\n switch (i18n) {\n case 'EN':\n return isValid(value)\n ? value\n .toString()\n .replace('.', '')\n .replace(',', '.')\n : '';\n case 'BR':\n return isValid(value)\n ? value\n .toString()\n .replace('.', ',')\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1.')\n : '';\n default:\n return isValid(value)\n ? value\n .toString()\n .replace('.', '')\n .replace(',', '.')\n : '';\n }\n}\n\nexport function uiid() {\n return new chance()\n .guid()\n .replace(/[^a-zA-Z0-9.]/g, '')\n .toUpperCase();\n}\n\nexport function mountCustomForSave(custom, customEntity = null, locale = null) {\n const custonField = [];\n if (customEntity && custom.length) {\n customEntity.map((val, key) => {\n const field = Object.keys(custom[key]).toString();\n const valOrnull = isValid(custom[key][field]) ? custom[key][field] : null;\n const value =\n val.type === 'date' && locale && isValid(valOrnull) ? moment(valOrnull, getFormat(locale)).format('YYYY-MM-DD') : valOrnull;\n custonField.push({\n field: field,\n value: value,\n });\n });\n }\n return custonField.length ? custonField : null;\n}\n\n/**\n * Prepara o objeto de campos customizados para salvar as entidades que\n * são utilizadas a partir do CRUD customizado.\n * @param objectFields objeto com os campos customizados da entidade.\n */\nexport function mountCustomToSave(objectFields) {\n const customFields = [];\n Object.entries(objectFields).forEach(([field, value]) => {\n customFields.push({\n field: field,\n value: value,\n });\n });\n return customFields;\n}\n\n/**\n * Prepara o objeto de campos customizados para exibir as entidades que\n * são utilizadas a partir do CRUD customizado.\n * @param customFields objeto com os campos customizados da entidade.\n */\nexport function mountCustomToShow(customFields) {\n const customFieldsToShow = {};\n if (customFields && customFields.length) {\n customFields.forEach(item => {\n if (item.type === 'date' && item.value) {\n item.value = _moment(item.value).format('L');\n }\n customFieldsToShow[item.field] = item.value;\n });\n }\n return customFieldsToShow;\n}\n\n/**\n * Prepara o objeto de campos customizados para salvar as entidades que\n * são utilizadas a partir do CRUD gerado.\n * @param objectFields objeto com os campos customizados da entidade.\n */\nexport function mountGeneratedCustomToSave(objectFields) {\n Object.entries(objectFields).forEach(([key, value]) => {\n if (!value) {\n delete objectFields[key];\n }\n });\n return objectFields;\n}\n\nexport function mountCustomForShow(custom) {\n const customField = [];\n Object.keys(custom || {}).forEach(val => {\n if (custom[val].type === 'date' && custom[val].value) {\n custom[val].value = _moment(custom[val].value).format('L');\n }\n customField.push(custom[val]);\n });\n return customField;\n}\n\nexport function setValueCustom(custonFields, custom) {\n const isCustons = custom ? Object.keys(custom).length : 0;\n custonFields.map(val => {\n val.value = isCustons > 0 ? custom[val.field] : null;\n });\n return custonFields;\n}\n\n/**\n * Adiciona um erro no controle do formulário. Deve ser chamado com .call passando o contexto da class.\n * Ex.: setErrors.call(this.contractGroup, 'registerEmployeeNumber', 'exist', !payload)\n *\n * @param formControlName Nome do controle do formulário.\n * @param keyError Nome do error a ser exibido em tela.\n * @param isInvalid Se houver algum erro de validação no campo.\n */\nexport function setErrors(formControlName: string, keyError: string, isInvalid: boolean): void {\n setTimeout(() => {\n if (isInvalid) {\n const errors = Object.assign({}, this.get(formControlName).errors);\n errors[keyError] = isInvalid;\n this.get(formControlName).setErrors(errors);\n } else {\n const errors = this.get(formControlName).errors;\n\n if (errors && Object.keys(errors).length) {\n delete errors[keyError];\n\n if (!Object.keys(errors).length) {\n this.get(formControlName).setErrors(null);\n }\n }\n }\n }, 0);\n}\n\n/**\n * Faz loop do nos controls do formulário e subArray caso existir\n * setando os inválidos\n * Ex.: verifyValidationsForm.call(this.initialGroup);\n */\nexport function verifyValidationsForm() {\n Object.keys(this.controls).map(field => {\n const control = this.get(field);\n control.markAsDirty();\n if (control instanceof FormGroup || control instanceof FormArray) {\n verifyValidationsForm.call(control);\n }\n });\n}\n\n/**\n * Retorna a idade de acordo com a data de nascimento.\n *\n * @param birthdayDate Data de nascimento.\n */\nexport function getYears(birthday) {\n const currentDate = moment();\n const years = currentDate.diff(birthday, 'years', false);\n return years;\n}\n\nexport function setCustonFields(customFields) {\n customFields.map(val => {\n const addCuston = {};\n let value = val.value || null;\n if (typeof value === 'boolean') {\n value = value ? 'true' : 'false';\n }\n addCuston[val.field] = new FormControl(value);\n this.push(new FormGroup(addCuston));\n });\n return customFields;\n}\n\n export function setRequired(formGroup: FormGroup, name: string, required: boolean, validators?: ValidatorFn[]) {\n if (required) {\n formGroup.controls[name].setValidators(Validators.compose(validators && validators.length ? validators : [Validators.required]));\n formGroup.controls[name].updateValueAndValidity();\n } else {\n formGroup.controls[name].setValidators(null);\n formGroup.controls[name].updateValueAndValidity();\n }\n}\n\n/**\n * Esse método tem como função setar os campos enable ou disable.\n * @param formGroup FormGroup onde se encontra os campos a serem alterados.\n * @param condition Condição para validação. True = enabled, False = disabled.\n * @param fields Campos a serem manipulados.\n * @param fieldsToClear Campos a serem limpos. à opicional e se não foi passado o método limpará os mesmos campos dos fields.\n */\nexport function configEnabledFields(formGroup: FormGroup, condition: boolean, fields: Array<string>, fieldsToClear?: Array<string>) {\n if (condition) {\n fields.forEach(field => formGroup.get(field).enable());\n } else {\n fields.forEach(field => formGroup.get(field).disable());\n clearValues(formGroup, fieldsToClear ? fieldsToClear : fields);\n }\n}\n\n/**\n * Esse método tem como função setar os campos como requeridos ou não.\n *\n * @param formGroup FormGroup onde se encontra os campos a serem alterados.\n * @param condition Se será ou não requeridos.\n * @param fields Lista de campos.\n */\nexport function setRequiredFields(formGroup: FormGroup, condition: boolean, fields: Array<string>) {\n if (condition) {\n fields.forEach(field => setRequired(formGroup, field, true, [Validators.required]));\n } else {\n fields.forEach(field => setRequired(formGroup, field, false));\n }\n}\n\n\n/**\n * Esse método tem como função setar validações dinâmicas nos campos.\n *\n * @param formGroup FormGroup onde se encontra os campos a serem alterados.\n * @param fields Lista de objetos [{field: campo, validators: validações, disable: boolean}].\n */\nexport function setValidatorsAndDisableFields(formGroup: FormGroup, fields: Array<FieldValidatorsObject>) {\n fields.forEach((currentField: FieldValidatorsObject) => {\n setValidator(formGroup, currentField.field, currentField.validators);\n setDisableField(formGroup, currentField.disabled, currentField.field, currentField.clearValue);\n });\n}\n\n\nexport function setValidator(formGroup: FormGroup, name: string, validators?: ValidatorFn[]) {\n if (validators && validators.length) {\n formGroup.controls[name].setValidators(Validators.compose(validators));\n formGroup.controls[name].updateValueAndValidity();\n } else {\n formGroup.controls[name].setValidators(null);\n formGroup.controls[name].updateValueAndValidity();\n }\n}\n\n\n/**\n * Esse método tem como função setar os campos enable ou disable.\n * @param formGroup FormGroup onde se encontra os campos a serem alterados.\n * @param condition Condição para validação. True = disabled, False = enabled.\n * @param field Campo a ser manipulados.\n * @param clearValue Campos a ser limpos. à opicional e se não foi passado o método limpará o campo do field.\n */\nexport function setDisableField(formGroup: FormGroup, condition: boolean, field: string, clearValue: boolean = true) {\n if (condition) {\n formGroup.get(field).disable();\n if (clearValue) formGroup.get(field).reset();\n } else {\n formGroup.get(field).enable();\n }\n}\n\n/**\n * Ordena array de objetos\n * @param key o campo que deseja ordenar\n * @param order a ordem que deseja ordenar o campo\n */\nexport function compareValues(key: string, order: string = \"ASC\") {\n return function innerSort(a: any, b: any) {\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {\n return 0;\n }\n\n const varA = (typeof a[key] === \"string\")\n ? a[key].toUpperCase() : a[key];\n const varB = (typeof b[key] === \"string\")\n ? b[key].toUpperCase() : b[key];\n\n let comparison = 0;\n if (varA > varB) {\n comparison = 1;\n } else if (varA < varB) {\n comparison = -1;\n }\n return (\n (order === \"DESC\") ? (comparison * -1) : comparison\n );\n };\n}\n\n/**\n * Esse método tem como função limpar o valor dos campos.\n *\n * @param formGroup FormGroup onde se encontra os campos a serem limpos.\n * @param fields Campos a serem limpos.\n */\nexport function clearValues(formGroup: FormGroup, fields: Array<string>) {\n fields.forEach(field => formGroup.get(field).reset());\n}\n\n/**\n *\n * @param qs = window.location.search\n * @returns Object com parametros query string\n */\nexport function getQueryParams(qs) {\n qs = qs.split('+').join(' ');\n\n const params = {};\n let tokens;\n const re = /[?&]?([^=]+)=([^&]*)/g;\n\n while ((tokens = re.exec(qs))) {\n params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);\n }\n\n return params;\n}\n\nexport function getFormat(locale) {\n if (locale) {\n let dateFormat = locale.calendar.dateFormat.toString();\n dateFormat = dateFormat.replace(/[y]/g, 'YY');\n dateFormat = dateFormat.replace(/[/]/g, '');\n return dateFormat.toUpperCase();\n }\n}\n\n/**\n * Remove os caracteres que não sejam números do valor\n * @param value valor a ser tratado\n * @returns string O valor sem caracteres especiais\n */\nexport function removeCharacteresSpecials(value: any): string {\n return value ? value.toString().replace(/[&\\/\\\\#,+()$~%.'\":*?<>{}-]/g, \"\") : null;\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\nimport { ServiceType } from '../../core/enums/serviceType';\n\n@Injectable()\nexport class InputRestAutoCompleteService {\n constructor(private http: HttpClientService) {}\n\n query(path: string, body: object, service: ServiceType = ServiceType.PAYROLL): Observable<any> {\n return this.http.query(path, body, service);\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { _moment, isValid } from '../utils/helpers';\nimport { InputRestAutoCompleteService } from './input-rest-auto-complete.service';\nimport { ServiceType } from '../../core/enums/serviceType';\n\nexport interface IConditions {\n fields: Array<string[]>;\n fieldType: string;\n expression: string;\n value: string;\n}\n\n@Component({\n selector: 'input-rest-auto-complete',\n templateUrl: './input-rest-auto-complete.component.html',\n styleUrls: ['./input-rest-auto-complete.component.css'],\n})\nexport class InputRestAutoCompleteComponent implements OnInit {\n @ViewChild('autoCompleteObject', { static: true })\n _autoCompleteObject: ElementRef;\n @Input()\n name: string;\n @Input()\n table: string;\n @Input()\n order: Array<any[]>;\n @Input()\n enableEntityFilters: boolean;\n @Input()\n fields: Array<any[]>;\n @Input()\n conditionsFields?: Array<any[]>;\n @Input()\n conditions: Array<IConditions>;\n @Input()\n placeholder: string;\n @Input()\n readonly: boolean;\n @Input()\n required: boolean;\n @Input()\n disabled: boolean;\n @Input()\n dropdown: boolean;\n @Input()\n forceSelection = true;\n @Input()\n error: object;\n @Input()\n emptyMessage: string;\n @Input()\n keyCode?: string;\n @Input()\n keyName = 'name';\n @Input()\n concatFieldsForName?: any[];\n @Input()\n itemSelect: any;\n @Input()\n form: FormGroup;\n @Input()\n inputId: string;\n @Input()\n isTimetrackingSituation: boolean;\n @Input()\n isDepartmentFromCompany: boolean;\n @Input()\n companyId: string;\n @Input()\n referenceDate: string;\n @Input()\n isDismissalReason: boolean;\n @Input()\n keyToExclude: any = [];\n @Input()\n usingType: any = [];\n @Input()\n minCharactersToSearch = 3;\n @Input()\n isWagetype: boolean;\n private isDropdown: boolean;\n @Input()\n multiple = false;\n @Input()\n serviceType: ServiceType = ServiceType.PAYROLL;\n @Output()\n onBlur: EventEmitter<any> = new EventEmitter();\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter();\n @Output()\n onClear: EventEmitter<any> = new EventEmitter();\n\n suggestions: any[] = [];\n\n constructor(private service: InputRestAutoCompleteService) {}\n\n ngOnInit() {}\n\n filterQuery(event: any): any {\n const query = event.query;\n if (!(isNaN(query) && query.toString().length < this.minCharactersToSearch)) {\n try {\n if (this.isTimetrackingSituation) {\n return this.service\n .query('autocompleteTimetrackingSituation', {\n valueSearch: query,\n referenceDate: this.referenceDate,\n })\n .subscribe(payload => this.formaterResponce(payload.result));\n } else if (this.isDismissalReason) {\n const params = { valueSearch: query };\n if (this.referenceDate) {\n params['referenceDate'] = this.referenceDate;\n }\n return this.service\n .query('autocompleteDismissalReason', params, ServiceType.GENERAL_REGISTER)\n .subscribe(payload => this.formaterResponce(payload.result));\n } else if (this.usingType && this.usingType.length) {\n return this.service\n .query('autocompleteOtherCompanyFilterUsingType', {\n searchText: query,\n usingType: this.usingType,\n })\n .subscribe(payload => this.formaterResponce(payload.result));\n } else if (this.isDepartmentFromCompany) {\n return this.service\n .query('autocompleteDepartmentQuery', {\n searchText: query,\n companyId: this.companyId,\n referenceDate: this.referenceDate,\n })\n .subscribe(payload => this.formaterResponce(payload.result));\n } else if (this.isWagetype) {\n const params = { searchText: query, companyId: this.companyId };\n return this.service\n .query('autocompleteWagetypeQuery', params, ServiceType.ENTRY)\n .subscribe(payload => this.formaterResponce(payload.result));\n }\n this.service\n .query('autocomplete', this.getParamsRest(query), this.serviceType).subscribe(payload => this.formaterResponce(payload.result));\n } catch (e) {\n console.log(e);\n }\n }\n }\n\n formaterResponce(result) {\n this.suggestions = [];\n const valsResult = [];\n result.map(value => {\n const valueConcat = {\n tableId: value.tableId,\n name: '',\n };\n if (this.isTimetrackingSituation || this.isDismissalReason || (this.usingType && this.usingType.length)) {\n if (this.keyToExclude.includes(value.fields && value.fields[2] && value.fields[2].value)) {\n return;\n }\n\n let fieldName = '';\n\n value.fields.map(val => {\n valueConcat[val.name] = val.value;\n });\n\n fieldName += value.fields.filter(val => val.name.toLowerCase() === 'code').map(code => (code ? (code.value += ' - ') : ''))[0];\n if (this.usingType && this.usingType.length && (!fieldName || fieldName === 'undefined')) {\n fieldName = '';\n }\n fieldName += value.fields.filter(val => val.name.toLowerCase() === 'name').map(name => (name ? name.value : ''))[0];\n\n valueConcat.name = fieldName;\n valsResult.push(valueConcat);\n } else {\n value.fields.map(val => {\n valueConcat[val.name] = val.value;\n });\n let fieldName = '';\n if (this.concatFieldsForName) {\n this.concatFieldsForName.map(val => {\n // se o campo for data, formata pro locale do usuário\n if (val.includes('date') || val.includes('Birthday')) {\n valueConcat[val] = _moment(valueConcat[val]).format('DD/MM/YYYY');\n }\n fieldName += valueConcat[val] + ' - ';\n });\n fieldName = fieldName.slice(0, -3);\n } else {\n if (this.keyCode) {\n fieldName += valueConcat[this.keyCode] + ' - ';\n }\n if (this.keyName) {\n fieldName += valueConcat[this.keyName];\n }\n }\n valueConcat.name = fieldName;\n valsResult.push(valueConcat);\n }\n });\n this.suggestions = [...valsResult];\n return valsResult;\n }\n\n getParamsRest(search: string): object {\n return {\n table: this.table,\n fields: this.fields,\n order: this.order,\n conditions: this.getConditionsRest(search),\n enableEntityFilters: this.enableEntityFilters,\n };\n }\n\n getConditionsRest(search: string) {\n const conditiosReturn = [\n {\n fields: this.conditionsFields || this.fields,\n expression: 'LIKE',\n value: `${search}`,\n },\n ];\n\n if (this.conditions) {\n this.conditions.map(val => {\n if (['IS_NULL', 'IS_NOT_NULL', 'IS_TRUE'].includes(val.expression) || isValid(val.value)) {\n conditiosReturn.push(val);\n }\n });\n }\n\n return conditiosReturn;\n }\n\n /**\n * Externiza a função de select das opções\n * <input-rest-auto-complete (onSelect)=\"onSelectHandle($event)\" ></input-rest-auto-complete>\n * @param option\n */\n selectOption(option: object) {\n this.onSelect.emit(option);\n }\n\n async onClearItem(option: object) {\n await this.onClear.emit(option);\n this.form.get(this.name).reset();\n }\n\n onBlurItem(option: object) {\n if (!this.isDropdown) {\n this.form.controls[this.name].markAsDirty();\n this.onBlur.emit(option);\n } else {\n this.isDropdown = false;\n }\n }\n\n onDropdownClick() {\n this.isDropdown = true;\n }\n\n get autoCompleteObject() {\n return this._autoCompleteObject;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AutoCompleteModule } from 'primeng/autocomplete';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { InputRestAutoCompleteComponent } from './input-rest-auto-complete.component';\nimport { InputRestAutoCompleteService } from './input-rest-auto-complete.service';\n\n@NgModule({\n imports: [CommonModule, FormsModule, HttpClientModule, AutoCompleteModule, SharedModule, ReactiveFormsModule],\n declarations: [InputRestAutoCompleteComponent],\n providers: [InputRestAutoCompleteService],\n exports: [InputRestAutoCompleteComponent],\n})\nexport class InputRestAutoCompleteModule {}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\n\n@Injectable()\nexport class InputRestAutoCompleteEmployeeService {\n constructor(private http: HttpClientService) {}\n\n query(path: string, body: object): Observable<any> {\n const endpoit = `queries/${path}`;\n return this.http.post(endpoit, body);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { getMoment } from '../utils/helpers';\nimport { InputRestAutoCompleteEmployeeService } from './input-rest-auto-complete-employee.service';\n\nexport interface IConditions {\n fields: Array<string[]>;\n value: string;\n}\n\n@Component({\n selector: 'input-rest-auto-complete-employee',\n templateUrl: './input-rest-auto-complete-employee.component.html',\n styleUrls: ['./input-rest-auto-complete-employee.component.css'],\n})\nexport class InputRestAutoCompleteEmployeeComponent implements OnInit {\n @Input()\n name: string;\n @Input()\n value: string;\n @Input()\n company: any;\n @Input()\n branch: any;\n @Input()\n employeeType: any;\n @Input()\n otherContractType: any;\n @Input()\n filterEmployeeType: boolean;\n @Input()\n enableEntityFilters: boolean;\n @Input()\n placeholder: string;\n @Input()\n readonly: boolean;\n @Input()\n required: boolean;\n @Input()\n disabled: boolean;\n @Input()\n dropdown: boolean;\n @Input()\n forceSelection = true;\n @Input()\n error: object;\n @Input()\n emptyMessage: string;\n @Input()\n keyCode: string;\n @Input()\n keyName = 'name';\n @Input()\n itemSelect: any;\n @Input()\n form: FormGroup;\n @Input()\n inputId: string;\n private isDropdown: boolean;\n\n @Output()\n onBlur: EventEmitter<any> = new EventEmitter();\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter();\n @Output()\n onClear: EventEmitter<any> = new EventEmitter();\n\n suggestions: any[] = [];\n\n constructor(private service: InputRestAutoCompleteEmployeeService) {}\n\n ngOnInit() {}\n\n filterQuery(event: any) {\n const query = event.query;\n if (!(isNaN(query) && query.toString().length < 3)) {\n try {\n this.service.query('autocompleteEmployee', this.getParamsRest(query)).subscribe(payload => this.formaterResponce(payload.result));\n } catch (e) {\n console.log('Erro ao buscar no back');\n }\n }\n }\n\n formaterResponce(result) {\n this.suggestions = [];\n const valsResult = [];\n result.map(value => {\n const valueConcat = {\n tableId: value.tableId,\n code: '',\n name: '',\n fullname: '',\n admission: '',\n document: '',\n };\n\n if (value.fields && value.fields.length) {\n valueConcat.fullname = value.fields[0].value;\n valueConcat.admission = value.fields[1].value;\n valueConcat.document = value.fields[2].value;\n valueConcat.code = value.fields.length === 4 && value.fields[3].value;\n\n // Pode acontecer de não vim o código.\n if (valueConcat.code) {\n valueConcat.name = valueConcat.code\n .concat(' - ')\n .concat(valueConcat.fullname)\n .concat(' - ')\n .concat(getMoment(valueConcat.admission).format('DD/MM/YYYY'));\n } else {\n valueConcat.name = valueConcat.fullname.concat(' - ').concat(getMoment(valueConcat.admission).format('DD/MM/YYYY'));\n }\n\n valsResult.push(valueConcat);\n }\n });\n this.suggestions = valsResult;\n return valsResult;\n }\n\n getParamsRest(search: string): object {\n const returnFilter = {\n valueSearch: search,\n enableEntityFilters: this.enableEntityFilters,\n };\n if (this.company) {\n returnFilter['company'] = this.company;\n }\n if (this.branch) {\n returnFilter['companyBranch'] = this.branch;\n }\n if (this.employeeType) {\n returnFilter['employeeType'] = this.employeeType;\n }\n if (this.otherContractType) {\n returnFilter['otherContractType'] = this.otherContractType;\n }\n if (this.filterEmployeeType === false) {\n returnFilter['filterEmployeeType'] = this.filterEmployeeType;\n }\n return returnFilter;\n }\n\n /**\n * Externiza a função de select das opções\n * <input-rest-auto-complete-employee (onSelect)=\"onSelectHandle($event)\" ></input-rest-auto-complete-employee>\n * @param option\n */\n selectOption(option: object) {\n this.onSelect.emit(option);\n }\n\n onClearItem(option: object) {\n this.onClear.emit(option);\n }\n\n onBlurItem(option: object) {\n if (!this.isDropdown) {\n this.form.controls[this.name].markAsDirty();\n this.onBlur.emit(option);\n } else {\n this.isDropdown = false;\n }\n }\n\n onDropdownClick() {\n this.isDropdown = true;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { AutoCompleteModule } from 'primeng/autocomplete';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { InputRestAutoCompleteEmployeeComponent } from './input-rest-auto-complete-employee.component';\nimport { InputRestAutoCompleteEmployeeService } from './input-rest-auto-complete-employee.service';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule\n ],\n declarations: [ InputRestAutoCompleteEmployeeComponent ],\n providers: [ InputRestAutoCompleteEmployeeService ],\n exports: [ InputRestAutoCompleteEmployeeComponent ]\n})\nexport class InputRestAutoCompleteEmployeeModule {\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\n\n@Injectable()\nexport class InputRestAutoCompleteEmployeeModelService {\n constructor(private http: HttpClientService) {}\n\n query(path: string, body: object): Observable<any> {\n const endpoit = `queries/${path}`;\n return this.http.post(endpoit, body);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { getMoment } from '../utils/helpers';\nimport { InputRestAutoCompleteEmployeeModelService } from './input-rest-auto-complete-employee-model.service';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport interface IConditions {\n fields: Array<string[]>;\n value: string;\n}\n\n@Component({\n selector: 'input-rest-auto-complete-employee-model',\n templateUrl: './input-rest-auto-complete-employee-model.component.html',\n styleUrls: ['./input-rest-auto-complete-employee-model.component.css'],\n})\nexport class InputRestAutoCompleteEmployeeModelComponent implements OnInit {\n private _model: any;\n @Input()\n name: string;\n @Input()\n value: string;\n @Input()\n company: any;\n @Input()\n branch: any;\n @Input()\n employeeType: any;\n @Input()\n placeholder: string;\n @Input()\n readonly: boolean;\n @Input()\n required: boolean;\n @Input()\n disabled: boolean;\n @Input()\n dropdown: boolean;\n @Input()\n forceSelection = true;\n @Input()\n error: object;\n @Input()\n emptyMessage: string;\n @Input()\n keyCode: string;\n @Input()\n keyName = 'name';\n @Input()\n itemSelect: any;\n @Input()\n style: any;\n @Input()\n inputStyle: any;\n\n @Output()\n onBlur: EventEmitter<any> = new EventEmitter();\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter();\n @Output()\n onClear: EventEmitter<any> = new EventEmitter();\n @Output()\n modelChange: EventEmitter<any> = new EventEmitter();\n\n suggestions: any[] = [];\n private useWorkflow: boolean;\n private ngUnsubscribe = new Subject();\n\n constructor(private service: InputRestAutoCompleteEmployeeModelService,\n private activatedRoute: ActivatedRoute,\n ) {}\n\n ngOnInit() {\n this.activatedRoute.data.pipe(takeUntil(this.ngUnsubscribe)).subscribe((data) => {\n this.useWorkflow = !!(data && data.useWorkflow);\n });\n }\n\n filterQuery(event: any) {\n const query = event.query;\n if (!(isNaN(query) && query.toString().length < 3)) {\n try {\n this.service.query('autocompleteEmployee', this.getParamsRest(query)).subscribe(payload => this.formaterResponce(payload.result));\n } catch (e) {\n console.log('Erro ao buscar no back');\n }\n }\n }\n\n formaterResponce(result) {\n this.suggestions = [];\n const valsResult = [];\n result.map(value => {\n const valueConcat = {\n tableId: value.tableId,\n code: '',\n name: '',\n fullname: '',\n admission: '',\n document: '',\n };\n\n if (value.fields && value.fields.length) {\n valueConcat.fullname = value.fields[0].value;\n valueConcat.admission = value.fields[1].value;\n valueConcat.document = value.fields[2].value;\n valueConcat.code = value.fields.length === 4 && value.fields[3].value;\n\n // Pode acontecer de não vim o código.\n if (valueConcat.code) {\n valueConcat.name = valueConcat.code\n .concat(' - ')\n .concat(valueConcat.fullname)\n .concat(' - ')\n .concat(getMoment(valueConcat.admission).format('DD/MM/YYYY'));\n } else {\n valueConcat.name = valueConcat.fullname.concat(' - ').concat(getMoment(valueConcat.admission).format('DD/MM/YYYY'));\n }\n\n valsResult.push(valueConcat);\n }\n });\n this.suggestions = valsResult;\n return valsResult;\n }\n\n getParamsRest(search: string): object {\n const returnFilter = {\n valueSearch: search,\n };\n if (this.company) {\n returnFilter['company'] = this.company;\n }\n if (this.branch) {\n returnFilter['companyBranch'] = this.branch;\n }\n if (this.employeeType) {\n returnFilter['employeeType'] = this.employeeType;\n }\n /**\n * If para uso do BPO\n * Serve para tirar os colaboradores demitidos do dropbox do autocomplete\n */\n if (this.useWorkflow) {\n returnFilter['timeTrackingResumeType'] = {key: \"FIRED\"};\n }\n\n return returnFilter;\n }\n\n /**\n * Externiza a função de select das opções\n * <input-rest-auto-complete-employee (onSelect)=\"onSelectHandle($event)\" ></input-rest-auto-complete-employee>\n * @param option\n */\n selectOption(option: object) {\n this.onSelect.emit(option);\n }\n\n onClearItem(option: object) {\n this.onClear.emit(option);\n }\n\n onBlurItem(option: object) {\n this.onBlur.emit(option);\n }\n\n set model(val) {\n this._model = val;\n this.modelChange.emit(this._model);\n }\n\n @Input()\n get model() {\n return this._model;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {HttpClientModule} from '@angular/common/http';\nimport {AutoCompleteModule} from 'primeng/autocomplete';\n\nimport {InputRestAutoCompleteEmployeeModelComponent} from './input-rest-auto-complete-employee-model.component';\nimport {InputRestAutoCompleteEmployeeModelService} from './input-rest-auto-complete-employee-model.service';\nimport {SharedModule} from '../shared/shared.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n SharedModule,\n HttpClientModule,\n AutoCompleteModule,\n ReactiveFormsModule\n ],\n declarations: [InputRestAutoCompleteEmployeeModelComponent],\n providers: [InputRestAutoCompleteEmployeeModelService],\n exports: [InputRestAutoCompleteEmployeeModelComponent]\n})\nexport class InputRestAutoCompleteEmployeeModelModule {\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\n\n@Injectable()\nexport class InputRestAutoCompleteEnumService {\n constructor(private http: HttpClientService) {}\n\n query(server: string, enumeration: string): Observable<any> {\n const endpoint = 'enumQuery';\n const request = {\n names: [enumeration],\n };\n return this.http.enumQuery(endpoint, request, server);\n }\n}\n","import { Component, OnInit, EventEmitter, Input, Output, ElementRef, ViewChild } from '@angular/core';\nimport { InputRestAutoCompleteEnumService } from './input-rest-auto-complete-enum.service';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'input-rest-auto-complete-enum',\n templateUrl: './input-rest-auto-complete-enum.component.html',\n styleUrls: ['./input-rest-auto-complete-enum.component.css']\n})\nexport class InputRestAutoCompleteEnumComponent implements OnInit {\n\n @ViewChild('autoCompleteObject', { static: true }) _autoCompleteObjectEl: ElementRef;\n @Input() name: string;\n @Input() placeholder: string;\n @Input() readonly: boolean;\n @Input() required: boolean;\n @Input() disabled: boolean;\n @Input() dropdown: boolean;\n @Input() forceSelection = true;\n @Input() error: object;\n @Input() emptyMessage: string;\n @Input() itemSelect: any;\n @Input() inputId: string;\n private isDropdown: boolean;\n @Input() keyToExclude: any = [];\n @Input() keyToKeep: any = [];\n\n @Input() server: string;\n @Input() enumeration: string;\n @Input() form: FormGroup;\n @Input() multiple = false;\n\n @Output() onSelect: EventEmitter<any> = new EventEmitter();\n @Output() onBlur: EventEmitter<any> = new EventEmitter();\n @Output() onClear: EventEmitter<any> = new EventEmitter();\n\n suggestions: any[] = [];\n payload: any[];\n\n constructor(private service: InputRestAutoCompleteEnumService) {\n }\n\n ngOnInit() {\n try {\n this.service.query(this.server, this.enumeration).subscribe(\n payload =>\n this.payload = payload.results[0].items);\n } catch (e) {\n console.log('Erro ao buscar no back');\n }\n }\n\n filterQuery(event: any) {\n const query = event.query;\n this.suggestions = [];\n if (!(isNaN(query) && (query.toString().length < 3))) {\n if (this.keyToExclude && this.keyToExclude.length) {\n this.payload = this.payload && this.payload.filter(record => !this.keyToExclude.includes(record.key));\n } else if (this.keyToKeep && this.keyToKeep.length) {\n this.payload = this.payload && this.payload.filter(record => this.keyToKeep.includes(record.key));\n }\n for (let i = 0; i < this.payload.length; i++) {\n const item = this.payload[i];\n if (item.value.toLowerCase().indexOf(query.toLowerCase()) !== -1) {\n this.suggestions.push(item);\n }\n }\n }\n }\n\n\n /**\n * Externiza a função de select das opções\n * <input-rest-auto-complete-enum (onSelect)=\"onSelectHandle($event)\" ></input-rest-auto-complete-enum>\n * @param option\n */\n selectOption(option: object) {\n this.onSelect.emit(option);\n }\n\n onBlurItem(option: object) {\n if (!this.isDropdown) {\n this.form.controls[this.name].markAsDirty();\n this.onBlur.emit(option);\n } else {\n this.isDropdown = false;\n }\n }\n\n onDropdownClick() {\n this.isDropdown = true;\n }\n\n async onClearItem(option: object) {\n await this.onClear.emit(option);\n this.form.get(this.name).reset();\n }\n\n get autoCompleteObject() {\n return this._autoCompleteObjectEl;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {HttpClientModule} from '@angular/common/http';\nimport {AutoCompleteModule} from 'primeng/autocomplete';\n\nimport {InputRestAutoCompleteEnumComponent} from './input-rest-auto-complete-enum.component';\nimport {InputRestAutoCompleteEnumService} from './input-rest-auto-complete-enum.service';\nimport {SharedModule} from '../shared/shared.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule\n ],\n declarations: [InputRestAutoCompleteEnumComponent],\n providers: [InputRestAutoCompleteEnumService],\n exports: [InputRestAutoCompleteEnumComponent]\n})\nexport class InputRestAutoCompleteEnumModule {\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ServiceType } from '../../core/enums';\n\nimport { HttpClientService } from '../shared/http-client.service';\n\n@Injectable()\nexport class InputRestAutoCompleteModelService {\n constructor(private http: HttpClientService) {}\n\n query(path: string, body: object, service: ServiceType = ServiceType.PAYROLL): Observable<any> {\n return this.http.query(path, body, service);\n }\n}\n","import { Component, OnInit, EventEmitter, Input, Output } from '@angular/core';\nimport { ServiceType } from '../../core/enums/serviceType';\nimport { InputRestAutoCompleteModelService } from './input-rest-auto-complete-model.service';\nimport { isValid, _moment } from '../utils/helpers';\n\nexport interface IConditions {\n fields: Array<string[]>;\n fieldType: string;\n expression: string;\n value: string;\n}\n\n@Component({\n selector: 'input-rest-auto-complete-model',\n templateUrl: './input-rest-auto-complete-model.component.html',\n styleUrls: ['./input-rest-auto-complete-model.component.css'],\n})\n\nexport class InputRestAutoCompleteModelComponent implements OnInit {\n\n private _model: any;\n @Input() name: string;\n @Input() table: string;\n @Input() order: Array<any[]>;\n @Input() fields: Array<any[]>;\n @Input() conditionsFields?: Array<any[]>;\n @Input() conditions: Array<IConditions>;\n @Input() placeholder: string;\n @Input() readonly: boolean;\n @Input() required: boolean;\n @Input() disabled: boolean;\n @Input() dropdown: boolean;\n @Input() forceSelection = true;\n @Input() error: object;\n @Input() emptyMessage: string;\n @Input() keyCode: string;\n @Input() keyName = 'name';\n @Input() concatFieldsForName?: any[];\n @Input() itemSelect: any;\n @Input() style: any;\n @Input() inputStyle: any;\n @Input() keysToExclude: any = [];\n @Input() isWagetype: boolean;\n @Input() companyId: string;\n @Input() wagetypeReferenceDates?: { entryReferenceStartDate: string, entryReferenceEndDate: string };\n @Output() onBlur: EventEmitter<any> = new EventEmitter();\n @Output() onSelect: EventEmitter<any> = new EventEmitter();\n @Output() onClear: EventEmitter<any> = new EventEmitter();\n @Output() onFocus: EventEmitter<any> = new EventEmitter();\n @Output() modelChange: EventEmitter<any> = new EventEmitter();\n\n suggestions: any[] = [];\n\n constructor(private service: InputRestAutoCompleteModelService) {\n }\n\n ngOnInit() {\n\n }\n\n filterQuery(event: any) {\n const query = event.query;\n if (!(isNaN(query) && (query.toString().length < 3))) {\n try {\n if (this.isWagetype) {\n const params = { searchText: query, companyId: this.companyId, ...this.wagetypeReferenceDates };\n return this.service\n .query('autocompleteWagetypeQuery', params, ServiceType.ENTRY)\n .subscribe(payload => this.formaterResponce(payload.result));\n }\n this.service.query('autocomplete', this.getParamsRest(query)).subscribe(payload => this.formaterResponce(payload.result));\n } catch (e) {\n console.log('Erro ao buscar no back');\n }\n }\n }\n\n formaterResponce(result) {\n this.suggestions = [];\n const valsResult = [];\n result.map((value) => {\n const valueConcat = {\n tableId: value.tableId,\n name: '',\n };\n value.fields.map((val) => {\n valueConcat[val.name] = val.value;\n });\n\n if (this.keysToExclude.includes(value && value.tableId)) {\n return;\n }\n\n let fieldName = '';\n if (this.concatFieldsForName) {\n this.concatFieldsForName.map(val => {\n // se o campo for data, formata pro locale do usuário\n if (val.includes('date')) {\n valueConcat[val] = _moment(valueConcat[val]).format('L');\n }\n fieldName += valueConcat[val] + ' - ';\n });\n fieldName = fieldName.slice(0, -3);\n } else {\n if (this.keyCode) {\n fieldName += valueConcat[this.keyCode] + ' - ';\n }\n if (this.keyName) {\n fieldName += valueConcat[this.keyName];\n }\n }\n valueConcat.name = fieldName;\n valsResult.push(valueConcat);\n });\n this.suggestions = valsResult;\n return valsResult;\n }\n\n getParamsRest(search: string): object {\n return {\n 'table': this.table,\n 'fields': this.fields,\n 'order': this.order,\n 'conditions': this.getConditionsRest(search),\n };\n }\n\n getConditionsRest(search: string) {\n const conditiosReturn = [{\n 'fields': this.conditionsFields || this.fields,\n 'expression': 'LIKE',\n 'value': `${ search }`,\n }];\n\n if (this.conditions) {\n this.conditions.map(val => {\n if (!['IS_NULL', 'IS_NOT_NULL', 'IS_TRUE'].includes(val.expression)\n && isValid(val.value)) {\n conditiosReturn.push(val);\n }\n });\n }\n\n return conditiosReturn;\n }\n\n /**\n * Externiza a função de select das opções\n * <input-rest-auto-complete (onSelect)=\"onSelectHandle($event)\" ></input-rest-auto-complete>\n * @param option\n */\n selectOption(option: object) {\n this.onSelect.emit(option);\n }\n\n onClearItem(option: object) {\n this.onClear.emit(option);\n }\n\n onBlurItem(option: object) {\n this.onBlur.emit(option);\n }\n\n onFocusItem(option: object) {\n this.onFocus.emit(option);\n }\n\n set model(val) {\n this._model = val;\n this.modelChange.emit(this._model);\n }\n\n @Input()\n get model() {\n return this._model;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {AutoCompleteModule} from 'primeng/autocomplete';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {HttpClientModule} from '@angular/common/http';\n\nimport {InputRestAutoCompleteModelComponent} from './input-rest-auto-complete-model.component';\nimport {InputRestAutoCompleteModelService} from './input-rest-auto-complete-model.service';\nimport {SharedModule} from '../shared/shared.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule\n ],\n declarations: [InputRestAutoCompleteModelComponent],\n providers: [InputRestAutoCompleteModelService],\n exports: [InputRestAutoCompleteModelComponent]\n})\nexport class InputRestAutoCompleteModelModule {\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\n\n@Injectable()\nexport class InputRestAutoCompleteModelEnumService {\n constructor(private http: HttpClientService) {}\n\n query(server: string, enumeration: string): Observable<any> {\n const endpoit = `enumQuery`;\n const request = {\n names: [enumeration],\n };\n return this.http.enumQuery(endpoit, request, server);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\n\nimport { InputRestAutoCompleteModelEnumService } from './input-rest-auto-complete-model-enum.service';\n\n@Component({\n selector: 'input-rest-auto-complete-model-enum',\n templateUrl: './input-rest-auto-complete-model-enum.component.html',\n styleUrls: ['./input-rest-auto-complete-model-enum.component.css'],\n})\nexport class InputRestAutoCompleteModelEnumComponent implements OnInit {\n private _model: any;\n @Input()\n name: string;\n @Input()\n placeholder: string;\n @Input()\n readonly: boolean;\n @Input()\n required: boolean;\n @Input()\n disabled: boolean;\n @Input()\n dropdown: boolean;\n @Input()\n forceSelection = true;\n @Input()\n error: object;\n @Input()\n emptyMessage: string;\n @Input()\n itemSelect: any;\n @Input()\n style: any;\n @Input()\n inputStyle: any;\n\n @Input()\n server: string;\n\n @Input()\n enumeration: string;\n\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter();\n @Output()\n onBlur: EventEmitter<any> = new EventEmitter();\n @Output()\n onClear: EventEmitter<any> = new EventEmitter();\n @Output()\n modelChange: EventEmitter<any> = new EventEmitter();\n\n suggestions: any[] = [];\n payload: any[];\n\n constructor(private service: InputRestAutoCompleteModelEnumService) {}\n\n ngOnInit() {\n try {\n this.service.query(this.server, this.enumeration).subscribe(payload => (this.payload = payload.results));\n } catch (e) {\n console.log('Erro ao buscar no back');\n }\n }\n\n filterQuery(event: any) {\n const query = event.query;\n this.suggestions = [];\n if (!(isNaN(query) && query.toString().length < 3)) {\n for (let i = 0; i < this.payload[0].items.length; i++) {\n const item = this.payload[0].items[i];\n if (item.value.toLowerCase().indexOf(query.toLowerCase()) !== -1) {\n this.suggestions.push(item);\n }\n }\n }\n }\n\n /**\n * Externiza a função de select das opções\n * <input-rest-auto-complete-enum (onSelect)=\"onSelectHandle($event)\" ></input-rest-auto-complete-enum>\n * @param option\n */\n selectOption(option: object) {\n this.onSelect.emit(option);\n }\n\n onBlurItem(option: object) {\n this.onBlur.emit(option);\n }\n\n onClearItem(option: object) {\n this.onClear.emit(option);\n }\n\n set model(val) {\n this._model = val;\n this.modelChange.emit(this._model);\n }\n\n @Input()\n get model() {\n return this._model;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {AutoCompleteModule} from 'primeng/autocomplete';\nimport {InputRestAutoCompleteModelEnumComponent} from './input-rest-auto-complete-model-enum.component';\nimport {InputRestAutoCompleteModelEnumService} from './input-rest-auto-complete-model-enum.service';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {HttpClientModule} from '@angular/common/http';\n\nimport {SharedModule} from '../shared/shared.module';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule\n ],\n declarations: [InputRestAutoCompleteModelEnumComponent],\n providers: [InputRestAutoCompleteModelEnumService],\n exports: [InputRestAutoCompleteModelEnumComponent]\n})\nexport class InputRestAutoCompleteModelEnumModule {\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\n\n@Injectable()\nexport class InputRestAutoCompleteJobpositionService {\n constructor(private http: HttpClientService) {}\n\n query(path: string, body: object): Observable<any> {\n const endpoit = `queries/${path}`;\n return this.http.post(endpoit, body);\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\nimport { InputRestAutoCompleteJobpositionService } from './input-rest-auto-complete-jobposition.service';\n\n@Component({\n selector: 'input-rest-auto-complete-jobposition',\n templateUrl: './input-rest-auto-complete-jobposition.component.html',\n styleUrls: ['./input-rest-auto-complete-jobposition.component.css'],\n})\nexport class InputRestAutoCompleteJobpositionComponent implements OnInit {\n @Input()\n name: string;\n @Input()\n value: string;\n @Input()\n companyId: string;\n @Input()\n creationDate: string;\n @Input()\n expirationDate: string;\n @Input()\n jobpositionsFilter: Array<string>;\n @Input()\n ignoredJobpositions: Array<string>;\n @Input()\n order: Array<any>;\n @Input()\n placeholder: string;\n @Input()\n readonly: boolean;\n @Input()\n required: boolean;\n @Input()\n disabled: boolean;\n @Input()\n dropdown: boolean;\n @Input()\n forceSelection = true;\n @Input()\n error: object;\n @Input()\n emptyMessage: string;\n @Input()\n itemSelect: any;\n @Input()\n form: FormGroup;\n @Input()\n inputId: string;\n @Input()\n minCharactersToSearch = 3;\n @Input()\n multiple = false;\n private isDropdown: boolean;\n\n @Output()\n onBlur: EventEmitter<any> = new EventEmitter();\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter();\n @Output()\n onClear: EventEmitter<any> = new EventEmitter();\n @Output()\n onFocus: EventEmitter<any> = new EventEmitter();\n\n suggestions: any[] = [];\n\n constructor(private service: InputRestAutoCompleteJobpositionService) { }\n\n ngOnInit() { }\n\n filterQuery(event: any) {\n const query = event.query;\n if (!(isNaN(query) && query.toString().length < this.minCharactersToSearch)) {\n try {\n this.service.query('autocompleteJobpositionQuery',\n this.getParamsRest(query)).subscribe(payload => this.formaterResponse(payload.result));\n } catch (e) {\n console.log('Erro ao buscar no back');\n }\n }\n }\n\n formaterResponse(result) {\n this.suggestions = [];\n const valsResult = [];\n result.map(value => {\n const valueConcat = {\n tableId: value.tableId,\n name: '',\n };\n\n value.fields.map(val => {\n valueConcat[val.name] = val.value;\n });\n\n valueConcat.name = valueConcat['Code'] + ' - ' + valueConcat['Name'];\n valsResult.push(valueConcat);\n });\n this.suggestions = valsResult;\n return valsResult;\n }\n\n getParamsRest(search: string): object {\n const returnFilter = {\n searchText: search,\n companyId: this.companyId ? this.replace(this.companyId) : null,\n creationDate: this.creationDate ? this.replace(this.creationDate) : null,\n expirationDate: this.expirationDate ? this.replace(this.expirationDate) : null,\n jobpositionsFilter: this.jobpositionsFilter ? this.replaceArray(this.jobpositionsFilter) : null,\n ignoredJobpositions: this.ignoredJobpositions ? this.replaceArray(this.ignoredJobpositions) : null,\n order: this.order,\n };\n\n return returnFilter;\n }\n\n private replace(value: string): string {\n return value.replace(new RegExp(\"'\", 'g'), \"\");\n }\n\n private replaceArray(value: Array<string>): Array<string> {\n return value.map(e => this.replace(e));\n }\n\n /**\n * Externiza a função de select das opções\n * <input-rest-auto-complete-jobposition (onSelect)=\"onSelectHandle($event)\" ></input-rest-auto-complete-jobposition>\n * @param option\n */\n selectOption(option: object) {\n this.onSelect.emit(option);\n }\n\n onClearItem(option: object) {\n this.onClear.emit(option);\n }\n\n onBlurItem(option: object) {\n if (!this.isDropdown) {\n this.form.controls[this.name].markAsDirty();\n this.onBlur.emit(option);\n } else {\n this.isDropdown = false;\n }\n }\n\n onDropdownClick() {\n this.isDropdown = true;\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { AutoCompleteModule } from \"primeng/autocomplete\";\nimport { SharedModule } from \"primeng/shared\";\nimport { InputRestAutoCompleteJobpositionComponent } from \"./input-rest-auto-complete-jobposition.component\";\nimport { InputRestAutoCompleteJobpositionService } from \"./input-rest-auto-complete-jobposition.service\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule\n ],\n declarations: [ InputRestAutoCompleteJobpositionComponent ],\n providers: [ InputRestAutoCompleteJobpositionService ],\n exports: [ InputRestAutoCompleteJobpositionComponent ]\n})\nexport class InputRestAutoCompleteJobpositionModule {\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\n\n@Injectable()\nexport class ListRestService {\n constructor(private http: HttpClientService) {}\n\n query(path: string, body: object): Observable<any> {\n const endpoit = `queries/${path}`;\n return this.http.post(endpoit, body);\n }\n\n queryEntity(path: string, body: object): Observable<any> {\n return this.http.get(path);\n }\n}\n","import { Component, OnInit, OnChanges, SimpleChanges, Input, Output, EventEmitter, ViewEncapsulation } from '@angular/core';\nimport { ListRestService } from './list-rest.service';\nimport { TranslateService } from '@ngx-translate/core';\n\nexport interface IColumns {\n label: string;\n field: string;\n}\n\n@Component({\n selector: 'list-rest',\n templateUrl: './list-rest.component.html',\n styleUrls: ['./list-rest.component.scss'],\n})\nexport class ListRestComponent implements OnInit, OnChanges {\n @Input()\n emptyMessage: string;\n @Input()\n urlRest: string;\n @Input()\n keyPayload: string;\n @Input()\n columns: Array<IColumns[]>;\n @Input()\n arguments? = { page: { current: 1, size: '10' } };\n @Input()\n filterValues?: (event?: any) => void;\n @Input()\n getRowActionsFun?: Function;\n @Input()\n scope?: any;\n @Input()\n reload?: boolean;\n @Input()\n isEntity?: boolean;\n @Input() alwaysShowPaginator: boolean = false;\n\n @Output()\n onLoadPayload: EventEmitter<any> = new EventEmitter();\n @Output()\n loadedList = new EventEmitter<boolean>();\n\n totalRecords: number;\n payload: any[];\n\n constructor(private translateService: TranslateService, private service: ListRestService) {}\n\n ngOnInit() {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.hasOwnProperty('arguments')) {\n this.arguments = Object.assign({}, changes.arguments.currentValue);\n this.getList(1);\n }\n if (changes.hasOwnProperty('reload') && changes.reload.currentValue === true) {\n this.getList(1);\n }\n }\n\n getList(page: number) {\n this.loadedList.emit(true);\n try {\n const args = Object.assign({}, this.arguments);\n args.page.current = page;\n if (this.isEntity) {\n this.service.queryEntity(this.urlRest, args).subscribe(payload => {\n this.onResponseQuery(payload, page);\n this.loadedList.emit(false);\n });\n } else {\n this.service.query(this.urlRest, args).subscribe(payload => {\n this.onResponseQuery(payload.result, page);\n this.loadedList.emit(false);\n });\n }\n } catch (e) {\n console.log('Erro ao tentar buscar lista no back');\n }\n }\n\n onResponseQuery(payload, page) {\n this.payload = this.filterValues ? this.filterValues.bind(this.scope)(payload[this.keyPayload]) : payload[this.keyPayload];\n this.onLoadPayload.emit({\n result: payload[this.keyPayload],\n page: page,\n });\n this.totalRecords = this.isEntity ? payload.totalElements : payload.countResult;\n }\n\n onHandlePage(event) {\n const currentPage = event.first / event.rows + 1;\n this.getList(currentPage);\n }\n\n getRowActions(data: any) {\n return this.getRowActionsFun.call(this.scope, data);\n }\n\n handleClickActions(button): void {\n const toClick = button.containerViewChild.nativeElement.getElementsByClassName('ui-splitbutton-menubutton')[0] as HTMLElement;\n toClick.click();\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\nimport { ButtonModule } from \"primeng/button\";\nimport { TableModule } from \"primeng/table\";\nimport { SplitButtonModule } from \"primeng/splitbutton\";\nimport { InputTextModule } from \"primeng/inputtext\";\n\nimport { SharedModule } from \"../shared/shared.module\";\nimport { ListRestComponent } from \"./list-rest.component\";\nimport { ListRestService } from \"./list-rest.service\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n SharedModule,\n HttpClientModule,\n TableModule,\n InputTextModule,\n ButtonModule,\n SplitButtonModule,\n ],\n declarations: [ListRestComponent],\n providers: [ListRestService],\n exports: [ListRestComponent],\n})\nexport class ListRestModule {\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'spinner-loader',\n templateUrl: './spinner-loader.component.html'\n})\nexport class SpinnerLoaderComponent {\n}\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\nimport { SpinnerLoaderComponent } from './spinner-loader.component';\n\n@NgModule({\n imports: [\n FormsModule,\n ProgressSpinnerModule\n ],\n declarations: [\n SpinnerLoaderComponent\n ],\n exports: [\n SpinnerLoaderComponent\n ]\n})\nexport class SpinnerLoaderModule {}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class TypeAdmissionServices {\n private company: any = {};\n private contractNationality: any = {};\n private contractType: any = {};\n\n constructor() {}\n\n public setCompany(company: any) {\n this.company = company;\n }\n\n public getCompanyId() {\n return this.company.companyId;\n }\n\n public setContractNationality(contractNationality: any) {\n this.contractNationality = contractNationality;\n }\n\n public isBrazilianAdmission() {\n return this.company.abbreviation === 'BR' && this.contractNationality.key === 'National';\n }\n\n public isBrazilAndforeignContract() {\n return this.company.abbreviation === 'BR' && this.contractNationality.key !== 'National';\n }\n\n public isForeignAdmission() {\n return this.company.abbreviation !== 'BR' && this.contractNationality.key === 'National';\n }\n\n public isForeignAndforeignContract() {\n return this.company.abbreviation !== 'BR' && this.contractNationality.key !== 'National';\n }\n\n public isBrazilianCompany() {\n return this.company.abbreviation === 'BR';\n }\n\n public isNationalContract() {\n return this.contractNationality.key === 'National';\n }\n\n public getCountryID() {\n return this.company.id;\n }\n\n public get contractNationalityKey() {\n return this.contractNationality.key;\n }\n\n public get abbreviation() {\n return this.company.abbreviation;\n }\n\n public getCurrency() {\n return this.company.currency;\n }\n\n public getStructureID() {\n return this.company.structure;\n }\n\n public setContractType(contractType: any) {\n this.contractType = contractType;\n }\n\n public get contractTypeKey() {\n return this.contractType ? this.contractType.key : this.contractType;\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TypeAdmissionServices} from './type-admission.services';\n\n@NgModule({\n imports: [CommonModule],\n providers: [TypeAdmissionServices],\n})\nexport class TypeAdmissionModule {\n}\n","import * as _moment from 'moment';\n\nconst moment = _moment;\n\nexport function isRequired(value) {\n return value !== undefined && value !== null && value.length > 0;\n}\n\nexport function isMax(value, max) {\n return value.length <= max;\n}\n\nexport function isNumber(value) {\n const regex = /^\\d*$/;\n return regex.test(value);\n}\n\nexport function notEmpty(value) {\n return value ? value : false;\n}\n\nexport function numberOrZero(value) {\n return isNumber(notEmpty(value)) ? Number.parseInt(value) : 0;\n}\n\nexport function sun(...val) {\n return val.reduce((pv, cv) => numberOrZero(cv) + pv, 0);\n}\n\nexport function firstNameLengthIsValid(name) {\n const firstName = name.split(' ');\n return firstName[0].trim().length > 0 ? firstName[0].trim().length >= 2 : true;\n}\n\nexport function firstNameIsValid(name) {\n const firstName = name.split(' ');\n return firstName.length >= 2 && firstName[1].length >= 1;\n}\n\nexport function fullNameLengthIsValid(fullName) {\n return fullName.length <= 70;\n}\n\nexport function containsMoreThanTwoRepeatedCharacters(fullName) {\n const regex = /([a-zA-Z])\\1{2}/g;\n return !regex.test(fullName);\n}\n\nexport function containsMoreThanOneConsecutiveAbbreviation(fullName) {\n const regex = /(\\b.\\s)(.\\s)(.\\b)\\1?/g;\n return !regex.test(fullName);\n}\n\nexport function containsMoreThanOneConsecutiveBlankSpace(fullName) {\n const regex = /(\\w[ ]{2,}\\w)/;\n return !regex.test(fullName);\n}\n\n/**\n* Validada se nome não contém caracteres especiais.\n* @param fullName Nome completo.\n* @returns boolean de acordo com a validação.\n */\nexport function containsSpecialCharacters(fullName) {\n const regex = /[[\\]!@#$%&*_+=`´{}^~<>.,:;?|()\\/\\\\-]/;\n return !regex.test(fullName);\n}\n\nexport function removeWhiteSpaces(msg: string) {\n if (msg && String(msg)) {\n return String(msg).replace(/\\s/g,\"\");\n }\n return String(msg);\n}\n\nexport function isValidPIS(pis) {\n const multiplicadorBase = '3298765432';\n let total = 0;\n let resto = 0;\n let multiplicando = 0;\n let multiplicador = 0;\n let digito = 99;\n\n // Retira a mascara\n const numeroPIS = pis.replace(/[^\\d]+/g, '');\n\n if (\n numeroPIS.length !== 11 ||\n numeroPIS === '00000000000' ||\n numeroPIS === '11111111111' ||\n numeroPIS === '22222222222' ||\n numeroPIS === '33333333333' ||\n numeroPIS === '44444444444' ||\n numeroPIS === '55555555555' ||\n numeroPIS === '66666666666' ||\n numeroPIS === '77777777777' ||\n numeroPIS === '88888888888' ||\n numeroPIS === '99999999999'\n ) {\n return false;\n } else {\n for (let i = 0; i < 10; i++) {\n multiplicando = parseInt(numeroPIS.substring(i, i + 1));\n multiplicador = parseInt(multiplicadorBase.substring(i, i + 1));\n total += multiplicando * multiplicador;\n }\n\n resto = 11 - (total % 11);\n resto = resto === 10 || resto === 11 ? 0 : resto;\n\n digito = parseInt('' + numeroPIS.charAt(10));\n return resto === digito;\n }\n}\n\nexport function validateBirthDate(birthday, date) {\n if (birthday && date) {\n const birthdayCompare = moment(typeof birthday === 'string' ? birthday.replace(/[^\\d]+/g, '') : birthday, 'DDMMYYYY')\n .format('YYYY-MM-DD')\n .toString();\n const dateCompare = moment(date.replace(/[^\\d]+/g, ''), 'DDMMYYYY')\n .format('YYYY-MM-DD')\n .toString();\n return moment(dateCompare).isSameOrAfter(birthdayCompare);\n }\n}\n\nexport function isBirthDayValid(birthdayCompare, dateCompare) {\n if (birthdayCompare && dateCompare) {\n return dateCompare.isSameOrAfter(birthdayCompare);\n }\n}\n\nexport function isDateExpirationBeforeExpeditionDate(expeditionDateCompare, dateCompare) {\n if (expeditionDateCompare && dateCompare) {\n return dateCompare.isSameOrAfter(expeditionDateCompare);\n }\n}\n\nexport function isDateSameOrAfterCurrentDate(dateCompareMoment) {\n if (dateCompareMoment) {\n const currentDateCompare = moment();\n return dateCompareMoment.isSameOrAfter(currentDateCompare);\n }\n}\n\nexport function isDateCompare(momentDate, momentDateCompare, compare) {\n if (momentDate && momentDate.isValid() && momentDateCompare && compare) {\n return momentDate[compare](momentDateCompare);\n }\n return true;\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { HttpClientService } from '../components/shared/http-client.service';\nimport { CompanyIndicationType } from '../core/enums';\n\n@Injectable()\nexport class CompanyIndicationsService {\n private companyUseWorkstationGroupSubject = new Subject<any>();\n private useWorkstationGroup: any;\n private structure;\n\n constructor(private http: HttpClientService) {}\n\n getCompanyIndications(companyId: string, companyIndicationTypes: CompanyIndicationType[]) {\n return this.http\n .query('companyIndicationQuery', { companyId: companyId, companyIndicationType: companyIndicationTypes })\n .pipe(map((payload: any) => payload.result));\n }\n\n setCompanyUseWorkstationGroup(indication) {\n this.companyUseWorkstationGroupSubject.next(indication);\n }\n\n setStructure(indication) {\n this.structure = indication;\n }\n\n getStructure() {\n return this.structure;\n }\n\n getCompanyUseWorkstationGroup(): Observable<any> {\n return this.companyUseWorkstationGroupSubject.asObservable();\n }\n\n setUseWorkstationGroup(useIndication) {\n this.useWorkstationGroup = useIndication;\n }\n\n getUseWorkstationGroup() {\n return this.useWorkstationGroup;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { HttpClientService } from '../components/shared/http-client.service';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class IntegrationService {\n constructor(private http: HttpClientService) {}\n\n hasModule(module): Observable<any> {\n return this.http.query('hasModule', { module: module });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { MessageService } from \"primeng/api\";\nimport { map, catchError } from \"rxjs/operators\";\nimport { Observable, throwError } from \"rxjs\";\nimport { EntityODataParameter } from '../core/entities';\nimport { FieldType, FormField } from '@seniorsistemas/angular-components';\nimport * as moment_ from 'moment';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { PaginationData } from '../core/interfaces';\n\nconst moment = moment_;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LookupParametersService {\n\n private searchLookupFields: any;\n private endpoint: string;\n private parameters: any;\n private concatFields: any;\n private concatOtherFields: any;\n private lookupDisplayField: string;\n private searchFields: any;\n private httpPostParams: any;\n private page: PaginationData;\n private _httpParams: HttpParams = new HttpParams();\n\n constructor(private http: HttpClient, private messageService: MessageService, private translateService: TranslateService) {\n }\n\n\n lookupRequestPost(httpPostParams: any, endpoint: string, concatFields: Array<FormField> = null, lookupDisplayField: string) {\n this.httpPostParams = httpPostParams;\n this.postConfigPageSize(httpPostParams);\n this.lookupDisplayField = lookupDisplayField;\n this.concatFields = concatFields;\n return this.postDataLookup(endpoint);\n }\n\n postConfigPageSize(httpPostParams: any) {\n if (httpPostParams) {\n this.httpPostParams.page.size = httpPostParams.page && httpPostParams.page.size ? httpPostParams.page.size : 10;\n this.httpPostParams.page.current = httpPostParams.page && httpPostParams.page.current ? httpPostParams.page.current : 0;\n }\n }\n\n /**\n * Função chamada no change do autocomplete (Lookup fechado).\n * @param event valor atribuido no autocomplete do lookup fechado\n * @param endpoint endpoint que sera feito a requisição.\n * @param searchLookupFields campos que seram filtrados pelo autocomplete (lookup fechado)\n * @param searchFields array com os campos do filtro\n * @param concatFields array com os formFields que seram concatenados\n * @param concatOtherFields converte os campos enumeração para serem concatenados na grid\n * @param lookupDisplayField campo que sera alterado com os dados concatenados informado acima\n * @param params parâmetros para ser usado no lookup\n */\n lookupRequest(event: any, endpoint: string, searchLookupFields: Array<String>, searchFields: Array<FormField>,\n concatFields: Array<FormField>, lookupDisplayField: string, concatOtherFields: Array<FormField> = [], params: any = []) {\n\n this.searchLookupFields = searchLookupFields;\n this.endpoint = endpoint;\n this.parameters = params;\n this.concatFields = concatFields;\n this.concatOtherFields = concatOtherFields;\n this.lookupDisplayField = lookupDisplayField;\n this.searchFields = searchFields;\n\n this.generateLookupParameters(event);\n this.configHttpParamsPagination('10', '0');\n this.configHttpParamsOrderBy(event.multiSortMeta);\n return this.getDataLookup();\n }\n\n /**\n * Função chamada no change do filtro do lookup (Lookup aberto).\n * @param event valor atribuido no autocomplete do lookup fechado\n * @param endpoint endpoint que sera feito a requisição.\n * @param searchFields array com os campos do filtro\n * @param concatFields array com os formFields que seram concatenados\n * @param concatOtherFields converte os campos enumeração para serem concatenados na grid\n * @param lookupDisplayField campo que sera alterado com os dados concatenados informado acima\n * @param params parâmetros para ser usado no lookup\n */\n searchRequest(event: any, endpoint: string, searchFields: Array<FormField>,\n concatFields: Array<FormField>, lookupDisplayField: string, concatOtherFields: Array<FormField> = [], params: any = []) {\n\n this.endpoint = endpoint;\n this.parameters = params;\n this.concatFields = concatFields;\n this.concatOtherFields = concatOtherFields;\n this.lookupDisplayField = lookupDisplayField;\n this.searchFields = searchFields;\n this.generateGridParameters(event.filterData);\n this.configHttpParamsPagination(event.rows.toString(), Math.floor(event.first / event.rows).toString());\n this.configHttpParamsOrderBy(event.multiSortMeta);\n return this.getDataLookup();\n }\n\n\n /**\n * GET\n * @param endpoint Busca e faz o tratamento dos dados do lookup.\n * @param httpParams HttpParams\n */\n private getDataLookup() {\n return this.getUrlDataLookup(this.endpoint, this.httpParams).pipe(\n map((payload: any) => {\n const { contents } = payload;\n\n if (this.concatFields && this.concatFields.length) {\n contents.map(value => {\n this.convertGridFieldValue(value);\n value[this.lookupDisplayField] = this.generateDisplayFieldValue({ ...value });\n });\n }\n\n return payload;\n }),\n );\n }\n\n\n /**\n * POST\n * @param endpoint Busca e faz o tratamento dos dados do lookup.\n * @param httpParams HttpParams\n */\n private postDataLookup(endpoint) {\n return this.postUrlDataLookup(endpoint, this.httpPostParams).pipe(\n map((payload: any) => {\n const { contents } = payload;\n\n if (this.concatFields && this.concatFields.length) {\n contents.map(value => {\n if (this.concatOtherFields) {\n this.convertGridFieldValue(value);\n }\n value[this.lookupDisplayField] = this.generateDisplayFieldValue({ ...value });\n });\n }\n\n return payload;\n }),\n );\n }\n\n /**\n * Converte o valor do campo para apresentação no lookup.\n *\n * @param content Valor do campo para conversão.\n * @param field FormField do campo.\n */\n private convertLookupFieldValue(content: any, field: FormField): any {\n if (content) {\n switch (field.type) {\n case FieldType.Date:\n content = moment(content).format('L');\n break;\n case FieldType.Enum:\n const enumValue = field.options.filter((enumeration: any) => enumeration.value === content)[0];\n content = enumValue ? enumValue.label : content;\n break;\n }\n }\n\n return content;\n }\n\n /**\n * Converte os dados para visualização na grid\n * @param content\n */\n private convertGridFieldValue(content: any): void {\n if (content) {\n this.concatOtherFields.forEach((field: FormField) => {\n switch (field.type) {\n case FieldType.Enum:\n const enumValue = field.options.filter((enumeration: any) => enumeration.value === content[field.name])[0];\n content[field.name] = enumValue ? enumValue.label : content[field.name];\n break;\n }\n });\n }\n }\n\n /**\n * Faz a concatenação de valores do registro para ser apresentado no lookup ao selecionar o dado.\n * @param contentValue Valor do registro.\n */\n private generateDisplayFieldValue(contentValue: any): string {\n let displayField = '';\n\n this.concatFields.forEach((field: FormField) => {\n const fieldValue = this.convertLookupFieldValue(contentValue[field.name], field);\n if (fieldValue) {\n if (displayField) {\n displayField += ` - ${fieldValue}`;\n } else {\n displayField = fieldValue;\n }\n }\n });\n return displayField;\n }\n\n /**\n * Gera os parametros de pesquisa via lookup\n * @param value\n */\n private generateLookupParameters(value?: string): void {\n let lookupParameters = '';\n this.searchLookupFields.forEach((lookupField: string) => {\n const searchField = this.searchFields.filter(field => lookupField === field.name)[0];\n if (lookupParameters) {\n lookupParameters += ` or ${this.getParameterByType(searchField.type, lookupField, value)}`;\n } else {\n lookupParameters = `${this.getParameterByType(searchField.type, lookupField, value)}`;\n }\n });\n\n this.parameters.forEach((parameter: EntityODataParameter) => {\n if (lookupParameters) {\n lookupParameters += ` and ${parameter.toString()}`;\n } else {\n lookupParameters = `${parameter.toString()}`;\n }\n });\n\n this.httpParams = new HttpParams().set('filter', lookupParameters);\n }\n\n /**\n * Gera os parametros de pesquisa via pesquisa na grid\n * @param filterData\n */\n private generateGridParameters(filterData: object): void {\n let gridParameters = '';\n Object.keys(filterData).forEach((attribute: string) => {\n if (filterData[attribute]) {\n const searchField = this.searchFields.filter(field => attribute === field.name)[0];\n if (gridParameters) {\n gridParameters += ` and ${this.getParameterByType(searchField.type, attribute, filterData[attribute])}`;\n } else {\n gridParameters += this.getParameterByType(searchField.type, attribute, filterData[attribute]);\n }\n }\n });\n\n this.parameters.forEach((parameter: EntityODataParameter) => {\n if (gridParameters) {\n gridParameters += ` and ${parameter.toString()}`;\n } else {\n gridParameters = `${parameter.toString()}`;\n }\n });\n\n this.httpParams = new HttpParams().set('filter', gridParameters);\n }\n\n /**\n * Gera a string de consulta CRUD de um campo.\n * @param type Tipo do campo.\n * @param attribute Nome do atribute da entidade\n * @param value Valor do campo\n */\n private getParameterByType(type: FieldType, attribute: string, value: any): string {\n switch (type) {\n case FieldType.Date:\n return `${attribute} eq '${moment(value).format('YYYY-MM-DD')}'`;\n case FieldType.Enum:\n return `${attribute} eq '${value}'`;\n case FieldType.Integer:\n return `${attribute} eq ${value}`;\n case FieldType.Autocomplete:\n return `${attribute} eq '${value.id}'`;\n default:\n return `containing(lower(${attribute}), lower('${value}'))`;\n }\n }\n\n /**\n *\n * @param size a quantidade de registros na página.\n * @param offset o número da página a ser recuperada, lembrando que a numeração de páginas começa em 0 (zero).\n */\n private configHttpParamsPagination(size: string, offset: string): void {\n this.httpParams = this.httpParams.set('size', size);\n this.httpParams = this.httpParams.set('offset', offset);\n }\n\n /**\n * Gera o orderby do HttpParams\n */\n private configHttpParamsOrderBy(multiSortMeta: { field: string; order: number }[]): void {\n if (multiSortMeta && multiSortMeta.length) {\n let orderBy = '';\n multiSortMeta.map(value => {\n if (orderBy) {\n orderBy += `,${value.field}+${value.order === 1 ? 'asc' : 'desc'}`;\n } else {\n orderBy += `${value.field}+${value.order === 1 ? 'asc' : 'desc'}`;\n }\n });\n\n this.httpParams = this.httpParams.set('orderby', orderBy);\n }\n }\n\n set httpParams(value: HttpParams) {\n this._httpParams = value;\n }\n\n get httpParams() {\n return this._httpParams;\n }\n\n private getUrlDataLookup(endpoint: string, httpParams: HttpParams): Observable<any> {\n if (httpParams) {\n return this.http.get(`${endpoint}`, { params: httpParams })\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed_search\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n } else {\n return this.http.get(`${endpoint}`)\n .pipe(\n catchError((exception: any): any => {\n if (exception && exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed_search\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n }\n\n private postUrlDataLookup(endpoint: string, httpParams: any): Observable<any> {\n if (httpParams) {\n return this.http.post(`${endpoint}`, { ...httpParams })\n .pipe(\n catchError((exception: any): any => {\n if (exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n } else {\n return this.http.post(`${endpoint}`, {})\n .pipe(\n catchError((exception: any): any => {\n if (exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClientService } from '../components/shared/http-client.service';\nimport { CoreFieldType } from '../core/enums/coreFieldType';\nimport { FieldType } from '@seniorsistemas/angular-components';\nimport * as _moment from 'moment';\nimport { map } from 'rxjs/operators';\nimport { ServiceType } from '../core/enums/serviceType';\n\n\nconst moment = _moment;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AutocompleteParametersService {\n\n constructor(private httpClienteService: HttpClientService) { }\n\n public getAutoComplete(entity: string, params: object, searchFields: any, codeIsString: boolean, service: ServiceType) {\n const getParams = this.generateGridParameters(params, searchFields, codeIsString);\n return this.httpClienteService.getAutoComplete(entity, getParams, service)\n .pipe(map((result) => result && result.contents));\n }\n\n public getAutoCompleteQuery(query: string, params: object) {\n return this.httpClienteService.query(query, params)\n .pipe(map((data) => data && data.result));\n }\n\n /**\n * Gera os parametros de pesquisa via pesquisa na grid\n * @param filterData\n */\n private generateGridParameters(filterData: object, searchFields: any, codeIsString: boolean): string {\n let gridParameters = \"\";\n Object.keys(filterData).forEach((attribute: string) => {\n const filterSearchField = searchFields && searchFields.filter(field => attribute === field.name)[0];\n let filterQueryString = null;\n let operatorsQuery = \"\";\n let searchField: any = filterSearchField && filterSearchField.type;\n if (!filterSearchField && attribute != CoreFieldType.searchValue) searchField = FieldType.String;\n if (!filterSearchField && attribute === CoreFieldType.searchValue) searchField = CoreFieldType.searchValue;\n if (gridParameters) operatorsQuery = \" and \";\n filterQueryString = this.getParameterByType(searchField, attribute, filterData[attribute], codeIsString);\n if (filterQueryString) gridParameters += ` ${operatorsQuery} ${filterQueryString}`;\n });\n return gridParameters;\n }\n\n /**\n * Gera a string de consulta CRUD de um campo.\n * @param type Tipo do campo.\n * @param attribute Nome do atribute da entidade\n * @param value Valor do campo\n */\n private getParameterByType(type: any, attribute: string, value: any, codeIsString: boolean): string {\n if (!value && type != CoreFieldType.searchValue) return `${attribute} is null`;\n if (value && value === 'not null' && type != CoreFieldType.searchValue) return `${attribute} is not null`;\n switch (type) {\n case FieldType.Date:\n return `${attribute} eq '${moment(value).format('YYYY-MM-DD')}'`;\n case FieldType.Enum:\n return `${attribute} eq '${value}'`;\n case FieldType.Integer:\n return `${attribute} eq ${value}`;\n case FieldType.Autocomplete:\n return `${attribute} eq '${value.id}'`;\n case CoreFieldType.searchValue:\n return `${this.getParameterBySearchType(value, codeIsString)}`;\n default:\n return this.getSearchFilterString(attribute, value);\n }\n }\n\n /**\n * Retorna o filtro formatador para ser chamdo no endpoint\n * @param valueFilterSearch valor pra adicionar no filtro\n */\n private getParameterBySearchType(valueFilterSearch: any, codeIsString: boolean): string {\n let searchFilter = \"\";\n if (valueFilterSearch) {\n for (const [key, value] of Object.entries(valueFilterSearch)) {\n if (key === \"code\" && Number(value)) {\n const hasQuote = codeIsString ? \"'\" : \"\";\n if (searchFilter)\n searchFilter += ` or ${key} eq ${hasQuote}${value}${hasQuote}`;\n else\n searchFilter += `${key} eq ${hasQuote}${value}${hasQuote}`;\n } else if (key != \"code\") {\n if (searchFilter)\n searchFilter += ` or ${this.getSearchFilterString(key, value)}`;\n else\n searchFilter += this.getSearchFilterString(key, value);\n }\n }\n searchFilter = searchFilter ? `(${searchFilter})` : '';\n }\n return searchFilter;\n }\n\n /**\n * Formata o filtro quando for \"Ou\"\n * @param attribute\n * @param value\n */\n private getSearchFilterString(attribute: string, value: any): string { return `containing(lower(${attribute}), lower('${value}'))`; }\n\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\nimport { Report, ReportIn, ReportOut, GetParametersOut } from \"../core/interfaces\";\n\nconst ENDPOINTS = {\n reportParameters: \"platform/report/queries/getParameters\",\n reportUri: \"platform/report/queries/getReportUri\",\n reportStatus: \"platform/report/queries/getReportStatus\",\n reportsByName: \"platform/report/queries/findReportsByName\",\n reportsRunning: \"platform/report/queries/getRunningReports\",\n reportsGenerate: \"platform/report/actions/generateReport\"\n};\n\n@Injectable({\n providedIn: \"root\"\n})\nexport class ReportService {\n constructor(private http: HttpClient) {}\n\n /**\n * Procura por relatórios que contenham no seu nome a string conforme parâmetro `name`\n * @param name Nome ou parte do nome do relatório\n */\n public findReportsByName(\n name: string,\n ): Observable<Report[]> {\n return this.http\n .post(`${ENDPOINTS.reportsByName}`, {\n name: name\n })\n .pipe(\n map((payload: any) => {\n const result = payload.reports ? payload.reports : [];\n return result as Report[];\n })\n );\n }\n\n /**\n * Procura por relatórios que contenham o nome exato conforme parâmetro `name`.\n * No momento a plataforma não disponibilza uma query exata para isso.\n * Portanto este método procura pelo nome informado dentro do resultado da query `findReportsByName`\n * @param name Nome exato do relatório\n */\n public findReportByName(\n name: string,\n ): Observable<Report> {\n name = name || \"\";\n return this.findReportsByName(name).pipe(\n map((payload: any) => {\n const filtered =\n payload && payload.filter((report: any) => report.name && report.name === name);\n return filtered && filtered.length == 1 ? (filtered[0] as Report) : null;\n })\n );\n }\n\n /**\n * Retorna a lista de parâmetros de entrada do relatório\n * @param reportId Id do relatório\n * @param reportFileId Identificador de um arquivo de relatório (opcional)\n */\n public getParameters(reportId: string, reportFileId?: any): Observable<GetParametersOut> {\n return this.http\n .post(`${ENDPOINTS.reportParameters}`, { id: reportId, reportFileId: reportFileId })\n .pipe(\n map((payload: any) => {\n return payload ? (payload as GetParametersOut) : null;\n })\n );\n }\n\n /**\n * Retorna a URL para visualização do relatório gerado\n * @param reportTicket Ticket do relatório gerado\n */\n public getReportUri(reportTicket: string): Observable<string> {\n return this.http.post(`${ENDPOINTS.reportUri}`, { reportTicket: reportTicket }).pipe(\n map((payload: any) => {\n return payload && payload.reportUri;\n })\n );\n }\n\n /**\n * Retorna o status do relatório\n * @param reportTicket Ticket do relatório gerado\n */\n public getReportStatus(reportTicket: string): Observable<string> {\n return this.http.post(`${ENDPOINTS.reportStatus}`, { reportTicket: reportTicket }).pipe(\n map((payload: any) => {\n return payload && payload.reportStatus;\n })\n );\n }\n\n /**\n * Gera o relatório\n * @param reportIn Dados do relatório a ser gerado\n */\n public generateReport(reportIn: ReportIn): Observable<ReportOut> {\n return this.http.post(`${ENDPOINTS.reportsGenerate}`, reportIn).pipe(\n map((payload: any) => {\n return payload ? (payload as ReportOut) : null;\n })\n );\n }\n\n /**\n * Retorna uma lista com os relatórios sendo executados ou já finalizados\n * @param page página inicial\n * @param size tamanho da página\n */\n public getRunningReports(page: number, size: number): Observable<any> {\n return this.http.post(`${ENDPOINTS.reportsRunning}`, {\n offset: page,\n limit: size,\n orderByDesc: true,\n filterCancelled: true\n });\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { BehaviorSubject, Subject, Observable } from \"rxjs\";\n\n@Injectable()\nexport class WorkflowDataService {\n private useWorkflowValueChange: Subject<boolean> = new Subject<boolean>();\n private _draftJSON: BehaviorSubject<string> = new BehaviorSubject<string>(null);\n\n constructor() {\n }\n\n public setUseWorkflow(useWorkflow: boolean): void {\n this.useWorkflowValueChange.next(useWorkflow);\n }\n\n public getUseWorkflow() {\n return this.useWorkflowValueChange.asObservable();\n }\n\n public setDraftJSON(draftJSON: string) {\n this._draftJSON.next(draftJSON);\n }\n\n public getDraftJSON(): Observable<string> {\n return this._draftJSON.asObservable();\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nexport interface Divergence {\n oldValue: any;\n newValue: any;\n}\n\nexport interface DivergenceArray extends Divergence {\n key: string;\n}\n\n@Injectable()\nexport class FormComparatorService {\n private _oldFormData: object;\n private _newFormData: object;\n private _divergentFormData: { divergentKey?: Divergence };\n\n constructor() {\n this.resetDivergentFormData();\n }\n\n public resetDivergentFormData() {\n this._divergentFormData = {};\n }\n\n /**\n * checkFormDisagreements\n *\n * @description\n * Checa se existem divergẽncias entre os objetos armazenados nas\n * propriedades *oldFormData* e *newFormData*.\n *\n * `Se forem idênticos:`\n * levanta uma exceção.\n *\n * `Se houverem divergências:`\n * as armazena na propriedade divergentFormData.\n */\n public checkFormDisagreements(ignoreId: boolean = false): void {\n this.resetDivergentFormData();\n this._sanitizeEmptyStrings();\n if (ignoreId) this._removeIdsFromFormDatas();\n\n if (this._oldFormData === this._newFormData) {\n this._throwIdenticalMessage();\n } else {\n Object.keys(this._oldFormData).forEach((key) => {\n if (this._oldFormData[key] !== this._newFormData[key]) {\n this._divergentFormData[key] = this._createDivergencePair(key);\n }\n });\n\n Object.keys(this._newFormData).forEach((key) => {\n if (this._newFormData[key] !== this._oldFormData[key]) {\n this._divergentFormData[key] = this._createDivergencePair(key);\n }\n });\n\n if (this._isDivergentFormDataEmpty) this._throwIdenticalMessage();\n }\n }\n\n private _removeIdsFromFormDatas() {\n [this._oldFormData, this._newFormData].forEach((formData) => {\n delete formData[\"id\"];\n });\n }\n\n private _sanitizeEmptyStrings(): void {\n [this._oldFormData, this._newFormData].forEach((formData) => {\n Object.keys(formData).map((key) => {\n if (formData[key] === \"\") formData[key] = null;\n });\n });\n }\n\n private _createDivergencePair(key: string): Divergence {\n const divergence: Divergence = { oldValue: null, newValue: null };\n\n divergence.oldValue = this._oldFormData[key];\n divergence.newValue = this._newFormData[key];\n\n return divergence;\n }\n\n private _throwIdenticalMessage() {\n throw new Error(\"The objects oldFormData and newFormData are identical\");\n }\n\n public set oldFormData(v: object) {\n this._oldFormData = v;\n }\n\n public get oldFormData(): object {\n return this._oldFormData;\n }\n\n public set newFormData(v: object) {\n this._newFormData = v;\n }\n\n public get newFormData(): object {\n return this._newFormData;\n }\n\n public get divergentFormArray(): Array<DivergenceArray> {\n const divergentFormArray: Array<DivergenceArray> = [];\n\n Object.entries(this._divergentFormData).map(([key, divergence]) => {\n const object = { key: null, oldValue: null, newValue: null };\n\n object.key = key;\n object.oldValue = divergence.oldValue;\n object.newValue = divergence.newValue;\n\n divergentFormArray.push(object);\n });\n\n return divergentFormArray;\n }\n\n public get _isDivergentFormDataEmpty(): boolean {\n return Object.entries(this._divergentFormData).length === 0;\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { CompanyIndicationsService } from \"./company-indications.service\";\nimport { IntegrationService } from \"./integration.service\";\nimport { LookupParametersService } from \"./lookup-parameters.service\";\nimport { AutocompleteParametersService } from \"./autocomplete-parameters.service\";\nimport { ReportService } from \"./report.service\";\nimport { WorkflowDataService } from './workflow-data.service';\nimport { FormComparatorService } from \"./form-comparator.service\";\n\nexport { WorkflowDataService } from './workflow-data.service';\n\n@NgModule({\n imports: [CommonModule],\n providers: [\n CompanyIndicationsService,\n IntegrationService,\n LookupParametersService,\n AutocompleteParametersService,\n ReportService,\n WorkflowDataService,\n FormComparatorService\n ]\n})\nexport class ServicesModule {}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { service, user } from '@seniorsistemas/senior-platform-data';\nimport { from, Observable } from 'rxjs';\nimport { flatMap, map } from 'rxjs/operators';\n\n@Injectable()\nexport class PermissionService {\n private actionUrl = `platform/authorization/queries/checkAccess`;\n private resourceAddress = `res://senior.com.br/hcm/payroll/`;\n private defaultActions = ['Visualizar', 'Incluir', 'Editar', 'Excluir'];\n private _resources: string[] = [];\n private _attributes: { name: string; value: string }[] = [];\n private observable: Observable<any>;\n private permissions: any;\n private httpOptions;\n private restUrl;\n\n constructor(private http: HttpClient) {\n user.getAuthHeader().then(token => {\n this.httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n Authorization: token,\n }),\n };\n });\n\n service.getRestUrl().then(restUrl => (this.restUrl = restUrl));\n }\n\n protected get(resource: string = ''): Observable<any> {\n if (this.permissions) {\n this.observable = Observable.of(this.permissions);\n } else if (!this.observable) {\n this.observable = this.getPermissions().pipe(map((permissions: any) => (this.permissions = permissions)));\n }\n\n return this.observable.pipe(map((permissions: any) => (resource ? permissions[resource] : permissions)));\n }\n\n protected getAbac(resource: string, attributes: { name: string; value: string }[]): Observable<any> {\n this.attributes = attributes;\n\n return this.getAbacPermission(resource);\n }\n\n private getAbacPermission(resource: string): Observable<any> {\n return this.http.post(\n this.actionUrl,\n {\n includeFilters: false,\n permissions: [\n {\n resource: `${this.resourceAddress}${resource}`,\n action: 'Visualizar',\n attributes: this._attributes.map((res: { name: string; value: string }) => ({\n attribute: res.name,\n value: res.value,\n })),\n }\n ]\n },\n this.httpOptions\n );\n }\n\n private getPermissions() {\n const permissions = [];\n this._resources.forEach((resource: string) =>\n this.defaultActions.forEach((action: string) =>\n permissions.push({ action, resource: `${this.resourceAddress}${resource}` })\n )\n );\n return this.http\n .post(this.actionUrl, {\n includeFilters: false,\n permissions: [\n ...permissions\n ]\n },\n this.httpOptions\n )\n .pipe(\n map((res: any) => {\n const permissoes = res.permissions;\n const values = {};\n\n permissoes.forEach((perm: any) => {\n const name = perm.resource.replace(this.resourceAddress, '');\n values[name] = values[name] || {};\n values[name][perm.action.toLowerCase()] = perm.authorized;\n });\n\n return values;\n })\n );\n }\n\n private set attributes(value: { name: string; value: string }[]) {\n this._attributes = value;\n }\n\n protected setResources(values: string[]) {\n this._resources = values;\n }\n}\n","import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MessageService } from 'primeng/api';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ToastService } from './toast.service';\n\n@Component({\n selector: 'c-toast',\n template: `\n <p-toast [ngClass]=\"breakLine ? 'ui-toast-break-line' : ''\" [key]=\"key\"></p-toast>\n `,\n})\nexport class ToastComponent implements OnInit, OnDestroy {\n // Chave para garantir que as mensagens adicionadas por esse serviço\n // sejam exibidas apenas nesse componente.\n public key = 'TOAST';\n public breakLine: boolean = false;\n private ngUnsubscribe = new Subject();\n\n constructor(private toastService: ToastService, private messageService: MessageService, private translateService: TranslateService) {}\n\n ngOnInit() {\n this.toastService\n .loadErrorMessages()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(payload => {\n this.createErrorMessage(payload && payload.message);\n this.breakLine = payload && payload.breakLine;\n });\n\n this.toastService\n .loadSuccessMessages()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(payload => {\n this.createSuccessMessage(payload && payload.message);\n this.breakLine = payload && payload.breakLine;\n });\n\n this.toastService\n .loadWarningMessages()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(payload => {\n this.createWarningMessage(payload && payload.message);\n this.breakLine = payload && payload.breakLine;\n });\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next(true);\n this.ngUnsubscribe.complete();\n }\n\n createErrorMessage(message: string, summary?: string) {\n this.messageService.clear();\n this.messageService.add({\n severity: 'error',\n summary: summary || this.translateService.instant('hcm.payroll.error'),\n detail: message,\n sticky: true,\n key: this.key,\n });\n }\n\n createSuccessMessage(message: string, summary?: string) {\n this.messageService.add({\n severity: 'success',\n summary: summary || this.translateService.instant('hcm.payroll.success'),\n detail: message,\n key: this.key,\n });\n }\n\n createWarningMessage(message: string, summary?: string) {\n this.messageService.add({\n severity: 'warn',\n summary: summary || this.translateService.instant('hcm.payroll.warn'),\n detail: message,\n sticky: true,\n key: this.key,\n });\n }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MessageService } from 'primeng/api';\nimport { ToastModule as ToastModulePrimeng } from 'primeng/toast';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { ToastComponent } from './toast.component';\nimport { ToastService } from './toast.service';\n\n@NgModule({\n imports: [CommonModule, SharedModule, ToastModulePrimeng],\n declarations: [ToastComponent],\n providers: [ToastService, MessageService],\n exports: [ToastComponent],\n})\nexport class ToastModule {}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class DataListService {\n constructor(private http: HttpClient) {}\n\n getList(endpoint: string, httpParams: HttpParams): Observable<any> {\n return this.http.get(`${endpoint}`, { params: httpParams });\n }\n}\n","import { HttpParams } from '@angular/common/http';\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { SplitButton } from 'primeng/splitbutton';\nimport { Table } from 'primeng/table';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { EntityODataParameter } from '../../core/entities';\nimport { DirectionEnumeration } from '../../core/enums';\nimport { DataListService } from './data-list.service';\nimport { EntityODataResponse } from './entity-odata-response';\n\n@Component({\n selector: 'c-data-list',\n templateUrl: './data-list.component.html',\n styleUrls: ['./data-list.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class DataListComponent implements OnInit, OnDestroy {\n @ViewChild('dataListTable', { static: false })\n dataListTable: Table;\n\n @Input()\n id: string;\n @Input()\n dataKey: string;\n @Input()\n rows = 10;\n @Input()\n emptyMessage: string;\n @Input()\n columns: any[];\n @Input()\n paginator = true;\n @Input()\n first = 0;\n @Input()\n alwaysShowPaginator = true;\n @Input()\n actions?: Function;\n @Input()\n actionLabel: string;\n @Input()\n selectionMode: string;\n @Input()\n lazy: boolean;\n @Input()\n isMultipleSelection: boolean;\n @Input()\n isSortable: boolean;\n @Input()\n showHeaderCheckBox: boolean;\n @Input()\n sortMode = 'multiple';\n @Input()\n endpoint: string;\n @Input()\n displayFields: string[];\n @Input()\n orderBy: { field: string; direction: DirectionEnumeration }[];\n @Input()\n singularMessageRecords: string;\n @Input()\n pluralMessageRecords: string;\n @Input()\n initParameters: EntityODataParameter[];\n\n @Output()\n lazyLoad: EventEmitter<any> = new EventEmitter();\n @Output()\n loadingChange: EventEmitter<any> = new EventEmitter();\n @Output()\n totalRecordsChange: EventEmitter<any> = new EventEmitter();\n @Output()\n listDataChange: EventEmitter<any> = new EventEmitter();\n @Output()\n selectedDataChange: EventEmitter<any> = new EventEmitter();\n @Output()\n headerCheckboxToggle: EventEmitter<any> = new EventEmitter();\n\n private _httpParams: HttpParams = new HttpParams();\n private _loading: boolean;\n private _totalRecords: number;\n private _listData: any[];\n private _selectedData: any[];\n private ngUnsubscribe = new Subject();\n\n constructor(private dataListService: DataListService) {}\n\n ngOnInit() {\n if (!this.lazy) {\n this.getlistData();\n }\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n getActions(data: any, index: number) {\n return this.actions(data, index);\n }\n\n handleClickActions(button: SplitButton) {\n const toClick = button.containerViewChild.nativeElement.getElementsByClassName('ui-splitbutton-menubutton')[0] as HTMLElement;\n toClick.click();\n }\n\n pagination(event) {\n if (!this.lazy) {\n this.getlistData(event.rows, Math.floor(event.first / event.rows));\n }\n }\n\n onLazyLoad(event) {\n this.loading = true;\n\n if (event.multiSortMeta && event.multiSortMeta.length) {\n this.orderBy = <{ field: string; direction: DirectionEnumeration }[]>[];\n event.multiSortMeta.map(value => {\n this.orderBy.push({ field: value.field, direction: value.order === 1 ? DirectionEnumeration.ASC : DirectionEnumeration.DESC });\n });\n }\n\n this.getlistData(event.rows, Math.floor(event.first / event.rows));\n }\n\n onFilter() {\n if (this.lazy) {\n this.loading = true;\n }\n\n this.getlistData();\n }\n\n get recordsMessage() {\n return `${this.totalRecords || 0} ${this.totalRecords === 1 ? this.singularMessageRecords : this.pluralMessageRecords}`;\n }\n\n getlistData(size = this.rows, offset = this.first): void {\n if (this.endpoint) {\n this.configParameters(this.initParameters);\n this.configHttpParamsDisplayFields();\n this.configHttpParamsPagination(size.toString(), offset.toString());\n this.configHttpParamsOrderBy();\n this.dataListService\n .getList(this.endpoint, this.httpParams)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data: EntityODataResponse) => {\n this.listData = data.contents;\n this.totalRecords = data.totalElements;\n if (this.lazy) {\n this.lazyLoad.emit(this.listData);\n }\n });\n } else {\n if (this.lazy) {\n this.lazyLoad.emit(this.listData);\n }\n }\n }\n\n /**\n *\n * @param size a quantidade de registros na página.\n * @param offset o número da página a ser recuperada, lembrando que a numeração de páginas começa em 0 (zero).\n */\n configHttpParamsPagination(size: string, offset: string): void {\n this.httpParams = this.httpParams.set('size', size);\n this.httpParams = this.httpParams.set('offset', offset);\n }\n\n /**\n * Gera o orderby do HttpParams\n */\n configHttpParamsOrderBy(): void {\n if (this.orderBy && this.orderBy.length) {\n let orderBy = '';\n this.orderBy.map(value => {\n if (orderBy) {\n orderBy += `,${value.field}+${value.direction}`;\n } else {\n orderBy += `${value.field}+${value.direction}`;\n }\n });\n\n this.httpParams = this.httpParams.set('orderby', orderBy);\n }\n }\n\n /**\n * Gera HttpParams dos campos a serem retornados na requisição.\n */\n configHttpParamsDisplayFields(): void {\n if (this.displayFields && this.displayFields.length) {\n this.httpParams = this.httpParams.set('displayfields', this.displayFields.toString());\n }\n }\n\n onHeaderCheckboxToggle(event) {\n this.headerCheckboxToggle.emit(event);\n }\n\n getFieldValue(rowData, col) {\n if (col['field'] && col['field'].includes('.')) {\n const objectPath = col['field'].split('.');\n objectPath.map(value => (rowData = rowData && rowData[value]));\n return rowData;\n }\n return rowData[col['field']];\n }\n\n private configParameters(entityODataParameters: EntityODataParameter[]) {\n let parameters = '';\n if (entityODataParameters) {\n entityODataParameters.forEach((parameter: EntityODataParameter) => {\n if (parameters) {\n parameters += ` and ${parameter.toString()}`;\n } else {\n parameters = `${parameter.toString()}`;\n }\n });\n\n this.httpParams = new HttpParams().set('filter', parameters);\n }\n }\n\n @Input()\n set parameters(entityODataParameters: EntityODataParameter[]) {\n this.configParameters(entityODataParameters);\n if (entityODataParameters) {\n if (this.dataListTable) {\n this.dataListTable.first = 0;\n }\n this.onFilter();\n }\n }\n\n set httpParams(value: HttpParams) {\n this._httpParams = value;\n }\n\n get httpParams() {\n return this._httpParams;\n }\n\n set loading(value: boolean) {\n this._loading = value;\n this.loadingChange.emit(this._loading);\n }\n\n @Input()\n get loading() {\n return this._loading;\n }\n\n set listData(value: any[]) {\n this._listData = value;\n this.listDataChange.emit(this._listData);\n }\n\n @Input()\n get listData() {\n return this._listData;\n }\n\n set selectedData(value: any[]) {\n this._selectedData = value;\n this.selectedDataChange.emit(this._selectedData);\n }\n\n @Input()\n get selectedData() {\n return this._selectedData;\n }\n\n set totalRecords(value: number) {\n this._totalRecords = value;\n this.totalRecordsChange.emit(this.totalRecords);\n }\n\n @Input()\n get totalRecords(): number {\n return this._totalRecords;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule, LoadingStateModule } from '@seniorsistemas/angular-components';\nimport { SplitButtonModule } from 'primeng/splitbutton';\nimport { TableModule } from 'primeng/table';\nimport { TooltipModule } from 'primeng/tooltip';\n\nimport { DataListComponent } from './data-list.component';\nimport { DataListService } from './data-list.service';\n\n@NgModule({\n imports: [\n CommonModule,\n // Angular Components\n ButtonModule,\n LoadingStateModule,\n // Primeng\n TableModule,\n TooltipModule,\n ],\n declarations: [DataListComponent],\n exports: [DataListComponent],\n providers: [DataListService],\n})\nexport class DataListModule {}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { MessageService } from \"primeng/api\";\nimport { Observable, throwError } from \"rxjs\";\nimport { catchError } from \"rxjs/operators\";\n\n@Injectable()\nexport class LookupService {\n constructor(private http: HttpClient, private messageService: MessageService, private translateService: TranslateService) {}\n\n getDataLookup(endpoint: string, httpParams: HttpParams): Observable<any> {\n if (httpParams) {\n return this.http.get(`${endpoint}`, { params: httpParams })\n .pipe(\n catchError((exception: any): any => {\n if (exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n } else {\n return this.http.get(`${endpoint}`)\n .pipe(\n catchError((exception: any): any => {\n if (exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n }\n}\n","import { HttpParams } from '@angular/common/http';\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FieldType, FormField } from '@seniorsistemas/angular-components';\nimport * as moment_ from 'moment';\nimport { Subject } from 'rxjs';\nimport { map, takeUntil } from 'rxjs/operators';\n\nimport { EntityODataParameter } from '../../core/entities';\nimport { LookupService } from './lookup.service';\n\nconst moment = moment_;\n\n@Component({\n selector: 'c-lookup',\n templateUrl: './lookup.component.html',\n})\nexport class LookupComponent implements OnInit, OnDestroy {\n @Input()\n id: string;\n @Input()\n dataKey: string;\n @Input()\n concatFields: FormField[];\n @Input()\n searchTitle: string;\n @Input()\n formGroup: FormGroup;\n @Input()\n controlName: string;\n @Input()\n multiple: boolean;\n @Input()\n endpoint: string;\n @Input()\n lookupDisplayField: string;\n @Input()\n searchTotalRecordsLabel = 'hcm.payroll.lookup_search_total_records_label';\n @Input()\n filterLabel = 'hcm.payroll.lookup_generic_filter_label';\n @Input()\n clearLabel = 'hcm.payroll.lookup_generic_clean_filter_label';\n @Input()\n cancelLabel = 'hcm.payroll.lookup_generic_btn_cancel_label';\n @Input()\n selectLabel = 'hcm.payroll.lookup_btn_select_label';\n @Input()\n lookupEmptyMessage = 'hcm.payroll.lookup_auto_complete_empty_message';\n @Input()\n searchTotalRecords: number;\n @Input()\n lookupSuggestions: any[] = [];\n @Input()\n searchGridFields: FormField[] = [];\n @Input()\n searchLookupFields: string[] = [];\n @Input()\n searchGridData: FormField[] = [];\n @Input()\n searchFields: any[] = [];\n @Input()\n parameters: EntityODataParameter[] = [];\n @Output()\n onSelect: EventEmitter<any> = new EventEmitter();\n @Output()\n onClear: EventEmitter<any> = new EventEmitter();\n @Output()\n modelChange: EventEmitter<any> = new EventEmitter();\n private _httpParams: HttpParams = new HttpParams();\n private _model: any;\n private ngUnsubscribe = new Subject();\n\n constructor(private lookupService: LookupService) {}\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n lookupRequest(event) {\n this.generateLookupParameters(event);\n this.configHttpParamsPagination('10', '0');\n this.getDataLookup(this.endpoint, this.httpParams)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(data => (this.lookupSuggestions = data && [...data.contents]));\n }\n\n searchRequest(event: any) {\n this.generateGridParameters(event.filterData);\n this.configHttpParamsPagination(event.rows.toString(), Math.floor(event.first / event.rows).toString());\n this.configHttpParamsOrderBy(event.multiSortMeta);\n this.getDataLookup(this.endpoint, this.httpParams)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(data => (this.searchGridData = data && [...data.contents]));\n }\n\n /**\n *\n * @param endpoint Busca e faz o tratamento dos dados do lookup.\n * @param httpParams HttpParams\n */\n private getDataLookup(endpoint: string, httpParams: HttpParams) {\n return this.lookupService.getDataLookup(this.endpoint, this.httpParams).pipe(\n map((payload: any) => {\n const { totalElements, contents } = payload;\n this.searchTotalRecords = totalElements;\n\n if (this.concatFields && this.concatFields.length) {\n contents.map(value => {\n this.convertGridFieldValue(value);\n value[this.lookupDisplayField] = this.generateDisplayFieldValue({ ...value });\n });\n }\n\n return payload;\n })\n );\n }\n\n /**\n * Converte o valor do campo para apresentação no lookup.\n *\n * @param content Valor do campo para conversão.\n * @param field FormField do campo.\n */\n private convertLookupFieldValue(content: any, field: FormField): any {\n if (content) {\n switch (field.type) {\n case FieldType.Date:\n content = moment(content).format('L');\n break;\n case FieldType.Enum:\n const enumValue = field.options.filter((enumeration: any) => enumeration.value === content)[0];\n content = enumValue ? enumValue.label : content;\n break;\n }\n }\n\n return content;\n }\n\n /**\n * Converte os dados para visualização na grid\n * @param content\n */\n private convertGridFieldValue(content: any): void {\n if (content) {\n this.searchGridFields.forEach((field: FormField) => {\n switch (field.type) {\n case FieldType.Enum:\n const enumValue = field.options.filter((enumeration: any) => enumeration.value === content[field.name])[0];\n content[field.name] = enumValue ? enumValue.label : content[field.name];\n break;\n }\n });\n }\n }\n\n /**\n * Faz a concatenação de valores do registro para ser apresentado no lookup ao selecionar o dado.\n * @param contentValue Valor do registro.\n */\n private generateDisplayFieldValue(contentValue: any): string {\n let displayField = '';\n\n this.concatFields.forEach((field: FormField) => {\n const fieldValue = this.convertLookupFieldValue(contentValue[field.name], field);\n if (fieldValue) {\n if (displayField) {\n displayField += ` - ${fieldValue}`;\n } else {\n displayField = fieldValue;\n }\n }\n });\n return displayField;\n }\n\n /**\n * Gera os parametros de pesquisa via lookup\n * @param value\n */\n private generateLookupParameters(value?: string): void {\n let lookupParameters = '';\n this.searchLookupFields.forEach((lookupField: string) => {\n const searchField = this.searchFields.filter(field => lookupField === field.name)[0];\n if (lookupParameters) {\n lookupParameters += ` or ${this.getParameterByType(searchField.type, lookupField, value)}`;\n } else {\n lookupParameters = `${this.getParameterByType(searchField.type, lookupField, value)}`;\n }\n });\n\n this.parameters.forEach((parameter: EntityODataParameter) => {\n if (lookupParameters) {\n lookupParameters += ` and ${parameter.toString()}`;\n } else {\n lookupParameters = `${parameter.toString()}`;\n }\n });\n\n this.httpParams = new HttpParams().set('filter', lookupParameters);\n }\n\n /**\n * Gera os parametros de pesquisa via pesquisa na grid\n * @param filterData\n */\n private generateGridParameters(filterData: object): void {\n let gridParameters = '';\n Object.keys(filterData).forEach((attribute: string) => {\n if (filterData[attribute]) {\n const searchField = this.searchFields.filter(field => attribute === field.name)[0];\n if (gridParameters) {\n gridParameters += ` and ${this.getParameterByType(searchField.type, attribute, filterData[attribute])}`;\n } else {\n gridParameters += this.getParameterByType(searchField.type, attribute, filterData[attribute]);\n }\n }\n });\n\n this.parameters.forEach((parameter: EntityODataParameter) => {\n if (gridParameters) {\n gridParameters += ` and ${parameter.toString()}`;\n } else {\n gridParameters = `${parameter.toString()}`;\n }\n });\n\n this.httpParams = new HttpParams().set('filter', gridParameters);\n }\n\n /**\n * Gera a string de consulta CRUD de um campo.\n * @param type Tipo do campo.\n * @param attribute Nome do atribute da entidade\n * @param value Valor do campo\n */\n private getParameterByType(type: FieldType, attribute: string, value: any): string {\n switch (type) {\n case FieldType.Date:\n return `${attribute} eq '${moment(value).format('YYYY-MM-DD')}'`;\n case FieldType.Enum:\n return `${attribute} eq '${value}'`;\n case FieldType.Integer:\n return `${attribute} eq ${value}`;\n case FieldType.Autocomplete:\n return `${attribute} eq ${value.id}`;\n default:\n return `containing(lower(${attribute}), lower('${value}'))`;\n }\n }\n\n /**\n *\n * @param size a quantidade de registros na página.\n * @param offset o número da página a ser recuperada, lembrando que a numeração de páginas começa em 0 (zero).\n */\n private configHttpParamsPagination(size: string, offset: string): void {\n this.httpParams = this.httpParams.set('size', size);\n this.httpParams = this.httpParams.set('offset', offset);\n }\n\n /**\n * Gera o orderby do HttpParams\n */\n private configHttpParamsOrderBy(multiSortMeta: { field: string; order: number }[]): void {\n if (multiSortMeta && multiSortMeta.length) {\n let orderBy = '';\n multiSortMeta.map(value => {\n if (orderBy) {\n orderBy += `,${value.field}+${value.order === 1 ? 'asc' : 'desc'}`;\n } else {\n orderBy += `${value.field}+${value.order === 1 ? 'asc' : 'desc'}`;\n }\n });\n\n this.httpParams = this.httpParams.set('orderby', orderBy);\n }\n }\n\n set httpParams(value: HttpParams) {\n this._httpParams = value;\n }\n\n get httpParams() {\n return this._httpParams;\n }\n\n set model(value: any) {\n this._model = value;\n this.modelChange.emit(value);\n }\n\n @Input()\n get model() {\n return this._model;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DynamicFormModule } from '@seniorsistemas/angular-components';\n\nimport { LookupComponent } from './lookup.component';\nimport { LookupService } from './lookup.service';\n\n@NgModule({\n imports: [CommonModule, FormsModule, DynamicFormModule, ReactiveFormsModule, TranslateModule],\n declarations: [LookupComponent],\n exports: [LookupComponent],\n providers: [LookupService],\n})\nexport class LookupModule {}\n","import { Injectable } from '@angular/core';\nimport { HttpClientService } from '../shared/http-client.service';\nimport { CoreFieldType } from '../../core/enums/coreFieldType';\nimport { FieldType } from '@seniorsistemas/angular-components';\nimport * as _moment from 'moment';\nimport { map } from 'rxjs/operators';\nimport { ServiceType } from '../../core/enums/serviceType';\n\n\nconst moment = _moment;\n\n@Injectable()\nexport class AutocompleteService {\n\n constructor(private httpClienteService: HttpClientService) { }\n\n public getAutoComplete(entity: string, params: object, searchFields: any, codeIsString: boolean, service: ServiceType) {\n const getParams = this.generateGridParameters(params, searchFields, codeIsString);\n return this.httpClienteService.getAutoComplete(entity, getParams, service)\n .pipe(map((result) => result && result.contents));\n }\n\n public getAutoCompleteQuery(query: string, params: object) {\n return this.httpClienteService.query(query, params)\n .pipe(map((data) => data && data.result));\n }\n\n /**\n * Gera os parametros de pesquisa via pesquisa na grid\n * @param filterData\n */\n private generateGridParameters(filterData: object, searchFields: any, codeIsString: boolean): string {\n let gridParameters = \"\";\n Object.keys(filterData).forEach((attribute: string) => {\n const filterSearchField = searchFields && searchFields.filter(field => attribute === field.name)[0];\n let filterQueryString = null;\n let operatorsQuery = \"\";\n let searchField: any = filterSearchField && filterSearchField.type;\n if (!filterSearchField && attribute != CoreFieldType.searchValue) searchField = FieldType.String;\n if (!filterSearchField && attribute === CoreFieldType.searchValue) searchField = CoreFieldType.searchValue;\n if (gridParameters) operatorsQuery = \" and \";\n filterQueryString = this.getParameterByType(searchField, attribute, filterData[attribute], codeIsString);\n if (filterQueryString) gridParameters += ` ${operatorsQuery} ${filterQueryString}`;\n });\n return gridParameters;\n }\n\n /**\n * Gera a string de consulta CRUD de um campo.\n * @param type Tipo do campo.\n * @param attribute Nome do atribute da entidade\n * @param value Valor do campo\n */\n private getParameterByType(type: any, attribute: string, value: any, codeIsString: boolean): string {\n if (!value && type != CoreFieldType.searchValue) return `${attribute} is null`;\n if (value && value === 'not null' && type != CoreFieldType.searchValue) return `${attribute} is not null`;\n switch (type) {\n case FieldType.Date:\n return `${attribute} eq '${moment(value).format('YYYY-MM-DD')}'`;\n case FieldType.Enum:\n return `${attribute} eq '${value}'`;\n case FieldType.Integer:\n return `${attribute} eq ${value}`;\n case FieldType.Autocomplete:\n return `${attribute} eq '${value.id}'`;\n case CoreFieldType.searchValue:\n return `${this.getParameterBySearchType(value, codeIsString)}`;\n default:\n return this.getSearchFilterString(attribute, value);\n }\n }\n\n /**\n * Retorna o filtro formatador para ser chamdo no endpoint\n * @param valueFilterSearch valor pra adicionar no filtro\n */\n private getParameterBySearchType(valueFilterSearch: any, codeIsString: boolean): string {\n let searchFilter = \"\";\n if (valueFilterSearch) {\n for (const [key, value] of Object.entries(valueFilterSearch)) {\n if (key === \"code\" && Number(value)) {\n const hasQuote = codeIsString ? \"'\" : \"\";\n if (searchFilter)\n searchFilter += ` or ${key} eq ${hasQuote}${value}${hasQuote}`;\n else\n searchFilter += `${key} eq ${hasQuote}${value}${hasQuote}`;\n } else if (key != \"code\") {\n if (searchFilter)\n searchFilter += ` or ${this.getSearchFilterString(key, value)}`;\n else\n searchFilter += this.getSearchFilterString(key, value);\n }\n }\n searchFilter = searchFilter ? `(${searchFilter})` : '';\n }\n return searchFilter;\n }\n\n /**\n * Formata o filtro quando for \"Ou\"\n * @param attribute\n * @param value\n */\n private getSearchFilterString(attribute: string, value: any): string { return `containing(lower(${attribute}), lower('${value}'))`; }\n\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { FieldType, FormField } from \"@seniorsistemas/angular-components\";\nimport * as moment_ from \"moment\";\nimport { MessageService } from \"primeng/api\";\nimport { Observable, throwError } from \"rxjs\";\nimport { map, catchError } from \"rxjs/operators\";\nimport { PaginationData } from \"../../core/interfaces\";\n\nconst moment = moment_;\n\n@Injectable()\nexport class LookupService {\n\n private concatFields: any;\n private concatOtherFields: any;\n private lookupDisplayField: string;\n private httpPostParams: any;\n private page: PaginationData;\n\n constructor(private http: HttpClient, private messageService: MessageService, private translateService: TranslateService) {\n }\n\n\n lookupRequestPost(httpPostParams: any, endpoint: string, concatFields: Array<FormField> = null, lookupDisplayField: string) {\n this.httpPostParams = httpPostParams;\n this.postConfigPageSize(httpPostParams);\n this.lookupDisplayField = lookupDisplayField;\n this.concatFields = concatFields;\n return this.postDataLookup(endpoint);\n }\n\n postConfigPageSize(httpPostParams: any) {\n if (httpPostParams) {\n this.httpPostParams.page.size = httpPostParams.page && httpPostParams.page.size ? httpPostParams.page.size : 10;\n this.httpPostParams.page.current = httpPostParams.page && httpPostParams.page.current ? httpPostParams.page.current : 0;\n }\n }\n\n /**\n * POST\n * @param endpoint Busca e faz o tratamento dos dados do lookup.\n * @param httpParams HttpParams\n */\n private postDataLookup(endpoint) {\n return this.postUrlDataLookup(endpoint, this.httpPostParams).pipe(\n map((payload: any) => {\n const { contents } = payload;\n\n if (this.concatFields && this.concatFields.length) {\n contents.map(value => {\n if (this.concatOtherFields) {\n this.convertGridFieldValue(value);\n }\n value[this.lookupDisplayField] = this.generateDisplayFieldValue({ ...value });\n });\n }\n\n return payload;\n }),\n );\n }\n\n /**\n * Converte o valor do campo para apresentação no lookup.\n *\n * @param content Valor do campo para conversão.\n * @param field FormField do campo.\n */\n private convertLookupFieldValue(content: any, field: FormField): any {\n if (content) {\n switch (field.type) {\n case FieldType.Date:\n content = moment(content).format(\"L\");\n break;\n case FieldType.Enum:\n const enumValue = field.options.filter((enumeration: any) => enumeration.value === content)[0];\n content = enumValue ? enumValue.label : content;\n break;\n }\n }\n\n return content;\n }\n\n /**\n * Converte os dados para visualização na grid\n * @param content\n */\n private convertGridFieldValue(content: any): void {\n if (content) {\n this.concatOtherFields.forEach((field: FormField) => {\n switch (field.type) {\n case FieldType.Enum:\n const enumValue = field.options.filter((enumeration: any) => enumeration.value === content[field.name])[0];\n content[field.name] = enumValue ? enumValue.label : content[field.name];\n break;\n }\n });\n }\n }\n\n /**\n * Faz a concatenação de valores do registro para ser apresentado no lookup ao selecionar o dado.\n * @param contentValue Valor do registro.\n */\n private generateDisplayFieldValue(contentValue: any): string {\n let displayField = \"\";\n\n this.concatFields.forEach((field: FormField) => {\n const fieldValue = this.convertLookupFieldValue(contentValue[field.name], field);\n if (fieldValue) {\n if (displayField) {\n displayField += ` - ${ fieldValue }`;\n } else {\n displayField = fieldValue;\n }\n }\n });\n return displayField;\n }\n\n private postUrlDataLookup(endpoint: string, httpParams: any): Observable<any> {\n if (httpParams) {\n return this.http.post(`${ endpoint }`, { ...httpParams })\n .pipe(\n catchError((exception: any): any => {\n if (exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n } else {\n return this.http.post(`${ endpoint }`, {})\n .pipe(\n catchError((exception: any): any => {\n if (exception.status === 403)\n this.messageService.add({\n severity: 'error',\n summary: this.translateService.instant('hcm.payroll.error'),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n sticky: true,\n });\n\n return throwError(exception);\n })\n );\n }\n }\n}\n","export class WorkstationgroupLookupDto {\n private code?: string;\n private name?: string;\n private companyId?: string;\n private companyBranchId?: string;\n private departmentId?: string;\n private costcenterId?: string;\n private jobpositionIds?: any;\n private syndicateId?: string;\n private shiftId?: string;\n private workshiftId?: string;\n private workshiftGroupId?: string;\n private intervalGroupId?: string;\n private scaleTeamId?: string;\n private scaleCategoryId?: string;\n private employmentRelationshipId?: string;\n private contractType?: string;\n private expenseNatureId?: string;\n private allowDeficient?: string;\n private disabilityIds?: any;\n private listExpired?: boolean;\n private referenceDate?: string;\n private searchText?: string;\n private manager: string;\n private page: any;\n\n constructor(payload: any, referenceDate?: string) {\n const { filterData } = payload;\n this.name = filterData.name || null;\n this.code = filterData.code || null;\n this.searchText = filterData.searchText || null;\n this.companyId = filterData.headoffice || null;\n this.companyBranchId = filterData.branchoffice && filterData.branchoffice.id || null;\n this.departmentId = filterData.department && filterData.department.tableId || null;\n this.costcenterId = filterData.costcenter && filterData.costcenter.id || null;\n this.jobpositionIds = filterData.jobposition || null;\n this.syndicateId = filterData.syndicate && filterData.syndicate.id || null;\n this.shiftId = filterData.workshiftScale || null;\n this.workshiftId = filterData.workshiftId && filterData.workshiftId.id || null;\n this.workshiftGroupId = filterData.workshiftGroupId && filterData.workshiftGroupId.id || null;\n this.intervalGroupId = filterData.intervalGroupId && filterData.intervalGroupId.is || null;\n this.scaleTeamId = filterData.scaleTeamId && filterData.scaleTeamId.id || null;\n this.scaleCategoryId = filterData.scaleCategoryId && filterData.scaleCategoryId.id || null;\n this.employmentRelationshipId = filterData.employmentRelationshipId && filterData.employmentRelationshipId.id || null;\n this.contractType = filterData.contractType || null;\n this.expenseNatureId = filterData.expenseNatureId && filterData.expenseNatureId.id || null;\n this.allowDeficient = filterData.allowDeficient || null;\n this.disabilityIds = filterData.disabilityIds || null;\n this.listExpired = filterData.hasOwnProperty('listExpired') ? filterData.listExpired : false;\n this.manager = filterData.manager ? filterData.manager.tableId : null;\n this.referenceDate = referenceDate || null;\n this.page = {\n current: payload.first ? payload.first : 0,\n size: payload.rows ? payload.rows : 10\n } || null;\n\n }\n\n getToFilter() {\n const objDTO = this;\n objDTO.jobpositionIds = this.convertListIds(this.jobpositionIds);\n objDTO.disabilityIds = this.convertListIds(this.disabilityIds);\n return objDTO;\n }\n\n\n convertListIds(list: any) {\n if (list)\n return list.map((index: any) => {\n if (index.tableId)\n return index.tableId;\n else\n return index.id;\n });\n }\n\n}\n","import {\n Component,\n OnDestroy,\n OnInit,\n ViewChild,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n AfterViewInit,\n ChangeDetectorRef,\n} from \"@angular/core\";\nimport { FormGroup } from \"@angular/forms\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { FieldType, FormField } from \"@seniorsistemas/angular-components\";\nimport * as moment_ from \"moment\";\nimport { now } from \"moment\";\nimport { Subject, BehaviorSubject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { ServiceType } from \"../../core/enums\";\nimport { invertFieldDate, getNowDate } from \"../utils/helpers\";\nimport { AutocompleteService } from \"./autocomplete.service\";\nimport { LookupService } from \"./lookup.service\";\nimport { WorkstationgroupLookupDto } from \"./workstationgroup-lookup.dto\";\n\nconst moment = moment_;\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: \"c-workstationgroup-lookup\",\n templateUrl: \"./workstationgroup-lookup.component.html\",\n})\nexport class WorkstationgroupLookupComponent implements OnInit, OnDestroy, AfterViewInit {\n\n @ViewChild(\"workstationgroupEl\", { static: false })\n workstationgroupEl: ElementRef;\n\n @Input()\n public currentCompanyId: string = null;\n @Input()\n public currentCompanyName: string = null;\n @Input()\n public hireDate: string;\n @Input()\n public dateFormat: string;\n @Input()\n public required: boolean;\n @Input()\n public disabled: boolean;\n @Input()\n public form: FormGroup;\n @Input()\n public name: string;\n\n @Output()\n public onSelect: EventEmitter<any> = new EventEmitter();\n @Output()\n public onClear: EventEmitter<any> = new EventEmitter();\n @Output()\n public onBlur: EventEmitter<any> = new EventEmitter();\n\n private companyBranchId: string = null;\n\n public lookupSuggestions: any[] = [];\n public searchGridData: FormField[] = [];\n public suggestionsObservable: BehaviorSubject<any> = new BehaviorSubject([]);\n public totalRecords: number = 0;\n private valueEnumShift = [\n {\n label: this.translate.instant(\"hcm.payroll.enum_WorkshiftScale_FIRST_SHIFT\"),\n value: \"0\",\n enum: \"FIRST_SHIFT\",\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_WorkshiftScale_SECOND_SHIFT\"),\n value: \"1\",\n enum: \"SECOND_SHIFT\",\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_WorkshiftScale_THIRD_SHIFT\"),\n value: \"2\",\n enum: \"THIRD_SHIFT\",\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_WorkshiftScale_FOURTH_SHIFT\"),\n value: \"3\",\n enum: \"FOURTH_SHIFT\",\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_WorkshiftScale_MIXED\"),\n value: \"4\",\n enum: \"MIXED\",\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_WorkshiftScale_GENERAL\"),\n value: \"5\",\n enum: \"GENERAL\",\n },\n ];\n private concatFieldsName = [\n new FormField({\n name: \"code\",\n label: this.translate.instant(\"hcm.payroll.code\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"name\",\n label: this.translate.instant(\"hcm.payroll.employees_addition_workstation\"),\n type: FieldType.String,\n }),\n ];\n\n private concatName = [\n new FormField({\n name: \"code\",\n label: this.translate.instant(\"hcm.payroll.code\"),\n type: FieldType.String,\n }),\n ];\n public gridFields = [\n new FormField({\n name: \"name\",\n label: this.translate.instant(\"hcm.payroll.employees_addition_workstation\"),\n type: FieldType.String,\n }),\n new FormField({\n name: \"manager\",\n label: this.translate.instant(\"hcm.payroll.workstation_form_lookup_search_manager_label\"),\n type: FieldType.String,\n }),\n ];\n public searchFields = [\n ...this.concatName,\n {\n name: \"name\",\n label: this.translate.instant(\"hcm.payroll.movimentation_name\"),\n type: FieldType.String,\n },\n {\n name: \"headoffice\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_company\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"companyname\",\n },\n {\n name: \"branchoffice\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_branch\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onRemove: () => this.companyBranchId = null,\n onSelect: ({ id }: { id: string }) => this.companyBranchId = id,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"company\",\n val ? { companyname: val, code: val } : null,\n \"code\", \"companyname\",\n { headquarter: this.currentCompanyId ? this.currentCompanyId : \"not null\" },\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"companyname\",\n },\n {\n name: \"manager\",\n type: FieldType.Autocomplete,\n multiple: false,\n label: this.translate.instant(\"hcm.payroll.workstation_form_lookup_search_manager_label\"),\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocompleteQuery(\n \"autocompleteManager\",\n {\n valueSearch: val ? val : \"\",\n companyId: {tableId: this.currentCompanyId},\n companyBranchId: {tableId: this.companyBranchId ? this.companyBranchId : \"\"},\n },\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"manager\",\n },\n {\n name: \"department\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.movimentation_historical_department_tab\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocompleteQuery(\n \"autocompleteDepartmentQuery\",\n {\n searchText: val ? val : \"\",\n companyId: this.currentCompanyId,\n referenceDate: moment(now()).format(\"YYYY-MM-DD\"),\n },\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n {\n name: \"costcenter\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_cost_center\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"costcenter\",\n val ? { name: val, code: val } : null,\n \"code\", \"name\",\n this.currentCompanyId ? { company: this.currentCompanyId } : null,\n true,\n ServiceType.ORGANIZATION_REGISTER,\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n {\n name: \"jobposition\",\n type: FieldType.Autocomplete,\n multiple: true,\n label: this.translate.instant(\"hcm.payroll.movimentation_historical_job_position_tab\"),\n dataKey: \"tableId\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocompleteQuery(\n \"autocompleteJobpositionQuery\",\n {\n searchText: val ? val : \"\",\n companyId: this.currentCompanyId,\n creationDate: moment().format(\"YYYY-MM-DD\"),\n expirationDate: moment().format(\"YYYY-MM-DD\"),\n },\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n {\n name: \"syndicate\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_syndicate\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"syndicate\",\n val ? { name: val, code: val } : null,\n \"code\", \"name\",\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n {\n name: \"workshiftScale\",\n type: FieldType.Enum,\n label: this.translate.instant(\"hcm.payroll.SHIFT\"),\n showClear: true,\n size: { md: 12 },\n onChange: () => {\n this.resetDependenciesOfShift(true);\n },\n options: this.valueEnumShift,\n },\n {\n name: \"workshiftId\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_scale\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"workshift\",\n val ? { description: val, code: val } : null,\n \"code\", \"description\",\n this.workstationFilterForm.get(\"workshiftScale\").value ?\n { workshiftScale: this.valueEnumShift[this.workstationFilterForm.get(\"workshiftScale\").value].enum } : null,\n );\n },\n onSelect: () => {\n this.resetDependenciesOfShift();\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"description\",\n },\n {\n name: \"workshiftGroupId\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_workshift-group\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"workshiftGroup\",\n val ? { code: val } : null,\n \"code\", \"baseDate\",\n this.workstationFilterForm.get(\"workshiftId\").value ?\n { workshift: this.workstationFilterForm.get(\"workshiftId\").value.id } : null,\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"baseDate\",\n },\n {\n name: \"intervalGroupId\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_class_interval\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"intervalGroup\",\n val ? { description: val, code: val } : null,\n \"code\", \"description\",\n this.workstationFilterForm.get(\"workshiftId\").value ?\n { workshift: this.workstationFilterForm.get(\"workshiftId\").value.id } : null,\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"description\",\n },\n {\n name: \"scaleTeamId\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_scale_team\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"scaleTeam\",\n val ? { name: val, code: val } : null,\n \"code\", \"name\",\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n {\n name: \"scaleCategoryId\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_scale_category\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"scaleCategory\",\n val ? { name: val, code: val } : null,\n \"code\", \"name\",\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n {\n name: \"employmentRelationshipId\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_employment_relationship\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"employmentRelationship\",\n val ? { name: val, code: val } : null,\n \"code\", \"name\",\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n {\n name: \"contractType\",\n type: FieldType.Enum,\n label: this.translate.instant(\"hcm.payroll.employees_temporary_contract_temporary_contract_type\"),\n showClear: true,\n size: { md: 12 },\n options: [\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_Employee\"),\n value: \"0\",\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_Manager\"),\n value: 1,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_FarmWorker\"),\n value: 2,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_Retired\"),\n value: 3,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_Trainee\"),\n value: 4,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_Apprentice\"),\n value: 5,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_FixedDueDate\"),\n value: 6,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_RetiredManager\"),\n value: 7,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_PublicAgent\"),\n value: 8,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_Teacher\"),\n value: 9,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_CooperativeWorker\"),\n value: 10,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_DomesticWorker\"),\n value: 11,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_EmployeeContractType_TeacherFixedDueDate\"),\n value: 12,\n },\n ],\n },\n {\n name: \"expenseNatureId\",\n type: FieldType.Autocomplete,\n label: this.translate.instant(\"hcm.payroll.employees_addition_expense_nature\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"expenseNature\",\n val ? { name: val, code: val } : null,\n \"code\", \"name\",\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n {\n name: \"allowDeficient\",\n type: FieldType.Enum,\n label: this.translate.instant(\"hcm.payroll.allow_deficient\"),\n showClear: true,\n size: { md: 12 },\n options: [\n {\n label: this.translate.instant(\"hcm.payroll.enum_DecisionPcD_No\"),\n value: \"0\",\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_DecisionPcD_Also\"),\n value: 1,\n },\n {\n label: this.translate.instant(\"hcm.payroll.enum_DecisionPcD_Only\"),\n value: 2,\n },\n ],\n },\n {\n name: \"disabilityIds\",\n type: FieldType.Autocomplete,\n multiple: true,\n label: this.translate.instant(\"hcm.payroll.employees_addition_disability\"),\n dataKey: \"id\",\n appendTo: \"body\",\n fullWidth: true,\n // visible: () => Number(this.workstationFilterForm.get('allowDeficient').value),\n onSearch: (val: string) => {\n this.getAutocomplete(\n \"disability\",\n val ? { name: val, code: val } : null,\n \"code\", \"name\",\n );\n },\n suggestionsObservable: this.suggestionsObservable,\n displayField: \"name\",\n },\n ];\n\n private ngUnsubscribe = new Subject();\n\n constructor(\n private translate: TranslateService,\n private cd: ChangeDetectorRef,\n private autocompleteParametersService: AutocompleteService,\n private lookupParametersService: LookupService) {\n }\n\n public ngOnInit() {\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n public ngAfterViewInit() {\n this.cd.detectChanges();\n const companyForm = this.workstationFilterForm.get(\"headoffice\");\n companyForm.setValue({ id: this.currentCompanyId, companyname: this.currentCompanyName });\n companyForm.disable();\n }\n\n public get workstationFilterForm() {\n return this.workstationgroupEl && this.workstationgroupEl[\"formGroupDialog\"];\n }\n\n public selectOption(option: object) {\n this.onSelect.emit(option);\n }\n\n async onClearItem(option: object) {\n await this.onClear.emit(option);\n this.form.get(this.name).reset();\n }\n\n private resetDependenciesOfShift(isShift: boolean = false): void {\n if (isShift) {\n this.workstationFilterForm.get(\"workshiftId\").reset();\n }\n this.workstationFilterForm.get(\"workshiftGroupId\").reset();\n this.workstationFilterForm.get(\"intervalGroupId\").reset();\n }\n\n public searchRequest($event: any) {\n const endpoint = \"hcm/payroll/queries/workstationgroupFilterQuery\";\n const company = this.workstationFilterForm.get(\"headoffice\");\n const isLookupOpen: boolean = $event && $event.filterData;\n company.setValue({\n id: this.currentCompanyId,\n companyname: this.currentCompanyName,\n });\n\n $event = { ...this.getValueEvent($event, isLookupOpen)};\n\n const referenceDate = this.getHireDate().replace(/\\'/g, \"\");\n const filter = new WorkstationgroupLookupDto($event, referenceDate);\n this.lookupParametersService.lookupRequestPost(filter.getToFilter(), endpoint, [...this.concatFieldsName], \"name\")\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data: any) => {\n if (isLookupOpen) {\n this.searchGridData = data && [...data.contents];\n } else {\n this.lookupSuggestions = data && [...data.contents];\n }\n this.totalRecords = data && data.totalPages;\n });\n }\n\n private getValueEvent($event: any, isLookupOpen: boolean): Object {\n if (isLookupOpen) {\n $event.filterData.headoffice = this.currentCompanyId;\n } else {\n $event = {\n filterData: {\n headoffice: this.currentCompanyId,\n searchText: $event\n },\n };\n }\n return $event;\n }\n\n private getAutocompleteQuery(nameQuery: string, searchValue: object) {\n this.autocompleteParametersService.getAutoCompleteQuery(nameQuery, searchValue)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data: any) => {\n if (nameQuery === \"autocompleteDepartmentQuery\") {\n data.filter((field: any) => {\n if (field.fields && field.fields[0]) {\n field[\"name\"] = `${ field.fields[1].value } - ${ field.fields[0].value }`;\n }\n });\n } else if (nameQuery === \"autocompleteJobpositionQuery\") {\n data.filter((field: any) => {\n if (field.fields && field.fields[0] && field.fields[1]) {\n field[\"name\"] = `${ field.fields[0].value } - ${ field.fields[1].value }`;\n }\n });\n } else if (nameQuery === \"autocompleteManager\") {\n data.map((field: any) => {\n field[\"manager\"] = field.fields[0].value ? field.fields[0].value : field.fields[3].value;\n });\n }\n\n this.suggestionsObservable.next(data);\n });\n }\n\n private getAutocomplete(\n nameEntity: string,\n searchValue: object,\n concatOtherFields: string,\n nameFieldConcat: string,\n additionalParams: object = null,\n codeIsString: boolean = false,\n service: ServiceType = ServiceType.PAYROLL,\n ) {\n this.autocompleteParametersService.getAutoComplete(\n nameEntity, {\n ...additionalParams,\n searchValue: { ...searchValue },\n }, this.searchFields, codeIsString, service)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data: any) => {\n if (nameEntity === \"workshiftGroup\") {\n data.filter((filterData: any) => {\n if (filterData.baseDate) {\n const dateIsMoment = moment(filterData.baseDate, \"YYYY-MM-DD\");\n if (dateIsMoment.isValid()) {\n return filterData.baseDate = dateIsMoment.format(this.dateFormat);\n }\n }\n });\n }\n this.suggestionsObservable.next(this.getConcatFields(data, concatOtherFields, nameFieldConcat));\n });\n }\n\n private getConcatFields(data: any, concatOtherFields: string, nameFieldConcat: string) {\n if (nameFieldConcat && concatOtherFields) {\n data.filter((field: any) => {\n field[nameFieldConcat] = `${ field[concatOtherFields] } - ${ field[nameFieldConcat] }`;\n });\n }\n return data;\n }\n\n public getHireDate() {\n const momentHireDate = moment(this.hireDate).format(this.dateFormat);\n return momentHireDate ? `'${ invertFieldDate(momentHireDate, this.dateFormat) }'` : `'${ getNowDate() }'`;\n }\n\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { DynamicFormModule } from \"@seniorsistemas/angular-components\";\nimport { AutocompleteService } from \"./autocomplete.service\";\nimport { LookupService } from \"./lookup.service\";\n\nimport { WorkstationgroupLookupComponent } from \"./workstationgroup-lookup.component\";\n\n@NgModule({\n imports: [FormsModule, DynamicFormModule, ReactiveFormsModule, CommonModule, TranslateModule],\n declarations: [WorkstationgroupLookupComponent],\n exports: [WorkstationgroupLookupComponent],\n providers: [AutocompleteService, LookupService],\n})\nexport class WorkstationgroupLookupModule {\n}\n","import {\n Component,\n OnInit,\n ViewChild,\n Input,\n ChangeDetectorRef,\n AfterViewInit,\n OnDestroy, EventEmitter,\n} from \"@angular/core\";\nimport { FormGroup, FormBuilder } from \"@angular/forms\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { CustomFieldsComponent, NumberLocaleOptions } from \"@seniorsistemas/angular-components\";\nimport { ConfirmationService } from \"primeng/api\";\nimport { compareValues, isValid, mountCustomToSave } from \"../utils/helpers\";\nimport { DirectionEnumeration } from \"../../core/enums\";\nimport { Subject } from \"rxjs\";\n\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: \"c-historical-bank-account\",\n templateUrl: \"./historical-bank-account.component.html\",\n styleUrls: [\"./historical-bank-account.component.scss\"],\n})\nexport class HistoricalBankAccountComponent implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild(CustomFieldsComponent, { static: false })\n public customFields: CustomFieldsComponent;\n @Input()\n public formGroup: FormGroup;\n @Input()\n public fieldFormGroup: string;\n @Input()\n public _dateWhen: string;\n @Input()\n public _displayDateWhen: string;\n @Input()\n public recordByRow: number = 1;\n @Input()\n public showDateWhen: boolean = false;\n @Input()\n public msgTooltipAdd: string;\n @Input()\n public isEditMode: boolean = false;\n @Input()\n public isViewMode: boolean = false;\n @Input()\n public currency: NumberLocaleOptions;\n @Input()\n public customEntity: string;\n @Input()\n public customService: string;\n @Input()\n public withSideBar: boolean = true;\n\n private visibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n private ngUnsubscribe = new Subject();\n private historicalBankAccountList: FormGroup;\n private orderBy: { field: string; direction: DirectionEnumeration } = {\n field: \"displayDateWhen\",\n direction: DirectionEnumeration.DESC,\n };\n\n private _visible: boolean;\n public bankAccountItemInput: object = {};\n public totalRecords: number = 0;\n public actionLabel: string = this.translateService.instant(\"hcm.payroll.entries_query_actions_total_title\");\n public loading = true;\n public parameters: any;\n public msgTotalLimitByPercentage: string;\n public listData: object[] = [];\n public listDataNoPage: object[] = [];\n public cols = [\n {\n label: this.translateService.instant(\"hcm.payroll.historical_bank_account_label_date_when\"),\n field: \"displayDateWhen\",\n },\n {\n label: this.translateService.instant(\"hcm.payroll.historical_bank_account_label_bank\"),\n field: \"bank\",\n },\n {\n label: this.translateService.instant(\"hcm.payroll.historical_bank_account_label_bank_branch\"),\n field: \"bankBranch\",\n },\n {\n label: this.translateService.instant(\"hcm.payroll.historical_bank_account_label_account_type\"),\n field: \"accountType\",\n },\n {\n label: this.translateService.instant(\"hcm.payroll.historical_bank_account_label_account\"),\n field: \"bankAccount\",\n },\n {\n label: this.translateService.instant(\"hcm.payroll.historical_bank_account_label_digit\"),\n field: \"digit\",\n },\n {\n label: this.translateService.instant(\"hcm.payroll.historical_bank_account_label_percentage\"),\n field: \"percentage\",\n },\n ];\n actions = (rowData: any = {}, key: any) => {\n return [\n {\n visible: this.isEditMode,\n label: this.translateService.instant(\"hcm.payroll.employees_image_cropper_view\"),\n command: () => {\n rowData[\"index\"] = key;\n this.bankAccountItemInput = { currentItem: rowData, listData: this.listDataNoPage, isEditMode: false };\n this.visible = true;\n },\n },\n {\n visible: !!(!this.isEditMode && this.withSideBar),\n label: this.translateService.instant(\"hcm.payroll.edit\"),\n command: () => {\n rowData[\"index\"] = key;\n this.bankAccountItemInput = { currentItem: rowData, listData: this.listDataNoPage, isEditMode: true };\n this.visible = true;\n },\n },\n {\n visible: !this.isEditMode,\n label: this.translateService.instant(\"hcm.payroll.delete\"),\n command: () => {\n this.loading = true;\n this.deleteAnnuityItem(key);\n },\n },\n ];\n }\n\n constructor(\n private confirmationService: ConfirmationService,\n private translateService: TranslateService,\n private activatedRoute: ActivatedRoute,\n private cd: ChangeDetectorRef,\n private formBuilder: FormBuilder,\n ) {\n this.createFormGroup();\n }\n\n ngOnInit() {\n this.formGroup.setControl(this.fieldFormGroup, this.historicalBankAccountList);\n }\n\n private createFormGroup(): void {\n this.historicalBankAccountList = this.formBuilder.group({\n historicalBankAccountList: this.formBuilder.control(null),\n });\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n }\n\n public onLazyLoad(event?: any): void {\n const first = event && event.first ? event.first : 0;\n const rows = event && event.rows ? event.rows : this.recordByRow;\n const arrList = this.getHistoricalBankAccountList();\n this.listData = [];\n this.totalRecords = null;\n\n if (event && event.multiSortMeta && event.multiSortMeta.length) {\n event.multiSortMeta.map((value: any) => {\n this.orderBy.field = value.field;\n this.orderBy.direction = value.order === 1 ? DirectionEnumeration.ASC : DirectionEnumeration.DESC;\n });\n }\n\n if (arrList && arrList.length) {\n this.totalRecords = arrList.length;\n this.listData = arrList;\n this.listDataNoPage = [...arrList];\n this.listData.sort(compareValues(this.orderBy.field, this.orderBy.direction));\n this.listData = this.listData.slice(first, (first + rows));\n } else {\n this.listDataNoPage = [];\n }\n\n if (this.isEditMode || arrList && arrList.length === 1) {\n this.refreshCssInIE11();\n }\n\n this.loading = false;\n\n }\n\n /**\n * Um Bug de CSS que acontece nas linhas da tabela, que resolve só atualizando qualquer parte do CSS da pagina.\n */\n private refreshCssInIE11() {\n if (/msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent)) {\n setTimeout( () => {\n const row = document.getElementsByClassName(\"row0\");\n if (row && row[0])\n row[0].className = 'refresh';\n }, 1);\n }\n }\n\n public add(): void {\n this.bankAccountItemInput = {};\n this.visible = true;\n }\n\n private deleteAnnuityItem(index: number): void {\n let newlist = [...this.getHistoricalBankAccountList()];\n newlist.sort(compareValues(this.orderBy.field, this.orderBy.direction));\n delete newlist[index];\n newlist = newlist.filter(val => val);\n this.historicalBankAccountList.get(\"historicalBankAccountList\").setValue(newlist);\n this.verifyTotalPercentage();\n this.onLazyLoad();\n }\n\n public getHistoricalBankAccountList(): object[] {\n if (this.historicalBankAccountList.get(\"historicalBankAccountList\") &&\n this.historicalBankAccountList.get(\"historicalBankAccountList\").value &&\n this.historicalBankAccountList.get(\"historicalBankAccountList\").value.length)\n return this.historicalBankAccountList.get(\"historicalBankAccountList\") && this.historicalBankAccountList.get(\"historicalBankAccountList\").value;\n else\n return [];\n }\n\n public addItemInList($event: any): void {\n const index = $event && $event.index >= 0 ? $event.index : null;\n const newDataList = this.getHistoricalBankAccountList() ? this.getHistoricalBankAccountList() : [];\n\n if (index != null) {\n newDataList[index] = $event;\n delete $event.index;\n } else {\n if (isValid($event[\"customFields\"]) && Object.keys($event[\"customFields\"]).length) {\n const customValue = mountCustomToSave($event[\"customFields\"]);\n $event[\"customFields\"] = [...customValue];\n }\n $event[\"dateWhen\"] = this.dateWhen;\n newDataList.push($event);\n }\n\n\n\n this.historicalBankAccountList.get(\"historicalBankAccountList\").setValue(newDataList);\n this.verifyTotalPercentage();\n this.onLazyLoad({ first: this.getNumberPageByIndex(index, newDataList) });\n }\n\n private getNumberPageByIndex(index: number, list: object[]): number {\n if (index) {\n const total = list.length;\n const sub = this.recordByRow - 1;\n return Math.ceil(total / this.recordByRow) * this.recordByRow - sub - 1;\n }\n return null;\n }\n\n private verifyTotalPercentage(): void {\n const list = this.getHistoricalBankAccountList() ? this.getHistoricalBankAccountList() : [];\n const arrayPercentage = [];\n\n if (!list.length) return this.msgTotalLimitByPercentage = null;\n\n list.filter(item => arrayPercentage.push(item && item[\"percentage\"]));\n\n const sumPercentage = arrayPercentage.reduce((total: number, percentage: number) => {\n return total + percentage;\n }, 0);\n\n if (sumPercentage === 100) {\n this.msgTotalLimitByPercentage = this.translateService.instant(\"hcm.payroll.historical_bank_account_msg_limit_total_by_percentage\");\n } else {\n this.msgTotalLimitByPercentage = null;\n }\n\n }\n\n public get scopedActions() {\n return this.actions.bind(this);\n }\n\n public get recordsMessage() {\n return `${ this.totalRecords || 0 } ${ this.totalRecords === 1 ? this.translateService.instant(\"hcm.payroll.admission_register\") : this.translateService.instant(\"hcm.payroll.admission_registers\") }`;\n }\n\n public get getTooltipAndDisableButtonAdd() {\n return this.dateWhen ? null : this.msgTooltipAdd;\n }\n\n @Input()\n public get dateWhen(): string {\n return this._dateWhen;\n }\n\n public set dateWhen(value: string) {\n this._dateWhen = value;\n if (this._dateWhen) {\n this.listData.filter(row => row[\"dateWhen\"] = this._dateWhen);\n }\n }\n\n @Input()\n public get displayDateWhen(): string {\n return this._displayDateWhen;\n }\n\n public set displayDateWhen(value: string) {\n this._displayDateWhen = value;\n if (this._displayDateWhen) {\n this.listData.filter(row => row[\"displayDateWhen\"] = this._displayDateWhen);\n }\n }\n\n @Input()\n public set addListData(list: object[]) {\n this.loading = true;\n this.historicalBankAccountList.get(\"historicalBankAccountList\").patchValue(list);\n this.verifyTotalPercentage();\n this.onLazyLoad();\n }\n\n @Input()\n public get visible(): boolean {\n return this._visible;\n }\n\n public set visible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(this.visible);\n }\n public close(): void {\n this.visible = false;\n }\n\n}\n","import {\n Component,\n OnInit,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n OnDestroy,\n AfterViewInit,\n ViewChild,\n} from \"@angular/core\";\nimport { FormGroup, FormBuilder, Validators, ValidatorFn, AbstractControl } from \"@angular/forms\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { NumberLocaleOptions, CustomFieldsComponent } from \"@seniorsistemas/angular-components\";\nimport { Subject } from \"rxjs\";\nimport {\n verifyValidationsForm,\n clearValues,\n configEnabledFields,\n mountCustomToShow,\n} from \"../../utils/helpers\";\n\n@Component({\n selector: \"bank-account\",\n templateUrl: \"./historical-bank-account-form.component.html\",\n styleUrls: [\"../historical-bank-account.component.scss\"]\n})\nexport class HistoricalBankAccountFormComponent implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild(CustomFieldsComponent, { static: true })\n customFields: CustomFieldsComponent;\n\n @Input()\n public currency: NumberLocaleOptions;\n @Input()\n public customEntity: string;\n @Input()\n public customService: string;\n @Input()\n public withSideBar: boolean = true;\n @Input()\n public isEditMode: boolean = false;\n\n @Output()\n public visibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output()\n public bankAccountItemToList: EventEmitter<any> = new EventEmitter<any>();\n\n private _visible: boolean;\n private ngUnsubscribe = new Subject();\n private employeeId: string;\n private bankAccountList: object[];\n private initialValidatorOfPercentage: ValidatorFn[] = [Validators.required, Validators.min(0.01)];\n private initialValidatorOfBankAccount: ValidatorFn[] = [Validators.required, Validators.maxLength(12)];\n\n\n public labelBtnAdd: string = \"hcm.payroll.employees_add\";\n public bankAccountFormGroup: FormGroup;\n public maxValuePercentage: number = 100.00;\n public visibleBtnSave: boolean = true;\n public isView: boolean = false;\n\n constructor(\n private translate: TranslateService,\n private formBuilder: FormBuilder,\n private route: ActivatedRoute,\n private cd: ChangeDetectorRef,\n ) {\n this.createFormGroup();\n this.registerSubjects();\n }\n\n /**\n * Método valida se o número atual informado na conta para o mesmo banco, agencia e tipo já foi inserido em outro registro da tabela.\n * Caso esta conta já esteja em uso por outro registro, retorna \"bankAccountDuplicate\" = true.\n * @param listCompare\n * @param accountTypeValue\n * @param bankValue\n * @param bankBranchValue\n */\n private validateDuplicateBankAccount(\n listCompare: object[],\n accountTypeValue: string,\n bankValue: string,\n bankBranchValue: string) {\n\n return (control: AbstractControl): Validators => {\n const value = control && control.value;\n let condition = false;\n listCompare.filter((item, key) => {\n if (key != item[\"index\"] && value && item[\"bank\"] && item[\"bank\"].tableId === bankValue &&\n item[\"bankBranch\"] && item[\"bankBranch\"].tableId === bankBranchValue &&\n item[\"accountType\"] && item[\"accountType\"].key === accountTypeValue &&\n Number(item[\"bankAccount\"]) === Number(value)) {\n return condition = true;\n }\n });\n\n if (condition) {\n return { bankAccountDuplicate: true };\n } else {\n return null;\n }\n };\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next(true);\n this.ngUnsubscribe.unsubscribe();\n }\n\n private registerSubjects(): void {\n }\n\n private createFormGroup(): void {\n this.bankAccountFormGroup = this.formBuilder.group({\n id: this.formBuilder.control(null),\n index: this.formBuilder.control(null),\n employee: this.formBuilder.control({ value: { tableId: null }, disabled: true }),\n dateWhen: this.formBuilder.control(null),\n displayDateWhen: this.formBuilder.control(null),\n bank: this.formBuilder.control(null, Validators.required),\n bankBranch: this.formBuilder.control(null, Validators.required),\n accountType: this.formBuilder.control(null, Validators.required),\n bankAccount: this.formBuilder.control(null, Validators.compose([...this.initialValidatorOfBankAccount])),\n digit: this.formBuilder.control(null, Validators.maxLength(3)),\n percentage: this.formBuilder.control(null, Validators.compose([\n ...this.initialValidatorOfPercentage,\n Validators.max(this.maxValuePercentage),\n ])),\n customFields: this.formBuilder.control(null),\n });\n }\n\n // Actions Bank\n public onSelectBank() {\n this.cleanBankInformation();\n this.beforeSetBankAccountValidator();\n }\n\n public onClearBank() {\n this.bankAccountFormGroup.get(\"bank\").reset();\n this.cleanBankInformation();\n this.beforeSetBankAccountValidator();\n }\n\n private cleanBankInformation(): void {\n const fields = [\"bankBranch\"];\n clearValues(this.bankAccountFormGroup, fields);\n }\n\n // Actions BankBranch\n public onClearBankBranch() {\n this.bankAccountFormGroup.get(\"bankBranch\").reset();\n this.beforeSetBankAccountValidator();\n }\n\n // Actions BankBranch\n public onClearAccountType() {\n this.bankAccountFormGroup.get(\"accountType\").reset();\n this.beforeSetBankAccountValidator();\n }\n\n @Input()\n public get visible(): boolean {\n return this._visible;\n }\n\n public set visible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(this.visible);\n }\n\n @Input()\n public set isEditAndViewValue(value: any) {\n this.resetForm();\n this.visibleBtnSave = true;\n if (value && value.currentItem && Object.keys(value.currentItem).length) {\n this.bankAccountFormGroup.patchValue(this.convertDTOToShowWithCustomFields({...value.currentItem}));\n this.labelBtnAdd = \"hcm.payroll.employees_update\";\n this.setValidatorsAccordingList(value.listData, value.currentItem[\"index\"]);\n if (!this.isView) {\n this.configEnableFields(value && value[\"isEditMode\"]);\n }\n } else {\n this.labelBtnAdd = \"hcm.payroll.employees_add\";\n }\n\n }\n\n public convertDTOToShowWithCustomFields(data: object): object {\n const obj = {... data};\n obj[\"customFields\"] = mountCustomToShow(obj[\"customFields\"]);\n return obj;\n }\n\n private configEnableFields(isEditMode: boolean) {\n this.visibleBtnSave = isEditMode;\n configEnabledFields(this.bankAccountFormGroup, isEditMode, [\n \"bank\",\n \"bankBranch\",\n \"accountType\",\n \"bankAccount\",\n \"digit\",\n \"percentage\",\n \"customFields\",\n ], []);\n }\n\n public close(): void {\n this.resetForm();\n this.visible = false;\n }\n\n public addItem(): void {\n this.bankAccountFormGroup.updateValueAndValidity();\n verifyValidationsForm.call(this.bankAccountFormGroup);\n\n if (this.bankAccountFormGroup.valid) {\n if (this.employeeId) {\n this.bankAccountFormGroup.get(\"employee\").setValue({\n tableId: this.employeeId,\n name: \"\",\n });\n }\n this.bankAccountItemToList.emit(this.bankAccountFormGroup.getRawValue());\n this.visible = false;\n this.resetForm();\n }\n }\n\n public resetForm(): void {\n this.bankAccountFormGroup.reset();\n this.labelBtnAdd = \"hcm.payroll.employees_add\";\n if (this.customFields && this.customFields.formGroup) this.customFields.formGroup.reset();\n }\n\n public getBankTableId() {\n return this.bankAccountFormGroup.controls.bank.value\n ? `'${ this.bankAccountFormGroup.controls.bank.value.tableId }'`\n : null;\n }\n\n\n public get percentagePlaceholder(): string {\n return `0${ this.currency && this.currency.decimalSeparator }00`;\n }\n\n public get optionsPercentage(): object {\n return { ...this.getOptions(), precision: 2 };\n }\n\n private getOptions(): any {\n return {\n prefix: \"\",\n thousands: this.currency.thousandsSeparator,\n decimal: this.currency.decimalSeparator,\n };\n }\n\n /**\n * O Input que recebe a lista do component pai e chama o método de validação passando a lista recebida.\n * @param bankAccountList\n */\n @Input()\n public set getListBankAccount(bankAccountList: object[]) {\n if (bankAccountList) {\n this.setValidatorsAccordingList(bankAccountList);\n } else {\n this.resetForm();\n }\n }\n\n /**\n * Recebe a lista de registros já inseridos na tabela adiciona em uma variável os valores que serão usados para\n * a validação dos campos \"percentage\" e \"bankAccount\".\n * Quando tem index significa que está em uma edição, os valores na posição do registro da edição (index) não serão adicionados\n * no array de comparação dos validators.\n * @param bankAccountList\n * @param index\n */\n private setValidatorsAccordingList(bankAccountList: object[], index: number = null) {\n this.bankAccountList = bankAccountList && bankAccountList.length ? [...bankAccountList] : [];\n\n const percentageIncluded = [];\n\n if (this.bankAccountList && this.bankAccountList.length) {\n this.bankAccountList.filter((field, key) => {\n if (field[\"percentage\"] && key != index) {\n percentageIncluded.push(field[\"percentage\"]);\n }\n });\n\n }\n this.beforeSetBankAccountValidator();\n this.validatePercentageValid(percentageIncluded);\n }\n\n /**\n * Antes de setar o validator prepara as variáveis necessária para que seja feita a validação do campo.\n */\n public beforeSetBankAccountValidator() {\n const bankAccount = this.bankAccountFormGroup.get(\"bankAccount\");\n\n const accountTypeValue = this.bankAccountFormGroup.get(\"accountType\") &&\n this.bankAccountFormGroup.get(\"accountType\").value &&\n this.bankAccountFormGroup.get(\"accountType\").value[\"key\"];\n\n const bankValue = this.bankAccountFormGroup.get(\"bank\") &&\n this.bankAccountFormGroup.get(\"bank\").value &&\n this.bankAccountFormGroup.get(\"bank\").value[\"tableId\"];\n\n const bankBranchValue = this.bankAccountFormGroup.get(\"bankBranch\") &&\n this.bankAccountFormGroup.get(\"bankBranch\").value &&\n this.bankAccountFormGroup.get(\"bankBranch\").value[\"tableId\"];\n\n if (bankValue &&\n bankBranchValue &&\n accountTypeValue &&\n this.bankAccountList &&\n this.bankAccountList.length) {\n\n bankAccount\n .setValidators(Validators.compose([\n ...this.initialValidatorOfBankAccount,\n this.validateDuplicateBankAccount(this.bankAccountList, accountTypeValue, bankValue, bankBranchValue),\n ]));\n bankAccount.updateValueAndValidity();\n } else {\n bankAccount\n .setValidators(Validators.compose([\n ...this.initialValidatorOfBankAccount,\n ]));\n }\n\n }\n\n /**\n * Este método calcula as parcentagens que já foram inseridas, e seta a diferença para chegar em\n * 100% na validação do campo \"percentage\" como um novo maxValue;\n * @param listValue\n */\n private validatePercentageValid(listValue: number[]) {\n const percentage = this.bankAccountFormGroup.get(\"percentage\");\n this.maxValuePercentage = listValue\n .reduce((currentValue, total) => currentValue - total,\n 100.00,\n );\n\n percentage\n .setValidators(Validators.compose([\n ...this.initialValidatorOfPercentage,\n Validators.max(this.maxValuePercentage),\n ]));\n percentage.updateValueAndValidity();\n }\n\n @Input()\n public set isViewMode(condition: boolean) {\n this.isView = !!(condition && !this.withSideBar);\n this.configEnableFields(!this.isView);\n if (!this.isView) this.resetForm();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\nimport { ServiceType } from '../../core/enums/serviceType';\n\n@Injectable()\nexport class HistoricalBankAccountService {\n constructor(private http: HttpClientService) {}\n\n query(path: string, body: object, service: ServiceType = ServiceType.PAYROLL): Observable<any> {\n return this.http.query(path, body, service);\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport {\n ButtonModule,\n LoadingStateModule,\n SidebarModule, ControlErrorsModule, CustomFieldsModule,\n} from \"@seniorsistemas/angular-components\";\nimport { CurrencyMaskModule } from \"ng2-currency-mask\";\nimport { ConfirmationService } from \"primeng/api\";\nimport { AutoCompleteModule } from \"primeng/autocomplete\";\nimport { FieldsetModule } from \"primeng/fieldset\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { PanelModule } from \"primeng/panel\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { CoreDirectives } from \"../directives/index\";\nimport { HistoricalBankAccountFormComponent } from \"./historical-bank-account-form/historical-bank-account-form.component\";\nimport { InputDateModule } from \"../input-date/index\";\nimport { InputRestAutoCompleteModule } from \"../input-rest-auto-complete/index\";\nimport { InputRestAutoCompleteEnumModule } from \"../input-rest-auto-complete-enum/index\";\n\nimport { SharedModule } from \"../shared/shared.module\";\nimport { HistoricalBankAccountComponent } from \"./historical-bank-account.component\";\nimport { HistoricalBankAccountService } from \"./historical-bank-account.service\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule,\n TableModule,\n ButtonModule,\n TooltipModule,\n LoadingStateModule,\n SidebarModule,\n InputDateModule,\n ControlErrorsModule,\n InputRestAutoCompleteEnumModule,\n CurrencyMaskModule,\n InputRestAutoCompleteModule,\n InputTextModule,\n CoreDirectives,\n FieldsetModule,\n CustomFieldsModule,\n PanelModule,\n ],\n declarations: [HistoricalBankAccountComponent, HistoricalBankAccountFormComponent],\n providers: [HistoricalBankAccountService, ConfirmationService],\n exports: [HistoricalBankAccountComponent],\n})\nexport class HistoricalBankAccountModule {\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { ServiceType } from '../../core/enums/serviceType';\n\nimport { HttpClientService } from \"../shared/http-client.service\";\n\n@Injectable()\nexport class HistoricalBankAccountListService {\n constructor(private http: HttpClientService, private httpClient: HttpClient) {\n }\n\n public remove(id: any, dateWhen: string, service: ServiceType = ServiceType.PAYROLL, dependentId?: string) {\n if (service === ServiceType.DEPENDENT) {\n return this.httpClient\n .post(\"hcm/dependent/queries/historicalJudicialPensionBankAccountDelete\", {\n dependentId: dependentId,\n dateWhen: dateWhen,\n });\n } else {\n return this.http.post(\"actions/historicalEmployeeBankAccountDelete\", {\n employeeId: id,\n dateWhen: dateWhen\n });\n }\n }\n\n}\n","import {\n Component,\n OnInit,\n ViewChild,\n ChangeDetectorRef,\n AfterViewInit,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n} from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { CustomFieldsComponent } from \"@seniorsistemas/angular-components\";\nimport * as moment_ from \"moment\";\nimport { ConfirmationService, MessageService } from \"primeng/api\";\nimport { ServiceType } from '../../core/enums/serviceType';\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { HistoricalBankAccountListService } from \"./historical-bank-account-list.service\";\n\nconst moment = moment_;\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: \"c-historical-bank-account-list\",\n templateUrl: \"./historical-bank-account-list.component.html\",\n styleUrls: [\"./historical-bank-account-list.component.scss\"],\n})\nexport class HistoricalBankAccountListComponent implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild(CustomFieldsComponent, { static: false })\n public customFields: CustomFieldsComponent;\n\n @Input()\n public permission: object;\n @Input()\n public employeeId: string;\n @Input()\n public dependentId: string;\n @Input()\n public dateFormat: string;\n @Input()\n public endPoint: string = \"hcm/payroll/queries/historicalEmployeeBankAccountQuery\";\n @Input()\n public keyPayload: string = \"historicalEmployeeBankAccount\";\n @Input()\n public withSidebar: boolean = true;\n\n\n @Output()\n public enableView: EventEmitter<any> = new EventEmitter<any>();\n\n private lastRecord: any;\n private ngUnsubscribe = new Subject();\n public initParameters: any;\n public loading: boolean = true;\n public parameters: any;\n\n public columns = [\n {\n label: this.translateService.instant(\n \"hcm.payroll.historical_bank_account_label_date_when\",\n ),\n field: \"dateWhen\",\n },\n {\n label: this.translateService.instant(\n \"hcm.payroll.historical_bank_account_label_bank\",\n ),\n field: \"bank.name\",\n },\n {\n label: this.translateService.instant(\n \"hcm.payroll.historical_bank_account_label_bank_branch\",\n ),\n field: \"bankBranch.name\",\n },\n {\n label: this.translateService.instant(\n \"hcm.payroll.historical_bank_account_label_account\",\n ),\n field: \"bankAccount\",\n },\n {\n label: this.translateService.instant(\n \"hcm.payroll.historical_bank_account_label_percentage\",\n ),\n field: \"percentage\",\n },\n {\n label: this.translateService.instant(\n \"hcm.payroll.historical_bank_account_label_qtd_account\",\n ),\n field: \"numberOfBankAccount\",\n },\n ];\n\n constructor(\n private confirmationService: ConfirmationService,\n private translateService: TranslateService,\n private activatedRoute: ActivatedRoute,\n private cd: ChangeDetectorRef,\n private router: Router,\n private messageService: MessageService,\n private historicalBankAccountListService: HistoricalBankAccountListService,\n ) {\n }\n\n ngOnInit() {\n this.initParameters = { employeeId: this.employeeId, dependentId: this.dependentId };\n }\n\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n }\n\n public onLazyLoad(payload: any) {\n payload.forEach((value: any) => {\n value.dateWhen = moment(value.dateWhen).format(this.dateFormat);\n });\n\n this.onGridLoad(payload);\n\n this.loading = false;\n }\n\n public getMenuActions(rowData: any) {\n return [\n {\n label: this.translateService.instant(\"hcm.payroll.employees_image_cropper_view\"),\n command: () => {\n const dateWhen = rowData && rowData.dateWhen && moment(rowData.dateWhen, this.dateFormat).format(\"YYYY-MM-DD\");\n if (this.withSidebar)\n this.router.navigate([`historical-bank-account/${ dateWhen }`], {\n relativeTo: this.activatedRoute,\n });\n else\n this.enableView.emit(dateWhen);\n },\n },\n {\n label: this.translateService.instant(\"hcm.payroll.delete\"),\n command: () => {\n if (this.isAllowToDeleteHistorical && rowData) {\n this.delete(rowData.id, rowData.dateWhen);\n } else {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n });\n }\n },\n },\n ];\n }\n\n public delete(id: any, dateWhen: string) {\n if (id === this.lastRecord.id) {\n const dateWhenToDto = moment(dateWhen, this.dateFormat).format(\"YYYY-MM-DD\");\n this.confirmationService.confirm({\n message: `${ this.translateService.instant(\n \"hcm.payroll.employees_movimentation_historical_bank_account_question_confirm_delete\",\n ) }?`,\n accept: () => {\n this.loading = true;\n const service = this.withSidebar ? ServiceType.PAYROLL : ServiceType.DEPENDENT;\n this.historicalBankAccountListService\n .remove(this.employeeId, dateWhenToDto, service, this.dependentId)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n () => {\n this.messageService.add({\n severity: \"success\",\n summary: this.translateService.instant(\"hcm.payroll.success\"),\n detail: this.translateService.instant(\"hcm.payroll.employees_movimentation_historical_bank_account_remove\"),\n });\n this.parameters = (this.parameters && { ...this.parameters }) || {};\n },\n () => {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.employees_movimentation_historical_bank_account_error_remove\"),\n });\n this.loading = false;\n },\n );\n },\n });\n } else {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.not_allowed_delete_last\"),\n });\n }\n }\n\n public add() {\n if (this.isAllowToAddHistorical) {\n this.router.navigate([\"historical-irrf-new\"], {\n relativeTo: this.activatedRoute,\n });\n } else {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n });\n }\n }\n\n private onGridLoad(payload: any) {\n if (payload && payload.length) {\n this.lastRecord = payload[0];\n }\n }\n\n private get isAllowToAddHistorical() {\n return (\n this.permission[\"incluir\"]\n );\n }\n\n private get isAllowToDeleteHistorical() {\n return (\n this.permission[\"excluir\"]\n );\n }\n\n public get scopedActions() {\n return this.getMenuActions.bind(this);\n }\n\n @Input()\n public set reloadList(condition: boolean) {\n if (condition) {\n this.loading = true;\n this.parameters = (this.parameters && { ...this.parameters }) || {};\n }\n }\n\n}\n","import { CommonModule } from \"@angular/common\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { ButtonModule, LoadingStateModule } from \"@seniorsistemas/angular-components\";\nimport { AutoCompleteModule } from \"primeng/autocomplete\";\nimport { ConfirmDialogModule } from \"primeng/confirmdialog\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { DataListRestModule } from \"../data-list-rest/index\";\n\nimport { SharedModule } from \"../shared/shared.module\";\nimport { HistoricalBankAccountListComponent } from \"./historical-bank-account-list.component\";\nimport { HistoricalBankAccountListService } from \"./historical-bank-account-list.service\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule,\n TableModule,\n ButtonModule,\n TooltipModule,\n LoadingStateModule,\n DataListRestModule,\n ConfirmDialogModule,\n ],\n declarations: [HistoricalBankAccountListComponent],\n providers: [HistoricalBankAccountListService],\n exports: [HistoricalBankAccountListComponent],\n})\nexport class HistoricalBankAccountListModule {\n}\n","import { Operators } from '../enums';\n\nexport class EntityODataParameter {\n private _field: string;\n private _operation: Operators;\n private _value: any;\n\n constructor(entityODataParameter: { field: string; value: string; operation?: Operators }) {\n this.field = entityODataParameter.field;\n this.value = entityODataParameter.value;\n this.operation = entityODataParameter.operation;\n }\n\n set field(value) {\n this._field = value;\n }\n\n get field() {\n return this._field;\n }\n\n set operation(value) {\n this._operation = value;\n }\n\n get operation() {\n return this._operation;\n }\n\n set value(value) {\n this._value = value;\n }\n\n get value() {\n return this._value;\n }\n\n public toString(): string {\n if (this.operation === Operators.CONTAINING) {\n return `${this.operation}(lower(${this.field}), lower(${this.value}))`;\n }\n return `${this.field} ${this.operation || ''} ${this.value}`;\n }\n}\n","import { AbstractControl, Validators, ValidatorFn, ValidationErrors } from \"@angular/forms\";\nimport { CalendarLocaleOptions } from \"@seniorsistemas/angular-components\";\nimport * as _moment from \"moment\";\nimport { unitOfTime } from \"moment\";\nimport { CompareType } from \"../../../core/enums\";\nimport { DateValidateOptions, DateCompareOptions } from \"../../../core/interfaces\";\nimport { removeCharacteresSpecials } from \"../helpers\";\n\nconst moment = _moment;\nconst dateStartG5 = moment('31/12/1900', 'DD/MM/YYYY');\nconst dateEndG5 = moment('04/06/2080', 'DD/MM/YYYY');\n\nexport class DateValidator {\n constructor() { }\n\n /**\n * Validador que verifica se a data está no formato correto.\n * @param dateFormat Formato da data\n * @param options Opções para validar a data\n * @returns Objeto no formato { invalidDate: true } indicando que a data não é válida\n */\n static isValidDate(dateFormat: string, options?: DateValidateOptions): ValidatorFn {\n const validator: ValidatorFn = (control: AbstractControl): Validators => {\n const useG5DateRange = options && options.hasOwnProperty('useG5DateRange') ? options.useG5DateRange : true;\n const value = removeCharacteresSpecials(control.value);\n dateFormat = removeCharacteresSpecials(dateFormat);\n if (value && dateFormat && value.length === dateFormat.length && !control.value.includes('_')) {\n const dateValue = moment(value, dateFormat);\n const valid = dateValue.isValid();\n const isValidRange = useG5DateRange ? dateValue.isBetween(dateStartG5, dateEndG5, null, '[]') : true;\n return valid && isValidRange ? null : { invalidDate: true };\n }\n return null;\n };\n return validator;\n }\n /**\n * Validador que verifica se data inserida no formulário é inferior à data informada.\n * @param compareToDate Data a ser comparada.\n * @param dateFormat Informações do local\n * @param granularity Granularidade da comparação. Ex.: 'day', 'mounth', 'year'.\n * @returns Objeto no formato { lowerDate: true } indicando que a data é menor\n */\n static isDateLower(compareToDate: string, dateFormat: string, granularity: unitOfTime.StartOf = 'day'): ValidatorFn {\n const options: DateCompareOptions = { compareName: \"lowerDate\", granularity: granularity };\n const validator = this.isValidDateCompare(compareToDate, dateFormat, CompareType.isBefore, options);\n return validator;\n }\n\n /**\n * Validador genérico usando comparação entre datas\n * @param compareToDate Data a ser comparada\n * @param dateFormat Informações do local\n * @param compareType Tipo de comparação\n * @param options Opções para a comparação\n * @returns Objeto no formato { nomeChave: true } indicando que a data não é válida\n */\n static isValidDateCompare(compareToDate: string, dateFormat: string, compareType: CompareType, options?: DateCompareOptions):\n ValidatorFn {\n const validator: ValidatorFn = (control: AbstractControl): Validators => {\n const value = removeCharacteresSpecials(control.value);\n dateFormat = removeCharacteresSpecials(dateFormat);\n if (value && dateFormat && value.length === dateFormat.length && !control.value.includes('_')) {\n const referenceDate = moment(value, dateFormat);\n const compareTo = moment(compareToDate, dateFormat);\n return this.dateCompare(referenceDate, compareTo, compareType, options);\n }\n return null;\n };\n return validator;\n }\n\n /**\n * Retorna o formato da data de acordo com o local\n * @param calendar Informações de calendário\n * @param removeDayPart Remove os dias do formato da data (Opcional)\n * @returns Exemplo de retornos 'DDMMYYYY', 'MMYYYY', ou seja, retorna o formato somente com letras\n */\n static getDateFormatFromLocale(calendar: CalendarLocaleOptions, removeDayPart?: boolean): string {\n const dateFormat = calendar && calendar.dateFormat;\n if (dateFormat) {\n let result = dateFormat.replace(/[y]/g, \"YY\").replace(/[^a-zA-Z]/g, \"\").toUpperCase();\n if (removeDayPart) {\n result = result.replace(\"DD\", \"\");\n }\n return result;\n }\n return null;\n }\n\n /**\n * Retorna o formato da data/hora de acordo com o local\n * @param calendar Informações de calendário\n * @returns Exemplo de retornos 'DD/MM/YYYY HH:mm:ss'\n */\n static getDateTimeFormatFromLocale(calendar: CalendarLocaleOptions): string {\n if (calendar) {\n let dateFormat = calendar.dateFormat.toString();\n dateFormat = dateFormat.replace(/[y]/g, \"YY\").toUpperCase();\n dateFormat = dateFormat + \" HH:mm:ss\";\n\n return dateFormat;\n }\n return null;\n }\n\n /**\n * Retorna o formato da data de acordo com o local\n * @param calendar Informações de calendário\n * @returns Exemplo de retornos 'DD/MM/YYYY'\n */\n static getDateFormatFromCalendar(calendar: CalendarLocaleOptions): string {\n if (calendar && calendar.dateFormat) {\n let dateFormat = calendar.dateFormat.toString();\n dateFormat = dateFormat.replace(/[y]/g, \"YY\").toUpperCase();\n\n return dateFormat;\n }\n return null;\n }\n\n /**\n * Método auxiliar que realiza a comparação entre as datas e retorna um objeto caso a validação seja válida\n * @param referenceDate Data de referência para a comparação\n * @param compareToDate Data a ser comparada.\n * @param compareType Tipo de comparação.\n * @param options Opções para a comparação\n * @returns Objeto no formato { nomeChave: true } indicando que a data não é válida\n */\n private static dateCompare(referenceDate: any, compareToDate: any, compareType: CompareType, options?: DateCompareOptions):\n ValidationErrors {\n const compareTypeName: string = compareType === CompareType.isNotSame ? CompareType.isSame : compareType;\n const granularity = options && options.granularity ? options.granularity : \"day\";\n\n let comparison = referenceDate[compareTypeName](compareToDate, granularity);\n comparison = compareType === CompareType.isNotSame ? !comparison : comparison;\n if (comparison) {\n const keyName = options && options.compareName ? options.compareName : compareType;\n const result = {};\n result[keyName] = true;\n return result;\n }\n return null;\n }\n\n /**\n * Retorna uma mascara com as barras Ex: âDD/MM/YYYYâ\n * @param calendar\n */\n static getFormatDateWithBar(calendar: CalendarLocaleOptions): string {\n if (calendar && calendar.dateFormat) {\n let dateFormat = calendar.dateFormat.toString();\n dateFormat = dateFormat\n .replace(\"dd\", \"DD\")\n .replace(\"mm\", \"MM\")\n .replace(\"yy\", \"YYYY\");\n return dateFormat;\n }\n return null;\n }\n\n}\n","/**\n * WorkflowIntegrator\n * @version 1.0\n * @releaseDate 2020-05-27\n * @author Kallico Fróis <kallico.silva@senior.com.br>\n * @thanks Adriner Andrade <adriner.andrade@senior.com.br>\n *\n * @description Módulo desenvolvido para facilitar a integração entre a API do\n * Senior Workflow e Formulários WEB. A ferramenta foi desenvolvida para\n * interferir o mÃnimo possÃvel no formulário, desacoplando seus métodos,\n * tratando as lógicas dentro da ferramenta, minimizando os impactos no\n * componente na qual é implementada.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\ndeclare const workflowCockpit: any;\n\nexport interface TaskData {\n processName: string;\n taskName: string;\n}\n\nexport interface NextAction {\n connectsWithAutomaticGateway: boolean; // Se a ação está associada a algum elemento de decisão automática.\n finish: boolean; // Se a ação finaliza a execução do processo.\n name: string; // Nome da ação a ser realizada.\n}\n\n@Injectable()\nexport class WorkflowIntegrator {\n private workflowCockpit: any;\n private _isRequestNew: boolean;\n private _nextAction: NextAction;\n private _nextActionName: string;\n private _taskData: TaskData;\n private _isFinishing: any;\n private _processVariables: object = {};\n private _workflowPayload: object = {};\n\n private onLoadActions: object;\n private onSubmitActions: object;\n private onRollbackActions: object;\n public processInstanceId: BehaviorSubject<number> = new BehaviorSubject(null);\n\n /**\n * ### WorkflowIntegrator - Integrador de componentes ao Senior Workflow.\n *\n * @Description\n * Instancia a classe do integrador com Senior Workflow.\n * Ao instanciar a classe automaticamente as Actions são resetadas.\n *\n * @Actions\n * As Actions são ações a serem executadas durante o ciclo de vida do Workflow\n * Estas podem ser definidas usando os métodos:\n * `addOnLoadAction()`, `addOnSubmitAction()`, `addOnRollbackAction()`.\n *\n *\n */\n constructor() {\n this.resetActions();\n }\n\n /**\n * Instancia o workflowCockpit (API de integração)\n *\n * @description\n * Ao executar este método, as `onLoadAtions` serão executadas!\n * Se houverem ações para executar logo após o carregamento do formulário no\n * Senior Workflow as **ações devem ser adicionadas anteriormente** à \n * chamada dessa função, através do método `addOnLoadAction()`.\n *\n */\n public init(): void {\n this.workflowCockpit = workflowCockpit({\n init: async (data: any, info: any): Promise<any> => {\n this._isRequestNew = info && info.isRequestNew();\n this._taskData = info && (await info.getTaskData());\n\n if (!this._isRequestNew) {\n const processVariablesFromWorkflow = await info.getInfoFromProcessVariables();\n\n this.addProcessVariable(\n \"processVariablesFromWorkflow\",\n processVariablesFromWorkflow\n );\n }\n\n this.processInstanceId.next(data.processInstanceId);\n\n return await this._onLoadWorkflow(data, info);\n },\n onSubmit: async (data: any, info: any): Promise<object> => {\n this._nextAction = data && (await data.nextAction);\n this._isFinishing = this._nextAction.finish;\n this._nextActionName = this._nextAction.name;\n\n\n await this._onSubmitWorkflow(data, info);\n\n return this._workflowPayload;\n },\n onError: async (data: any, info: any): Promise<any> => {\n await this._onRollbackWorkflow(data, info);\n },\n });\n }\n\n /** # Workflow LOAD Section # **/\n\n /**\n * Método chamado no carregamento do formulário no Senior Workflow.\n *\n ** @important\n * Deve finalizar chamando o método `_runActions(this.onSbumitActions)`.\n */\n private async _onLoadWorkflow(data: any, info: any): Promise<any> {\n return await this._runActions(this.onLoadActions);\n }\n\n /** # Workflow SUBMIT Section # **/\n\n /**\n * Método chamado ao clicar no botão `Enviar` do Senior Workflow.\n *\n * @important\n * Deve iniciar chamando o método `_runActions(this.onSbumitActions)`.\n */\n private async _onSubmitWorkflow(data: any, info: any): Promise<any> {\n return await this._runActions(this.onSubmitActions);\n }\n\n /** # Workflow ROLLBACK Section # **/\n\n /**\n * Método chamado ao ocorrer um erro no processamento do formulário por\n * parte do Senior Workflow\n *\n * * @important\n * Deve iniciar chamando o método `_runActions(this.onRollbackActions)`.\n */\n private async _onRollbackWorkflow(data: any, info: any): Promise<any> {\n return await this._runActions(this.onRollbackActions);\n }\n\n /** # ACTIONS Section # **/\n\n /**\n * Reseta os objetos com as Ações a serem efetuadas no ciclo de vida do\n * Senior Workflow.\n */\n public resetActions(): void {\n this.onLoadActions = {};\n this.onSubmitActions = {};\n this.onRollbackActions = {};\n }\n\n /**\n * Executa as ações do objeto passado nos argumentos\n *\n * @param actionsToRun Objeto onde que deve conter uma chave\n * identificadora e um valor com um *método* ou *promise* a ser executada/\n * resolvida\n */\n private async _runActions(actionsToRun: object): Promise<any> {\n const result: object = {};\n\n await Promise.all(\n Object.entries(actionsToRun).map(async ([key, value]) => {\n try {\n result[key] = await value();\n return;\n } catch (err) {\n throw Error(err);\n }\n })\n );\n\n return result;\n }\n\n /** # Actions SETTERs # */\n\n /**\n * Adiciona um ação à pilha para execução no momento do carregamento do\n * formulário no Senior Workflow;\n *\n * @important\n * As Ações de carregamento **devem ser adicionadas antes da chamada do\n * método** `init()`!\n *\n * @param id Nome identificador para a callback a ser executada;\n * @param callback Função a ser executada;\n */\n public addOnLoadAction(id: string, callback: any) {\n this.onLoadActions[id] = callback;\n }\n\n /**\n * Adiciona um ação à pilha para execução no momento do envio do formulário\n * para o Senior Workflow\n *\n * @param id Nome identificador para a callback a ser executada;\n * @param callback Função a ser executada;\n */\n public addOnSubmitAction(id: string, callback: any) {\n this.onSubmitActions[id] = callback;\n }\n\n /**\n * Adiciona um ação à pilha para execução em caso de haver um erro no\n * processamento do formulário por parte do Senior Workflow.\n *\n * @param id Nome identificador para a callback a ser executada;\n * @param callback Função a ser executada;\n */\n public addOnRollbackAction(id: string, callback: any) {\n this.onRollbackActions[id] = callback;\n }\n\n /**\n * Adiciona um objeto à s Variáveis do Processo (`_processVariables`)\n *\n * @param id Nome identificador do objeto a ser adicionado\n * @param processVariable Objeto a ser adicionado as variáveis do processo\n */\n public addProcessVariable(id: string, processVariable: any): void {\n try {\n this._processVariables[id] = processVariable;\n } catch (err) {\n const error = {\n erro: err,\n message: `Não foi possÃvel adicionar a variável ${id} à s variáveis do processo.`,\n };\n throw error;\n }\n }\n\n /**\n * Define o objecto payload que será enviado ao Senior Worfkflow quando o usuário\n * clicar no botão enviar.\n *\n * @param payload Objeto a ser enviado para o Workflow\n */\n public setWorkflowPayload(payload: object): void {\n\n this._workflowPayload = payload;\n\n return;\n }\n\n /** # Actions GETTERs # */\n\n public get loadActions(): object {\n return this.onLoadActions;\n }\n\n public get submitActions(): object {\n return this.onSubmitActions;\n }\n\n public get rollbackActions(): object {\n return this.onRollbackActions;\n }\n\n /** # GETTERs # **/\n\n public get isRequestNew(): boolean {\n return this._isRequestNew;\n }\n\n public get isFinishing(): boolean {\n return this._isFinishing;\n }\n\n public get nextActionName(): string {\n return this._nextActionName;\n }\n\n public get taskData(): TaskData {\n return this._taskData;\n }\n\n public get processVariables(): any {\n const p = new Promise((resolve, reject) => {\n if (this._processVariables) {\n resolve(this._processVariables);\n } else {\n reject(\"Não foram encontradas variáveis para o processo\");\n }\n });\n\n p.then((data: any) => {\n this._processVariables = data;\n }).catch((err: any) => {\n throw err;\n });\n\n return this._processVariables;\n }\n}\n","import { OnDestroy } from \"@angular/core\";\nimport { Component, OnInit } from \"@angular/core\";\nimport { Router, ActivatedRoute } from \"@angular/router\";\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { WorkflowDataService } from \"../../services/workflow-data.service\";\n\n\n@Component({\n selector: \"lib-employee-selector\",\n templateUrl: \"./employee-selector.component.html\",\n styleUrls: [\"./employee-selector.component.scss\"],\n})\nexport class EmployeeSelectorComponent implements OnInit, OnDestroy {\n public results: any[];\n public employeeSelected: any;\n private _useWorkflow: boolean;\n\n private ngUnsubscribe = new Subject();\n private _routeEndpoint: string;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private workflowDataService: WorkflowDataService\n ) {}\n\n public ngOnInit(): void {\n this.registerSubscribers();\n }\n\n public registerSubscribers(): void {\n this.activatedRoute.data.pipe(takeUntil(this.ngUnsubscribe)).subscribe((data) => {\n this.useWorkflow = !!(data && data.useWorkflow);\n this.routeEndpoint = data && data.routeEndpoint;\n\n if (this.useWorkflow) {\n this.workflowDataService.setUseWorkflow(this.useWorkflow);\n }\n });\n }\n\n public onSelectEmployee(): void {\n const { tableId } = this.employeeSelected;\n\n if (tableId) {\n this.navigate(tableId);\n }\n }\n\n private navigate(employeeId: string): void {\n this.router.navigate([`workflow/${employeeId}/${this._routeEndpoint}`]);\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next(true);\n this.ngUnsubscribe.complete();\n }\n\n public set useWorkflow(v: boolean) {\n this._useWorkflow = v;\n }\n\n public get useWorkflow(): boolean {\n return this._useWorkflow;\n }\n\n public set routeEndpoint(routeEndpoint: string) {\n this._routeEndpoint = routeEndpoint;\n }\n\n public get routeEndpoint(): string {\n return this._routeEndpoint;\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { PanelModule } from \"primeng/panel\";\nimport { InputRestAutoCompleteEmployeeModelModule } from \"../input-rest-auto-complete-employee-model/index\";\nimport { SharedModule } from \"../shared/shared.module\";\n\nimport { EmployeeSelectorComponent } from \"./employee-selector.component\";\n\nexport { WorkflowDataService } from \"../../services/workflow-data.service\";\n\n@NgModule({\n imports: [SharedModule, PanelModule, InputRestAutoCompleteEmployeeModelModule],\n declarations: [EmployeeSelectorComponent],\n exports: [EmployeeSelectorComponent],\n})\nexport class EmployeeSelectorModule {}\n","import { Component, Input } from \"@angular/core\";\nimport { DivergenceArray } from \"../../services/form-comparator.service\";\n\n@Component({\n selector: \"from-to\",\n templateUrl: \"./from-to.component.html\",\n})\nexport class FromToComponent {\n @Input()\n divergentFormData: DivergenceArray[];\n\n constructor() {}\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FromToComponent } from \"./from-to.component\";\nimport { PanelModule } from \"primeng/panel\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\nimport { InputTextModule } from \"primeng/inputtext\";\n\n@NgModule({\n imports: [CommonModule, PanelModule, TranslateModule, ReactiveFormsModule, InputTextModule],\n declarations: [FromToComponent],\n exports: [FromToComponent],\n})\nexport class FromToModule {}\n","export class FormatUtilsService {\n\n /**\n * Retorna o CPF formatado\n * @param cpf CPF\n */\n static getFormattedCpf(cpf: string): string {\n if (cpf) {\n return cpf\n .replace(/\\D/g, \"\")\n .replace(/(\\d{3})(\\d)/, \"$1.$2\")\n .replace(/(\\d{3})(\\d)/, \"$1.$2\")\n .replace(/(\\d{3})(\\d)/, \"$1-$2\");\n }\n return null;\n }\n\n /**\n * Retorna o CNPJ formatado\n * @param cnpj CNPJ\n */\n static getFormattedCnpj(cnpj: string): string {\n if (cnpj) {\n return cnpj\n .replace(/\\D/g, \"\")\n .replace(/(\\d{2})(\\d)/, \"$1.$2\")\n .replace(/(\\d{3})(\\d)/, \"$1.$2\")\n .replace(/(\\d{3})(\\d)/, \"$1/$2\")\n .replace(/(\\d{4})(\\d)/, \"$1-$2\");\n }\n return null;\n }\n\n /**\n * Retorna a mascara do CPF/CNPJ\n * @param key Valores possÃveis são CPF ou CNPJ\n */\n static getCpfCnpjMask(key: string) {\n switch (key) {\n case \"CPF\":\n return \"999.999.999-99\";\n case \"CNPJ\":\n return \"99.999.999/9999-99\";\n default:\n return \"\";\n }\n }\n\n /**\n * Metódo para formatar o número de telefone.\n * @param telephoneNumber String contendo o número de telefone.\n * @returns String formatada com o número de telefone.\n */\n static getFormattedTelephoneNumber(telephoneNumber: string): string {\n let tel = telephoneNumber.replace(/\\D/g, '');\n tel = tel.replace(/^0/, '');\n if (tel.length > 10) {\n // ########## -> (##) #####-####\n tel = tel.replace(/^(\\d{2})?(\\d{5})?(\\d{4}).*/, '($1) $2-$3');\n } else if (tel.length > 9) {\n // AA######### -> (AA) ####-####\n tel = tel.replace(/^(\\d{2})?(\\d{4})?(\\d{4}).*/, '($1) $2-$3');\n } else if (tel.length > 5) {\n // ####### -> (##) ####-#\n tel = tel.replace(/^(\\d{2})?(\\d{4})?(\\d{0,4}).*/, '($1) $2-$3');\n } else if (tel.length > 1) {\n // #### -> (##) ##\n tel = tel.replace(/^(\\d{2})?(\\d{0,5}).*/, '($1) $2');\n } else {\n if (tel !== '') { tel = tel.replace(/^(\\d*)/, '($1'); }\n }\n\n return tel;\n }\n\n /**\n * Metódo para formatar o número de telefone de um campo Input.\n * @param event Evento do Input do campo de telefone.\n */\n static formatTelephoneInputEvent(event: any) {\n let telephoneNumber = event.target.value;\n\n // Permite Backspace para usuário remover \")\" e \"-\"\n if (event.keyCode === 8 && (telephoneNumber.length === 9 || telephoneNumber.length === 4 || telephoneNumber.length === 3)) {\n return;\n }\n\n event.target.value = FormatUtilsService.getFormattedTelephoneNumber(telephoneNumber);\n }\n\n /**\n * Metódo para formatar a porcentagem para 2 casas decimais.\n * @param value Número a ser formatado.\n */\n static getFormattedPercentage(value: string): string {\n return parseFloat(value).toFixed(2).replace('.', ',') + '%';\n }\n}\n","import {\n Component,\n OnInit,\n ViewChild,\n Input,\n ChangeDetectorRef,\n AfterViewInit,\n OnDestroy,\n EventEmitter,\n Output,\n OnChanges,\n SimpleChanges,\n} from \"@angular/core\";\nimport { FormGroup, FormBuilder } from \"@angular/forms\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { CustomFieldsComponent, NumberLocaleOptions } from \"@seniorsistemas/angular-components\";\nimport { compareValues, isValid, mountCustomToSave } from \"../utils/helpers\";\nimport { DirectionEnumeration } from \"../../core/enums\";\nimport { Subject } from \"rxjs\";\nimport { FormatUtilsService } from \"../utils/format-utils/format-utils.service\";\nimport { MessageService } from \"primeng/api\";\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: \"c-historical-pix-account\",\n templateUrl: \"./historical-pix-account.component.html\",\n styleUrls: [\"./historical-pix-account.component.scss\"],\n})\nexport class HistoricalPixAccountComponent implements OnInit, OnDestroy, AfterViewInit, OnChanges {\n @ViewChild(CustomFieldsComponent, { static: false })\n public customFields: CustomFieldsComponent;\n @Input()\n public formGroup: FormGroup;\n @Input()\n public fieldFormGroup: string;\n @Input()\n public _dateChange: string;\n @Input()\n public _displayDateChange: string;\n @Input()\n public recordByRow: number = 1;\n @Input()\n public showDateChange: boolean = false;\n @Input()\n public msgTooltipAdd: string;\n @Input()\n public isEditMode: boolean = false;\n @Input()\n public isViewMode: boolean = false;\n @Input()\n public currency: NumberLocaleOptions;\n @Input()\n public customEntity: string;\n @Input()\n public customService: string;\n @Input()\n public withSideBar: boolean = true;\n @Input()\n public paramsForm: FormGroup;\n @Input()\n public defaultCpfNumber: string = null;\n @Input()\n public permission: object;\n @Input()\n public listDataReciever: any[] = [];\n\n @Output()\n public isViewModeActive: EventEmitter<any> = new EventEmitter<boolean>();\n @Output()\n public isEditModeActive: EventEmitter<any> = new EventEmitter<boolean>();\n @Output()\n public isDeleteModeActive: EventEmitter<any> = new EventEmitter<boolean>();\n\n private listFromApp: any[] = [];\n private visibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n private ngUnsubscribe = new Subject();\n private historicalPixAccountList: FormGroup;\n private orderBy: { field: string; direction: DirectionEnumeration } = {\n field: \"dateChange\",\n direction: DirectionEnumeration.DESC,\n };\n\n private _visible: boolean;\n public pixAccountItemInput: object = {};\n public totalRecords: number = 0;\n public actionLabel: string = this.translateService.instant(\"hcm.payroll.entries_query_actions_total_title\");\n public loading = true;\n public parameters: any;\n public msgTotalLimitByPercentage: string;\n public listData: object[] = [];\n public listDataNoPage: object[] = [];\n public cols = [\n {\n label: this.translateService.instant(\"hcm.payroll.employees_addition_pix_key_type\"),\n field: \"pixKeyType\",\n },\n {\n label: this.translateService.instant(\"hcm.payroll.employees_addition_pix_key\"),\n field: \"pixKey\",\n },\n {\n label: this.translateService.instant(\"hcm.payroll.historical_pix_account_label_percentage\"),\n field: \"percentage\",\n },\n ];\n actions = (rowData: any = {}, key: any) => {\n return [\n {\n visible: this.isEditMode,\n label: this.translateService.instant(\"hcm.payroll.employees_image_cropper_view\"),\n command: () => {\n if (this.isAllowToViewHistorical) {\n rowData[\"index\"] = key;\n this.pixAccountItemInput = { currentItem: rowData, listData: this.listDataNoPage, isEditMode: false };\n this.visible = true;\n } else {\n this.isViewModeActive.emit(true);\n }\n },\n },\n {\n visible: !!(!this.isEditMode && this.withSideBar),\n label: this.translateService.instant(\"hcm.payroll.edit\"),\n command: () => {\n if (this.isAllowToEditHistorical) {\n rowData[\"index\"] = key;\n this.pixAccountItemInput = { currentItem: rowData, listData: this.listDataNoPage, isEditMode: true };\n this.visible = true;\n } else {\n this.isEditModeActive.emit(true);\n if (this.listFromApp.length == 0) {\n rowData[\"index\"] = key;\n this.pixAccountItemInput = { currentItem: rowData, listData: this.listDataNoPage, isEditMode: true };\n this.visible = true;\n }\n }\n },\n },\n {\n visible: !this.isEditMode,\n label: this.translateService.instant(\"hcm.payroll.delete\"),\n command: () => {\n if (this.isAllowToDeleteHistorical) {\n this.loading = true;\n this.deleteAnnuityItem(key);\n } else {\n this.isDeleteModeActive.emit(true);\n if (this.listFromApp.length == 0) {\n this.loading = true;\n this.deleteAnnuityItem(key);\n }\n }\n },\n },\n ];\n }\n\n constructor(\n private translateService: TranslateService,\n private cd: ChangeDetectorRef,\n private formBuilder: FormBuilder,\n private messageService: MessageService,\n ) {\n this.createFormGroup();\n }\n\n ngOnInit() {\n this.formGroup.setControl(this.fieldFormGroup, this.historicalPixAccountList);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['listDataReciever'] && changes['listDataReciever'].currentValue) {\n this.listFromApp = changes['listDataReciever'].currentValue;\n }\n }\n\n private createFormGroup(): void {\n this.historicalPixAccountList = this.formBuilder.group({\n historicalPixAccountList: this.formBuilder.control(null),\n });\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n }\n\n public onLazyLoad(event?: any): void {\n const first = event && event.first ? event.first : 0;\n const rows = event && event.rows ? event.rows : this.recordByRow;\n const arrList = this.getHistoricalPixAccountList();\n this.listData = [];\n this.totalRecords = null;\n\n if (event && event.multiSortMeta && event.multiSortMeta.length) {\n event.multiSortMeta.map((value: any) => {\n this.orderBy.field = value.field;\n this.orderBy.direction = value.order === 1 ? DirectionEnumeration.ASC : DirectionEnumeration.DESC;\n });\n }\n\n if (arrList && arrList.length) {\n this.totalRecords = arrList.length;\n this.listData = arrList;\n this.listDataNoPage = [...arrList];\n this.listData.sort(compareValues(this.orderBy.field, this.orderBy.direction));\n this.listData = this.listData.slice(first, (first + rows));\n } else {\n this.listDataNoPage = [];\n }\n\n if (this.isEditMode || arrList && arrList.length === 1) {\n this.refreshCssInIE11();\n }\n\n this.loading = false;\n\n }\n\n /**\n * Um Bug de CSS que acontece nas linhas da tabela, que resolve só atualizando qualquer parte do CSS da pagina.\n */\n private refreshCssInIE11() {\n if (/msie\\s|trident\\/|edge\\//i.test(window.navigator.userAgent)) {\n setTimeout( () => {\n const row = document.getElementsByClassName(\"row0\");\n if (row && row[0])\n row[0].className = 'refresh';\n }, 1);\n }\n }\n\n public add(): void {\n this.pixAccountItemInput = {};\n this.visible = true;\n }\n\n private isNotAllowMessage() {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n });\n }\n\n private deleteAnnuityItem(index: number): void {\n let newlist = [...this.getHistoricalPixAccountList()];\n newlist.sort(compareValues(this.orderBy.field, this.orderBy.direction));\n delete newlist[index];\n newlist = newlist.filter(val => val);\n this.historicalPixAccountList.get(\"historicalPixAccountList\").setValue(newlist);\n this.verifyTotalPercentage();\n this.onLazyLoad();\n }\n\n public getHistoricalPixAccountList(): object[] {\n if (this.historicalPixAccountList.get(\"historicalPixAccountList\") &&\n this.historicalPixAccountList.get(\"historicalPixAccountList\").value &&\n this.historicalPixAccountList.get(\"historicalPixAccountList\").value.length)\n return this.historicalPixAccountList.get(\"historicalPixAccountList\") && this.historicalPixAccountList.get(\"historicalPixAccountList\").value;\n else\n return [];\n }\n\n public addItemInList($event: any): void {\n const index = $event && $event.index >= 0 ? $event.index : null;\n const newDataList = this.getHistoricalPixAccountList() ? this.getHistoricalPixAccountList() : [];\n\n if (index != null) {\n newDataList[index] = $event;\n delete $event.index;\n } else {\n if (isValid($event[\"customFields\"]) && Object.keys($event[\"customFields\"]).length) {\n const customValue = mountCustomToSave($event[\"customFields\"]);\n $event[\"customFields\"] = [...customValue];\n }\n $event[\"dateChange\"] = this.dateChange;\n newDataList.push($event);\n }\n\n\n\n this.historicalPixAccountList.get(\"historicalPixAccountList\").setValue(newDataList);\n this.verifyTotalPercentage();\n this.onLazyLoad({ first: this.getNumberPageByIndex(index, newDataList) });\n }\n\n private getNumberPageByIndex(index: number, list: object[]): number {\n if (index) {\n const total = list.length;\n const sub = this.recordByRow - 1;\n return Math.ceil(total / this.recordByRow) * this.recordByRow - sub - 1;\n }\n return null;\n }\n\n private verifyTotalPercentage(): void {\n const list = this.getHistoricalPixAccountList() ? this.getHistoricalPixAccountList() : [];\n const arrayPercentage: any = [];\n\n if (!list.length) return this.msgTotalLimitByPercentage = null;\n\n list.filter((item: any) => arrayPercentage.push(item && item[\"percentage\"]));\n\n const sumPercentage = arrayPercentage.reduce((total: number, percentage: number) => {\n return total + percentage;\n }, 0);\n\n if (sumPercentage === 100) {\n this.msgTotalLimitByPercentage = this.translateService.instant(\"hcm.payroll.historical_pix_account_msg_limit_total_by_percentage\");\n } else {\n this.msgTotalLimitByPercentage = null;\n }\n\n }\n\n public get scopedActions() {\n return this.actions.bind(this);\n }\n\n public get recordsMessage() {\n return `${ this.totalRecords || 0 } ${ this.totalRecords === 1 ? this.translateService.instant(\"hcm.payroll.admission_register\") : this.translateService.instant(\"hcm.payroll.admission_registers\") }`;\n }\n\n public get getTooltipAndDisableButtonAdd() {\n return this.dateChange ? null : this.msgTooltipAdd;\n }\n\n @Input()\n public get dateChange(): string {\n return this._dateChange;\n }\n\n public set dateChange(value: string) {\n this._dateChange = value;\n if (this._dateChange) {\n this.listData.filter((row: any) => row[\"dateChange\"] = this._dateChange);\n }\n }\n\n @Input()\n public get displayDateChange(): string {\n return this._displayDateChange;\n }\n\n public set displayDateChange(value: string) {\n this._displayDateChange = value;\n if (this._displayDateChange) {\n this.listData.filter((row: any) => row[\"displayDateChange\"] = this._displayDateChange);\n }\n }\n\n @Input()\n public set addListData(list: object[]) {\n this.loading = true;\n this.historicalPixAccountList.get(\"historicalPixAccountList\").patchValue(list);\n this.verifyTotalPercentage();\n this.onLazyLoad();\n }\n\n @Input()\n public get visible(): boolean {\n return this._visible;\n }\n\n public set visible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(this.visible);\n }\n public close(): void {\n this.visible = false;\n }\n\n public getFormattedTelephoneNumber(telephoneNumber: string): string {\n return FormatUtilsService.getFormattedTelephoneNumber(telephoneNumber);\n }\n\n public getFormattedCpf(cpf: string): string {\n return FormatUtilsService.getFormattedCpf(cpf);\n }\n\n public getFormattedCnpj(cnpj: string): string {\n return FormatUtilsService.getFormattedCnpj(cnpj);\n }\n\n public getFormattedPercentage(value: string): string {\n return FormatUtilsService.getFormattedPercentage(value);\n }\n\n private get isAllowToAddHistorical() {\n return (\n this.permission[\"incluir\"]\n );\n }\n\n private get isAllowToDeleteHistorical() {\n return (\n this.permission[\"excluir\"]\n );\n }\n\n private get isAllowToEditHistorical() {\n return (\n this.permission[\"editar\"]\n );\n }\n\n private get isAllowToViewHistorical() {\n return (\n this.permission[\"visualizar\"]\n );\n }\n}\n","import { Validators, AbstractControl } from \"@angular/forms\";\n\nexport class GenericValidator {\n constructor() { }\n\n /**\n * Valida o CEI (Cadastro especÃfico de INSS) digitado.\n */\n static isValidCei(control: AbstractControl): Validators {\n const cei = control.value;\n\n if (!cei) return null;\n else if (cei.length != 11) return null;\n\n const multiplicadorBase = \"3298765432\";\n let total = 0;\n let resto = 0;\n let multiplicando = 0;\n let multiplicador = 0;\n\n if (\n cei.length !== 11 ||\n cei === \"00000000000\" ||\n cei === \"11111111111\" ||\n cei === \"22222222222\" ||\n cei === \"33333333333\" ||\n cei === \"44444444444\" ||\n cei === \"55555555555\" ||\n cei === \"66666666666\" ||\n cei === \"77777777777\" ||\n cei === \"88888888888\" ||\n cei === \"99999999999\"\n )\n return { invalidCei: true };\n else {\n for (let i = 0; i < 10; i++) {\n multiplicando = parseInt(cei.substring(i, i + 1), 10);\n multiplicador = parseInt(multiplicadorBase.substring(i, i + 1), 10);\n total += multiplicando * multiplicador;\n }\n\n resto = 11 - (total % 11);\n resto = resto === 10 || resto === 11 ? 0 : resto;\n\n const digito = parseInt(\"\" + cei.charAt(10), 10);\n return resto === digito ? null : { invalidCei: true };\n }\n }\n\n /**\n * Valida se o CPF é valido. Deve-se ser informado o cpf sem máscara.\n */\n static isValidCpf(control: AbstractControl): Validators {\n const cpf = control.value;\n if (cpf) {\n let numbers, digits, sum, i, result, equalDigits;\n equalDigits = 1;\n if (cpf.length < 11) {\n return null;\n }\n\n for (i = 0; i < cpf.length - 1; i++) {\n if (cpf.charAt(i) !== cpf.charAt(i + 1)) {\n equalDigits = 0;\n break;\n }\n }\n if (!equalDigits) {\n numbers = cpf.substring(0, 9);\n digits = cpf.substring(9);\n sum = 0;\n for (i = 10; i > 1; i--) {\n sum += numbers.charAt(10 - i) * i;\n }\n result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n if (result !== Number(digits.charAt(0))) {\n return { cpfNotValid: true };\n }\n numbers = cpf.substring(0, 10);\n sum = 0;\n for (i = 11; i > 1; i--) {\n sum += numbers.charAt(11 - i) * i;\n }\n result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n if (result !== Number(digits.charAt(1))) {\n return { cpfNotValid: true };\n }\n return null;\n } else {\n return { cpfNotValid: true };\n }\n }\n return null;\n }\n\n /**\n * Valida se o CNPJ é valido. Deve-se ser informado o cpf sem máscara.\n */\n static isValidCnpj(control: AbstractControl): Validators {\n let cnpj = control.value;\n\n if (cnpj) {\n let size, numbers, digits, sum, pos, result;\n cnpj = cnpj.replace(/[^\\d]+/g, '');\n\n if (cnpj.length !== 14) {\n return null;\n }\n\n // Elimina CNPJs invalidos conhecidos\n if (\n cnpj === '00000000000000' ||\n cnpj === '11111111111111' ||\n cnpj === '22222222222222' ||\n cnpj === '33333333333333' ||\n cnpj === '44444444444444' ||\n cnpj === '55555555555555' ||\n cnpj === '66666666666666' ||\n cnpj === '77777777777777' ||\n cnpj === '88888888888888' ||\n cnpj === '99999999999999'\n ) {\n return { cnpjNotValid: true };\n }\n\n // Valida DVs\n size = cnpj.length - 2;\n numbers = cnpj.substring(0, size);\n digits = cnpj.substring(size);\n sum = 0;\n pos = size - 7;\n for (let i = size; i >= 1; i--) {\n sum += numbers.charAt(size - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n if (result !== Number(digits.charAt(0))) {\n return { cnpjNotValid: true };\n }\n\n size = size + 1;\n numbers = cnpj.substring(0, size);\n sum = 0;\n pos = size - 7;\n for (let i = size; i >= 1; i--) {\n sum += numbers.charAt(size - i) * pos--;\n if (pos < 2) {\n pos = 9;\n }\n }\n result = sum % 11 < 2 ? 0 : 11 - (sum % 11);\n if (result !== Number(digits.charAt(1))) {\n return { cnpjNotValid: true };\n }\n\n return null;\n }\n return null;\n }\n\n /**\n * Válida o número de telefone da chave PIX.\n */\n static isValidPhoneNumber(control: AbstractControl): Validators {\n let cellPhoneKey = control.value || '';\n cellPhoneKey = cellPhoneKey.replace(/[\\s()-]/g, '');\n const regexNumberTelephone = /^[1-9][\\d]{1,2}\\d{8,10}$/;\n\n const isValidNumberTelephone = regexNumberTelephone.test(cellPhoneKey);\n\n return isValidNumberTelephone ? null : { invalidPhoneNumber: true };\n }\n\n /**\n * Valida o email da chave PIX.\n */\n static isValidEmail(control: AbstractControl): Validators {\n const emailKey = control.value;\n const regexValidEmail = /^[\\w-\\.]+@[\\w-]+(\\.[\\w-]{2,4}){1,2}$/;\n\n const isValidEmail = regexValidEmail.test(emailKey);\n\n return isValidEmail ? null : { invalidEmail: true };\n }\n}\n","import {\n Component,\n OnInit,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n OnDestroy,\n AfterViewInit,\n ViewChild,\n} from \"@angular/core\";\nimport { FormGroup, FormBuilder, Validators, ValidatorFn, AbstractControl } from \"@angular/forms\";\nimport { NumberLocaleOptions, CustomFieldsComponent } from \"@seniorsistemas/angular-components\";\nimport { Subject } from \"rxjs\";\nimport {\n verifyValidationsForm,\n configEnabledFields,\n mountCustomToShow,\n} from \"../../utils/helpers\";\nimport { GenericValidator } from \"../../utils/generic-validators\";\nimport { FormatUtilsService } from \"../../utils/format-utils/format-utils.service\";\n\n@Component({\n selector: \"pix-account\",\n templateUrl: \"./historical-pix-account-form.component.html\",\n styleUrls: [\"../historical-pix-account.component.scss\"]\n})\nexport class HistoricalPixAccountFormComponent implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild(CustomFieldsComponent, { static: true })\n customFields: CustomFieldsComponent;\n\n @Input()\n public currency: NumberLocaleOptions;\n @Input()\n public customEntity: string;\n @Input()\n public customService: string;\n @Input()\n public withSideBar: boolean = true;\n @Input()\n public isEditMode: boolean = false;\n @Input()\n public paramsForm: FormGroup = new FormGroup({});\n @Input()\n public defaultCpfNumber: string = null;\n\n @Output()\n public visibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n @Output()\n public pixAccountItemToList: EventEmitter<any> = new EventEmitter<any>();\n\n private _visible: boolean;\n private ngUnsubscribe = new Subject();\n private employeeId: string;\n private pixAccountList: object[];\n private initialValidatorOfPercentage: ValidatorFn[] = [Validators.required, Validators.min(0.01)];\n\n\n public labelBtnAdd: string = \"hcm.payroll.employees_add\";\n public pixAccountFormGroup: FormGroup;\n public maxValuePercentage: number = 100.00;\n public visibleBtnSave: boolean = true;\n public isView: boolean = false;\n public pixKeyType: string;\n public isShowPixKeyFieldValidatorMessage = false;\n\n constructor(\n private formBuilder: FormBuilder,\n private cd: ChangeDetectorRef,\n ) {\n this.createFormGroup();\n this.registerSubjects();\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next(true);\n this.ngUnsubscribe.unsubscribe();\n }\n\n private registerSubjects(): void {\n }\n\n private createFormGroup(): void {\n this.pixAccountFormGroup = this.formBuilder.group({\n id: this.formBuilder.control(null),\n index: this.formBuilder.control(null),\n employee: this.formBuilder.control({ value: { tableId: null }, disabled: true }),\n dateChange: this.formBuilder.control(null),\n pixKeyType: this.formBuilder.control(null, Validators.required),\n pixKey: this.formBuilder.control(null),\n percentage: this.formBuilder.control(null, Validators.compose([\n ...this.initialValidatorOfPercentage,\n Validators.max(this.maxValuePercentage),\n ])),\n externalId: this.formBuilder.control(null),\n customFields: this.formBuilder.control(null),\n });\n }\n\n public onChangePixKeyType(item: any) {\n if (item.key) {\n this.pixKeyType = item.key;\n this.isShowPixKeyFieldValidatorMessage = true;\n this.pixAccountFormGroup.get(\"pixKey\").reset();\n this.setPixKeyValidators(true);\n\n if(item.key === \"CPF\") {\n this.setDefaultCpfPixKey();\n }\n }\n }\n\n public onClearPixKeyType() {\n this.isShowPixKeyFieldValidatorMessage = false;\n this.pixAccountFormGroup.get(\"pixKey\").reset();\n }\n\n @Input()\n public get visible(): boolean {\n return this._visible;\n }\n\n public set visible(value: boolean) {\n this._visible = value;\n this.visibleChange.emit(this.visible);\n }\n\n @Input()\n public set isEditAndViewValue(value: any) {\n this.resetForm();\n this.visibleBtnSave = true;\n if (value && value.currentItem && Object.keys(value.currentItem).length) {\n this.pixAccountFormGroup.patchValue(this.convertDTOToShowWithCustomFields({...value.currentItem}));\n this.labelBtnAdd = \"hcm.payroll.employees_update\";\n this.setValidatorsAccordingList(value.listData, value.currentItem[\"index\"], value && value[\"isEditMode\"]);\n if (!this.isView) {\n this.configEnableFields(value && value[\"isEditMode\"]);\n } else {\n if(this.pixAccountFormGroup.get(\"pixKeyType\").value) {\n this.pixKeyType = this.pixAccountFormGroup.get(\"pixKeyType\").value.key;\n\n this.formatPixKeyTelephoneNumber();\n }\n }\n } else {\n this.labelBtnAdd = \"hcm.payroll.employees_add\";\n }\n\n }\n\n private formatPixKeyTelephoneNumber() {\n if (this.pixKeyType === \"TELEPHONE\") {\n this.pixAccountFormGroup.get(\"pixKey\").setValue(FormatUtilsService.getFormattedTelephoneNumber(this.pixAccountFormGroup.get(\"pixKey\").value));\n }\n }\n\n public convertDTOToShowWithCustomFields(data: object): object {\n const obj: any = {... data};\n obj[\"customFields\"] = mountCustomToShow(obj[\"customFields\"]);\n return obj;\n }\n\n private configEnableFields(isEditMode: boolean) {\n this.visibleBtnSave = isEditMode;\n\n if(this.pixAccountFormGroup.get(\"pixKeyType\").value) {\n this.pixKeyType = this.pixAccountFormGroup.get(\"pixKeyType\").value.key;\n this.setPixKeyValidators(isEditMode);\n\n this.formatPixKeyTelephoneNumber();\n }\n\n configEnabledFields(this.pixAccountFormGroup, isEditMode, [\n \"pixKeyType\",\n \"pixKey\",\n \"percentage\",\n \"customFields\",\n ], []);\n }\n\n public close(): void {\n this.resetForm();\n this.visible = false;\n }\n\n public addItem(): void {\n this.pixAccountFormGroup.updateValueAndValidity();\n verifyValidationsForm.call(this.pixAccountFormGroup);\n\n if (this.pixAccountFormGroup.valid) {\n if (this.employeeId) {\n this.pixAccountFormGroup.get(\"employee\").setValue({\n tableId: this.employeeId,\n name: \"\",\n });\n }\n this.pixAccountItemToList.emit(this.pixAccountFormGroup.getRawValue());\n this.visible = false;\n this.resetForm();\n }\n }\n\n public resetForm(): void {\n this.pixAccountFormGroup.reset();\n this.labelBtnAdd = \"hcm.payroll.employees_add\";\n if (this.customFields && this.customFields.formGroup) this.customFields.formGroup.reset();\n }\n\n public get percentagePlaceholder(): string {\n return `0${ this.currency && this.currency.decimalSeparator }00`;\n }\n\n public get optionsPercentage(): object {\n return { ...this.getOptions(), precision: 2 };\n }\n\n private getOptions(): any {\n return {\n prefix: \"\",\n thousands: this.currency.thousandsSeparator,\n decimal: this.currency.decimalSeparator,\n };\n }\n\n /**\n * O Input que recebe a lista do component pai e chama o método de validação passando a lista recebida.\n * @param pixAccountList\n */\n @Input()\n public set getListPixAccount(pixAccountList: object[]) {\n if (pixAccountList) {\n this.setValidatorsAccordingList(pixAccountList, null, false);\n } else {\n this.resetForm();\n }\n }\n\n /**\n * Recebe a lista de registros já inseridos na tabela adiciona em uma variável os valores que serão usados para\n * a validação dos campos \"percentage\" e \"pixAccount\".\n * Quando tem index significa que está em uma edição, os valores na posição do registro da edição (index) não serão adicionados\n * no array de comparação dos validators.\n * @param pixAccountList\n * @param index\n */\n private setValidatorsAccordingList(pixAccountList: object[], index: number = null, isEditMode: boolean = true) {\n this.pixAccountList = pixAccountList && pixAccountList.length ? [...pixAccountList] : [];\n\n const percentageIncluded: any = [];\n\n if (this.pixAccountList && this.pixAccountList.length) {\n this.pixAccountList.filter((field: any, key) => {\n if (field[\"percentage\"] && key != index) {\n percentageIncluded.push(field[\"percentage\"]);\n }\n });\n\n }\n this.beforeSetPixKeyTypeValidator();\n this.setPixKeyValidators(isEditMode);\n this.validatePercentageValid(percentageIncluded);\n }\n\n /**\n * Antes de setar o validator prepara as variáveis necessária para que seja feita a validação do campo.\n */\n public setPixKeyValidators(isEditMode: boolean) {\n const genericPixKey = this.pixAccountFormGroup.get(\"pixKey\");\n if (this.pixKeyType) {\n switch (this.pixKeyType) {\n case \"TELEPHONE\":\n genericPixKey.setValidators(Validators.compose([\n Validators.required, GenericValidator.isValidPhoneNumber,\n ]));\n break;\n case \"EMAIL\":\n genericPixKey.setValidators(Validators.compose([\n Validators.required, GenericValidator.isValidEmail,\n ]));\n break;\n case \"CPF\":\n genericPixKey.setValidators(Validators.compose([\n Validators.required, GenericValidator.isValidCpf,\n ]));\n break;\n case \"CNPJ\":\n genericPixKey.setValidators(Validators.compose([\n Validators.required, GenericValidator.isValidCnpj,\n ]));\n break;\n case \"RANDOM_KEY\":\n genericPixKey.setValidators(Validators.required);\n break;\n default:\n genericPixKey.setValidators(null);\n break;\n }\n\n if(isEditMode) {\n genericPixKey.enable();\n }\n\n genericPixKey.updateValueAndValidity();\n }\n\n }\n\n /**\n * Este método calcula as parcentagens que já foram inseridas, e seta a diferença para chegar em\n * 100% na validação do campo \"percentage\" como um novo maxValue;\n * @param listValue\n */\n private validatePercentageValid(listValue: number[]) {\n const percentage = this.pixAccountFormGroup.get(\"percentage\");\n this.maxValuePercentage = listValue\n .reduce((currentValue, total) => currentValue - total,\n 100.00,\n );\n\n percentage\n .setValidators(Validators.compose([\n ...this.initialValidatorOfPercentage,\n Validators.max(this.maxValuePercentage),\n ]));\n percentage.updateValueAndValidity();\n }\n\n @Input()\n public set isViewMode(condition: boolean) {\n this.isView = !!(condition && !this.withSideBar);\n this.configEnableFields(!this.isView);\n if (!this.isView) this.resetForm();\n }\n\n public phoneMask(event: any) {\n FormatUtilsService.formatTelephoneInputEvent(event);\n }\n\n setDefaultCpfPixKey() {\n if(this.defaultCpfNumber) {\n this.pixAccountFormGroup.get(\"pixKey\").setValue(this.defaultCpfNumber);\n }\n else {\n const sheetDocument = this.paramsForm.get(\"sheetDocument\");\n if(sheetDocument) {\n const cpf = sheetDocument.get(\"cpfNumber\").value;\n if(cpf) {\n this.pixAccountFormGroup.get(\"pixKey\").setValue(cpf);\n }\n }\n }\n }\n\n public beforeSetPixKeyTypeValidator() {\n const pixKeyType = this.pixAccountFormGroup.get(\"pixKeyType\");\n\n if (this.pixAccountList && this.pixAccountList.length && pixKeyType) {\n pixKeyType\n .setValidators(Validators.compose([\n Validators.required,\n this.validateDuplicatePixKeyTypeBankAccount(this.pixAccountList),\n ]));\n\n } else {\n pixKeyType.setValidators(Validators.required);\n }\n }\n\n private validateDuplicatePixKeyTypeBankAccount(listCompare: object[]) {\n return (control: AbstractControl): Validators => {\n const value = control && control.value;\n let condition = false;\n listCompare.filter((field: any) => {\n if(value) {\n if (field[\"pixKeyType\"].key === 'BANK_ACCOUNT' && value.key === field[\"pixKeyType\"].key) {\n return condition = true;\n }\n }\n });\n\n if (condition) {\n return { pixKeyTypeBankAccountDuplicate: true };\n } else {\n return null;\n }\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { HttpClientService } from '../shared/http-client.service';\nimport { ServiceType } from '../../core/enums/serviceType';\n\n@Injectable()\nexport class HistoricalPixAccountService {\n constructor(private http: HttpClientService) {}\n\n query(path: string, body: object, service: ServiceType = ServiceType.PAYROLL): Observable<any> {\n return this.http.query(path, body, service);\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport {\n ButtonModule,\n LoadingStateModule,\n SidebarModule, ControlErrorsModule, CustomFieldsModule,\n} from \"@seniorsistemas/angular-components\";\nimport { CurrencyMaskModule } from \"ng2-currency-mask\";\nimport { ConfirmationService } from \"primeng/api\";\nimport { AutoCompleteModule } from \"primeng/autocomplete\";\nimport { FieldsetModule } from \"primeng/fieldset\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { PanelModule } from \"primeng/panel\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { CoreDirectives } from \"../directives/index\";\nimport { HistoricalPixAccountFormComponent } from \"./historical-pix-account-form/historical-pix-account-form.component\";\nimport { InputDateModule } from \"../input-date/index\";\nimport { InputRestAutoCompleteModule } from \"../input-rest-auto-complete/index\";\nimport { InputRestAutoCompleteEnumModule } from \"../input-rest-auto-complete-enum/index\";\n\nimport { SharedModule } from \"../shared/shared.module\";\nimport { HistoricalPixAccountComponent } from \"./historical-pix-account.component\";\nimport { HistoricalPixAccountService } from \"./historical-pix-account.service\";\nimport { InputMaskModule } from \"primeng/inputmask\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule,\n TableModule,\n ButtonModule,\n TooltipModule,\n LoadingStateModule,\n SidebarModule,\n InputDateModule,\n ControlErrorsModule,\n InputRestAutoCompleteEnumModule,\n CurrencyMaskModule,\n InputRestAutoCompleteModule,\n InputTextModule,\n CoreDirectives,\n FieldsetModule,\n CustomFieldsModule,\n PanelModule,\n InputMaskModule,\n ],\n declarations: [HistoricalPixAccountComponent, HistoricalPixAccountFormComponent],\n providers: [HistoricalPixAccountService, ConfirmationService],\n exports: [HistoricalPixAccountComponent],\n})\nexport class HistoricalPixAccountModule {\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { ServiceType } from '../../core/enums/serviceType';\n\nimport { HttpClientService } from \"../shared/http-client.service\";\n\n@Injectable()\nexport class HistoricalPixAccountListService {\n constructor(private http: HttpClientService, private httpClient: HttpClient) {\n }\n\n public remove(id: any, dateWhen: string, service: ServiceType = ServiceType.PAYROLL, dependentId?: string) {\n if (service === ServiceType.DEPENDENT) {\n return this.httpClient\n .post(\"hcm/dependent/queries/historicalDependentJudicialPensionPixDelete\", {\n dependentId: dependentId,\n dateWhen: dateWhen,\n });\n } else {\n return this.http.post(\"actions/historicalEmployeePixDelete\", {\n employeeId: id,\n dateWhen: dateWhen\n });\n }\n }\n\n}\n","import {\n Component,\n OnInit,\n ViewChild,\n ChangeDetectorRef,\n AfterViewInit,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n} from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { CustomFieldsComponent } from \"@seniorsistemas/angular-components\";\nimport * as moment_ from \"moment\";\nimport { ConfirmationService, MessageService } from \"primeng/api\";\nimport { ServiceType } from '../../core/enums/serviceType';\nimport { Subject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\nimport { HistoricalPixAccountListService } from \"./historical-pix-account-list.service\";\n\nconst moment = moment_;\n\n@Component({\n // tslint:disable-next-line:component-selector\n selector: \"c-historical-pix-account-list\",\n templateUrl: \"./historical-pix-account-list.component.html\",\n styleUrls: [\"./historical-pix-account-list.component.scss\"],\n})\nexport class HistoricalPixAccountListComponent implements OnInit, OnDestroy, AfterViewInit {\n @ViewChild(CustomFieldsComponent, { static: false })\n public customFields: CustomFieldsComponent;\n\n @Input()\n public permission: object;\n @Input()\n public employeeId: string;\n @Input()\n public dependentId: string;\n @Input()\n public dateFormat: string;\n @Input()\n public endPoint: string = \"hcm/payroll/queries/historicalEmployeePixQuery\";\n @Input()\n public keyPayload: string = \"historicalEmployeePix\";\n @Input()\n public withSidebar: boolean = true;\n\n @Output()\n public isOnlyView: EventEmitter<any> = new EventEmitter<boolean>();\n @Output()\n public isOnlyEdit: EventEmitter<any> = new EventEmitter<boolean>();\n @Output()\n public enableView: EventEmitter<any> = new EventEmitter<any>();\n\n private lastRecord: any;\n private ngUnsubscribe = new Subject();\n public initParameters: any;\n public loading: boolean = true;\n public parameters: any;\n\n public columns = [\n {\n label: this.translateService.instant(\n \"hcm.payroll.historical_pix_account_label_date_change\",\n ),\n field: \"dateChange\",\n },\n {\n label: this.translateService.instant(\n \"hcm.payroll.employees_movimentation_historical_pix_account_label_qtd_account\",\n ),\n field: \"numberOfPixAccount\",\n },\n ];\n\n constructor(\n private confirmationService: ConfirmationService,\n private translateService: TranslateService,\n private activatedRoute: ActivatedRoute,\n private cd: ChangeDetectorRef,\n private router: Router,\n private messageService: MessageService,\n private historicalPixAccountListService: HistoricalPixAccountListService,\n ) {\n }\n\n ngOnInit() {\n this.initParameters = { employeeId: this.employeeId, dependentId: this.dependentId };\n }\n\n\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n ngAfterViewInit() {\n this.cd.detectChanges();\n }\n\n public onLazyLoad(payload: any) {\n payload.forEach((value: any) => {\n value.dateChange = moment(value.dateChange).format(this.dateFormat);\n });\n\n this.onGridLoad(payload);\n\n this.loading = false;\n }\n\n public getMenuActions(rowData: any) {\n return [\n {\n label: this.translateService.instant(\"hcm.payroll.employees_image_cropper_view\"),\n command: () => {\n if(this.isAllowToViewHistorical) {\n const dateChange = rowData && rowData.dateChange && moment(rowData.dateChange, this.dateFormat).format(\"YYYY-MM-DD\");\n if (this.withSidebar) {\n this.isOnlyView.emit(true);\n this.router.navigate([`historical-pix-account/${ dateChange }`], {\n relativeTo: this.activatedRoute,\n });\n } else {\n\n this.enableView.emit(dateChange);\n }\n } else {\n this.isNotAllowMessage();\n }\n },\n }, \n {\n label: this.translateService.instant(\"hcm.payroll.edit\"),\n command: () => {\n if(this.isAllowToEditHistorical) {\n const dateChange = rowData && rowData.dateChange && moment(rowData.dateChange, this.dateFormat).format(\"YYYY-MM-DD\");\n if (this.withSidebar) {\n this.isOnlyView.emit(false);\n this.isOnlyEdit.emit(true);\n this.router.navigate([`historical-pix-account/${ dateChange }`], {\n relativeTo: this.activatedRoute,\n });\n } else {\n this.enableView.emit(dateChange);\n }\n } else {\n this.isNotAllowMessage();\n }\n },\n },\n {\n label: this.translateService.instant(\"hcm.payroll.delete\"),\n command: () => {\n if (this.isAllowToDeleteHistorical && rowData) {\n this.delete(rowData.id, rowData.dateChange);\n } else {\n this.isNotAllowMessage();\n }\n },\n }\n ];\n }\n\n public delete(id: any, dateChange: string) {\n if (id === this.lastRecord.id) {\n const dateChangeToDto = moment(dateChange, this.dateFormat).format(\"YYYY-MM-DD\");\n this.confirmationService.confirm({\n message: `${ this.translateService.instant(\n \"hcm.payroll.employees_movimentation_historical_pix_account_question_confirm_delete\",\n ) }?`,\n accept: () => {\n this.loading = true;\n const service = this.withSidebar ? ServiceType.PAYROLL : ServiceType.DEPENDENT;\n this.historicalPixAccountListService\n .remove(this.employeeId, dateChangeToDto, service, this.dependentId)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n () => {\n this.messageService.add({\n severity: \"success\",\n summary: this.translateService.instant(\"hcm.payroll.success\"),\n detail: this.translateService.instant(\"hcm.payroll.employees_movimentation_historical_pix_account_remove\"),\n });\n this.parameters = (this.parameters && { ...this.parameters }) || {};\n },\n () => {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.employees_movimentation_historical_pix_account_error_remove\"),\n });\n this.loading = false;\n },\n );\n },\n });\n } else {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.not_allowed_delete_last\"),\n });\n }\n }\n\n public add() {\n if (this.isAllowToAddHistorical) {\n this.router.navigate([\"historical-pix-account-new\"], {\n relativeTo: this.activatedRoute,\n });\n } else {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n });\n }\n }\n\n private isNotAllowMessage() {\n this.messageService.add({\n severity: \"error\",\n summary: this.translateService.instant(\"hcm.payroll.error\"),\n detail: this.translateService.instant(\"hcm.payroll.permission_error_not_allowed\"),\n });\n }\n\n private onGridLoad(payload: any) {\n if (payload && payload.length) {\n this.lastRecord = payload[0];\n }\n }\n\n private get isAllowToAddHistorical() {\n return (\n this.permission[\"incluir\"]\n );\n }\n\n private get isAllowToDeleteHistorical() {\n return (\n this.permission[\"excluir\"]\n );\n }\n\n private get isAllowToViewHistorical() {\n return (\n this.permission[\"visualizar\"]\n );\n }\n\n private get isAllowToEditHistorical() {\n return (\n this.permission[\"editar\"]\n );\n }\n\n public get scopedActions() {\n return this.getMenuActions.bind(this);\n }\n\n @Input()\n public set reloadList(condition: boolean) {\n if (condition) {\n this.loading = true;\n this.parameters = (this.parameters && { ...this.parameters }) || {};\n }\n }\n\n}\n","import { CommonModule } from \"@angular/common\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { ButtonModule, LoadingStateModule } from \"@seniorsistemas/angular-components\";\nimport { AutoCompleteModule } from \"primeng/autocomplete\";\nimport { ConfirmDialogModule } from \"primeng/confirmdialog\";\nimport { TableModule } from \"primeng/table\";\nimport { TooltipModule } from \"primeng/tooltip\";\nimport { DataListRestModule } from \"../data-list-rest/index\";\n\nimport { SharedModule } from \"../shared/shared.module\";\nimport { HistoricalPixAccountListComponent } from \"./historical-pix-account-list.component\";\nimport { HistoricalPixAccountListService } from \"./historical-pix-account-list.service\";\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n HttpClientModule,\n AutoCompleteModule,\n SharedModule,\n ReactiveFormsModule,\n TableModule,\n ButtonModule,\n TooltipModule,\n LoadingStateModule,\n DataListRestModule,\n ConfirmDialogModule,\n ],\n declarations: [HistoricalPixAccountListComponent],\n providers: [HistoricalPixAccountListService],\n exports: [HistoricalPixAccountListComponent],\n})\nexport class HistoricalPixAccountListModule {\n}\n"]}
|