{"version":3,"file":"main.js","mappings":"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U,EAAE,KAAK;IACjB,sDAAsD;IACtD,sEAAsE;IACtE,qEAAqE;IACrE,OAAO,EAAE,gCAAgC;IACzC,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,QAAQ;IAClB,YAAY,EAAE,yBAAyB;IACvC,uBAAuB,EAAE,wBAAwB;IACjD,gBAAgB,EAAE,4CAA4C;IAC9D,iBAAiB,EAAE,WAAW;IAC9B,QAAQ;IACR,uCAAuC;IACvC,KAAK;IACL,uDAAuD;IACvD,MAAM;IACN,iDAAiD;IACjD,OAAO;IACP,UAAU,EAAE,yBAAyB;IACrC,gBAAgB,EAAE,IAAI;IACtB,aAAa,EAAE,GAAG;IAClB,sBAAsB,EAAE,KAAK;IAC7B,yBAAyB,EAAE,KAAK;IAChC,yBAAyB,EAAE,KAAK;IAChC,qBAAqB,EAAE,KAAK,CAAC,4HAA4H;CAE1J,CAAC;;;;;;;;;;;;;;;;;;AC7B6C;AAC4B;AAE9B;AACY;AACF;AAEvD,qCAAqC;AACrC,qEAAe,CAAC,0FAA0F,CAAC,CAAC;AAE5G,IAAI,6EAAsB,EAAE;IAC1B,6DAAc,EAAE,CAAC;CAClB;AAED,yFAAsB,EAAE,CAAC,eAAe,CAAC,sDAAS,CAAC;KAChD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;;;;;;;;;;;ACfpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["./src/app/Helpers/DecimalToHex.ts","./src/app/Helpers/constant.ts","./src/app/Pipes/QuizFilterPipe.ts","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/components/dashboard/activity-calendar/activity-calendar.component.ts","./src/app/components/dashboard/activity-list/activity-list.component.ts","./src/app/components/dashboard/activity-mini-calendar/activity-mini-calendar.component.ts","./src/app/components/dashboard/dashboard-calendar/dashboard-calendar.component.ts","./src/app/components/dashboard/dashboard-list/dashboard-list.component.ts","./src/app/components/gAuth/signinredirectcallback.component.ts","./src/app/components/gAuth/signoutredirectcallback.component.ts","./src/app/components/gAuth/unauthorized.component.ts","./src/app/components/login/login.component.ts","./src/app/components/powerbi/power-bi-view/power-bi-view.component.ts","./src/app/layout/admin/admin.component.ts","./src/app/layout/shared/popups/action-config-popup/action-config-popup.component.ts","./src/app/layout/shared/popups/add-edit-activity/add-edit-activity.component.ts","./src/app/layout/shared/popups/add-multiple-activities/add-contacts/add-contacts.component.ts","./src/app/layout/shared/popups/add-multiple-activities/add-existing-activity/add-existing-activity.component.ts","./src/app/layout/shared/popups/add-multiple-activities/add-multiple-activities.component.ts","./src/app/layout/shared/popups/add-multiple-activities/add-new-activity/add-new-activity.component.ts","./src/app/layout/shared/popups/add-multiple-activities/add-new-planaction/add-new-planaction.component.ts","./src/app/layout/shared/popups/annual-shipping-micro-sme/annual-shipping-micro-sme.component.ts","./src/app/layout/shared/popups/confirmation-popup/confirmation-popup.component.ts","./src/app/layout/shared/popups/memoria-anual-popup/memoria-anual-popup.component.ts","./src/app/layout/shared/popups/memoria-anual-popup/memoria-anual-with-quiz-popup.component.ts","./src/app/layout/shared/popups/prevention-plan-popup/prevention-plan-popup.component.ts","./src/app/layout/shared/popups/role-config-popup/role-config-popup.component.ts","./src/app/layout/shared/popups/user-config-popup/user-config-popup.component.ts","./src/app/layout/shared/template/filters/filters.component.ts","./src/app/layout/shared/template/footer/footer.component.ts","./src/app/layout/shared/template/header/header.component.ts","./src/app/layout/shared/template/notification/notification.component.ts","./src/app/layout/shared/template/pdf/pdf-annual-shipping-micro-sme/pdf-annual-shipping-header/pdf-annual-shipping-header.component.ts","./src/app/layout/shared/template/pdf/pdf-annual-shipping-micro-sme/pdf-annual-shipping-micro-sme.component.ts","./src/app/layout/shared/template/pdf/pdf-memoria-annual/pdf-memoria-annual-header/pdf-memoria-annual-header.component.ts","./src/app/layout/shared/template/pdf/pdf-memoria-annual/pdf-memoria-annual.component.ts","./src/app/models/Enum/ParteDeVisitaState.ts","./src/app/models/activity-filter.ts","./src/app/models/activity.model.ts","./src/app/models/activity.save.activityroot.ts","./src/app/models/activity.save.especialidadtecnica.ts","./src/app/models/activity.save.usuarioupsert.ts","./src/app/models/auth/auth-context.ts","./src/app/models/auth/user-context.ts","./src/app/models/multiple.activity.save.model.ts","./src/app/models/ngx-pagination-config.ts","./src/app/models/owl-calendar-localization.model.ts","./src/app/models/pagination-range-model.ts","./src/app/models/pagination-rows-per-page-model.ts","./src/app/models/planAction.ts","./src/app/models/utils.ts","./src/app/models/workforce-login.model.ts","./src/app/services/_authHelper/auth.guard.ts","./src/app/services/_authHelper/error.interceptor.ts","./src/app/services/_authHelper/jwt.interceptor.ts","./src/app/services/_authModel/user.ts","./src/app/services/_authService/authentication.service.ts","./src/app/services/_authService/gauth.service.ts","./src/app/services/_logActivity/log-activity.service.ts","./src/app/services/activity-calendar-list.service.ts","./src/app/services/activity-notification.service.ts","./src/app/services/activity.service.ts","./src/app/services/api.service.ts","./src/app/services/common/activity-status.service.ts","./src/app/services/common/generate-pdf.service.ts","./src/app/services/common/memoria-anual.service.ts","./src/app/services/common/user-config.service.ts","./src/app/services/contact-info.service.ts","./src/app/services/custom-encoder.service.ts","./src/app/services/data-sharing.service.ts","./src/app/services/dropdown.service.ts","./src/app/services/error-handler.service.ts","./src/app/services/filter.service.ts","./src/app/services/master-data.service.ts","./src/app/services/masterdetailsapi.service.ts","./src/app/services/multiple-activity.service.ts","./src/app/services/powerBi/powerbi.service.ts","./src/app/services/script-loader/dynamic-script-loader-service.service.ts","./src/app/services/shared.service.ts","./src/app/services/upload.service.ts","./src/app/services/user-permission-service.ts","./src/environments/environment.ts","./src/main.ts","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["export class DecimalToHex {\r\n public static convert(number) {\r\n return number.toString(16).padStart(6,\"0\").padStart(7,\"#\").toUpperCase();\r\n }\r\n}","export class Constants {\r\n //time in ms\r\n public static DEBOUNCE_TIME = 500;\r\n\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { MemoriaAnualQuiz } from '../models/memoria-anual-quiz.model';\r\n\r\n@Pipe({\r\n name: 'quizfilter',\r\n pure: false\r\n})\r\nexport class QuizFilterPipe implements PipeTransform {\r\n transform(items: MemoriaAnualQuiz[], section: number): any {\r\n if (!items || !section) {\r\n return items;\r\n }\r\n // filter items array, items which match and return true will be\r\n // kept, false will be filtered out\r\n return items.filter(item => item.Section == section);\r\n }\r\n}\r\n\r\n@Pipe({\r\n name: 'resultPipe',\r\n pure: false\r\n})\r\nexport class QuizResultPipe implements PipeTransform {\r\n transform(result: number): any {\r\n if(result <= 30 || isNaN(result))\r\n return 'INSUFICIENTE';\r\n else if (result > 30 && result <= 70)\r\n return 'MEJORABLE';\r\n else if (result > 70 && result < 100)\r\n return 'ADECUADA';\r\n else if (result == 100)\r\n return 'ÓPTIMA ';\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { AdminComponent } from './layout/admin/admin.component';\r\nimport { LoginComponent } from './components/login/login.component';\r\nimport { AuthGuard } from 'src/app/services/_authHelper/auth.guard';\r\nimport { DashboardCalendarComponent } from './components/dashboard/dashboard-calendar/dashboard-calendar.component';\r\nimport { DashboardListComponent } from './components/dashboard/dashboard-list/dashboard-list.component';\r\nimport { SigninRedirectCallbackComponent } from 'src/app/components/gAuth/signinredirectcallback.component';\r\nimport { SignoutRedirectCallbackComponent } from 'src/app/components/gAuth/signoutredirectcallback.component';\r\nimport { UnauthorizedComponent } from 'src/app/components/gAuth/unauthorized.component';\r\n\r\nimport { PowerBiViewComponent } from './components/powerbi/power-bi-view/power-bi-view.component';\r\n\r\n\r\n\r\nconst routes: Routes = [\r\n { path: '',\r\n pathMatch: 'full',\r\n redirectTo: 'login'\r\n //redirectTo: '/home/calendar'\r\n },\r\n {\r\n path: 'login',\r\n component: LoginComponent\r\n },\r\n {\r\n path: 'home',\r\n component: AdminComponent,\r\n children: [\r\n {\r\n path: 'calendar',\r\n component: DashboardCalendarComponent,\r\n canActivate: [AuthGuard]\r\n },\r\n {\r\n path: 'list',\r\n component: DashboardListComponent,\r\n canActivate: [AuthGuard]\r\n }, \r\n ]\r\n },\r\n {\r\n path:'powerbi/view',\r\n component:PowerBiViewComponent,\r\n canActivate:[AuthGuard]\r\n },\r\n { path: 'signin-callback', component: SigninRedirectCallbackComponent},\r\n { path: 'signout-callback', component: SignoutRedirectCallbackComponent},\r\n { path: 'unauthorized', component: UnauthorizedComponent},\r\n \r\n\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, { relativeLinkResolution: 'legacy' })],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","import { Component, ChangeDetectorRef, HostListener } from '@angular/core';\r\nimport { GAuthService } from 'src/app/services/_authService/gauth.service';\r\nimport { UserContext } from './models/auth/user-context';\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent {\r\n isLoggedIn = false; \r\n currentUserContext: UserContext = null;\r\n \r\n\r\nconstructor( \r\n private authService: GAuthService ){\r\n \r\n this.authService.loginChanges().subscribe(loggedIn => {\r\n this.isLoggedIn = loggedIn;\r\n }); \r\n\r\n this.authService.userChangedContext().subscribe(usr => { \r\n this.currentUserContext = usr;\r\n });\r\n } \r\n\r\nngOnInit() {\r\n \r\n}\r\n\r\nngAfterViewInit(){\r\n \r\n}\r\n\r\nngOnDestroy(){\r\n\r\n}\r\n\r\n\r\nlogin(){\r\n this.authService.login();\r\n}\r\n\r\nlogout(){\r\n this.authService.logout();\r\n}\r\n\r\nisAdmin(){\r\n return this.currentUserContext.auth && this.currentUserContext.auth.isAdmin;\r\n}\r\n \r\n}\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { AdminComponent } from './layout/admin/admin.component';\r\nimport { DashboardCalendarComponent } from './components/dashboard/dashboard-calendar/dashboard-calendar.component';\r\nimport { DashboardListComponent } from './components/dashboard/dashboard-list/dashboard-list.component';\r\nimport { DynamicScriptLoaderService } from './services/script-loader/dynamic-script-loader-service.service';\r\nimport { AddEditActivityComponent } from './layout/shared/popups/add-edit-activity/add-edit-activity.component';\r\nimport { AddMultipleActivitiesComponent } from './layout/shared/popups/add-multiple-activities/add-multiple-activities.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ApiService } from './services/api.service';\r\nimport { DropdownService } from './services/dropdown.service';\r\nimport { CustomEncoderService } from './services/custom-encoder.service';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { ActivityCalendarComponent } from './components/dashboard/activity-calendar/activity-calendar.component';\r\nimport { ActivityListComponent } from './components/dashboard/activity-list/activity-list.component';\r\nimport { FiltersComponent } from './layout/shared/template/filters/filters.component';\r\nimport { HeaderComponent } from './layout/shared/template/header/header.component';\r\nimport { FooterComponent } from './layout/shared/template/footer/footer.component';\r\nimport { LoginComponent } from './components/login/login.component';\r\nimport { JwtInterceptor } from 'src/app/services/_authHelper/jwt.interceptor';\r\nimport { ErrorInterceptor } from 'src/app/services/_authHelper/error.interceptor';\r\nimport { FullCalendarModule } from '@fullcalendar/angular';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { FormWizardModule, WizardComponent } from 'angular2-wizard';\r\nimport { ActivityMiniCalendarComponent } from './components/dashboard/activity-mini-calendar/activity-mini-calendar.component';\r\nimport { AddNewActivityComponent } from './layout/shared/popups/add-multiple-activities/add-new-activity/add-new-activity.component';\r\nimport { AddExistingActivityComponent } from './layout/shared/popups/add-multiple-activities/add-existing-activity/add-existing-activity.component';\r\nimport { AddContactsComponent } from './layout/shared/popups/add-multiple-activities/add-contacts/add-contacts.component';\r\nimport { NotificationComponent } from './layout/shared/template/notification/notification.component';\r\nimport { OwlDateTimeSpanish } from './models/owl-calendar-localization.model';\r\nimport { SigninRedirectCallbackComponent } from './components/gAuth/signinredirectcallback.component';\r\nimport { SignoutRedirectCallbackComponent } from './components/gAuth/signoutredirectcallback.component';\r\nimport { UnauthorizedComponent } from './components/gAuth/unauthorized.component';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\nimport { NgxSpinnerModule, NgxSpinnerService } from 'ngx-spinner';\r\nimport { NgxIndexedDBModule, DBConfig, NgxIndexedDBService } from 'ngx-indexed-db';\r\nimport { LogActivityService } from './services/_logActivity/log-activity.service';\r\nimport { NgxPaginationModule } from 'ngx-pagination';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { UserPermissionService } from './services/user-permission-service';\r\n\r\nimport { AnnualShippingMicroSMEComponent } from './layout/shared/popups/annual-shipping-micro-sme/annual-shipping-micro-sme.component';\r\nimport { NgTippyModule } from 'angular-tippy';\r\nimport { ChartsModule, ThemeService } from 'ng2-charts';\r\nimport { PdfAnnualShippingMicroSmeComponent } from './layout/shared/template/pdf/pdf-annual-shipping-micro-sme/pdf-annual-shipping-micro-sme.component';\r\nimport { PdfAnnualShippingHeaderComponent } from './layout/shared/template/pdf/pdf-annual-shipping-micro-sme/pdf-annual-shipping-header/pdf-annual-shipping-header.component';\r\nimport { MemoriaAnualPopupComponent } from './layout/shared/popups/memoria-anual-popup/memoria-anual-popup.component';\r\nimport { PdfMemoriaAnnualComponent } from './layout/shared/template/pdf/pdf-memoria-annual/pdf-memoria-annual.component';\r\nimport { PdfMemoriaAnnualHeaderComponent } from './layout/shared/template/pdf/pdf-memoria-annual/pdf-memoria-annual-header/pdf-memoria-annual-header.component';\r\nimport { PowerBiViewComponent } from './components/powerbi/power-bi-view/power-bi-view.component';\r\nimport { AddNewPlanactionComponent } from './layout/shared/popups/add-multiple-activities/add-new-planaction/add-new-planaction.component';\r\nimport { DialogModule } from '@syncfusion/ej2-angular-popups';\r\nimport { UserConfigPopupComponent } from './layout/shared/popups/user-config-popup/user-config-popup.component';\r\nimport { EditService, FilterService, GridModule, PageService, ReorderService, ResizeService, SortService, ToolbarService } from '@syncfusion/ej2-angular-grids';\r\nimport { TextBoxModule } from '@syncfusion/ej2-angular-inputs';\r\nimport { AutoCompleteModule, CheckBoxSelectionService, DropDownListAllModule, MultiSelectModule } from '@syncfusion/ej2-angular-dropdowns';\r\nimport { ButtonModule, CheckBoxModule, FabModule, SwitchModule } from '@syncfusion/ej2-angular-buttons';\r\nimport { RoleConfigPopupComponent } from './layout/shared/popups/role-config-popup/role-config-popup.component';\r\nimport { PreventionPlanPopupComponent } from './layout/shared/popups/prevention-plan-popup/prevention-plan-popup.component';\r\nimport { ConfirmationPopupComponent } from './layout/shared/popups/confirmation-popup/confirmation-popup.component';\r\nimport { OWL_DATE_TIME_LOCALE, OwlDateTimeIntl, OwlDateTimeModule, OwlNativeDateTimeModule } from '@busacca/ng-pick-datetime';\r\nimport { AngularSignaturePadModule } from '@almothafar/angular-signature-pad';\r\nimport { TagInputModule } from 'ngx-chips';\r\nimport { ActionConfigPopupComponent } from './layout/shared/popups/action-config-popup/action-config-popup.component';\r\nimport { PowerBIEmbedModule } from 'powerbi-client-angular';\r\nimport { MemoriaAnualWithQuizPopupComponent } from './layout/shared/popups/memoria-anual-popup/memoria-anual-with-quiz-popup.component';\r\nimport { QuizFilterPipe, QuizResultPipe } from './Pipes/QuizFilterPipe';\r\n\r\nconst dbConfig: DBConfig = {\r\n name: 'UserActivityLogDB',\r\n version: 1,\r\n objectStoresMeta: [{\r\n store: 'useractivity',\r\n storeConfig: { keyPath: 'id', autoIncrement: true },\r\n storeSchema: [\r\n { name: 'userId', keypath: 'userId', options: { unique: false } },\r\n { name: 'activityId', keypath: 'activityId', options: { unique: false } },\r\n { name: 'loggedInTime', keypath: 'loggedInTime', options: { unique: false } },\r\n { name: 'loggedOutTime', keypath: 'loggedOutTime', options: { unique: false } },\r\n { name: 'committedAction', keypath: 'committedAction', options: { unique: false } },\r\n { name: 'requestParam', keypath: 'requestParam', options: { unique: false } },\r\n { name: 'responseParam', keypath: 'responseParam', options: { unique: false } },\r\n { name: 'logDate', keypath: 'logDate', options: { unique: false } },\r\n { name: 'permissionLevel', keypath: 'permissionLevel', options: { unique: false } }\r\n ]\r\n }]\r\n};\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n AdminComponent,\r\n LoginComponent,\r\n AddEditActivityComponent,\r\n AddMultipleActivitiesComponent,\r\n ActivityCalendarComponent,\r\n ActivityListComponent,\r\n FiltersComponent,\r\n HeaderComponent,\r\n FooterComponent,\r\n NotificationComponent,\r\n ActivityMiniCalendarComponent,\r\n AddNewActivityComponent,\r\n AddExistingActivityComponent,\r\n AddContactsComponent,\r\n DashboardCalendarComponent,\r\n DashboardListComponent,\r\n SigninRedirectCallbackComponent,\r\n SignoutRedirectCallbackComponent,\r\n UnauthorizedComponent, \r\n PreventionPlanPopupComponent,\r\n AnnualShippingMicroSMEComponent,\r\n PdfAnnualShippingMicroSmeComponent,\r\n PdfAnnualShippingHeaderComponent,\r\n MemoriaAnualPopupComponent,\r\n PdfMemoriaAnnualComponent,\r\n PdfMemoriaAnnualHeaderComponent,\r\n PowerBiViewComponent,\r\n AddNewPlanactionComponent,\r\n UserConfigPopupComponent,\r\n RoleConfigPopupComponent, \r\n ConfirmationPopupComponent,\r\n AddNewPlanactionComponent,\r\n ActionConfigPopupComponent,\r\n MemoriaAnualWithQuizPopupComponent,\r\n QuizFilterPipe,\r\n QuizResultPipe\r\n ],\r\n imports: [\r\n BrowserModule,\r\n AppRoutingModule,\r\n NgbModule,\r\n HttpClientModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n BrowserAnimationsModule,\r\n OwlDateTimeModule,\r\n NgxPaginationModule, \r\n FullCalendarModule,\r\n OwlNativeDateTimeModule,\r\n FormWizardModule,\r\n CommonModule,\r\n AngularSignaturePadModule,\r\n NgSelectModule,\r\n NgxSpinnerModule,\r\n NgxIndexedDBModule.forRoot(dbConfig),\r\n NgxPaginationModule,\r\n TagInputModule,\r\n NgTippyModule,\r\n ChartsModule,\r\n DialogModule,\r\n GridModule,\r\n CheckBoxModule,\r\n TextBoxModule,\r\n MultiSelectModule,\r\n AutoCompleteModule,\r\n DropDownListAllModule,\r\n SwitchModule,\r\n ButtonModule,\r\n PowerBIEmbedModule,\r\n FabModule,\r\n ToastrModule.forRoot({\r\n timeOut: 2000,\r\n positionClass: 'toast-bottom-right',\r\n preventDuplicates: true\r\n })\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n providers: [\r\n DynamicScriptLoaderService,\r\n ApiService,\r\n DropdownService,\r\n CustomEncoderService,\r\n NgxSpinnerService,\r\n NgxIndexedDBService,\r\n LogActivityService,\r\n DeviceDetectorService,\r\n UserPermissionService,\r\n { provide: OWL_DATE_TIME_LOCALE, useValue: 'es' },\r\n { provide: OwlDateTimeIntl, useClass: OwlDateTimeSpanish },\r\n { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\r\n DatePipe,\r\n ThemeService,\r\n ResizeService,\r\n SortService,\r\n PageService, \r\n ToolbarService, \r\n EditService,\r\n FilterService,\r\n ReorderService,\r\n CheckBoxSelectionService\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {\r\n}\r\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { Activity } from 'src/app/models/activity.model';\r\nimport { ActivityService } from 'src/app/services/activity.service';\r\nimport { ErrorHandlerService } from 'src/app/services/error-handler.service';\r\nimport { Calendar, EventInput } from '@fullcalendar/core';\r\nimport dayGridPlugin from '@fullcalendar/daygrid';\r\nimport timeGridPlugin from '@fullcalendar/timegrid';\r\nimport interactionPlugin from '@fullcalendar/interaction';\r\nimport esLocale from '@fullcalendar/core/locales/es';\r\nimport { NgbModalOptions } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { FilterService } from 'src/app/services/filter.service';\r\nimport moment from 'moment/moment';\r\nimport { ActivityCalendarListService } from 'src/app/services/activity-calendar-list.service';\r\nimport { NgTippyService } from 'angular-tippy';\r\n\r\n@Component({\r\n selector: 'app-activity-calendar',\r\n templateUrl: './activity-calendar.component.html',\r\n styleUrls: ['./activity-calendar.component.scss']\r\n})\r\nexport class ActivityCalendarComponent implements OnInit {\r\n\r\n modalOptions: NgbModalOptions;\r\n activityCalendar: Calendar;\r\n eventInput: EventInput;\r\n startDate: string;\r\n fromDate: string;\r\n toDate: string;\r\n constructor(\r\n private activityService: ActivityService,\r\n private errorHandler: ErrorHandlerService,\r\n private toastrService: ToastrService,\r\n private spinner: NgxSpinnerService,\r\n private filterService: FilterService,\r\n private activityCalendarListService: ActivityCalendarListService,\r\n private tippyService: NgTippyService\r\n ) {\r\n this.modalOptions = {\r\n backdrop: 'static',\r\n windowClass: 'text-left modal-fade-animation',\r\n size: 'lg',\r\n centered: true\r\n };\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.activityCalendarListService.isCalendar = true;\r\n const self = this;\r\n this.activityCalendar = new Calendar(document.getElementById('activity-calendar'), {\r\n plugins: [dayGridPlugin, timeGridPlugin, interactionPlugin],\r\n header: {\r\n left: 'dayGridMonth,timeGridWeek,timeGridDay',\r\n right: 'prev,title,next'\r\n },\r\n locale: esLocale,\r\n displayEventTime: false,\r\n navLinks: true,\r\n editable: true,\r\n customButtons: {\r\n addActivityButton: {\r\n text: 'Añadir',\r\n click: function () {\r\n this.openActivityAddEditPopup();\r\n }\r\n }\r\n },\r\n dateClick: function (element) {\r\n self.activityCalendarListService.addEditActivity(element, false);\r\n },\r\n eventClick: function (element) {\r\n self.spinner.show();\r\n self.activityCalendarListService.addEditActivity(element, true);\r\n self.spinner.hide();\r\n\r\n },\r\n eventDrop: function (element) {\r\n self.updateActivity(element);\r\n },\r\n datesRender: function (info) {\r\n var fromDate = moment(new Date(info.view.activeStart)).format('YYYYMMDD');\r\n var toDate = moment(new Date(info.view.activeEnd)).format('YYYYMMDD');\r\n if (self.startDate != fromDate) {\r\n self.fromDate = fromDate;\r\n self.toDate = toDate;\r\n self.bindCalendarActivities();\r\n self.startDate = fromDate;\r\n }\r\n },\r\n eventRender: function(element) {\r\n const title = element.event.title;\r\n const ref = new ElementRef(element.el);\r\n self.tippyService.init(ref, { content: title, arrow: true, });\r\n }\r\n\r\n });\r\n this.registerEvents();\r\n this.setSelectedDate();\r\n this.activityCalendar.render();\r\n }\r\n \r\n\r\n public setSelectedDate() {\r\n this.activityService.selectedDate.subscribe((response) => {\r\n this.activityCalendar.gotoDate(response);\r\n });\r\n }\r\n\r\n public bindCalendarActivities() {\r\n this.spinner.show();\r\n this.activityCalendar.removeAllEvents();\r\n this.activityCalendar.render();\r\n this.filterService.setPageSize(false);\r\n this.filterService.setFilterValuesForAPI();\r\n this.filterService.filterObject.page_number = 1;\r\n this.filterService.filterObject.fecha_desde = this.fromDate;\r\n this.filterService.filterObject.fecha_hasta = this.toDate;\r\n if (this.filterService.filterObject.tipo_consulta === 'TODAS') {\r\n this.filterService.filterObject.tipo_consulta = 'ASIGNADASA';\r\n }\r\n\r\n this.activityService.getFilteredActivities(this.filterService.filterObject).subscribe(response => {\r\n\r\n this.activityService.totalRecordCount = response.links.rowcount;\r\n\r\n setTimeout( () => { \r\n this.activityCalendar.removeAllEvents();\r\n this.activityCalendar.render();\r\n if(this.filterService.filterObject.id_tecnico!=\"00000000000000-0000000-0000-W\")\r\n {\r\n this.activityService.mapActivityToCalendarEvent(response.data);\r\n this.activityService.activityList.forEach(event => {\r\n this.activityCalendar.addEvent(event);\r\n });\r\n }\r\n\r\n }, 2000 );\r\n \r\n \r\n\r\n this.activityCalendar.render();\r\n this.filterService.setFilterValuesForView();\r\n setTimeout( () => { \r\n this.spinner.hide();\r\n }, 2000 );\r\n }, error => {\r\n this.filterService.setFilterValuesForView();\r\n this.spinner.hide();\r\n this.errorHandler.handle(error);\r\n });\r\n \r\n }\r\n\r\n public async updateActivity(model) {\r\n\r\n this.spinner.show();\r\n let activity = new Activity();\r\n const targetDate = new Date(model.event.start);\r\n\r\n await this.activityService.getActivity(model.event.id).then(async response => {\r\n\r\n activity = this.activityService.mapActivityResponseToActivityModel(response);\r\n // Javascript month starts with 0\r\n const actualTargetMonth = targetDate.getMonth() + 1;\r\n // Get the date in the format dd/MM/yyyy\r\n activity.activityDate = ('0' + targetDate.getDate()).slice(-2) + '/'\r\n + ('0' + actualTargetMonth).slice(-2) + '/' + targetDate.getFullYear();\r\n const activityRoot = this.activityService.mapActivityModelToActivityRoot(activity);\r\n activityRoot.fecha = targetDate.getFullYear().toString() + ('0' + actualTargetMonth).slice(-2)\r\n + ('0' + targetDate.getDate()).slice(-2);\r\n\r\n /*NOTE:Client requirement=> Status type \"11\" is not available in client DB.Therefore send \"01\" instead*/\r\n activityRoot.especialidadTecnica.evento_estado = activityRoot.especialidadTecnica.evento_estado === '11' ?\r\n '01' : activityRoot.especialidadTecnica.evento_estado;\r\n\r\n this.activityService.saveActivity(activityRoot).then(saveResponse => {\r\n this.refreshEvents();\r\n\r\n // Check for error\r\n if (saveResponse.webError != null) {\r\n this.errorHandler.handle(saveResponse.webError.messageToUser, true);\r\n } else {\r\n this.toastrService.success('Actualizado con éxito', 'Éxito');\r\n this.activityService.notificationRefeshSubject.next('');\r\n this.bindCalendarActivities();\r\n }\r\n }, error => {\r\n this.spinner.hide();\r\n this.errorHandler.handle(error);\r\n });\r\n\r\n }, error => {\r\n this.spinner.hide();\r\n this.errorHandler.handle(error);\r\n });\r\n }\r\n\r\n private registerEvents() {\r\n this.refreshEvents();\r\n }\r\n\r\n private refreshEvents() {\r\n this.activityService.activityCalendarRefreshSubject\r\n .subscribe(res => {\r\n if (res !== null) {\r\n this.activityCalendar.removeAllEvents();\r\n this.activityCalendar.addEventSource(this.activityService.activityList);\r\n this.activityCalendar.render();\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivityService } from 'src/app/services/activity.service';\r\nimport { ErrorHandlerService } from 'src/app/services/error-handler.service';\r\nimport { NgbModal, NgbModalOptions } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ActuacionItem } from 'src/app/models/actuacion-item';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { SelectOptions } from 'src/app/models/select-options.model';\r\nimport { ActivityFilterModel } from 'src/app/models/activity-filter';\r\nimport { FilterService } from 'src/app/services/filter.service';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { SharedService } from 'src/app/services/shared.service';\r\nimport moment from 'moment/moment';\r\nimport { ActivityCalendarListService } from 'src/app/services/activity-calendar-list.service';\r\nimport { ActivityStatusService } from 'src/app/services/common/activity-status.service';\r\n\r\n@Component({\r\n selector: 'app-activity-list',\r\n templateUrl: './activity-list.component.html',\r\n styleUrls: ['./activity-list.component.scss',\r\n ]\r\n})\r\nexport class ActivityListComponent implements OnInit {\r\n\r\n public activityList: Array;\r\n modalOptions: NgbModalOptions;\r\n filterObject: ActivityFilterModel;\r\n deviceInfo: any;\r\n isMobileDevice: boolean;\r\n isDesktopDevice: boolean;\r\n isTabletDevice: boolean;\r\n public listViewPaginationRanges$: SelectOptions[];\r\n public listViewPaginationRowsPerPage$: SelectOptions[];\r\n selectedPaginationValue = '0';\r\n selectedRowsPerCount = '2';\r\n pageNumberList: any[] = [];\r\n pageCount = 0;\r\n message: string;\r\n test1 = '';\r\n emptyActuacionItem : any[]=[]\r\n dateValidationText:string =\"Ingresar valor\"\r\n\r\n dateFilterForm = new FormGroup({\r\n DateFrom: new FormControl(null),\r\n DateTo: new FormControl(null)\r\n });\r\n\r\n constructor(\r\n public activityService: ActivityService,\r\n private errorHandler: ErrorHandlerService, private modalService: NgbModal,\r\n private deviceDetectorService: DeviceDetectorService, private spinner: NgxSpinnerService,\r\n private filterService: FilterService,\r\n private sharedService: SharedService,\r\n private activityCalendarListService: ActivityCalendarListService,\r\n private activityStatusService: ActivityStatusService,\r\n ) {\r\n\r\n this.modalOptions = {\r\n backdrop: 'static',\r\n windowClass: 'text-left modal-fade-animation',\r\n size: 'lg',\r\n centered: true\r\n };\r\n\r\n if (JSON.parse(localStorage.getItem('loggeduser'))) {\r\n this.getAppUsageDeviceDetails();\r\n }\r\n\r\n this.onFormChange();\r\n }\r\n\r\n ngOnInit() {\r\n this.loadActivities();\r\n this.loadPaginationRanges();\r\n this.registerPaginationRanges();\r\n this.registerTotalActionCount();\r\n this.registerSelectedPaginationRange();\r\n this.setDefaultDates();\r\n this.filterActivityDates();\r\n }\r\n\r\n getAppUsageDeviceDetails() {\r\n this.deviceInfo = this.deviceDetectorService.getDeviceInfo();\r\n this.isMobileDevice = this.deviceDetectorService.isMobile();\r\n this.isTabletDevice = this.deviceDetectorService.isTablet();\r\n this.isDesktopDevice = this.deviceDetectorService.isDesktop();\r\n }\r\n\r\n setActionCountForListViewPage() {\r\n if (this.isMobileDevice) {\r\n this.activityService.listViewPaginationConfig.itemsPerPage = 5;\r\n this.selectedRowsPerCount = '5';\r\n } else if (this.isTabletDevice || this.isDesktopDevice) {\r\n this.activityService.listViewPaginationConfig.itemsPerPage = 10;\r\n this.selectedRowsPerCount = '10';\r\n }\r\n }\r\n\r\n loadActivities() {\r\n this.activityList = this.activityService.listViewArray;\r\n }\r\n\r\n returnEmprasa(activity: ActuacionItem) {\r\n var emprasa = activity.empresa_nombre; \r\n var centro = activity.empresa_centro_nombre ;\r\n var newstr = emprasa + centro.replace(emprasa, \"\");\r\n return newstr + ' - ' + activity.descripcion;\r\n }\r\n\r\n loadPaginationRanges() {\r\n this.listViewPaginationRanges$ = this.activityService.listViewPaginationRanges$;\r\n this.selectedPaginationValue = '1';\r\n }\r\n \r\n\r\n getActivityColor(activity: ActuacionItem) {\r\n let activityStatus = this.activityStatusService.listOfActivityStatus.find(x=>x.id.toLowerCase() == activity.evento_estado.trim().toLowerCase());\r\n if(activityStatus!= null && activityStatus != undefined){\r\n return activityStatus.numcolor;\r\n }\r\n \r\n }\r\n // To edit activity details\r\n openActivityAddPopup(activity: ActuacionItem): void {\r\n\r\n this.activityCalendarListService.isCalendar = false;\r\n this.activityCalendarListService.openActivityEditPopup(activity.id);\r\n this.activityCalendarListService.activityAddEditCompleted.subscribe(res => {\r\n if(res) {\r\n this.refreshActivityList();\r\n }\r\n });\r\n\r\n }\r\n\r\n // Refresh the activity list\r\n // NOTE : 'isNewRequest' implies any filter-based data fetch,not the pagination range drop down change\r\n public refreshActivityList(isNewRequest: boolean = false) {\r\n this.spinner.show();\r\n this.filterService.setPageSize(true);\r\n this.filterService.setFilterValuesForAPI();\r\n this.activityService.getFilteredActivities(this.filterService.filterObject).subscribe(response => {\r\n\r\n if (response.data != null && response.data.length > 0) {\r\n localStorage.setItem('selectedRowCount',response.links.rowcount);\r\n let paginationRangeArr: any[];\r\n if (isNewRequest) {\r\n this.activityService.pageCount = Math.floor(response.links.rowcount / response.data.length);\r\n this.activityService.pageNumberList = Array.from(Array(this.pageCount).keys()).map(i => i + 1);\r\n paginationRangeArr = this.activityService.getListViewPaginationRanges(this.activityService.pageNumberList);\r\n this.activityService.mapActivityToCalendarEvent(response.data, paginationRangeArr);\r\n }\r\n this.activityService.totalRecordCount = response.links.rowcount;\r\n this.activityService.listViewPaginationConfig.totalItems = this.activityService.totalRecordCount;\r\n this.activityService.mapActivityToCalendarEvent(response.data, paginationRangeArr);\r\n this.loadActivities();\r\n\r\n }else if(response.data != null && response.data.length == 0)\r\n {\r\n this.resetSearchResult();\r\n }\r\n this.filterService.setFilterValuesForView();\r\n this.spinner.hide();\r\n\r\n }, error => {\r\n this.spinner.hide();\r\n this.errorHandler.handle(error);\r\n this.filterService.setFilterValuesForView();\r\n });\r\n }\r\n\r\n private registerPaginationRanges() {\r\n this.activityService.pageRangeSubject\r\n .subscribe(res => {\r\n if (res !== null) {\r\n this.loadPaginationRanges();\r\n\r\n }\r\n });\r\n }\r\n\r\n private registerTotalActionCount() {\r\n this.activityService.totalActionCountSubject\r\n .subscribe(res => {\r\n if (res) {\r\n this.activityService.listViewPaginationConfig.totalItems = parseInt(String(res));\r\n }\r\n });\r\n }\r\n\r\n private registerSelectedPaginationRange() {\r\n this.activityService.selectedPageValueSubject\r\n .subscribe(res => {\r\n if (res !== null) {\r\n this.selectedPaginationValue = String(res);\r\n }\r\n });\r\n }\r\n\r\n //#region \"Pagination\"\r\n\r\n public pageChanged(pageOfItems: number) {\r\n this.activityService.listViewPaginationConfig.currentPage = pageOfItems;\r\n this.filterService.filterObject.page_number = pageOfItems;\r\n this.refreshActivityList();\r\n }\r\n\r\n public setDefaultDates(): void {\r\n const currentDate = moment();\r\n this.dateFilterForm.patchValue({\r\n DateFrom: new Date(currentDate.subtract(1, 'month').startOf('month').toString()),\r\n DateTo: new Date(currentDate.add(2, 'month').endOf('month').toString())\r\n });\r\n this.dateFilterForm.updateValueAndValidity();\r\n }\r\n\r\n public filterActivityDates(): void {\r\n if (this.dateFilterForm.valid) {\r\n this.spinner.show();\r\n const dateFrom: Date = this.dateFilterForm.get('DateFrom').value;\r\n const dateTo: Date = this.dateFilterForm.get('DateTo').value;\r\n this.filterService.resetPageDetails();\r\n\r\n if(this.dateFilterForm.get('DateFrom').value > this.dateFilterForm.get('DateTo').value)\r\n {\r\n this.dateFilterForm.controls['DateTo'].setErrors({'incorrect': true});\r\n this.dateFilterForm.markAllAsTouched();\r\n this.dateValidationText=\"erróneo\";\r\n this.resetSearchResult();\r\n this.spinner.hide()\r\n }else\r\n {\r\n this.filterService.filterObject.fecha_desde = dateFrom ? this.sharedService.dateToString(dateFrom) : null;\r\n this.filterService.filterObject.fecha_hasta = dateTo ? this.sharedService.dateToString(dateTo) : null;\r\n this.refreshActivityList();\r\n }\r\n \r\n } else {\r\n this.resetSearchResult();\r\n this.errorHandler.handle('Introduzca fechas válidas para filtrar', true);\r\n }\r\n\r\n }\r\n\r\n private resetSearchResult() : void {\r\n let paginationRangeArr: any[];\r\n this.activityService.mapActivityToCalendarEvent(this.emptyActuacionItem, paginationRangeArr);\r\n }\r\n\r\n private onFormChange():void{\r\n this.dateFilterForm.valueChanges.subscribe(x => {\r\n if(this.dateFilterForm.get('DateFrom').value < this.dateFilterForm.get('DateTo').value)\r\n {\r\n this.dateFilterForm.get('DateTo').setErrors(null)\r\n this.dateFilterForm.markAllAsTouched();\r\n this.dateValidationText=\"Ingresar valor\";\r\n }\r\n })\r\n }\r\n\r\n //#endregion\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivityService } from 'src/app/services/activity.service';\r\n\r\n@Component({\r\n selector: 'app-activity-mini-calendar',\r\n templateUrl: './activity-mini-calendar.component.html',\r\n styleUrls: ['./activity-mini-calendar.component.scss']\r\n})\r\nexport class ActivityMiniCalendarComponent implements OnInit {\r\n\r\n selectedDate: Date;\r\n clickedDate: Date;\r\n constructor(private activityService: ActivityService) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n setSelectedDate() {\r\n if (this.selectedDate !== this.clickedDate) {\r\n this.activityService.selectedDate.next(new Date(this.selectedDate));\r\n }\r\n this.clickedDate = this.selectedDate;\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ActivityStatusService } from 'src/app/services/common/activity-status.service';\r\nimport { DropdownService } from 'src/app/services/dropdown.service';\r\nimport { ErrorHandlerService } from 'src/app/services/error-handler.service';\r\nimport { DecimalToHex } from '../../../Helpers/DecimalToHex';\r\n\r\n@Component({\r\n selector: 'app-dashboard-calendar',\r\n templateUrl: './dashboard-calendar.component.html',\r\n styleUrls: ['./dashboard-calendar.component.scss']\r\n}) \r\n \r\nexport class DashboardCalendarComponent implements OnInit {\r\n\r\n listOfActivityStatus = [];\r\n constructor(private dropdownService: DropdownService,\r\n private errorHandler: ErrorHandlerService, \r\n private spinner: NgxSpinnerService, private activityStatus : ActivityStatusService) { \r\n \r\n\r\n }\r\n\r\n \r\n async ngOnInit() {\r\n await this.activityStatus.getColorsOfActivityStatus().toPromise().then();\r\n this.listOfActivityStatus = this.activityStatus.listOfActivityStatus.filter(x=>x.deleted == false);\r\n }\r\n\r\n \r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { DecimalToHex } from 'src/app/Helpers/DecimalToHex';\r\nimport { ActivityStatusService } from 'src/app/services/common/activity-status.service';\r\nimport { DropdownService } from 'src/app/services/dropdown.service';\r\nimport { ErrorHandlerService } from 'src/app/services/error-handler.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-dashboard-list',\r\n templateUrl: './dashboard-list.component.html',\r\n styleUrls: ['./dashboard-list.component.scss']\r\n})\r\nexport class DashboardListComponent implements OnInit {\r\n\r\n constructor(private dropdownService: DropdownService,\r\n private errorHandler: ErrorHandlerService, \r\n private spinner: NgxSpinnerService, private activityStatus : ActivityStatusService){\r\n\r\n }\r\n listOfActivityStatus = [];\r\n \r\n async ngOnInit() {\r\n await this.activityStatus.getColorsOfActivityStatus().toPromise().then();\r\n this.listOfActivityStatus = this.activityStatus.listOfActivityStatus.filter(x=>x.deleted == false);\r\n\r\n }\r\n\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { GAuthService } from 'src/app/services/_authService/gauth.service';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { User } from 'oidc-client';\r\nimport { Observable } from 'rxjs';\r\nimport { LoggedUser } from 'src/app/services/_authModel/user';\r\nimport { LogActivityService } from 'src/app/services/_logActivity/log-activity.service';\r\n\r\n@Component({\r\n selector: \"app-signin-callback\",\r\n template: `
`\r\n})\r\nexport class SigninRedirectCallbackComponent implements OnInit {\r\n private _returnUrl: string;\r\n public currentUser: Observable;\r\n private loggedUser: LoggedUser;\r\n\r\n constructor(private authService: GAuthService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private logActivityService: LogActivityService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.authService.completeLogin().then(user => {\r\n let loginStatus = \"\";\r\n let responseData = \"\";\r\n this.loggedUser = new LoggedUser();\r\n\r\n if (user != null) {\r\n this.loggedUser = {\r\n username: (!user.profile.username) ? \"\" : user.profile.username,\r\n fullName: (!user.profile.full_name) ? \"\" : user.profile.full_name,\r\n id: user.profile.sub,\r\n sid: user.profile.sid,\r\n gesemeApiToken: user.access_token,\r\n permissionScope: user.scope,\r\n accessLevel: \"\" //access level is determined in header.component.ts\r\n };\r\n\r\n loginStatus = \"LOGIN Success\";\r\n responseData = JSON.stringify({ userId: this.loggedUser.id, username: this.loggedUser.username, fullName: this.loggedUser.fullName, permission: this.loggedUser.permissionScope });\r\n localStorage.setItem(\"loggeduser\", JSON.stringify(this.loggedUser));\r\n this._returnUrl = '/home/calendar';\r\n }\r\n else {\r\n loginStatus = \"LOGIN Fail\";\r\n this._returnUrl = this.route.snapshot.queryParams['returnUrl'];\r\n }\r\n\r\n var indexedDBRecord = { userId: this.loggedUser.id, username: \"\", userFullName: \"\", activityId: \"\", loggedInTime: this.logActivityService.getDateInCustomFormat(new Date()), loggedOutTime: \"\", committedAction: loginStatus, requestParam: \"\", responseParam: responseData, logDate: this.logActivityService.getDateInCustomFormat(new Date()), permissionLevel: this.loggedUser.permissionScope };\r\n this.logActivityService.saveDataToIndexedDB('useractivity', indexedDBRecord);\r\n this.router.navigate([this._returnUrl]);\r\n }).catch(alert => {\r\n var indexedDBRecord = { userId: \"0\", username: \"\", userFullName: \"\", activityId: \"\", loggedInTime: \"\", loggedOutTime: this.logActivityService.getDateInCustomFormat(new Date()), committedAction: \"Login cancelled\", requestParam: \"\", responseParam: JSON.stringify({ alert }), logDate: this.logActivityService.getDateInCustomFormat(new Date()), permissionLevel: \"\" };\r\n this.logActivityService.saveDataToIndexedDB('useractivity', indexedDBRecord).subscribe(a => {\r\n this._returnUrl = '/login';\r\n this.router.navigate([this._returnUrl]);\r\n });\r\n });\r\n }\r\n\r\n}\r\n","import { Component, OnInit, DefaultIterableDiffer } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { GAuthService } from 'src/app/services/_authService/gauth.service';\r\nimport { LogActivityService } from '../../services/_logActivity/log-activity.service';\r\nimport { CookieService } from 'ngx-cookie-service';\r\n\r\n@Component({\r\n selector: 'app-signin-callback',\r\n template: ``\r\n})\r\n\r\nexport class SignoutRedirectCallbackComponent implements OnInit {\r\n \r\n constructor(private _authService: GAuthService,\r\n private _router: Router, private logActivityService: LogActivityService, private cookieService: CookieService) {\r\n \r\n }\r\n\r\n ngOnInit() { \r\n this.cookieService.deleteAll();\r\n let loggedUser = JSON.parse(localStorage.getItem(\"loggeduser\")); \r\n this._authService.completeLogout().then(user => {\r\n var indexedDBRecord = { userId: loggedUser.id, activityId: \"\", loggedInTime: \"\", loggedOutTime: this.logActivityService.getDateInCustomFormat(new Date()), committedAction: \"LOGOUT Success\", requestParam: \"\", responseParam: \"\", logDate: this.logActivityService.getDateInCustomFormat(new Date()) }\r\n this.logActivityService.saveDataToIndexedDB('useractivity', indexedDBRecord).subscribe(\r\n res => {\r\n this._router.navigate(['/login'], { replaceUrl: true }).then(() => { window.location.reload(); });\r\n }\r\n ); \r\n }); \r\n } \r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { GAuthService } from 'src/app/services/_authService/gauth.service';\r\n\r\n@Component({\r\n selector: 'app-unauthorized',\r\n templateUrl: 'unauthorized.component.html'\r\n})\r\n\r\nexport class UnauthorizedComponent implements OnInit {\r\n constructor(private _authService: GAuthService) { }\r\n\r\n ngOnInit() { }\r\n\r\n logout(){\r\n this._authService.logout();\r\n return false;\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input, Renderer2, OnDestroy } from '@angular/core';\r\nimport { UserLogin } from '../../models/workforce-login.model';\r\nimport { AuthenticationService } from 'src/app/services/_authService/authentication.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { GAuthService } from 'src/app/services/_authService/gauth.service';\r\nimport { LogActivityService } from 'src/app/services/_logActivity/log-activity.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.scss']\r\n})\r\n\r\nexport class LoginComponent implements OnInit, OnDestroy {\r\n\r\n userLogin = new UserLogin();\r\n isLoading = false;\r\n formResetToggle = true;\r\n returnUrl: string;\r\n error = '';\r\n @Input()\r\n isModal = false;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private authenticationService: AuthenticationService,\r\n private authService: GAuthService,\r\n private renderer: Renderer2,\r\n private logActivityService: LogActivityService \r\n ) {\r\n \r\n }\r\n\r\n ngOnInit() {\r\n let errorMsg = localStorage.getItem(\"sessionErrorMsg\");\r\n if (errorMsg) {\r\n this.error = errorMsg;\r\n }\r\n this.authService._userManager.clearStaleState();\r\n this.logActivityService.clearAndSaveSessionValues(); \r\n \r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n this.renderer.removeClass(document.body, '1-column');\r\n this.renderer.removeClass(document.body, 'bg-full-screen-image');\r\n this.renderer.removeClass(document.body, 'blank-page'); \r\n }\r\n\r\n login() {\r\n localStorage.setItem(\"sessionErrorMsg\", null);\r\n this.error = null;\r\n this.authService.login(); \r\n }\r\n\r\n\r\n\r\n}\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { PowerbiService } from 'src/app/services/powerBi/powerbi.service';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { PowerBIReportEmbedComponent } from 'powerbi-client-angular';\r\nimport { models } from 'powerbi-client';\r\nimport { Observable, Observer } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-power-bi-view',\r\n templateUrl: './power-bi-view.component.html',\r\n styleUrls: ['./power-bi-view.component.scss']\r\n})\r\nexport class PowerBiViewComponent implements OnInit {\r\n\r\n @ViewChild(PowerBIReportEmbedComponent) reportObj!: PowerBIReportEmbedComponent;\r\n userID:string=\"\";\r\n reportId:Number;\r\n isLoading:boolean;\r\n embedConfigObs: Observable;\r\n reportClass = 'report-container reportClass iframe-boder';\r\n readReportId:string;\r\n readWorkspaceId:string;\r\n\r\n constructor(private powerBiService:PowerbiService,private activatedRoute: ActivatedRoute) { }\r\n ngOnInit() {\r\n this.getUserId();\r\n this.readRouterData();\r\n this.getPBIReportEmbededDetail()\r\n }\r\n \r\n getPBIReportEmbededDetail(){\r\n this.isLoading = true;\r\n this.powerBiService.getEmbededInfo(this.readReportId,this.userID).subscribe(res=>{\r\n this.isLoading = false;\r\n\r\n let embedConfig = { \r\n type: 'report',\r\n id: res.EmbedReport[0].ReportId,\r\n embedUrl:res.EmbedReport[0].EmbedUrl,\r\n accessToken: res.EmbedToken.token, \r\n tokenType: models.TokenType.Embed,\r\n hostname: \"https://app.powerbi.com\",\r\n } \r\n this.embedConfigObs = new Observable((observer: Observer) => {\r\n observer.next(embedConfig)\r\n \r\n });\r\n }, error => {\r\n //this.uiService.showFailToast(\"Error\",\"Informe de error al cargar\");\r\n this.isLoading = false;\r\n });\r\n }\r\n\r\n\r\n readRouterData(){\r\n this.readReportId= this.activatedRoute.snapshot.queryParamMap.get(\"reportId\");\r\n this.readWorkspaceId=this.activatedRoute.snapshot.queryParamMap.get(\"workSpaceId\");\r\n }\r\n\r\n private getUserId():void\r\n {\r\n const logedUser=JSON.parse(localStorage.getItem(\"loggeduser\"));\r\n this.userID=logedUser.id;\r\n }\r\n\r\n}\r\n","import { Component, OnInit, OnDestroy, Renderer2 } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-admin',\r\n templateUrl: './admin.component.html',\r\n styleUrls: ['./admin.component.scss']\r\n})\r\nexport class AdminComponent implements OnInit, OnDestroy {\r\n\r\n constructor(private renderer: Renderer2) { }\r\n\r\n ngOnInit() {\r\n this.renderer.addClass(document.body, '2-columns');\r\n }\r\n\r\n ngOnDestroy() {\r\n this.renderer.removeClass(document.body, '2-columns');\r\n }\r\n\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { WizardComponent } from 'angular2-wizard';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ProgramacionAnualData } from 'src/app/models/ProgramacionAnualData';\r\nimport { SelectOptions } from 'src/app/models/select-options.model';\r\nimport { DropdownService } from 'src/app/services/dropdown.service';\r\nimport { MasterDataService } from 'src/app/services/master-data.service';\r\n\r\n@Component({\r\n selector: 'app-action-config-popup',\r\n templateUrl: './action-config-popup.component.html',\r\n styleUrls: ['./action-config-popup.component.scss']\r\n})\r\nexport class ActionConfigPopupComponent implements OnInit {\r\n\r\n public shippingSmeForm: FormGroup;\r\n @ViewChild(\"wizardComponent\") wizardComponent: WizardComponent;\r\n firstTableData: ProgramacionAnualData[];\r\n nextTableData: ProgramacionAnualData[];\r\n public selectedCompanyLanguage = \"es\";\r\n tabIndex = 0;\r\n activityTypes: SelectOptions[];\r\n activityRequest = {\r\n page_number: 0,\r\n page_size: 100,\r\n incl: \"-99\"\r\n }\r\n actuacionTypeList: any;\r\n public ActivityTypeForm = new FormGroup({\r\n ActivityType: new FormControl(null, Validators.required),\r\n });\r\n @Input() public addEditActivityForm = new FormGroup({\r\n ActivtyTypeName: new FormControl(null),\r\n });\r\n\r\n constructor(public actionModal: NgbActiveModal,\r\n private datePipe: DatePipe,\r\n private toastrService: ToastrService,\r\n private masterDataService: MasterDataService,\r\n private dropdownService: DropdownService) { }\r\n\r\n ngOnInit() {\r\n this.getTableData();\r\n\r\n this.shippingSmeForm = new FormGroup({\r\n TemplateLanguage: new FormControl(\r\n this.selectedCompanyLanguage,\r\n Validators.required\r\n )\r\n });\r\n this.initDropdowns();\r\n }\r\n\r\n getTableData() {\r\n this.masterDataService.getProgramacionAnualDefaultActions().subscribe((res) => {\r\n if (res) {\r\n this.firstTableData = res.filter(x => x.isFirstYear == true);\r\n this.nextTableData = res.filter(x => x.isFirstYear == false);\r\n }\r\n });\r\n }\r\n\r\n removeFirstData(index) {\r\n this.firstTableData = this.firstTableData.filter((v, i) => i != index);\r\n }\r\n\r\n removeNextData(index) {\r\n this.nextTableData = this.nextTableData.filter((v, i) => i != index);\r\n }\r\n\r\n \r\n setlang(event) {\r\n this.selectedCompanyLanguage = event.target.value;\r\n }\r\n\r\n\r\n onScrollActivity() {\r\n this.initDropdowns(\"-99\", true);\r\n }\r\n\r\n onChangeActivity() {\r\n this.activityRequest.page_number = 0;\r\n }\r\n\r\n onKeyUpTypeOfActivity(activityName) {\r\n let name = activityName.target.value;\r\n this.activityRequest.page_number = 0;\r\n if (name && name.length >= 4) {\r\n this.initDropdowns(name, false);\r\n } else {\r\n if (name.length == 0) {\r\n this.initDropdowns(\"-99\", false);\r\n }\r\n }\r\n }\r\n\r\n onCloseActivity() {\r\n this.ActivityTypeForm.controls.ActivityType.setValue(null);\r\n }\r\n\r\n initDropdowns(incl: string = \"-99\", isScroll = false) {\r\n this.activityRequest.incl = incl ? incl : null;\r\n this.activityRequest.page_number = isScroll ? (this.activityRequest.page_number + 1) : 0;\r\n\r\n this.dropdownService.getActivityTypes(this.activityRequest.incl, 100, this.addEditActivityForm.value.ActivityTypeId, false, false, this.activityRequest.page_number).subscribe((response) => {\r\n this.actuacionTypeList = response;\r\n if (isScroll) {\r\n this.activityTypes = this.activityTypes.concat(this.dropdownService.WrappedToDropDownListWithLang(this.shippingSmeForm.get(\"TemplateLanguage\").value,\r\n response,\r\n \"name\",\r\n \"nameCatala\",\r\n \"activityTypeId\"\r\n ));\r\n } else {\r\n this.activityTypes = this.dropdownService.WrappedToDropDownListWithLang(this.shippingSmeForm.get(\"TemplateLanguage\").value,\r\n response,\r\n \"name\",\r\n \"nameCatala\",\r\n \"activityTypeId\"\r\n );\r\n }\r\n });\r\n }\r\n\r\n onTabClick(id: number) {\r\n this.tabIndex = id;\r\n }\r\n\r\n addToArray() {\r\n // Define a reusable function to find the max ID and update the table data\r\n const updateTableData = (tableData: any, isFirstYear: any) => {\r\n // Find the maximum ID in the current table data\r\n const maxId = tableData.reduce((max: any, item: any) => (item.id > max ? item.id : max), 0);\r\n \r\n // Check if the actuacionType is not empty\r\n if (actuacionType.length === 0) {\r\n console.error('No matching actuacionType found');\r\n return;\r\n }\r\n \r\n // Update the table data\r\n return [\r\n ...tableData,\r\n {\r\n id: maxId + 1,\r\n titleCatalan: actuacionType[0].nameCatala,\r\n titleSpanish: actuacionType[0].name,\r\n dateBegin: 0,\r\n duration: null,\r\n isFirstYear: isFirstYear\r\n },\r\n ];\r\n };\r\n \r\n // Filter the actuacionType based on ActivityTypeForm value\r\n const actuacionType = this.actuacionTypeList.filter((obj: any) => \r\n obj.activityTypeId === this.ActivityTypeForm.value.ActivityType.value\r\n );\r\n \r\n // Update the appropriate table data based on tabIndex\r\n if (this.tabIndex === 1) {\r\n this.firstTableData = updateTableData(this.firstTableData, true);\r\n } else if (this.tabIndex === 2) {\r\n this.nextTableData = updateTableData(this.nextTableData, false);\r\n }\r\n \r\n // Reset the ActivityTypeForm control value\r\n this.ActivityTypeForm.controls.ActivityType.setValue(null);\r\n }\r\n\r\n\r\n onFirstTabDateChange(i, e) {\r\n if (e < 365 && e >= 0) {\r\n this.firstTableData = this.firstTableData.map((obj, index) =>\r\n index === i ? { ...obj, dateBegin: Number(e) } : obj\r\n );\r\n } else {\r\n this.firstTableData = this.firstTableData.map((obj, index) =>\r\n index === i ? { ...obj, dateBegin: null } : obj\r\n );\r\n }\r\n }\r\n\r\n onFirstTabDurationChange(i, e) {\r\n if (e <= 365 && e > 0) {\r\n this.firstTableData = this.firstTableData.map((obj, index) =>\r\n index === i ? { ...obj, duration: Number(e) } : obj);\r\n } else {\r\n this.firstTableData = this.firstTableData.map((obj, index) =>\r\n index === i ? { ...obj, duration: null } : obj);\r\n }\r\n }\r\n\r\n onNextTabDateChange(i, e) {\r\n if (e < 365 && e >= 0) {\r\n this.nextTableData = this.nextTableData.map((obj, index) =>\r\n index === i ? { ...obj, dateBegin: Number(e) } : obj\r\n );\r\n } else {\r\n this.nextTableData = this.nextTableData.map((obj, index) =>\r\n index === i ? { ...obj, dateBegin: null } : obj\r\n );\r\n }\r\n }\r\n\r\n onNextTabDurationChange(i, e) {\r\n if (e <= 365 && e > 0) {\r\n this.nextTableData = this.nextTableData.map((obj, index) =>\r\n index === i ? { ...obj, duration: Number(e) } : obj\r\n );\r\n } else {\r\n this.nextTableData = this.nextTableData.map((obj, index) =>\r\n index === i ? { ...obj, duration: null } : obj\r\n );\r\n }\r\n }\r\n\r\n OnActionSave() {\r\n let actionTableData = [];\r\n\r\n let validateFirstData = this.firstTableData.filter(a => a.dateBegin == null || a.duration == null);\r\n let validateOtherData = this.nextTableData.filter(a => a.dateBegin == null || a.duration == null);\r\n\r\n if(validateFirstData.length == 0 && validateOtherData.length == 0 ) {\r\n this.firstTableData.forEach(a => actionTableData.push(\r\n {\r\n dateBegin: a.dateBegin,\r\n duration: a.duration,\r\n isFirstYear: a.isFirstYear,\r\n titleCatalan: a.titleCatalan,\r\n titleSpanish: a.titleSpanish\r\n }));\r\n\r\n this.nextTableData.forEach(a => actionTableData.push(\r\n {\r\n dateBegin: a.dateBegin,\r\n duration: a.duration,\r\n isFirstYear: a.isFirstYear,\r\n titleCatalan: a.titleCatalan,\r\n titleSpanish: a.titleSpanish\r\n }));\r\n this.masterDataService.addProgramacionAnualDefaultActions(actionTableData).subscribe((res) => {\r\n if (res == \"success\") {\r\n this.toastrService.success('Guardado exitosamente', 'Éxito');\r\n this.actionModal.close()\r\n } else {\r\n this.toastrService.error(res);\r\n }\r\n });\r\n } else{\r\n this.toastrService.error(\"Detalles no válidos\");\r\n }\r\n \r\n }\r\n\r\n closeAction() {\r\n this.actionModal.close();\r\n }\r\n\r\n\r\n\r\n}\r\n","import { MemoriaAnualPopupComponent } from './../memoria-anual-popup/memoria-anual-popup.component';\r\nimport { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { DropdownService } from 'src/app/services/dropdown.service';\r\nimport { ErrorHandlerService } from 'src/app/services/error-handler.service';\r\nimport { SelectOptions } from 'src/app/models/select-options.model';\r\nimport { ActivityService } from 'src/app/services/activity.service';\r\nimport { NgbActiveModal, NgbModal, NgbModalOptions } from '@ng-bootstrap/ng-bootstrap';\r\nimport { SubSink } from 'subsink';\r\nimport Swal from 'sweetalert2';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AddMultipleActivitiesComponent } from '../../popups/add-multiple-activities/add-multiple-activities.component';\r\nimport { MultipleActivityService } from 'src/app/services/multiple-activity.service';\r\nimport { ActivityRoot } from 'src/app/models/activity.save.activityroot';\r\nimport { UsuarioUpsert } from 'src/app/models/activity.save.usuarioupsert';\r\nimport { EspecialidadTecnica } from 'src/app/models/activity.save.especialidadtecnica';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { LogActivityService } from 'src/app/services/_logActivity/log-activity.service';\r\nimport { UserPermissionService } from 'src/app/services/user-permission-service';\r\nimport { FilterService } from 'src/app/services/filter.service';\r\nimport { ParteDeVisitaState } from 'src/app/models/Enum/ParteDeVisitaState';\r\nimport { MasterDataService } from 'src/app/services/master-data.service';\r\nimport { AnnualShippingMicroSMEComponent } from '../annual-shipping-micro-sme/annual-shipping-micro-sme.component';\r\nimport moment from 'moment/moment';\r\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\r\nimport { Constants } from 'src/app/Helpers/constant';\r\nimport { PreventionPlanPopupComponent } from '../prevention-plan-popup/prevention-plan-popup.component';\r\nimport { MemoriaAnualWithQuizPopupComponent } from '../memoria-anual-popup/memoria-anual-with-quiz-popup.component';\r\nimport { DataSharingService } from 'src/app/services/data-sharing.service';\r\n\r\n@Component({\r\n selector: 'app-add-edit-activity',\r\n templateUrl: './add-edit-activity.component.html',\r\n styleUrls: ['./add-edit-activity.component.scss']\r\n})\r\nexport class AddEditActivityComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n private currentDate = new Date();\r\n selectedCompanyId: any;\r\n @Input() public addEditActivityForm = new FormGroup({\r\n Id: new FormControl(0),\r\n Alias: new FormControl(null),\r\n ActivityTypeId: new FormControl(null, Validators.required),\r\n ActivtyTypeName: new FormControl(null),\r\n CompanyId: new FormControl(null, Validators.required),\r\n CompanyName: new FormControl(null),\r\n WorkCentreId: new FormControl(null, Validators.required),\r\n WorkCentreName: new FormControl(null),\r\n AssignedUserId: new FormControl(null, Validators.required),\r\n AssignedUsername: new FormControl(null),\r\n StatusTypeId: new FormControl(null, Validators.required),\r\n StatusTypeName: new FormControl(null),\r\n ActivityDate: new FormControl(this.currentDate, Validators.required),\r\n ActivityStartTime: new FormControl(null, Validators.required),\r\n ActivityEndTime: new FormControl(null, Validators.required),\r\n \r\n Duration: new FormControl({ disabled: true, value: null }, Validators.required),\r\n Description: new FormControl('')\r\n },{ validators: this.dateComparisonValidator });\r\n @Input() public isEdit = false;\r\n @Input() public isVisit = false;\r\n @Input() public isAnnual = false;\r\n @Input() public isMultipleActivityPopUpBtnEnabled: boolean = false;\r\n @Input() public isSubmitBtnEnabled: boolean = false;\r\n @Input() public isDataModificationAllowed: boolean = false;\r\n @Input() public isDataDeletionAllowed: boolean = false;\r\n\r\n public ParteDeVisitaStates = ParteDeVisitaState;\r\n public SelectedParteDeVisitaState: ParteDeVisitaState;\r\n private SelectedVisitaReferenceNo: string;\r\n\r\n isMemPermited: boolean = false;\r\n isProgPermited: boolean = false;\r\n formResetToggle = true;\r\n activityTypes$: SelectOptions[];\r\n companies$: SelectOptions[];\r\n workingCentres$: SelectOptions[];\r\n users$: SelectOptions[];\r\n activityStatusTypes$: SelectOptions[];\r\n currentSelectedStatus: string;\r\n showEnvio: boolean = true;\r\n showElaboracion: boolean = true;\r\n emailAddress = [];\r\n companyCodigo: string;\r\n user: any;\r\n\r\n public isAnualProgramme = false;\r\n public isPreventionPlan = false;\r\n\r\n modalTitle = 'Actuación';\r\n modalOptions: NgbModalOptions;\r\n\r\n private activityRoot: ActivityRoot;\r\n private activityUserDetails: UsuarioUpsert;\r\n private activityDetails: EspecialidadTecnica;\r\n private clientReqIPAddress = '';\r\n private activitySaveState = false;\r\n\r\n // 2420390-20051017161914-0001-W - Default Spanish Language Id\r\n private languageId = '2420390-20051017161914-0001-W';\r\n\r\n private companySubject: Subject = new Subject();\r\n private centerSubject: Subject = new Subject();\r\n private typeOfActivitySubject: Subject = new Subject();\r\n private userSubject: Subject = new Subject();\r\n\r\n\r\n constructor(private dropdownService: DropdownService,\r\n private errorHandler: ErrorHandlerService,\r\n private activityService: ActivityService,\r\n public addActivityModal: NgbActiveModal,\r\n private toastrService: ToastrService,\r\n private modalService: NgbModal,\r\n private multipleActivityService: MultipleActivityService,\r\n private spinner: NgxSpinnerService,\r\n private logActivityService: LogActivityService,\r\n private userPermissionService: UserPermissionService,\r\n private filterService: FilterService,\r\n private masterDataService: MasterDataService,\r\n private dataSharingService:DataSharingService) {\r\n this.modalOptions = {\r\n backdrop: 'static',\r\n windowClass: 'text-left modal-fade-animation',\r\n centered: true,\r\n size: 'lg'\r\n };\r\n\r\n this.user = JSON.parse(localStorage.getItem('loggeduser'));\r\n }\r\n\r\n dateComparisonValidator(group: FormGroup) {\r\n const startDate = new Date(group.get('ActivityStartTime').value);\r\n const endDate = new Date(group.get('ActivityEndTime').value);\r\n \r\n let dtStart = startDate.getTime();\r\n let dtFinish = endDate.getTime();\r\n\r\n if (dtStart && dtFinish && dtFinish < dtStart) {\r\n return { dateRange: true };\r\n //group.get('ActivityEndTime').setErrors({ dateMismatch: true });\r\n } \r\n // else {\r\n // group.get('ActivityEndTime').setErrors(null);\r\n // }\r\n\r\n return null;\r\n }\r\n\r\n ngOnInit() {\r\n this.getRolePermission();\r\n const formDate: Date = this.addEditActivityForm.value.ActivityDate;\r\n const activityDate = `${formDate.getDate().toString()}/${String(formDate.getMonth() + 1)}/${formDate.getFullYear().toString()}`;\r\n this.masterDataService\r\n .getVisitRefrenceNumber(activityDate, this.addEditActivityForm.value.WorkCentreId)\r\n .subscribe(reference => {\r\n this.SelectedVisitaReferenceNo = reference;\r\n localStorage.setItem(\"reference\", reference);\r\n })\r\n this.showEnvio = true;\r\n this.initDropdowns();\r\n //this.enableSubmitBtn();\r\n if (!this.isEdit) {\r\n this.setDefaultValues(); \r\n this.modalTitle = 'Añadir Actuación';\r\n }\r\n // Hide/show delete & submit button based on user permission\r\n if (this.isEdit) {\r\n this.isDataModificationAllowed = this.userPermissionService.isActuacionUpdateAllowed;\r\n this.isDataDeletionAllowed = this.userPermissionService.isActuacionDeleteAllowed;\r\n } else {\r\n this.isDataModificationAllowed = this.userPermissionService.isActuacionInsertAllowed;\r\n this.isDataDeletionAllowed = false;\r\n }\r\n\r\n this.companySubject.pipe(\r\n debounceTime(Constants.DEBOUNCE_TIME),\r\n distinctUntilChanged(),\r\n ).subscribe(companyName => this.loadTopMatchingCompanies(companyName));\r\n\r\n this.centerSubject.pipe(\r\n debounceTime(Constants.DEBOUNCE_TIME),\r\n distinctUntilChanged()\r\n ).subscribe(centerName => this.loadTopMatchingWorkcentres(centerName));\r\n\r\n this.typeOfActivitySubject.pipe(\r\n debounceTime(Constants.DEBOUNCE_TIME),\r\n distinctUntilChanged()\r\n ).subscribe(typeOfActivity => {\r\n this.loadTopMatchingActivityTypes(typeOfActivity)\r\n });\r\n\r\n this.userSubject.pipe(\r\n debounceTime(Constants.DEBOUNCE_TIME),\r\n distinctUntilChanged()\r\n ).subscribe(user => this.loadTopMatchingUsers(user));\r\n }\r\n\r\n preventKeyboard(event) {\r\n if (event.key !== 'Tab' && event.key !== 'Enter') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n getRolePermission() {\r\n this.isMemPermited = false;\r\n this.isProgPermited = false;\r\n\r\n let request = {\r\n UserId: this.user.id\r\n }\r\n this.masterDataService.getRolePermission(request).subscribe(res => {\r\n if (res) {\r\n res.forEach(item => {\r\n if (item.permissions.permisionCode == \"SeeProgramacionAnualWizardButton\") {\r\n this.isProgPermited = true;\r\n return;\r\n }\r\n else if (item.permissions.permisionCode == \"SeeMemoriaAnualWizardButton\") {\r\n this.isMemPermited = true;\r\n return;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n initDropdowns() {\r\n\r\n this.spinner.show();\r\n let companyId = '';\r\n\r\n const selectionObjectCompany = { stringValue: '', fetchLimit: 100, idPart: '' };\r\n const sessionFilterObject = this.filterService.filterObject;\r\n if (this.isEdit) {\r\n companyId = this.addEditActivityForm.value.CompanyId;\r\n } else {\r\n companyId = (!sessionFilterObject.id_empresa || sessionFilterObject.id_empresa === '0') ? '' : sessionFilterObject.id_empresa;\r\n selectionObjectCompany.idPart = companyId;\r\n if (companyId === '') {\r\n selectionObjectCompany.stringValue = '-99';\r\n selectionObjectCompany.fetchLimit = 0;\r\n }\r\n }\r\n const activityTypeId = this.isEdit ? this.addEditActivityForm.value.ActivityTypeId : '';\r\n if (activityTypeId) {\r\n if (activityTypeId == \"20192503000000-0000000-0046-W\") {\r\n this.showEnvio = true;\r\n } else {\r\n this.showEnvio = false;\r\n }\r\n\r\n if (activityTypeId == \"20151013114725-6267782-0059-W\") {\r\n this.showElaboracion = true;\r\n } else {\r\n this.showElaboracion = false;\r\n }\r\n\r\n }\r\n const userId = this.isEdit ? this.addEditActivityForm.value.AssignedUserId : JSON.parse(localStorage.getItem('loggeduser')).id;\r\n\r\n\r\n\r\n /*NOTE:Client requirement=> Status type \"11\" is not available in client DB.Therefore set \"01\" instead*/\r\n const actualStatusTypeId: string = this.addEditActivityForm.value.StatusTypeId === '11'\r\n ? '01' : this.addEditActivityForm.value.StatusTypeId;\r\n\r\n if (this.isEdit) {\r\n localStorage.setItem(\"selectedTipoActuation\", activityTypeId);\r\n this.subs.add(\r\n\r\n\r\n this.dropdownService.getActivityTypes('', 100, activityTypeId).subscribe(response => {\r\n\r\n this.activityTypes$ = this.dropdownService.WrappedToDropDownList(response, 'name', 'activityTypeId');\r\n this.addEditActivityForm.value.ActivityTypeId = this.activityTypes$\r\n .filter(c => c.value === this.addEditActivityForm.value.ActivityTypeId).length === 0\r\n ? null : this.addEditActivityForm.value.ActivityTypeId;\r\n this.isVisit = this.addEditActivityForm.value.ActivtyTypeName.toString().toLowerCase().trim().includes('visita');\r\n \r\n if (this.isVisit) {\r\n\r\n const formDate: Date = this.addEditActivityForm.value.ActivityDate;\r\n const activityDate = `${formDate.getDate().toString()}/${String(formDate.getMonth() + 1)}/${formDate.getFullYear().toString()}`;\r\n this.masterDataService\r\n .getVisitRefrenceNumber(activityDate, this.addEditActivityForm.value.WorkCentreId)\r\n .subscribe(reference => {\r\n this.SelectedVisitaReferenceNo = reference;\r\n this.masterDataService.getVisitState(reference).subscribe(state => {\r\n this.SelectedParteDeVisitaState = state;\r\n });\r\n });\r\n\r\n }\r\n\r\n if (this.addEditActivityForm.value.ActivityTypeId === '20192503000000-0000000-0046-W' || this.addEditActivityForm.value.ActivityTypeId === \"20151013114725-6267782-0059-W\") {\r\n this.isAnualProgramme = true;\r\n }\r\n \r\n this.isPreventionPlan = (this.addEditActivityForm.value.ActivtyTypeName.toLowerCase().includes('plan de prevención'));\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n\r\n }),\r\n this.dropdownService.getCompanies('', 100, companyId).subscribe(response => {\r\n const res = response as Array;\r\n const company = res.filter(c => c.companyId === this.addEditActivityForm.value.CompanyId)[0];\r\n\r\n // 2420390-20051017161914-0001-W - Spanish Language Id\r\n this.languageId = company ? company.commLanguage : \"2420390-20051017161914-0001-W\";\r\n\r\n this.companies$ = this.dropdownService.WrappedToDropDownList(response, 'name', 'companyId');\r\n this.addEditActivityForm.value.CompanyId = this.companies$\r\n .filter(c => c.value === this.addEditActivityForm.value.CompanyId).length === 0\r\n ? null : this.addEditActivityForm.value.CompanyId;\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n }),\r\n\r\n this.dropdownService.getUsersLimited('', 100, userId).subscribe(response => {\r\n this.users$ = this.dropdownService.WrappedToDropDownList(response, 'fullName', 'id');\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n }),\r\n this.dropdownService.getActivityStatusTypes(true).subscribe(response => {\r\n response = response.filter(x => x.deleted == false);\r\n this.activityStatusTypes$ = this.dropdownService.WrappedToDropDownList(response, 'statusTypeName', 'id', false, false, false, true, true);\r\n this.addEditActivityForm.patchValue({\r\n StatusTypeId: actualStatusTypeId\r\n });\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n }),\r\n this.dropdownService.getClientReqIPAddress().subscribe(response => {\r\n this.clientReqIPAddress = response.clientReqIPAddress;\r\n this.spinner.hide();\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n this.spinner.hide();\r\n }),\r\n );\r\n } else {\r\n this.subs.add(\r\n this.dropdownService.getCompanies(selectionObjectCompany.stringValue, selectionObjectCompany.fetchLimit, selectionObjectCompany.idPart).subscribe(response => {\r\n this.companies$ = this.dropdownService.WrappedToDropDownList(response, 'name', 'companyId');\r\n this.addEditActivityForm.value.CompanyId = this.companies$\r\n .filter(c => c.value === this.addEditActivityForm.value.CompanyId).length === 0\r\n ? null : this.addEditActivityForm.value.CompanyId;\r\n this.addEditActivityForm.patchValue({\r\n CompanyId: (companyId === '' ? null : companyId)\r\n });\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n }),\r\n this.dropdownService.getUsersLimited('', 100, userId).subscribe(response => {\r\n this.users$ = this.dropdownService.WrappedToDropDownList(response, 'fullName', 'id');\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n }),\r\n this.dropdownService.getActivityStatusTypes(true).subscribe(response => {\r\n response = response.filter(x => x.deleted == false);\r\n this.activityStatusTypes$ = this.dropdownService.WrappedToDropDownList(response, 'statusTypeName', 'id', false, false, true, false, true);\r\n const defaultStatusTypeId = this.activityStatusTypes$.filter(a => a.label === 'Validado').map(a => a.value).toString();\r\n this.addEditActivityForm.patchValue({\r\n StatusTypeId: defaultStatusTypeId\r\n });\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n }),\r\n this.dropdownService.getClientReqIPAddress().subscribe(response => {\r\n this.clientReqIPAddress = response.clientReqIPAddress;\r\n this.spinner.hide();\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n this.spinner.hide();\r\n }),\r\n );\r\n\r\n const wcValue = (!sessionFilterObject.id_centro || sessionFilterObject.id_centro === '0') ? null : sessionFilterObject.id_centro;\r\n this.addEditActivityForm.patchValue({\r\n WorkCentreId: wcValue\r\n });\r\n }\r\n\r\n if (companyId) { this.getCompanyWorkCentres(companyId, true); }\r\n\r\n }\r\n\r\n calculateDuration() {\r\n this.addEditActivityForm.get('Duration').setValue(0);\r\n let dtStart = new Date(this.addEditActivityForm.value.ActivityStartTime);\r\n let dtFinish = new Date(this.addEditActivityForm.value.ActivityEndTime);\r\n \r\n // Set both dates to a fixed date (e.g., January 1, 1970)\r\n let fixedDate = new Date(1970, 0, 1); // January 1, 1970\r\n \r\n dtStart.setFullYear(fixedDate.getFullYear(), fixedDate.getMonth(), fixedDate.getDate());\r\n dtFinish.setFullYear(fixedDate.getFullYear(), fixedDate.getMonth(), fixedDate.getDate());\r\n \r\n if (dtFinish > dtStart) {\r\n // Calculate duration in milliseconds\r\n const durationInMillis = dtFinish.getTime() - dtStart.getTime();\r\n // Convert milliseconds to hours and minutes\r\n let durationHours = Math.floor(durationInMillis / (1000 * 60 * 60));\r\n let durationMinutes = Math.floor((durationInMillis % (1000 * 60 * 60)) / (1000 * 60));\r\n // Calculate total duration in minutes\r\n this.addEditActivityForm.get('Duration').setValue(durationHours * 60 + durationMinutes);\r\n }\r\n }\r\n \r\n\r\n setDefaultValues() {\r\n const sessionStorageUser = JSON.parse(localStorage.getItem('loggeduser'));\r\n this.addEditActivityForm.patchValue({\r\n AssignedUserId: String(sessionStorageUser.id),\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n getCompanyWorkCentres(selectedOption: any, isFirstPopUpLoad: boolean = false, wcNameSubString: string = '-99', isSearchMode: boolean = false) {\r\n let selectedOptionActual;\r\n if (selectedOption) {\r\n this.selectedCompanyId = selectedOption?.value ? selectedOption?.value : selectedOption;\r\n // For the first pop up load\r\n if (isFirstPopUpLoad) {\r\n let currentWorCentreId = (!this.addEditActivityForm.value.WorkCentreId || this.addEditActivityForm.value.WorkCentreId === '0')\r\n ? '' : this.addEditActivityForm.value.WorkCentreId;\r\n selectedOptionActual = selectedOption;\r\n this.dropdownService\r\n .getWorkingCentresByCompany(selectedOptionActual, wcNameSubString, 100, currentWorCentreId, isSearchMode).subscribe(response => {\r\n this.workingCentres$ = this.dropdownService.WrappedToDropDownList(response, 'centreName', 'id');\r\n // Ignore compilation error on 'value'\r\n currentWorCentreId = this.workingCentres$.filter(c => c.value === currentWorCentreId).length === 0 ? null : currentWorCentreId;\r\n this.addEditActivityForm.patchValue({\r\n WorkCentreId: currentWorCentreId\r\n });\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n\r\n } else { // When a company is selected explicitly after the pop up is loaded\r\n selectedOptionActual = selectedOption.value;\r\n this.addEditActivityForm.patchValue({\r\n WorkCentreId: null\r\n });\r\n\r\n this.dropdownService.getWorkingCentresByCompany(selectedOptionActual, wcNameSubString, 100, '', isSearchMode).subscribe(response => {\r\n\r\n this.workingCentres$ = this.dropdownService.WrappedToDropDownList(response, 'centreName', 'id');\r\n const defaults = response.filter(e => e.isDefault);\r\n if (defaults.length === 1) {\r\n this.setDefaultWorkCenter(defaults[0].id);\r\n }\r\n\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n }\r\n } else {\r\n this.workingCentres$ = null;\r\n }\r\n this.enableMultipleActivityPopUpBtn();\r\n //this.enableSubmitBtn();\r\n }\r\n\r\n private setDefaultWorkCenter(defalut: string): void {\r\n const workCenter = this.workingCentres$.filter(c => c.value === defalut);\r\n const workCenterId = workCenter ? workCenter[0].value : null;\r\n this.addEditActivityForm.patchValue({\r\n WorkCentreId: workCenterId\r\n });\r\n }\r\n\r\n saveActivity(addAnotherActivity = false) {\r\n const activityDate = this.addEditActivityForm.value.ActivityDate;\r\n const dtStart = new Date(this.addEditActivityForm.value.ActivityStartTime);\r\n const dtFinish = this.addEditActivityForm.value.ActivityEndTime == null ?\r\n null : new Date(this.addEditActivityForm.value.ActivityEndTime);\r\n const activityTimeStr = ('0' + dtStart.getHours()).slice(-2) + ':' + ('0' + dtStart.getMinutes()).slice(-2) + ':00';\r\n const actualMonth = activityDate.getMonth() + 1;\r\n\r\n // Get activity date in YYYYMMdd format\r\n const activityDateStr = activityDate.getFullYear() + ('0' + actualMonth).slice(-2) + ('0' + activityDate.getDate()).slice(-2);\r\n let actualActivityFinishTime: Date = null, actualActivityStartTime: Date = null;\r\n\r\n /*NOTE:Client requirement=> Status type \"11\" is not available in client DB.Therefore send \"01\" instead*/\r\n const actualStatusTypeId: string = this.addEditActivityForm.value.StatusTypeId === '11' ?\r\n '01' : this.addEditActivityForm.value.StatusTypeId;\r\n\r\n if (this.addEditActivityForm.value.ActivityStartTime !== null) {\r\n const [hours, minutes, seconds] = activityTimeStr.split(':');\r\n actualActivityStartTime = new Date(activityDate.getFullYear(), activityDate.getMonth(),\r\n activityDate.getDate(), +hours, Number(minutes), Number(seconds));\r\n }\r\n\r\n if (dtFinish !== null) {\r\n const activityFinishTimeStr = ('0' + dtFinish.getHours()).slice(-2) + ':' + ('0' + dtFinish.getMinutes()).slice(-2) + ':00';\r\n const [hours, minutes, seconds] = activityFinishTimeStr.split(':');\r\n actualActivityFinishTime = new Date(dtFinish.getFullYear(), dtFinish.getMonth(), dtFinish.getDate(), +hours, Number(minutes), 0);\r\n } else {\r\n actualActivityFinishTime = null;\r\n }\r\n\r\n this.activityRoot = new ActivityRoot();\r\n this.activityDetails = new EspecialidadTecnica();\r\n this.activityUserDetails = new UsuarioUpsert();\r\n\r\n if(this.selectedCompanyId != this.addEditActivityForm.value.CompanyId){\r\n this.addEditActivityForm.value.CompanyId = this.selectedCompanyId;\r\n }\r\n this.activityDetails = {\r\n tipo_especialidad: this.addEditActivityForm.value.ActivityTypeId,\r\n evento_estado: actualStatusTypeId,\r\n tiempo_estimado: 0,\r\n hora_inicio: this.addEditActivityForm.value.ActivityStartTime,\r\n hora_fin: this.activityService.getActivityFinishTime(actualActivityStartTime, actualActivityFinishTime, Number(this.addEditActivityForm.value.Duration)),\r\n empresa_id: this.addEditActivityForm.value.CompanyId,\r\n empresa_centro_id: this.addEditActivityForm.value.WorkCentreId\r\n };\r\n\r\n this.activityUserDetails = {\r\n fechaHora: this.addEditActivityForm.value.ActivityDate,\r\n ipOrigen: this.clientReqIPAddress,\r\n objectId2: '' // TODO: Not yet clarified.\r\n };\r\n\r\n this.activityRoot = {\r\n id: this.isEdit ? this.addEditActivityForm.value.Id : null,\r\n alias: this.addEditActivityForm.value.Alias,\r\n descripcion: this.addEditActivityForm.value.Description,\r\n fecha: activityDateStr,\r\n hora: activityTimeStr.replace(':', '').replace(':', ''), // Replace ':' with empty string =>should be in HHmmss format \r\n user_assigned: this.addEditActivityForm.value.AssignedUserId,\r\n especialidadTecnica: this.activityDetails,\r\n usuario_upsert: this.activityUserDetails\r\n };\r\n\r\n if (this.addEditActivityForm.value.Id == null || this.addEditActivityForm.value.Id === '') {\r\n this.activityRoot.id = null;\r\n } \r\n this.addActivity(addAnotherActivity);\r\n this.calculateDuration();\r\n }\r\n\r\n addActivity(addAnotherActivity = false) {\r\n const saveType: string = (this.activityRoot.id != null && this.activityRoot.id !== '') ? 'UPDATE Action' : 'INSERT Action';\r\n let responseParam = '', committedAction = '';\r\n this.spinner.show();\r\n\r\n this.dataSharingService.currentActuacionDataObject=this.activityRoot;\r\n this.activityService.saveActivity(this.activityRoot).then(response => {\r\n responseParam = JSON.stringify(response);\r\n this.spinner.hide();\r\n\r\n // Check for error\r\n if (response.webError != null) {\r\n this.activitySaveState = false;\r\n committedAction = saveType + ' failed';\r\n this.errorHandler.handle(response.webError.messageToUser, true);\r\n } else {\r\n this.activitySaveState = true;\r\n committedAction = saveType + ' success';\r\n\r\n //this.filterService.filterObject.id_actuacionestado=this.activityRoot.especialidadTecnica.evento_estado;\r\n if (addAnotherActivity) {\r\n this.filterService.setFilterValuesForAPI();\r\n this.activityService.filterValues = this.filterService.filterObject;\r\n //this.activityService.fetchActivityList();\r\n this.AddNextActivity();\r\n } else {\r\n this.addActivityModal.close();\r\n }\r\n\r\n this.toastrService.success('Guardado exitosamente', 'Éxito');\r\n }\r\n const indexedDBRecord = {\r\n userId: JSON.parse(localStorage.getItem('loggeduser')).id,\r\n activityId: this.activityRoot.id, loggedInTime: '',\r\n loggedOutTime: '', committedAction: committedAction,\r\n requestParam: JSON.stringify(this.activityRoot),\r\n responseParam: responseParam,\r\n logDate: this.logActivityService.getDateInCustomFormat(new Date())\r\n };\r\n this.logActivityService.saveDataToIndexedDB('useractivity', indexedDBRecord);\r\n return response;\r\n\r\n }, error => {\r\n\r\n responseParam = JSON.stringify(error);\r\n const indexedDBRecord = {\r\n userId: JSON.parse(localStorage.getItem('loggeduser')).id,\r\n activityId: this.activityRoot.id, loggedInTime: '',\r\n loggedOutTime: '', committedAction: committedAction,\r\n requestParam: JSON.stringify(this.activityRoot),\r\n responseParam: responseParam,\r\n logDate: this.logActivityService.getDateInCustomFormat(new Date())\r\n };\r\n this.logActivityService.saveDataToIndexedDB('useractivity', indexedDBRecord);\r\n this.spinner.hide();\r\n this.errorHandler.handle(error);\r\n\r\n });\r\n }\r\n\r\n deleteActivity() {\r\n\r\n if (this.addEditActivityForm.value.Id != null && this.addEditActivityForm.value.Id !== '') {\r\n\r\n Swal.fire({\r\n title: '¿Estás seguro de borrar la acción?',\r\n text: '',\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonText: 'Comienza a borrar',\r\n cancelButtonText: 'Cancelar'\r\n }).then((result) => {\r\n if (result.value) {\r\n\r\n let committedAction = '';\r\n\r\n const deleteActivityObj = {\r\n id: this.addEditActivityForm.value.Id,\r\n usuario_upsert: {\r\n userId: JSON.parse(localStorage.getItem('loggeduser')).id,\r\n fechaHora: new Date(),\r\n ipOrigen: this.clientReqIPAddress,\r\n objectId2: null\r\n }\r\n };\r\n\r\n this.spinner.show();\r\n this.activityService.deleteActivity(deleteActivityObj).subscribe(response => {\r\n\r\n this.spinner.hide();\r\n if (response.webError != null) // Check for error from APIs\r\n {\r\n committedAction = 'DELETE failed';\r\n this.errorHandler.handle(response.webError.messageToUser, true);\r\n } else {\r\n if (response.data.eliminado) // Check whether deletion was successful\r\n {\r\n //this.activityService.fetchActivityList();\r\n committedAction = 'DELETE success';\r\n this.addActivityModal.close();\r\n this.toastrService.success('Borrado exitosamente', 'Éxito');\r\n } else {\r\n this.errorHandler.handle('No se pudo borrar la acción. Se produjo un error.', true);\r\n }\r\n }\r\n\r\n const indexedDBRecord = {\r\n userId: JSON.parse(localStorage.getItem('loggeduser')).id, activityId: deleteActivityObj.id,\r\n loggedInTime: '', loggedOutTime: '', committedAction: committedAction, requestParam: JSON.stringify(deleteActivityObj),\r\n responseParam: JSON.stringify(response), logDate: this.logActivityService.getDateInCustomFormat(new Date())\r\n };\r\n this.logActivityService.saveDataToIndexedDB('useractivity', indexedDBRecord);\r\n }, error => {\r\n const indexedDBRecord = {\r\n userId: JSON.parse(localStorage.getItem('loggeduser')).id, activityId: deleteActivityObj.id,\r\n loggedInTime: '', loggedOutTime: '', committedAction: committedAction, requestParam: JSON.stringify(deleteActivityObj),\r\n responseParam: error, logDate: this.logActivityService.getDateInCustomFormat(new Date())\r\n };\r\n this.logActivityService.saveDataToIndexedDB('useractivity', indexedDBRecord);\r\n this.spinner.hide();\r\n this.errorHandler.handle(error);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n getActivityClass(statusType: string) {\r\n if (statusType === null) {\r\n return null;\r\n }\r\n\r\n let result: string = null;\r\n\r\n switch (statusType.toLowerCase().trim()) {\r\n case 'pendiente de confirmar':\r\n result = 'pending-confirmation';\r\n break;\r\n case 'confirmada-pendiente de realizar':\r\n result = 'confirmed-pending';\r\n break;\r\n case 'pendienter':\r\n result = 'confirmed-pending';\r\n break;\r\n case 'pendiente':\r\n result = 'confirmed-pending';\r\n break;\r\n case 'realizada-pendiente de validar':\r\n result = 'done-pending-validation';\r\n break;\r\n case 'realizada y Validada':\r\n result = 'done-validated';\r\n break;\r\n case 'validado':\r\n result = 'done-validated';\r\n break;\r\n case 'cancelada':\r\n result = 'cancelled';\r\n break;\r\n case 'cancelado':\r\n result = 'cancelled';\r\n break;\r\n }\r\n return result;\r\n }\r\n\r\n confirmStatusChange(event: any) {\r\n if (this.currentSelectedStatus !== this.addEditActivityForm.value.StatusTypeId) {\r\n\r\n Swal.fire({\r\n title: 'Estás seguro?',\r\n text: '',\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonText: 'Cambiar Estado',\r\n cancelButtonText: 'Cancelar'\r\n }).then((result) => {\r\n if (result.value) {\r\n this.currentSelectedStatus = this.addEditActivityForm.value.StatusTypeId;\r\n } else if (result.dismiss === Swal.DismissReason.cancel) {\r\n this.addEditActivityForm.patchValue({\r\n StatusTypeId: this.currentSelectedStatus\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n openMultipleActivityPopup() {\r\n this.saveActivity();\r\n this.emailAddress = [];\r\n this.dropdownService.getCompanyCodigo(this.activityService.companyId).subscribe(res => {\r\n this.companyCodigo = res.codigo;\r\n this.dropdownService.getBulkEmail(this.companyCodigo).subscribe(response => {\r\n for (var i = 0; i < response.length; i++) {\r\n const emailObj = { display: response[i].contactEmail, value: response[i].contactEmail }\r\n this.emailAddress.push(emailObj);\r\n }\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n })\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n })\r\n\r\n this.dropdownService.emailAddresses = this.emailAddress;\r\n const modalRef = this.modalService.open(AddMultipleActivitiesComponent, this.modalOptions);\r\n \r\n modalRef.componentInstance.ActivityFormGroupWizard1.patchValue({\r\n ParentActivityId: this.addEditActivityForm.value.Id,\r\n CompanyId: this.addEditActivityForm.value.CompanyId,\r\n CompanyName: this.addEditActivityForm.value.CompanyName,\r\n WorkCentreId: this.addEditActivityForm.value.WorkCentreId,\r\n WorkCentreName: this.addEditActivityForm.value.WorkCentreName,\r\n AssignedUserId: this.addEditActivityForm.value.AssignedUserId,\r\n AssignedUserName: this.addEditActivityForm.value.AssignedUserName,\r\n ActivityDate: this.addEditActivityForm.value.ActivityDate,\r\n ActivityTime: this.addEditActivityForm.value.ActivityStartTime,\r\n Duration: Number(this.addEditActivityForm.value.Duration),\r\n Description: this.addEditActivityForm.value.Description,\r\n VisitActivityId: this.addEditActivityForm.value.Id,\r\n ActivityTypeId: this.addEditActivityForm.value.ActivityTypeId,\r\n ActivityFinishTime: this.addEditActivityForm.value.ActivityEndTime\r\n });\r\n\r\n // 20071120163100-0000001-0001-W - Cataln Language Id, If it ain't catalan then default to spanish\r\n modalRef.componentInstance.selectedCompanyLanguage = this.languageId === '20071120163100-0000001-0001-W' ? 'ca' : 'es';\r\n\r\n modalRef.componentInstance.SelectedParteDeVisitaState = this.SelectedParteDeVisitaState;\r\n modalRef.componentInstance.SelectedReferenceNo = this.SelectedVisitaReferenceNo;\r\n modalRef.componentInstance.userDetailsId = this.addEditActivityForm.value.Id;\r\n\r\n modalRef.result.then((_close) => {\r\n this.filterService.setFilterValuesForAPI();\r\n this.activityService.filterValues = this.filterService.filterObject;\r\n this.activityService.fetchActivityList();\r\n }, (_dismiss) => {\r\n this.multipleActivityService.selectedActivity.length = 0;\r\n });\r\n }\r\n\r\n openMemoriaAnualPopup() {\r\n\r\n this.dropdownService.getCompanyCodigo(this.activityService.companyId).subscribe(res => {\r\n\r\n localStorage.setItem('codigoCentro', res.codigo);\r\n \r\n const activityTypeName = this.addEditActivityForm.value.ActivtyTypeName.toLowerCase();\r\n if(activityTypeName.includes('memoria anual') && (\r\n activityTypeName.includes('envío/entrega') || activityTypeName.includes('elaboración')\r\n )){\r\n const modalRef = this.modalService.open(MemoriaAnualWithQuizPopupComponent, this.modalOptions);\r\n modalRef.componentInstance.companyData = this.addEditActivityForm.value;\r\n modalRef.componentInstance.userDetailsId = this.addEditActivityForm.value.Id;\r\n }\r\n else {\r\n const modalRef = this.modalService.open(MemoriaAnualPopupComponent, this.modalOptions);\r\n modalRef.componentInstance.companyData = this.addEditActivityForm.value;\r\n }\r\n })\r\n }\r\n\r\n openPreventionPlanPopup() {\r\n const modalRef = this.modalService.open(PreventionPlanPopupComponent, this.modalOptions);\r\n modalRef.componentInstance.companyData = this.addEditActivityForm.value;\r\n this.addActivityModal.close();\r\n }\r\n\r\n async openShippingSmePopup(): Promise {\r\n this.saveActivity();\r\n this.dropdownService.getCompanyCodigo(this.activityService.companyId).subscribe(res => {\r\n const modalRef = this.modalService.open(AnnualShippingMicroSMEComponent, this.modalOptions);\r\n modalRef.componentInstance.userDetailsId = this.addEditActivityForm.value.Id;\r\n\r\n const formValue = this.addEditActivityForm.value; \r\n\r\n let timeString = new Date(formValue.ActivityStartTime).toString();\r\n if (timeString) {\r\n timeString = timeString.split(' ')[4];\r\n }\r\n\r\n const parentDate: Date = formValue.ActivityDate;\r\n const actualMonth: number = parentDate.getMonth() + 1;\r\n const activityDateString = `${parentDate.getDate().toString()}/${actualMonth.toString()}/${parentDate.getFullYear().toString()}`;\r\n\r\n modalRef.componentInstance.selectedActivity = {\r\n ActivityId: formValue.Id,\r\n CompanyId: formValue.CompanyId,\r\n CompanyName: formValue.CompanyName,\r\n WorkCentreId: formValue.WorkCentreId,\r\n WorkCentreName: formValue.WorkCentreName,\r\n AssignedUserId: formValue.AssignedUserId,\r\n AssignedUserName: formValue.AssignedUserName,\r\n ActivityDate: activityDateString,\r\n ActivityStartTime: timeString,\r\n Duration: Number(formValue.Duration),\r\n Description: formValue.Description,\r\n ActivityTypeId: formValue.ActivityTypeId,\r\n ActivtyTypeName: formValue.ActivtyTypeName,\r\n UserId: JSON.parse(localStorage.getItem('loggeduser')).id,\r\n codigoCentro: res.codigo\r\n };\r\n\r\n // 20071120163100-0000001-0001-W - Cataln Language Id, If it ain't catalan then default to spanish\r\n modalRef.componentInstance.selectedCompanyLanguage = this.languageId === '20071120163100-0000001-0001-W' ? 'ca' : 'es';\r\n\r\n modalRef.result.then((close) => {\r\n this.filterService.setFilterValuesForAPI();\r\n this.activityService.filterValues = this.filterService.filterObject;\r\n this.activityService.fetchActivityList();\r\n });\r\n })\r\n }\r\n\r\n setAssignedUser(selectedOption: any) {\r\n this.addEditActivityForm.value.AssignedUserId = selectedOption.value;\r\n }\r\n\r\n // To hide the 'Parte De Visita' button(The button to get multiple activity Pop Up)\r\n hidePopupButtons(selectedOption: any) {\r\n localStorage.setItem(\"selectedTipoActuation\", selectedOption.value);\r\n this.isVisit = (String(selectedOption.label).toLowerCase().includes('visita') && this.isEdit);\r\n if((selectedOption.value === '20192503000000-0000000-0046-W' && this.isEdit) || (selectedOption.value === \"20151013114725-6267782-0059-W\" && this.isEdit)) {\r\n this.isAnualProgramme = true;\r\n } \r\n\r\n if (selectedOption.value == '20192503000000-0000000-0046-W') {\r\n this.showEnvio = false;\r\n } else {\r\n this.showEnvio = true;\r\n }\r\n\r\n if (selectedOption.value == '20151013114725-6267782-0059-W') {\r\n this.showElaboracion = false;\r\n } else {\r\n this.showElaboracion = true;\r\n }\r\n\r\n }\r\n\r\n // To enable the 'Parte De Visita' button(The button to get multiple activity Pop Up)\r\n enableMultipleActivityPopUpBtn() {\r\n if (this.addEditActivityForm.value.WorkCentreId == null) {\r\n this.isMultipleActivityPopUpBtnEnabled = false;\r\n } else {\r\n this.isMultipleActivityPopUpBtnEnabled = true;\r\n }\r\n\r\n }\r\n\r\n // To enable the 'Submit' button\r\n // enableSubmitBtn() {\r\n // this.addEditActivityForm.value.Duration = this.addEditActivityForm.value.Duration == undefined ? 0 : this.addEditActivityForm.value.Duration;\r\n\r\n // if (this.addEditActivityForm.value.WorkCentreId == null && Number(this.addEditActivityForm.value.Duration) <= 0 && this.addEditActivityForm.value.ActivityEndTime == null) {\r\n // this.isSubmitBtnEnabled = false;\r\n // } else {\r\n // this.isSubmitBtnEnabled = true;\r\n // }\r\n // }\r\n\r\n //#region \"Limited value loading for main dropdowns \"\r\n\r\n // Company\r\n loadTopMatchingCompanies(companyName: any) {\r\n // Trigger the loading only if string length is>=4\r\n if (companyName.length >= 4) {\r\n const companyId = this.isEdit ? this.addEditActivityForm.value.CompanyId : '';\r\n this.dropdownService.getCompanies(companyName, 100, companyId, true).subscribe(response => {\r\n this.companies$ = this.dropdownService.WrappedToDropDownList(response, 'name', 'companyId');\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n } else {\r\n this.companies$ = null;\r\n this.workingCentres$ = null;\r\n this.addEditActivityForm.patchValue({\r\n CompanyId: null,\r\n WorkCentreId: null\r\n });\r\n }\r\n }\r\n\r\n onKeyUpCompany(companyNameTarget: any) {\r\n if (companyNameTarget.target.value != null) {\r\n this.companySubject.next(companyNameTarget.target.value);\r\n }\r\n }\r\n\r\n // workCentres\r\n loadTopMatchingWorkcentres(wcNameTarget: any) {\r\n // Trigger the loading only if string length is>=4\r\n if (wcNameTarget.length >= 4) {\r\n this.getCompanyWorkCentres(this.addEditActivityForm.value.CompanyId, true, wcNameTarget, true);\r\n } else {\r\n this.workingCentres$ = this.workingCentres$ ? this.workingCentres$ : null;\r\n this.addEditActivityForm.patchValue({\r\n WorkCentreId: null\r\n });\r\n }\r\n }\r\n\r\n onKeyUpCenter(centerNameTarget: any) {\r\n if (centerNameTarget.target.value != null) {\r\n this.centerSubject.next(centerNameTarget.target.value);\r\n }\r\n }\r\n // acivity types\r\n loadTopMatchingActivityTypes(activityTypeNameTarget: any) {\r\n // Trigger the loading only if string length is>=4\r\n if (activityTypeNameTarget.length >= 4) {\r\n const actTypeId = this.isEdit ? this.addEditActivityForm.value.activityTypeId : '';\r\n this.dropdownService.getActivityTypes(activityTypeNameTarget, 100, actTypeId, false, true).subscribe(response => {\r\n this.activityTypes$ = this.dropdownService.WrappedToDropDownList(response, 'name', 'activityTypeId');\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n } else {\r\n this.activityTypes$ = null;\r\n this.addEditActivityForm.patchValue({\r\n ActivityTypeId: null\r\n });\r\n }\r\n }\r\n onKeyUpTypeOfActivity(typeOfActivityTarget: any) {\r\n if (typeOfActivityTarget.target.value != null) {\r\n this.typeOfActivitySubject.next(typeOfActivityTarget.target.value);\r\n }\r\n }\r\n loadTopMatchingUsers(usernameSubStr: any) {\r\n // Trigger the loading only if string length is>=4\r\n if (usernameSubStr.length >= 4) {\r\n const userId = this.isEdit ? this.addEditActivityForm.value.AssignedUserId : '';\r\n this.dropdownService.getUsersLimited(usernameSubStr, 100, userId, true).subscribe(response => {\r\n this.users$ = this.dropdownService.WrappedToDropDownList(response, 'fullName', 'id');\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n } else {\r\n this.users$ = null;\r\n this.addEditActivityForm.patchValue({\r\n AssignedUserId: null\r\n });\r\n }\r\n }\r\n\r\n onKeyUpUser(userTarget: any) {\r\n if (userTarget.target.value != null) {\r\n this.userSubject.next(userTarget.target.value);\r\n }\r\n }\r\n //#endregion\r\n\r\n private AddNextActivity(): void {\r\n const time = this.addEditActivityForm.value.ActivityStartTime;\r\n const date = this.addEditActivityForm.value.ActivityDate;\r\n\r\n if (time) {\r\n const duration = Number(this.addEditActivityForm.value.Duration);\r\n let timeMoment = moment(time);\r\n const dateMoment = moment(date);\r\n\r\n timeMoment = timeMoment.set({ 'year': dateMoment.get('year'), 'month': dateMoment.get('month'), 'date': dateMoment.get('date') });\r\n\r\n const updatedTime = timeMoment.add(duration, 'minutes');\r\n this.addEditActivityForm.get('ActivityStartTime').patchValue(updatedTime.toDate());\r\n //this.addEditActivityForm.get('Duration').patchValue(15);\r\n //this.setDuration();\r\n\r\n this.addEditActivityForm.get('ActivityDate').patchValue(updatedTime.toDate());\r\n }\r\n }\r\n\r\n private getParteDeVisitaState(): number {\r\n return Math.floor(Math.random() * (2 - 0 + 1)) + 0;\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ContactInfoService } from 'src/app/services/contact-info.service';\r\nimport { ContactInfo, WorkCentreGroupContactModel } from 'src/app/models/contact-info.model';\r\nimport { MultipleActivityService } from 'src/app/services/multiple-activity.service';\r\nimport { Observable } from 'rxjs';\r\nimport { retry, catchError } from 'rxjs/operators';\r\nimport { ErrorHandlerService } from 'src/app/services/error-handler.service';\r\n\r\n@Component({\r\n selector: 'app-add-contacts',\r\n templateUrl: './add-contacts.component.html',\r\n styleUrls: ['./add-contacts.component.scss']\r\n})\r\nexport class AddContactsComponent implements OnInit {\r\n\r\n contactInfoResponseModel: WorkCentreGroupContactModel;\r\n contactInfoList$: Array;\r\n\r\n constructor(public addContactsModal: NgbActiveModal,\r\n private contactService: ContactInfoService,\r\n private multipleActivityService: MultipleActivityService,\r\n private errorHandlingService: ErrorHandlerService) { }\r\n\r\n ngOnInit() {\r\n this.contactService.getAllContactInfo(this.multipleActivityService.saveModel.workCentreId).subscribe((response) => {\r\n this.contactInfoResponseModel = response[0];\r\n this.contactInfoList$ = this.contactInfoResponseModel.contactDetails;\r\n });\r\n }\r\n\r\n selectContact(contactInfo: ContactInfo) {\r\n this.multipleActivityService.saveModel.recipientEmail.push(contactInfo.eMail);\r\n this.addContactsModal.close();\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ActivityService } from 'src/app/services/activity.service';\r\nimport { MultipleActivityService } from 'src/app/services/multiple-activity.service';\r\nimport { ErrorHandlerService } from 'src/app/services/error-handler.service';\r\nimport { ActuacionItem } from 'src/app/models/actuacion-item';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { SelectOptions } from '../../../../../models/select-options.model';\r\nimport { PaginationRowsPerPage } from '../../../../../models/pagination-rows-per-page-model';\r\nimport { DropdownService } from '../../../../../services/dropdown.service';\r\nimport { ActivityStatusService } from 'src/app/services/common/activity-status.service';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n\r\n@Component({\r\n selector: 'app-add-existing-activity',\r\n templateUrl: './add-existing-activity.component.html',\r\n styleUrls: ['./add-existing-activity.component.scss']\r\n})\r\nexport class AddExistingActivityComponent implements OnInit {\r\n\r\n activityList: Array;\r\n filterObject: { tipo_consulta: string, page_size: number, page_number: number, id_tecnico: string, id_empresa: string, id_centro: string, id_actuaciontipo: string, id_actuacionestado: string, fecha_desde: string };\r\n\r\n //For pagiantion\r\n deviceInfo: any;\r\n isMobileDevice: boolean;\r\n isDesktopDevice: boolean;\r\n isTabletDevice: boolean;\r\n public listViewPaginationRanges$: SelectOptions[];\r\n public listViewPaginationRowsPerPage$: SelectOptions[];\r\n selectedPaginationValue: string = \"0\";\r\n selectedRowsPerCount: string = \"2\";\r\n pageNumberList: any[] = [];\r\n totalRecordCount: number = 0;\r\n pageCount: number = 0;\r\n private pageSize: number = 500;\r\n\r\n //For list view pagination \r\n listViewPaginationConfig = {\r\n itemsPerPage: 10,\r\n currentPage: 1,\r\n totalItems: 0\r\n };\r\n\r\n constructor(\r\n public addExistingActivityModal: NgbActiveModal,\r\n public activityService: ActivityService,\r\n public multiActivityService: MultipleActivityService,\r\n private errorHandler: ErrorHandlerService,\r\n private spinner: NgxSpinnerService,\r\n private deviceDetectorService: DeviceDetectorService,\r\n private dropdownService: DropdownService,\r\n private activityStatusService: ActivityStatusService,\r\n private datePipe: DatePipe,\r\n ) {\r\n this.getInitialFilterObject();\r\n this.getAppUsageDeviceDetails();\r\n this.setActionCountForListViewPage();\r\n this.buildRowsPerPageList();\r\n }\r\n\r\n ngOnInit() {\r\n this.spinner.show();\r\n this.refreshActivityList();\r\n }\r\n\r\n private getInitialFilterObject() {\r\n var currentUserId = JSON.parse(localStorage.getItem(\"loggeduser\")).id;\r\n this.filterObject = {\r\n tipo_consulta: 'ASIGNADASA',\r\n page_size: this.pageSize,\r\n page_number: 1,\r\n id_tecnico: currentUserId,\r\n id_empresa: `${this.multiActivityService.saveModel.companyId}`,\r\n id_centro: `${this.multiActivityService.saveModel.workCentreId}`,\r\n id_actuaciontipo: null,\r\n id_actuacionestado: null,\r\n fecha_desde: null\r\n };\r\n\r\n }\r\n\r\n refreshActivityList() {\r\n this.activityService.getFilteredActivities(this.filterObject, false)\r\n .subscribe(response => { \r\n this.activityList = new Array();\r\n\r\n if (response.links.rowcount <= this.pageSize) {\r\n this.activityService.pageCount = 1;\r\n }\r\n else {\r\n this.activityService.pageCount = Math.floor(response.links.rowcount / response.data.length) + 1;\r\n }\r\n\r\n this.activityService.pageNumberList = Array.from(Array(this.activityService.pageCount).keys()).map(i => i + 1);\r\n this.listViewPaginationRanges$ = this.activityService.getListViewPaginationRanges(this.activityService.pageNumberList, 'existingactivities');\r\n this.selectedPaginationValue = \"1\";\r\n \r\n var responseData = response.data.filter(function (el) {\r\n return el.evento_estado_alias.includes('Hito') ||\r\n el.evento_estado_alias.includes('Pendiente')\r\n });\r\n\r\n responseData.forEach(element => {\r\n element.fecha = element.fecha.substring(6, 8) + \"/\" + element.fecha.substring(4, 6) + \"/\" + element.fecha.substring(0, 4);//Get the date in the format dd/MM/yyyy\r\n const [day, month, year] = element.fecha.split('/');\r\n element.fechaDate = new Date(+year, +month - 1, +day);\r\n element.hora_inicio = element.hora_inicio.substring(0, 2) + \":\" + element.hora_inicio.substring(2, 2) + \":\" + element.hora_inicio.substring(4, 2);//Get the time in the format HH:mm:ss \r\n\r\n if (this.multiActivityService.selectedActivity !== undefined\r\n && !this.multiActivityService.selectedActivity.some((activity) => activity.id === element.id)\r\n && element.id != localStorage.getItem(\"parentactivityid\")\r\n && !element.tipo_evento_especialidad_castellano.toLowerCase().trim().includes('visita')) {\r\n this.activityList.push(element);\r\n }\r\n });\r\n this.spinner.hide();\r\n }, err => {\r\n this.spinner.hide();\r\n this.errorHandler.handle(err);\r\n });\r\n }\r\n\r\n \r\n\r\n public OnActivityClick(activity: ActuacionItem) {\r\n let activityObj = this.activityService.mapExistingActivityToActivityModel(activity);\r\n this.multiActivityService.selectedActivity.push(activityObj);\r\n this.addExistingActivityModal.close();\r\n }\r\n\r\n //#region \"pagination section\"\r\n pageChanged(pageOfItems: any) {\r\n this.listViewPaginationConfig.currentPage = pageOfItems;\r\n this.filterObject.page_number = this.listViewPaginationConfig.currentPage;\r\n }\r\n\r\n getNextActionList(selectedOption: any) {\r\n this.filterObject.page_number = parseInt(selectedOption.value);\r\n this.filterObject.page_size = 100;\r\n this.refreshActivityList();\r\n }\r\n\r\n setRowsPerPage(selectedOption: any) {\r\n if (selectedOption.value != \"\") {\r\n this.selectedRowsPerCount = selectedOption.label.toString();\r\n this.listViewPaginationConfig.itemsPerPage = parseInt(selectedOption.value);\r\n }\r\n }\r\n\r\n getAppUsageDeviceDetails() {\r\n this.deviceInfo = this.deviceDetectorService.getDeviceInfo();\r\n this.isMobileDevice = this.deviceDetectorService.isMobile();\r\n this.isTabletDevice = this.deviceDetectorService.isTablet();\r\n this.isDesktopDevice = this.deviceDetectorService.isDesktop();\r\n }\r\n\r\n setActionCountForListViewPage() {\r\n if (this.isMobileDevice) {\r\n this.listViewPaginationConfig.itemsPerPage = 5;\r\n this.selectedRowsPerCount = \"5\";\r\n }\r\n else if (this.isTabletDevice || this.isDesktopDevice) {\r\n this.listViewPaginationConfig.itemsPerPage = 10;\r\n this.selectedRowsPerCount = \"10\";\r\n }\r\n }\r\n\r\n\r\n\r\n buildRowsPerPageList() {\r\n let rowsPerPageList: PaginationRowsPerPage[] = [];\r\n let rowCountValList: string[] = [\"\", \"5\", \"10\", \"15\", \"20\", \"25\", \"30\"];\r\n\r\n for (let i = 0; i < rowCountValList.length; i++) {\r\n var rowPerPageObj = new PaginationRowsPerPage();\r\n rowPerPageObj.Id = rowCountValList[i];\r\n rowPerPageObj.RowsPerPage = rowCountValList[i];\r\n rowsPerPageList.push(rowPerPageObj);\r\n }\r\n this.listViewPaginationRowsPerPage$ = this.dropdownService.WrapPaginationRangeToDropDownList(rowsPerPageList, 'RowsPerPage', 'Id');\r\n }\r\n //#endregion\r\n\r\n getActivityColor(activity: ActuacionItem) {\r\n let activityStatus = this.activityStatusService.listOfActivityStatus.find(x=>x.id.toLowerCase() == activity.evento_estado.trim().toLowerCase());\r\n if(activityStatus!= null && activityStatus != undefined){\r\n return activityStatus.numcolor;\r\n }\r\n \r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n Input,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n} from \"@angular/core\";\r\nimport {\r\n NgbActiveModal,\r\n NgbModal,\r\n NgbModalOptions,\r\n} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { AddNewActivityComponent } from \"./add-new-activity/add-new-activity.component\";\r\nimport { AddExistingActivityComponent } from \"./add-existing-activity/add-existing-activity.component\";\r\nimport { AddContactsComponent } from \"./add-contacts/add-contacts.component\";\r\nimport { FormGroup, Validators, FormBuilder } from \"@angular/forms\";\r\nimport { SelectOptions } from \"src/app/models/select-options.model\";\r\nimport { DropdownService } from \"src/app/services/dropdown.service\";\r\nimport { ErrorHandlerService } from \"src/app/services/error-handler.service\";\r\nimport { MultipleActivityService } from \"src/app/services/multiple-activity.service\";\r\nimport { ActivityService } from \"src/app/services/activity.service\";\r\nimport { Activity } from \"src/app/models/activity.model\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\n\r\nimport {\r\n ActivityModel,\r\n MultipleActivitySaveModel,\r\n PlanActionModel,\r\n} from \"src/app/models/multiple.activity.save.model\";\r\nimport { SubSink } from \"subsink\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { ActivityRoot } from \"src/app/models/activity.save.activityroot\";\r\nimport { LogActivityService } from \"src/app/services/_logActivity/log-activity.service\";\r\nimport { UsuarioUpsert } from \"../../../../models/activity.save.usuarioupsert\";\r\nimport Swal from \"sweetalert2\";\r\nimport { MasterDataService } from \"src/app/services/master-data.service\";\r\nimport { ParteDeVisitaState } from \"src/app/models/Enum/ParteDeVisitaState\";\r\nimport { WizardComponent } from \"angular2-wizard\";\r\nimport { AddNewPlanactionComponent } from \"./add-new-planaction/add-new-planaction.component\";\r\nimport { DatePipe } from \"@angular/common\";\r\nimport { SignaturePadComponent } from \"@almothafar/angular-signature-pad\";\r\nimport { DataSharingService } from \"src/app/services/data-sharing.service\";\r\nimport { MemoriaAnualService } from \"src/app/services/common/memoria-anual.service\";\r\n\r\n@Component({\r\n selector: \"app-add-multiple-activities\",\r\n templateUrl: \"./add-multiple-activities.component.html\",\r\n styleUrls: [\"./add-multiple-activities.component.scss\"],\r\n})\r\nexport class AddMultipleActivitiesComponent implements OnInit, AfterViewInit {\r\n modalOptions: NgbModalOptions;\r\n @Input() public ActivityFormGroupWizard1: FormGroup = this.fb.group({\r\n ParentActivityId: [null, Validators.required],\r\n CompanyId: [null, Validators.required],\r\n CompanyName: [null],\r\n ActivityDate: [null, Validators.required],\r\n ActivityTime: [null, Validators.required],\r\n ActivityFinishTime: [null],\r\n Duration: [\r\n null,\r\n [Validators.required, Validators.min(0), Validators.max(500)],\r\n ],\r\n WorkCentreId: [null, Validators.required],\r\n WorkCentreName: [null],\r\n AssignedUserId: [null, Validators.required],\r\n AssignedUserName: [null],\r\n Description: [null],\r\n VisitActivityId: [null],\r\n ActivityTypeId: [null, Validators.required],\r\n });\r\n\r\n ActivityFormGroupWizard2: FormGroup;\r\n ActivityFormGroupWizard3: FormGroup;\r\n ActivityFormGroupWizard5: FormGroup;\r\n ActivityFormGroupWizard6: FormGroup;\r\n\r\n PreventionDelegateForm: FormGroup;\r\n\r\n companies$: SelectOptions[];\r\n workingCentres$: SelectOptions[];\r\n users$: SelectOptions[];\r\n selectedUser: number;\r\n\r\n multiActivitySaveSuccess = false;\r\n emailSendSuccess = false;\r\n isMarked: boolean = true;\r\n isClosedClicked: boolean = false;\r\n\r\n isActivityListVerified = false;\r\n isPatientCountInputEnabled = false;\r\n isDiseasesInputEnabled = false;\r\n isNewWorkerInputEnabled = false;\r\n private clientReqIPAddress = \"\";\r\n private subs = new SubSink();\r\n\r\n public userEmailAddress = \"\";\r\n emailAddresses = [];\r\n public emailValidators = [Validators.email];\r\n public emailPlaceholder =\r\n \"ingrese la (s) dirección (s) de correo electrónico\";\r\n public emailAddMoreText = \"\";\r\n\r\n @ViewChild(SignaturePadComponent) signaturePad: SignaturePadComponent;\r\n @ViewChild(\"preventionDelegateSignaturePad\")\r\n preventionDelegateSignaturePad: SignaturePadComponent;\r\n @ViewChild(\"firmaTecSignaturePad\")\r\n firmaTecSignaturePad: SignaturePadComponent;\r\n @ViewChild(\"wizardComponent\") wizardComponent: WizardComponent;\r\n\r\n public ParteDeVisitaStates = ParteDeVisitaState;\r\n public SelectedParteDeVisitaState: ParteDeVisitaState;\r\n public SelectedReferenceNo: string;\r\n public IsValidated = false;\r\n public IsFooterHidden = false;\r\n\r\n public selectedCompanyLanguage = \"es\";\r\n\r\n public signaturePadOptions: Object = {\r\n minWidth: 5,\r\n canvasWidth: 800,\r\n canvasHeight: 200,\r\n backgroundColor: \"rgba(255, 255, 255, 1)\",\r\n };\r\n emailSubject: any;\r\n emailBody: any;\r\n stepform6: FormGroup;\r\n stepform7: FormGroup;\r\n userDetailsId: any;\r\n userDetails: any;\r\n\r\n constructor(\r\n public fb: FormBuilder,\r\n public multipleActivityModal: NgbActiveModal,\r\n private modalService: NgbModal,\r\n public multipleActivityService: MultipleActivityService,\r\n private activityService: ActivityService,\r\n private dropdownService: DropdownService,\r\n private toastrService: ToastrService,\r\n private errorHandler: ErrorHandlerService,\r\n private spinner: NgxSpinnerService,\r\n private datePipe: DatePipe,\r\n private logActivityService: LogActivityService,\r\n private masterDataService: MasterDataService,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private dataSharingService: DataSharingService,\r\n private memoriaAnualService: MemoriaAnualService\r\n ) {\r\n this.modalOptions = {\r\n backdrop: \"static\",\r\n windowClass: \"text-left modal-fade-animation\",\r\n size: \"sm\",\r\n centered: true,\r\n };\r\n\r\n const loggedUserId = JSON.parse(localStorage.getItem(\"loggeduser\")).id;\r\n\r\n this.subs.add(\r\n this.dropdownService.getClientReqIPAddress().subscribe(\r\n (response) => {\r\n this.clientReqIPAddress = response.clientReqIPAddress;\r\n },\r\n (error) => {\r\n this.errorHandler.handle(error);\r\n }\r\n ),\r\n this.dropdownService.getUserEmailAddress(loggedUserId).subscribe(\r\n (response) => {\r\n this.userEmailAddress = response.userEmail ? response.userEmail : \"\";\r\n if (this.userEmailAddress !== \"\") {\r\n const emailObj = {\r\n display: this.userEmailAddress,\r\n value: this.userEmailAddress,\r\n };\r\n this.emailAddresses.push(emailObj);\r\n }\r\n },\r\n (error) => {\r\n this.errorHandler.handle(error);\r\n }\r\n )\r\n );\r\n\r\n this.stepform6 = this.fb.group({\r\n trabajos_altura: [false],\r\n trabajos_verticales: [false],\r\n plataformas_elevadoras: [false],\r\n carretillas_elevadoras: [false],\r\n transpaletas_apiladores: [false],\r\n incendios: [false],\r\n primeros_auxilios: [false],\r\n espacios_confinados: [false],\r\n consignacion_maquinas: [false],\r\n riesgo_electrico: [false],\r\n riesgo_quimico: [false],\r\n riesgo_biologico: [false],\r\n riesgo_ergonomico: [false],\r\n nivel_basico_prl: [false],\r\n delegados_prevencion: [false],\r\n seguridad_vial: [false],\r\n teletrabajo: [false],\r\n otros_formacion: [false],\r\n admin_20h: [false],\r\n directivos_10h: [false],\r\n mandos_intermedios_20h: [false],\r\n responsables_tecnicos_20h: [false],\r\n nivel_basico_prl_60h: [false],\r\n delegados_prevencion_70h: [false],\r\n oficios_20h: [false],\r\n oficios_6h: [false],\r\n admin_metal_obra_20h: [false],\r\n directivos_metal_obra_10h: [false],\r\n mandos_intermedios_metal_obra_20h: [false],\r\n responsables_tecnicos_metal_obra_20h: [false],\r\n nivel_basico_prl_metal_obra_60h: [false],\r\n delegados_prevencion_metal_obra_50h: [false],\r\n oficios_metal_obra_20h: [false],\r\n oficios_metal_obra_6h: [false],\r\n reciclaje_oficios_metal_obra_4h: [false],\r\n\r\n personal_oficines: [false],\r\n directius: [false],\r\n delegats_de_prevenció: [false],\r\n nivell_bàsic: [false],\r\n oficis_producció: [false],\r\n conductor_grues: [false],\r\n altres_oficis: [false],\r\n producció: [false],\r\n reciclatge_oficis: [false],\r\n directivos_10: [false],\r\n administrativos_10: [false],\r\n responsables_20: [false],\r\n mandos_20: [false],\r\n delegados_50: [false],\r\n Oficios_20h: [false],\r\n Oficinas_6: [false],\r\n nivel_básico: [false],\r\n administración_6h: [false],\r\n directivos_10hora: [false],\r\n oficinas_20hora: [false],\r\n nivel_básico_60hora: [false],\r\n agentes_químicos: [false],\r\n agentes_biológicos: [false],\r\n sonometría: [false],\r\n dosimetría: [false],\r\n radiaciones_ionizantes: [false],\r\n campos_electromagnéticos: [false],\r\n electricidad_estática: [false],\r\n estrés_térmico: [false],\r\n vibraciones: [false],\r\n otros: [false],\r\n manipulación_manual_de_cargas: [false],\r\n movimientos_repetitivos: [false],\r\n posturas_forzadas: [false],\r\n estudi_psicosocial: [false],\r\n protocol_assetjament: [false],\r\n pla_digualtat: [false],\r\n emmagatzematge_productes_químics: [false],\r\n document_proteccio_contra_explosions: [false],\r\n informe_adequacio_maquines: [false],\r\n pla_mobilitat_seguretat_viaria: [false],\r\n profesiograma: [false],\r\n\r\n agentes_químicos_text: [\"\"],\r\n agentes_biológicos_text: [\"\"],\r\n otros_text: [\"\"],\r\n estudi_psicosocial_text: [\"\"],\r\n protocol_assetjament_text: [\"\"],\r\n pla_digualtat_text: [\"\"],\r\n emmagatzematge_productes_químics_text: [\"\"],\r\n document_proteccio_contra_explosions_text: [\"\"],\r\n informe_adequacio_maquines_text: [\"\"],\r\n pla_mobilitat_seguretat_viaria_text: [\"\"],\r\n profesiograma_text: [\"\"],\r\n });\r\n\r\n this.stepform7 = this.fb.group({\r\n llistat_personal: [false],\r\n llistat_maquinaria: [false],\r\n fitxes_dades: [false],\r\n procediments_instr: [false],\r\n declaracio_conformitat: [false],\r\n manuals_instr: [false],\r\n llibres_registre: [false],\r\n informes_adequacio: [false],\r\n requeriments_inspeccio: [false],\r\n part_accident: [false],\r\n informe_sinistralitat: [false],\r\n registre_accidents: [false],\r\n documentacio_prevencio: [false],\r\n certificats_formacio: [false],\r\n estudis_ergonomics: [false],\r\n estudis_higienics: [false],\r\n estudis_psicosocials: [false],\r\n certificat_reo: [false],\r\n fullet_epis: [false],\r\n\r\n manuals_instr_text: [\"\"],\r\n informe_sinistralitat_text: [\"\"],\r\n registre_accidents1_text: [\"\"],\r\n registre_accidents2_text: [\"\"],\r\n altra_documentacio_text: [\"\"],\r\n });\r\n }\r\n\r\n InitFormWizard2() {\r\n this.ActivityFormGroupWizard2 = this.fb.group({\r\n WorkCentreWorkerCount: [\r\n \"null\",\r\n [Validators.required, Validators.min(1), Validators.max(500)],\r\n ],\r\n IsAccidentOccured: [\"false\", Validators.required],\r\n MenAccidents: [{ disabled: true, value: null }, [Validators.required]],\r\n WomenAccidents: [{ disabled: true, value: null }, [Validators.required]],\r\n VisitedAccidents: [\r\n { disabled: true, value: null },\r\n [Validators.required],\r\n ],\r\n InvestigatedAccidents: [\r\n { disabled: true, value: null },\r\n [Validators.required],\r\n ],\r\n IsNewWorkerAdded: [\"false\", Validators.required],\r\n IsJobInfoGiven: [\"false\", Validators.required],\r\n IsEPIGiven: [\"null\", Validators.required],\r\n TrainingProgramRemark: [null],\r\n TemplateLanguage: [this.selectedCompanyLanguage, Validators.required],\r\n NoMen: [null],\r\n NoWomen: [null],\r\n StaffWomen: [{ disabled: true, value: null }, [Validators.required]],\r\n StaffMen: [{ disabled: true, value: null }, [Validators.required]],\r\n ETTWomen: [{ disabled: true, value: null }, [Validators.required]],\r\n ETTMen: [{ disabled: true, value: null }, [Validators.required]],\r\n IsTrainedRiskPrevention: [\"false\", Validators.required],\r\n IsUnderMedicalExamination: [\"false\", Validators.required],\r\n IsOccupationDiseases: [\"false\", Validators.required],\r\n MenOccupationDiseases: [\r\n { disabled: true, value: null },\r\n [Validators.required],\r\n ],\r\n WomenOccupationDiseases: [\r\n { disabled: true, value: null },\r\n [Validators.required],\r\n ],\r\n VisitedOccupationDiseases: [\r\n { disabled: true, value: null },\r\n [Validators.required],\r\n ],\r\n InvestigatedOccupationDiseases: [\r\n { disabled: true, value: null },\r\n [Validators.required],\r\n ],\r\n });\r\n }\r\n\r\n InitFormWizard3() {\r\n this.ActivityFormGroupWizard3 = this.fb.group({\r\n IsWorkTeamJoined: [\"false\", Validators.required],\r\n IsMedicalCertificateAvl: [\"false\", Validators.required],\r\n IsCoordinationDone: [\"false\"],\r\n IsPregnantWomenAvl: \"\",\r\n PregnantWomenRemark: \"\",\r\n IsMinorsAvl: \"\",\r\n MinorsRemark: \"\",\r\n IsESensitiveAvl: \"\",\r\n ESensitiveRemark: \"\",\r\n IsChemicalSubstances: [\"null\"],\r\n IsWorkPlaceChanged: [\"null\"],\r\n IslegalProsecution: [\"false\"],\r\n IsRiskNotifications: [\"false\"],\r\n });\r\n }\r\n\r\n InitFormWizard5() {\r\n this.ActivityFormGroupWizard5 = this.fb.group({\r\n ParteContactName: [\"\"],\r\n ParteContactDNI: [\"\"],\r\n });\r\n }\r\n\r\n InitPreventionDelegateForm() {\r\n this.PreventionDelegateForm = this.fb.group({\r\n Name: [\"\"],\r\n DNI: [\"\"],\r\n });\r\n }\r\n\r\n InitFormWizard6() {\r\n this.ActivityFormGroupWizard6 = this.fb.group({\r\n EmailSubject: [\"\", Validators.required],\r\n EmailBody: [\"\", Validators.required],\r\n ContactEmail: [null],\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.InitFormWizard2();\r\n this.InitFormWizard3();\r\n this.InitFormWizard5();\r\n this.InitFormWizard6();\r\n this.InitPreventionDelegateForm();\r\n this.InitWizard1DropDowns();\r\n this.changeWizardText();\r\n this.saveGeneralActivityState();\r\n\r\n this.IsValidated =\r\n this.SelectedParteDeVisitaState === this.ParteDeVisitaStates.Validated;\r\n const workCenterId = this.ActivityFormGroupWizard1.value.WorkCentreId;\r\n\r\n if (this.SelectedParteDeVisitaState !== this.ParteDeVisitaStates.Create) {\r\n this.loadParteDeVisitaData();\r\n } else {\r\n this.multipleActivityService.selectedPlanAction.length = 0;\r\n this.getWorkCentreWorkerCount(workCenterId);\r\n }\r\n if (this.dropdownService.emailAddresses.length > 0) {\r\n this.emailAddresses = this.dropdownService.emailAddresses;\r\n }\r\n\r\n this.isClosedClicked = false;\r\n\r\n this.dropdownService\r\n .getContactEmailAddress(workCenterId)\r\n .subscribe((response) => {\r\n if (response.length > 0) {\r\n response.forEach((element) => {\r\n const emailObj = { display: element, value: element };\r\n this.emailAddresses.push(emailObj);\r\n });\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.IsValidated) {\r\n this.setParteDeVisitaState();\r\n }\r\n }\r\n\r\n private setParteDeVisitaState(): void {\r\n this.ActivityFormGroupWizard2.disable();\r\n this.ActivityFormGroupWizard3.disable();\r\n this.ActivityFormGroupWizard5.disable();\r\n this.ActivityFormGroupWizard1.disable();\r\n this.ActivityFormGroupWizard1.disable();\r\n this.PreventionDelegateForm.disable();\r\n\r\n this.wizardComponent.steps.forEach((v, i) => {\r\n v.isActive = false;\r\n v.isValid = true;\r\n v.isDisabled = false;\r\n });\r\n\r\n const step =\r\n this.wizardComponent.steps[this.wizardComponent.steps.length - 1];\r\n step.isActive = true;\r\n step.isValid = false;\r\n\r\n this.wizardComponent.goToStep(step);\r\n this.signaturePad.off();\r\n this.preventionDelegateSignaturePad.off();\r\n this.firmaTecSignaturePad.off();\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n private setCurrentStep(stepTitle: string): void {\r\n const stepIndex = this.wizardComponent.steps.findIndex(\r\n (e) => e.title === stepTitle.trim()\r\n );\r\n if (stepIndex > -1) {\r\n this.wizardComponent.steps.forEach((v, i) => {\r\n if (i < stepIndex) {\r\n v.isActive = false;\r\n v.isValid = true;\r\n v.isDisabled = false;\r\n }\r\n });\r\n const step = this.wizardComponent.steps[stepIndex];\r\n step.isActive = true;\r\n // The step before the last has the validate button\r\n if (step.title === \"Firma Tec.\") {\r\n this.changeWizardText(true);\r\n }\r\n this.wizardComponent.goToStep(step);\r\n }\r\n }\r\n\r\n private loadParteDeVisitaData(): void {\r\n this.masterDataService.getActivityPart(this.SelectedReferenceNo).subscribe(\r\n (response) => {\r\n this.ActivityFormGroupWizard2.patchValue({\r\n WorkCentreWorkerCount: response.workerCount,\r\n IsAccidentOccured: String(response.isAccidentOccured),\r\n VisitedAccidents: response.visitedAccidents,\r\n InvestigatedAccidents: response.investigatedAccidents,\r\n IsNewWorkerAdded: String(response.isNewWorkerAdded),\r\n IsJobInfoGiven: String(response.isJobInfoGiven),\r\n IsEPIGiven: String(response.isEPIGiven),\r\n TrainingProgramRemark: response.trainingProgramRemark,\r\n TemplateLanguage: response.templateLanguage\r\n ? response.templateLanguage\r\n : \"es\",\r\n WomenAccidents: response.womenAccidents,\r\n MenAccidents: response.menAccidents,\r\n NoMen: response.noMen,\r\n NoWomen: response.noWomen,\r\n StaffMen: response.staffMen,\r\n StaffWomen: response.staffWomen,\r\n ETTMen: response.ettMen,\r\n ETTWomen: response.ettWomen,\r\n IsTrainedRiskPrevention: String(\r\n response.isTrainedRiskPrevention == null ? false : true\r\n ),\r\n MenOccupationDiseases: response.menOccupationDiseases,\r\n WomenOccupationDiseases: response.womenOccupationDiseases,\r\n InvestigatedOccupationDiseases:\r\n response.investigatedOccupationDiseases,\r\n VisitedOccupationDiseases: response.visitedOccupationDiseases,\r\n IsUnderMedicalExamination: String(response.isUnderMedicalExamination),\r\n IsOccupationDiseases: String(response.isOccupationDiseases),\r\n });\r\n\r\n this.ActivityFormGroupWizard3.patchValue({\r\n IsWorkTeamJoined: String(response.isWorkTeamJoined),\r\n IsMedicalCertificateAvl: String(response.isMedicalCertificateAvl),\r\n IsCoordinationDone: String(response.isCoordinationDone),\r\n IsPregnantWomenAvl: String(response.isPregnantWomenAvl),\r\n PregnantWomenRemark: response.pregnantWomenRemark,\r\n IsMinorsAvl: String(response.isMinorsAvl),\r\n MinorsRemark: response.minorsRemark,\r\n IsESensitiveAvl: String(response.isESensitiveAvl),\r\n ESensitiveRemark: response.eSensitiveRemark,\r\n IsChemicalSubstances: String(response.isChemicalSubstances),\r\n IsWorkPlaceChanged: String(response.isWorkPlaceChanged),\r\n IslegalProsecution: String(\r\n response.islegalProsecution == null ? false : true\r\n ),\r\n IsRiskNotifications: String(response.isRiskNotifications),\r\n });\r\n this.ActivityFormGroupWizard3.markAllAsTouched();\r\n\r\n this.ActivityFormGroupWizard5.patchValue({\r\n ParteContactName: response.signedUsername,\r\n ParteContactDNI: response.signedUserDNI,\r\n });\r\n this.ActivityFormGroupWizard5.markAllAsTouched();\r\n\r\n if (response.signatureImage) {\r\n const src = \"data:image/png;base64,\" + response.signatureImage;\r\n this.signaturePad.fromDataURL(src);\r\n }\r\n\r\n this.PreventionDelegateForm.patchValue({\r\n Name: response.preventionDelegateName,\r\n DNI: response.preventionDelegateDNI,\r\n });\r\n this.PreventionDelegateForm.markAllAsTouched();\r\n\r\n if (response.preventionDelegateSignature) {\r\n const src =\r\n \"data:image/png;base64,\" + response.preventionDelegateSignature;\r\n this.preventionDelegateSignaturePad.fromDataURL(src);\r\n }\r\n\r\n if (response.firmaTecSignature) {\r\n const src = \"data:image/png;base64,\" + response.firmaTecSignature;\r\n this.firmaTecSignaturePad.fromDataURL(src);\r\n }\r\n\r\n if (response.customerPlanActions) {\r\n const planActionList = JSON.parse(response.customerPlanActions);\r\n this.multipleActivityService.selectedPlanAction.length = 0;\r\n this.isMarked = planActionList[0][\"IsMarked\"];\r\n\r\n if (planActionList[0][\"CanMitigateRisk\"] != null) {\r\n planActionList.forEach((v, i) => {\r\n const planAction =\r\n this.multipleActivityService.getPlanActionWithCommonValues();\r\n (planAction.isMarked = v.IsMarked), (planAction.title = v.Title);\r\n planAction.description = v.Description;\r\n planAction.action = v.Action;\r\n planAction.cost = v.Cost;\r\n planAction.responsible = v.Responsible;\r\n planAction.estimatedDate = v.EstimatedDate;\r\n planAction.canEliminateRisk = v.CanEliminateRisk;\r\n planAction.canMitigateRisk = v.CanMitigateRisk;\r\n planAction.actionChekedInVisit = v.ActionChekedInVisit;\r\n this.multipleActivityService.selectedPlanAction.push(planAction);\r\n });\r\n }\r\n } else {\r\n this.multipleActivityService.selectedPlanAction.length = 0;\r\n this.isMarked = true;\r\n }\r\n\r\n if (response.activityListAttribute) {\r\n this.multipleActivityService.selectedActivity.length = 0;\r\n const activityList = JSON.parse(response.activityListAttribute);\r\n const mainDetails = this.ActivityFormGroupWizard1.value;\r\n\r\n activityList.forEach((v, i) => {\r\n const activity =\r\n this.multipleActivityService.getActivityWithCommonValues();\r\n activity.activityDate = v.ActivityDate;\r\n activity.activityTime = v.ActivityTime;\r\n activity.activityTypeId = v.ActivityTypeId;\r\n activity.activityTypeName = v.ActivityTypeName;\r\n activity.assignedUserId = v.AssignedUserId;\r\n activity.companyId = v.CompanyId;\r\n activity.description = v.Description;\r\n activity.duration = v.Duration;\r\n activity.entryDate = v.EntryDate;\r\n activity.id = v.Id;\r\n activity.isDeleted = v.IsDeleted;\r\n activity.statusTypeId = v.StatusTypeId;\r\n activity.statusTypeName = v.StatusTypeName;\r\n activity.userId = v.UserId;\r\n activity.workCentreId = v.WorkCentreId;\r\n activity.companyName = mainDetails.CompanyName;\r\n activity.workCentreName = mainDetails.WorkCentreName;\r\n this.multipleActivityService.selectedActivity.push(activity);\r\n });\r\n }\r\n\r\n if (response.currentStepTitle && !this.IsValidated) {\r\n this.setCurrentStep(response.currentStepTitle);\r\n }\r\n\r\n this.setEmailContent();\r\n },\r\n (error) => {\r\n this.errorHandler.handle(error);\r\n }\r\n );\r\n }\r\n\r\n changeWizardText(isFirma = false): void {\r\n const modalElement = document.getElementById(\"modal-activity-multiple\");\r\n const footer = modalElement.getElementsByClassName(\"card-footer\")[0];\r\n const footerBtns = footer.getElementsByClassName(\"btn\");\r\n\r\n for (let index = 0; index < footerBtns.length; index++) {\r\n footerBtns[index].classList.add(\"wizard-buttons\");\r\n if (footerBtns[index].innerHTML === \"Previous\") {\r\n footerBtns[index].innerHTML = \"Anterior\";\r\n } else if (\r\n footerBtns[index].innerHTML === \"Next\" ||\r\n footerBtns[index].innerHTML === \"Validar y Firmar\"\r\n ) {\r\n footerBtns[index].innerHTML = \"Siguiente\";\r\n } else if (footerBtns[index].innerHTML === \"Done\") {\r\n footerBtns[index].innerHTML = \"Enviar Mail\";\r\n }\r\n\r\n if (\r\n !this.IsValidated &&\r\n isFirma &&\r\n footerBtns[index].innerHTML === \"Siguiente\"\r\n ) {\r\n footerBtns[index].innerHTML = \"Validar y Firmar\";\r\n }\r\n }\r\n }\r\n\r\n openAddNewActivityPopup() {\r\n const a = this.ActivityFormGroupWizard1.value;\r\n localStorage.removeItem(\"newactivitymastervalues\");\r\n localStorage.setItem(\r\n \"newactivitymastervalues\",\r\n JSON.stringify({\r\n companyId: a.CompanyId,\r\n companyName: a.CompanyName,\r\n workCentreId: a.WorkCentreId,\r\n workCentreName: a.WorkCentreName,\r\n })\r\n );\r\n const modalRef = this.modalService.open(\r\n AddNewActivityComponent,\r\n this.modalOptions\r\n );\r\n\r\n modalRef.result.then(\r\n (close) => {\r\n this.verifyActivityList();\r\n },\r\n (dismiss) => {}\r\n );\r\n }\r\n\r\n openAddNewPlanActionPopup() {\r\n const modalRef = this.modalService.open(\r\n AddNewPlanactionComponent,\r\n this.modalOptions\r\n );\r\n // modalRef.result.then((close) => {\r\n // this.verifyPlanActionList();\r\n // }, (dismiss) => { });\r\n }\r\n\r\n openAddExistingActivityPopup() {\r\n const a = this.ActivityFormGroupWizard1.value;\r\n localStorage.removeItem(\"newactivitymastervalues\");\r\n localStorage.removeItem(\"parentactivityid\");\r\n localStorage.setItem(\r\n \"parentactivityid\",\r\n this.ActivityFormGroupWizard1.value.ParentActivityId\r\n );\r\n localStorage.setItem(\r\n \"newactivitymastervalues\",\r\n JSON.stringify({\r\n companyId: a.CompanyId,\r\n companyName: a.CompanyName,\r\n workCentreId: a.WorkCentreId,\r\n workCentreName: a.WorkCentreName,\r\n })\r\n );\r\n const modalRef = this.modalService.open(\r\n AddExistingActivityComponent,\r\n this.modalOptions\r\n );\r\n modalRef.result.then(\r\n (close) => {\r\n this.verifyActivityList();\r\n },\r\n (dismiss) => {}\r\n );\r\n }\r\n\r\n openAddContactsPopup() {\r\n const modalRef = this.modalService.open(\r\n AddContactsComponent,\r\n this.modalOptions\r\n );\r\n modalRef.result.then(\r\n (close) => {\r\n this.ActivityFormGroupWizard6.patchValue({\r\n ContactEmail: this.multipleActivityService.saveModel.recipientEmail,\r\n });\r\n },\r\n (dismiss) => {}\r\n );\r\n }\r\n\r\n async saveGeneralActivityState() {\r\n if (this.ActivityFormGroupWizard1.valid) {\r\n this.multipleActivityService.saveModel.companyId =\r\n this.ActivityFormGroupWizard1.value.CompanyId;\r\n this.multipleActivityService.saveModel.workCentreId =\r\n this.ActivityFormGroupWizard1.value.WorkCentreId;\r\n this.multipleActivityService.saveModel.assignedUserId =\r\n this.ActivityFormGroupWizard1.value.AssignedUserId;\r\n\r\n this.multipleActivityService.saveModel.activityPartDate =\r\n this.ActivityFormGroupWizard1.value.ActivityDate;\r\n this.multipleActivityService.saveModel.activityPartFinishTime =\r\n this.activityService.getActivityFinishTime(\r\n this.ActivityFormGroupWizard1.value.ActivityTime,\r\n null,\r\n Number(this.ActivityFormGroupWizard1.value.Duration)\r\n );\r\n const startTime = this.ActivityFormGroupWizard1.value.ActivityTime;\r\n this.multipleActivityService.saveModel.activityPartTime =\r\n (\"0\" + startTime.getHours()).slice(-2) +\r\n (\"0\" + startTime.getMinutes()).slice(-2) +\r\n (\"0\" + startTime.getSeconds()).slice(-2);\r\n this.multipleActivityService.saveModel.activityPartDuration =\r\n this.ActivityFormGroupWizard1.value.Duration;\r\n\r\n const localStorageUser = JSON.parse(localStorage.getItem(\"loggeduser\"));\r\n this.multipleActivityService.saveModel.userId = localStorageUser.id;\r\n this.multipleActivityService.saveModel.activityTypeId =\r\n this.ActivityFormGroupWizard1.value.ActivityTypeId; // Visit\r\n\r\n if (this.multipleActivityService.selectedActivity.length > 0) {\r\n this.multipleActivityService.refreshActivityList();\r\n }\r\n\r\n if (this.multipleActivityService.selectedPlanAction.length > 0) {\r\n this.multipleActivityService.refreshPlanActionList();\r\n }\r\n }\r\n }\r\n\r\n saveQuestionnaire() {\r\n if (this.ActivityFormGroupWizard2.valid || this.IsValidated) {\r\n this.multipleActivityService.saveModel.noOfWorkCenterWorkers =\r\n this.ActivityFormGroupWizard2.value.WorkCentreWorkerCount;\r\n this.multipleActivityService.saveModel.isAccidentOccured =\r\n this.ActivityFormGroupWizard2.value.IsAccidentOccured == \"true\"\r\n ? true\r\n : false;\r\n this.multipleActivityService.saveModel.visitedAccidents =\r\n this.ActivityFormGroupWizard2.value.VisitedAccidents == undefined\r\n ? null\r\n : this.ActivityFormGroupWizard2.value.VisitedAccidents;\r\n this.multipleActivityService.saveModel.investigatedAccidents =\r\n this.ActivityFormGroupWizard2.value.InvestigatedAccidents == undefined\r\n ? null\r\n : this.ActivityFormGroupWizard2.value.InvestigatedAccidents;\r\n this.multipleActivityService.saveModel.isNewWorkerAdded =\r\n this.ActivityFormGroupWizard2.value.IsNewWorkerAdded == \"true\"\r\n ? true\r\n : false;\r\n this.multipleActivityService.saveModel.isJobInfoGiven =\r\n this.ActivityFormGroupWizard2.value.IsJobInfoGiven == \"true\"\r\n ? true\r\n : false;\r\n this.multipleActivityService.saveModel.isEPIGiven =\r\n this.ActivityFormGroupWizard2.value.IsEPIGiven == \"null\"\r\n ? null\r\n : this.ActivityFormGroupWizard2.value.IsEPIGiven;\r\n this.multipleActivityService.saveModel.trainingProgramRemark =\r\n this.ActivityFormGroupWizard2.value.TrainingProgramRemark;\r\n this.multipleActivityService.saveModel.templateLanguage =\r\n this.ActivityFormGroupWizard2.value.TemplateLanguage;\r\n\r\n this.multipleActivityService.saveModel.womenAccidents =\r\n this.ActivityFormGroupWizard2.value.WomenAccidents == undefined\r\n ? null\r\n : this.ActivityFormGroupWizard2.value.WomenAccidents;\r\n this.multipleActivityService.saveModel.menAccidents =\r\n this.ActivityFormGroupWizard2.value.MenAccidents == undefined\r\n ? null\r\n : this.ActivityFormGroupWizard2.value.MenAccidents;\r\n this.multipleActivityService.saveModel.noMen =\r\n this.ActivityFormGroupWizard2.value.NoMen;\r\n this.multipleActivityService.saveModel.noWomen =\r\n this.ActivityFormGroupWizard2.value.NoWomen;\r\n this.multipleActivityService.saveModel.staffMen =\r\n this.ActivityFormGroupWizard2.value.StaffMen == undefined\r\n ? null\r\n : this.ActivityFormGroupWizard2.value.StaffMen;\r\n this.multipleActivityService.saveModel.staffWomen =\r\n this.ActivityFormGroupWizard2.value.StaffWomen == undefined\r\n ? null\r\n : this.ActivityFormGroupWizard2.value.StaffWomen;\r\n this.multipleActivityService.saveModel.ettWomen =\r\n this.ActivityFormGroupWizard2.value.ETTWomen == undefined\r\n ? null\r\n : this.ActivityFormGroupWizard2.value.ETTWomen;\r\n this.multipleActivityService.saveModel.ettMen =\r\n this.ActivityFormGroupWizard2.value.ETTMen == undefined\r\n ? null\r\n : this.ActivityFormGroupWizard2.value.ETTMen;\r\n this.multipleActivityService.saveModel.isTrainedRiskPrevention =\r\n this.ActivityFormGroupWizard2.value.IsTrainedRiskPrevention == \"true\"\r\n ? true\r\n : false;\r\n this.multipleActivityService.saveModel.isUnderMedicalExamination =\r\n this.ActivityFormGroupWizard2.value.IsUnderMedicalExamination == \"true\"\r\n ? true\r\n : false;\r\n this.multipleActivityService.saveModel.isOccupationDiseases =\r\n this.ActivityFormGroupWizard2.value.IsOccupationDiseases == \"true\"\r\n ? true\r\n : false;\r\n this.multipleActivityService.saveModel.investigatedOccupationDiseases =\r\n this.ActivityFormGroupWizard2.value.InvestigatedOccupationDiseases ==\r\n undefined\r\n ? null\r\n : this.ActivityFormGroupWizard2.value.InvestigatedOccupationDiseases;\r\n this.multipleActivityService.saveModel.visitedOccupationDiseases =\r\n this.ActivityFormGroupWizard2.value.VisitedOccupationDiseases ==\r\n undefined\r\n ? null\r\n : this.ActivityFormGroupWizard2.value.VisitedOccupationDiseases;\r\n this.multipleActivityService.saveModel.menOccupationDiseases =\r\n this.ActivityFormGroupWizard2.value.MenOccupationDiseases == undefined\r\n ? null\r\n : this.ActivityFormGroupWizard2.value.MenOccupationDiseases;\r\n this.multipleActivityService.saveModel.womenOccupationDiseases =\r\n this.ActivityFormGroupWizard2.value.WomenOccupationDiseases == undefined\r\n ? null\r\n : this.ActivityFormGroupWizard2.value.WomenOccupationDiseases;\r\n\r\n this.setEmailContent();\r\n }\r\n\r\n if (this.ActivityFormGroupWizard3.valid || this.IsValidated) {\r\n this.multipleActivityService.saveModel.isWorkTeamJoined =\r\n this.ActivityFormGroupWizard3.value.IsWorkTeamJoined;\r\n\r\n this.multipleActivityService.saveModel.isPregnantWomenAvl =\r\n this.ActivityFormGroupWizard3.value.IsPregnantWomenAvl;\r\n this.multipleActivityService.saveModel.pregnantWomenRemark =\r\n this.ActivityFormGroupWizard3.value.PregnantWomenRemark;\r\n\r\n this.multipleActivityService.saveModel.isMinorsAvl =\r\n this.ActivityFormGroupWizard3.value.IsMinorsAvl;\r\n this.multipleActivityService.saveModel.minorsRemark =\r\n this.ActivityFormGroupWizard3.value.MinorsRemark;\r\n\r\n this.multipleActivityService.saveModel.isESensitiveAvl =\r\n this.ActivityFormGroupWizard3.value.IsESensitiveAvl;\r\n this.multipleActivityService.saveModel.eSensitiveRemark =\r\n this.ActivityFormGroupWizard3.value.ESensitiveRemark;\r\n\r\n this.multipleActivityService.saveModel.isMedicalCertificateAvl =\r\n this.ActivityFormGroupWizard3.value.IsMedicalCertificateAvl;\r\n this.multipleActivityService.saveModel.isCoordinationDone =\r\n this.ActivityFormGroupWizard3.value.IsCoordinationDone;\r\n this.multipleActivityService.saveModel.isChemicalSubstances =\r\n this.ActivityFormGroupWizard3.value.IsChemicalSubstances == \"null\"\r\n ? null\r\n : this.ActivityFormGroupWizard3.value.IsChemicalSubstances;\r\n this.multipleActivityService.saveModel.isWorkPlaceChanged =\r\n this.ActivityFormGroupWizard3.value.IsWorkPlaceChanged == \"null\"\r\n ? null\r\n : this.ActivityFormGroupWizard3.value.IsWorkPlaceChanged;\r\n this.multipleActivityService.saveModel.islegalProsecution =\r\n this.ActivityFormGroupWizard3.value.IslegalProsecution == \"true\"\r\n ? true\r\n : false;\r\n this.multipleActivityService.saveModel.isRiskNotifications =\r\n this.ActivityFormGroupWizard3.value.IsRiskNotifications == \"true\"\r\n ? true\r\n : false;\r\n }\r\n }\r\n\r\n updateActivityList(event) {\r\n this.multipleActivityService.saveModel.activityList =\r\n new Array();\r\n this.multipleActivityService.saveModel.activityListForClientAPI =\r\n new Array();\r\n\r\n this.multipleActivityService.saveModel.planActionList =\r\n new Array();\r\n\r\n const totalTime = parseInt(\r\n this.multipleActivityService.saveModel.activityPartDuration,\r\n 10\r\n );\r\n let duration =\r\n totalTime / this.multipleActivityService.selectedActivity.length;\r\n duration = Math.round((duration + Number.EPSILON) * 100) / 100;\r\n\r\n this.multipleActivityService.selectedActivity.forEach((activity) => {\r\n const saveActivity = new ActivityModel();\r\n let saveActivityForClientAPI = new ActivityRoot();\r\n // let mainDetails = new EspecialidadTecnica();\r\n let dataInsertUser = new UsuarioUpsert();\r\n\r\n const activityStartTimeStr =\r\n this.multipleActivityService.saveModel.activityPartTime;\r\n // Keep the date of existing as it is\r\n // let activityDate = (activity.id != null && activity.id !== '') ?\r\n // activity.activityDate : this.multipleActivityService.saveModel.activityPartDate;\r\n\r\n let activityDate =\r\n this.multipleActivityService.saveModel.activityPartDate;\r\n\r\n if (typeof activityDate === \"string\") {\r\n activityDate = new Date(activityDate);\r\n }\r\n\r\n // Javascript month starts with 0;\r\n const actualMonth: number = activityDate.getMonth() + 1;\r\n // Get activity date in YYYYMMdd format\r\n const activityDateStr =\r\n activityDate.getFullYear() +\r\n (\"0\" + actualMonth).slice(-2) +\r\n (\"0\" + activityDate.getDate()).slice(-2);\r\n\r\n //#region 'For base API'\r\n\r\n // Unique Details\r\n saveActivity.id = activity.id;\r\n saveActivity.activityTypeId = activity.activityTypeId;\r\n saveActivity.activityTypeName = activity.activityTypeName;\r\n saveActivity.duration = String(duration);\r\n saveActivity.description = activity.description;\r\n saveActivity.userId = activity.userId;\r\n saveActivity.isDeleted = activity.isDeleted;\r\n saveActivity.entryDate = activity.entryDate;\r\n\r\n // Common Details\r\n saveActivity.companyId = this.multipleActivityService.saveModel.companyId;\r\n saveActivity.workCentreId =\r\n this.multipleActivityService.saveModel.workCentreId;\r\n saveActivity.assignedUserId =\r\n this.multipleActivityService.saveModel.assignedUserId;\r\n (saveActivity.activityDate = this.datePipe.transform(\r\n this.multipleActivityService.saveModel.activityPartDate,\r\n \"yyyy-MM-dd\"\r\n )),\r\n (saveActivity.activityTime = activityStartTimeStr);\r\n /*NOTE:Client requirement=> Activities added in 'Parte De Visita' should be in 'Done and validated' status*/\r\n saveActivity.statusTypeId = \"02\";\r\n saveActivity.statusTypeName = \"Realizada pdte validar\";\r\n\r\n //#endregion\r\n\r\n //#region 'For client API'\r\n const mainDetails = {\r\n tipo_especialidad: activity.activityTypeId,\r\n evento_estado: saveActivity.statusTypeId,\r\n tiempo_estimado: 0,\r\n hora_inicio: activityStartTimeStr,\r\n hora_fin: activityStartTimeStr, //Client has informed to put same date\r\n //hora_fin: this.multipleActivityService.saveModel.activityPartFinishTime,\r\n empresa_id: this.multipleActivityService.saveModel.companyId,\r\n empresa_centro_id: this.multipleActivityService.saveModel.workCentreId,\r\n };\r\n\r\n dataInsertUser = {\r\n // if it is an exiting activity,keep the date as it is\r\n fechaHora:\r\n activity.id != null && activity.id !== \"\"\r\n ? activity.activityDate\r\n : new Date(this.multipleActivityService.saveModel.activityPartDate),\r\n ipOrigen: this.clientReqIPAddress,\r\n objectId2: \"\", // TODO: Not yet clarified.\r\n };\r\n\r\n saveActivityForClientAPI = {\r\n id: activity.id,\r\n alias: \"\",\r\n descripcion: activity.description,\r\n fecha: activityDateStr,\r\n hora: activityStartTimeStr,\r\n user_assigned: this.multipleActivityService.saveModel.assignedUserId,\r\n especialidadTecnica: mainDetails,\r\n usuario_upsert: dataInsertUser,\r\n };\r\n\r\n //#endregion\r\n this.multipleActivityService.saveModel.activityList.push(saveActivity);\r\n this.multipleActivityService.saveModel.activityListForClientAPI.push(\r\n saveActivityForClientAPI\r\n );\r\n });\r\n\r\n if (this.multipleActivityService.selectedPlanAction.length == 0) {\r\n const planAction = new PlanActionModel();\r\n planAction.isMarked = this.isMarked;\r\n this.multipleActivityService.saveModel.planActionList.push(planAction);\r\n }\r\n\r\n this.multipleActivityService.selectedPlanAction.forEach((item) => {\r\n const planAction = new PlanActionModel();\r\n planAction.isMarked = this.isMarked;\r\n planAction.title = item.title;\r\n planAction.description = item.description;\r\n planAction.action = item.action;\r\n planAction.cost = item.cost;\r\n planAction.responsible = item.responsible;\r\n planAction.estimatedDate = this.datePipe.transform(\r\n item.estimatedDate,\r\n \"yyyy-MM-dd\"\r\n );\r\n planAction.canEliminateRisk = item.canEliminateRisk;\r\n planAction.canMitigateRisk = item.canMitigateRisk;\r\n planAction.actionChekedInVisit = item.actionChekedInVisit;\r\n this.multipleActivityService.saveModel.planActionList.push(planAction);\r\n });\r\n }\r\n\r\n editListActivity(activity: Activity, index: number) {\r\n if (!this.IsValidated) {\r\n const modalRef = this.modalService.open(\r\n AddNewActivityComponent,\r\n this.modalOptions\r\n );\r\n modalRef.componentInstance.updatedActivity = activity;\r\n modalRef.componentInstance.activityArrayIndex = index;\r\n modalRef.componentInstance.isUpdate = true;\r\n }\r\n }\r\n\r\n editListPlanAction(planAction: PlanActionModel, index: number) {\r\n const modalRef = this.modalService.open(\r\n AddNewPlanactionComponent,\r\n this.modalOptions\r\n );\r\n modalRef.componentInstance.updatedPlanAction = planAction;\r\n modalRef.componentInstance.planActionArrayIndex = index;\r\n modalRef.componentInstance.isUpdate = true;\r\n }\r\n\r\n verifyActivityList() {\r\n if (this.multipleActivityService.selectedActivity.length > 0) {\r\n this.isActivityListVerified = true;\r\n } else {\r\n this.isActivityListVerified = false;\r\n }\r\n }\r\n\r\n // verifyPlanActionList() {\r\n // if (this.multipleActivityService.selectedPlanAction.length > 0) {\r\n // this.isPlanActionVerified = false;\r\n // } else {\r\n // this.isPlanActionVerified = true;\r\n // }\r\n // }\r\n\r\n signAndValidateActivity() {\r\n if (this.ActivityFormGroupWizard5.valid && !this.IsValidated) {\r\n Swal.fire({\r\n title: \"Una vez firmado, el parte no podrá modificarse\",\r\n text: \"\",\r\n icon: \"warning\",\r\n showCancelButton: true,\r\n confirmButtonText: \"Continuar\",\r\n cancelButtonText: \"Cancelar\",\r\n }).then((result) => {\r\n if (result.value) {\r\n this.SetFormValuesToLatest();\r\n this.saveMultipleActivities();\r\n } else {\r\n this.wizardComponent.steps.forEach((v, i) => {\r\n v.isActive = false;\r\n });\r\n const step = this.wizardComponent.steps.filter(\r\n (e) => e.title === \"Firma Tec.\"\r\n )[0];\r\n step.isActive = true;\r\n this.wizardComponent.goToStep(step);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n });\r\n }\r\n }\r\n\r\n clearSignature(step: number) {\r\n if (step == 1) {\r\n this.signaturePad.clear();\r\n } else if (step == 2) {\r\n this.preventionDelegateSignaturePad.clear();\r\n } else if (step == 3) {\r\n this.firmaTecSignaturePad.clear();\r\n }\r\n }\r\n\r\n saveParteEmailInfo() {\r\n if (this.ActivityFormGroupWizard5.valid || this.IsValidated) {\r\n this.multipleActivityService.saveModel.signedUsername =\r\n this.ActivityFormGroupWizard5.value.ParteContactName;\r\n this.multipleActivityService.saveModel.signedUserDNI =\r\n this.ActivityFormGroupWizard5.value.ParteContactDNI;\r\n this.multipleActivityService.saveModel.signatureImage = this.signaturePad\r\n .toDataURL()\r\n .replace(/^data:image\\/(png|jpg);base64,/, \"\");\r\n this.changeWizardText();\r\n }\r\n }\r\n\r\n savePreventionDelegate() {\r\n if (this.PreventionDelegateForm.valid || this.IsValidated) {\r\n this.multipleActivityService.saveModel.preventionDelegateName =\r\n this.PreventionDelegateForm.value.Name;\r\n this.multipleActivityService.saveModel.preventionDelegateDNI =\r\n this.PreventionDelegateForm.value.DNI;\r\n this.multipleActivityService.saveModel.preventionDelegateSignature =\r\n this.preventionDelegateSignaturePad\r\n .toDataURL()\r\n .replace(/^data:image\\/(png|jpg);base64,/, \"\");\r\n\r\n this.changeWizardText(true);\r\n }\r\n }\r\n\r\n async saveMultipleActivities() {\r\n let saveType = \"\";\r\n let errorCount = 0;\r\n let loopCount = 0;\r\n const activityCount = this.multipleActivityService.saveModel\r\n .activityListForClientAPI\r\n ? this.multipleActivityService.saveModel.activityListForClientAPI.length\r\n : 0;\r\n let responseParam = \"\",\r\n committedAction = \"\";\r\n let failedActionsStr = \"\";\r\n\r\n this.spinner.show();\r\n\r\n //#region 'Save actions to client API'\r\n const list = this.multipleActivityService.saveModel.activityListForClientAPI\r\n ? this.multipleActivityService.saveModel.activityListForClientAPI\r\n : new Array();\r\n for (let i = 0; i < list.length; i++) {\r\n const activity = list[i];\r\n saveType =\r\n activity.id != null && activity.id !== \"\"\r\n ? \"Multiple Activity=>UPDATE Action\"\r\n : \"Multiple Activity=>INSERT Action\";\r\n activity.especialidadTecnica.hora_inicio =\r\n activity.especialidadTecnica.hora_inicio\r\n .replace(\":\", \"\")\r\n .replace(\":\", \"\");\r\n /*NOTE:Client requirement=> Status type '11' is not available in client DB.Therefore set '01' instead*/\r\n activity.especialidadTecnica.evento_estado =\r\n activity.especialidadTecnica.evento_estado === \"11\"\r\n ? \"01\"\r\n : activity.especialidadTecnica.evento_estado;\r\n\r\n if (this.dataSharingService.currentActuacionDataObject) {\r\n const dateTimeNow = new Date();\r\n let hora_fin = \"\";\r\n hora_fin =\r\n (\"0\" + dateTimeNow.getHours().toString()).slice(-2) +\r\n (\"0\" + dateTimeNow.getMinutes().toString()).slice(-2) +\r\n (\"0\" + dateTimeNow.getSeconds().toString()).slice(-2);\r\n this.dataSharingService.currentActuacionDataObject.especialidadTecnica.hora_fin =\r\n hora_fin;\r\n await this.activityService.saveActivity(\r\n this.dataSharingService.currentActuacionDataObject\r\n );\r\n }\r\n\r\n await this.activityService.saveActivity(activity).then(\r\n (response) => {\r\n loopCount += 1;\r\n responseParam = JSON.stringify(response);\r\n\r\n // Check for error\r\n if (response.webError) {\r\n errorCount += 1;\r\n committedAction = saveType + \" failed\";\r\n failedActionsStr +=\r\n `Actuacion ${loopCount.toString()}-${\r\n response.webError.messageToUser\r\n }` + \"
\";\r\n } else {\r\n committedAction = saveType + \" success\";\r\n if (this.isActivityListVerified && this.isClosedClicked) {\r\n this.activityService.fetchActivityList();\r\n }\r\n }\r\n const indexedDBRecord = {\r\n userId: JSON.parse(localStorage.getItem(\"loggeduser\")).id,\r\n activityId: activity.id,\r\n loggedInTime: \"\",\r\n loggedOutTime: \"\",\r\n committedAction: committedAction,\r\n requestParam: JSON.stringify(activity),\r\n responseParam: responseParam,\r\n logDate: this.logActivityService.getDateInCustomFormat(new Date()),\r\n };\r\n this.logActivityService.saveDataToIndexedDB(\r\n \"useractivity\",\r\n indexedDBRecord\r\n );\r\n },\r\n (error) => {\r\n errorCount += 1;\r\n responseParam = JSON.stringify(error);\r\n committedAction = saveType + \" failed\";\r\n const indexedDBRecord = {\r\n userId: JSON.parse(localStorage.getItem(\"loggeduser\")).id,\r\n activityId: activity.id,\r\n loggedInTime: \"\",\r\n loggedOutTime: \"\",\r\n committedAction: committedAction,\r\n requestParam: JSON.stringify(activity),\r\n responseParam: responseParam,\r\n logDate: this.logActivityService.getDateInCustomFormat(new Date()),\r\n };\r\n this.logActivityService.saveDataToIndexedDB(\r\n \"useractivity\",\r\n indexedDBRecord\r\n );\r\n this.spinner.hide();\r\n this.errorHandler.handle(error);\r\n document\r\n .getElementsByClassName(\"card-footer\")[0]\r\n .removeAttribute(\"hidden\");\r\n }\r\n );\r\n }\r\n\r\n //#endregion\r\n\r\n //#region 'Save actions to base API'\r\n // NOTE: Execute the base API email sending function only if the client API function is successful\r\n if (errorCount === 0) {\r\n this.saveMultiActivityMasterData(true);\r\n this.IsValidated = true;\r\n this.SelectedParteDeVisitaState = this.ParteDeVisitaStates.Validated;\r\n this.changeWizardText();\r\n this.setParteDeVisitaState();\r\n } else {\r\n this.spinner.hide();\r\n const message =\r\n errorCount.toString() +\r\n \" de cada \" +\r\n activityCount.toString() +\r\n \" acciones fallaron para salvar.\" +\r\n \"
\" +\r\n failedActionsStr;\r\n this.errorHandler.handle(message, true);\r\n document\r\n .getElementsByClassName(\"card-footer\")[0]\r\n .removeAttribute(\"hidden\");\r\n }\r\n }\r\n\r\n private InitWizard1DropDowns() {\r\n this.dropdownService.getCompanies().subscribe(\r\n (response) => {\r\n this.companies$ = this.dropdownService.WrappedToDropDownList(\r\n response,\r\n \"name\",\r\n \"companyId\"\r\n );\r\n },\r\n (error) => {\r\n this.errorHandler.handle(error);\r\n }\r\n );\r\n this.dropdownService.getWorkingCentres().subscribe(\r\n (response) => {\r\n this.workingCentres$ = this.dropdownService.WrappedToDropDownList(\r\n response,\r\n \"centreName\",\r\n \"id\"\r\n );\r\n },\r\n (error) => {\r\n this.errorHandler.handle(error);\r\n }\r\n );\r\n this.dropdownService.getUsers().subscribe(\r\n (response) => {\r\n this.users$ = this.dropdownService.WrappedToDropDownList(\r\n response,\r\n \"firstName\",\r\n \"id\"\r\n );\r\n },\r\n (error) => {\r\n this.errorHandler.handle(error);\r\n }\r\n );\r\n }\r\n\r\n getCompanyWorkCentres(selectedOption: any) {\r\n this.ActivityFormGroupWizard1.patchValue({\r\n WorkCentreId: null,\r\n });\r\n this.dropdownService\r\n .getWorkingCentresByCompany(selectedOption.value)\r\n .subscribe(\r\n (response) => {\r\n this.workingCentres$ = this.dropdownService.WrappedToDropDownList(\r\n response,\r\n \"centreName\",\r\n \"id\"\r\n );\r\n },\r\n (error) => {\r\n this.errorHandler.handle(error);\r\n }\r\n );\r\n }\r\n\r\n getWorkCentreWorkerCount(workCentreId: any) {\r\n let result = null;\r\n this.dropdownService.getWorkCentreDetails(workCentreId).subscribe(\r\n (response) => {\r\n result = response == null ? null : response.noOfWorkers;\r\n this.ActivityFormGroupWizard2.patchValue({\r\n WorkCentreWorkerCount: result,\r\n });\r\n },\r\n (error) => {\r\n this.errorHandler.handle(error);\r\n this.ActivityFormGroupWizard2.patchValue({\r\n WorkCentreWorkerCount: null,\r\n });\r\n }\r\n );\r\n }\r\n\r\n isPatientCountValid() {\r\n if (\r\n this.ActivityFormGroupWizard2.value.IsAccidentOccured === \"true\" &&\r\n this.ActivityFormGroupWizard2.value.WomenAccidents == null &&\r\n this.ActivityFormGroupWizard2.value.MenAccidents == null &&\r\n this.ActivityFormGroupWizard2.value.VisitedAccidents == null &&\r\n this.ActivityFormGroupWizard2.value.InvestigatedAccidents == null\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n isDiseasesCountValid() {\r\n if (\r\n this.ActivityFormGroupWizard2.value.IsOccupationDiseases === \"true\" &&\r\n this.ActivityFormGroupWizard2.value.MenOccupationDiseases == null &&\r\n this.ActivityFormGroupWizard2.value.WomenOccupationDiseases == null &&\r\n this.ActivityFormGroupWizard2.value.InvestigatedOccupationDiseases ==\r\n null &&\r\n this.ActivityFormGroupWizard2.value.VisitedOccupationDiseases == null\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n isNewWorkerCountValid() {\r\n if (\r\n this.ActivityFormGroupWizard2.value.IsNewWorkerAdded === \"true\" &&\r\n this.ActivityFormGroupWizard2.value.StaffMen == null &&\r\n this.ActivityFormGroupWizard2.value.StaffWomen == null &&\r\n this.ActivityFormGroupWizard2.value.ETTMen == null &&\r\n this.ActivityFormGroupWizard2.value.ETTWomen == null\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n checkForNewWorkerEnableStatus() {\r\n if (this.ActivityFormGroupWizard2.value.IsNewWorkerAdded === \"true\") {\r\n this.isNewWorkerInputEnabled = true;\r\n this.ActivityFormGroupWizard2.get(\"StaffMen\").enable();\r\n this.ActivityFormGroupWizard2.get(\"StaffMen\").markAsTouched();\r\n this.ActivityFormGroupWizard2.get(\"StaffWomen\").enable();\r\n this.ActivityFormGroupWizard2.get(\"StaffWomen\").markAsTouched();\r\n this.ActivityFormGroupWizard2.get(\"ETTMen\").enable();\r\n this.ActivityFormGroupWizard2.get(\"ETTMen\").markAsTouched();\r\n this.ActivityFormGroupWizard2.get(\"ETTWomen\").enable();\r\n this.ActivityFormGroupWizard2.get(\"ETTWomen\").markAsTouched();\r\n } else {\r\n this.isNewWorkerInputEnabled = false;\r\n this.ActivityFormGroupWizard2.patchValue({\r\n StaffMen: null,\r\n StaffWomen: null,\r\n ETTMen: null,\r\n ETTWomen: null,\r\n });\r\n this.ActivityFormGroupWizard2.get(\"StaffMen\").disable();\r\n this.ActivityFormGroupWizard2.get(\"StaffMen\").markAsUntouched();\r\n this.ActivityFormGroupWizard2.get(\"StaffWomen\").disable();\r\n this.ActivityFormGroupWizard2.get(\"StaffWomen\").markAsUntouched();\r\n this.ActivityFormGroupWizard2.get(\"ETTMen\").disable();\r\n this.ActivityFormGroupWizard2.get(\"ETTMen\").markAsUntouched();\r\n this.ActivityFormGroupWizard2.get(\"ETTWomen\").disable();\r\n this.ActivityFormGroupWizard2.get(\"ETTWomen\").markAsUntouched();\r\n }\r\n }\r\n\r\n checkForDiseasesEnableStatus() {\r\n if (this.ActivityFormGroupWizard2.value.IsOccupationDiseases === \"true\") {\r\n this.isDiseasesInputEnabled = true;\r\n this.ActivityFormGroupWizard2.get(\"MenOccupationDiseases\").enable();\r\n this.ActivityFormGroupWizard2.get(\r\n \"MenOccupationDiseases\"\r\n ).markAsTouched();\r\n this.ActivityFormGroupWizard2.get(\"WomenOccupationDiseases\").enable();\r\n this.ActivityFormGroupWizard2.get(\r\n \"WomenOccupationDiseases\"\r\n ).markAsTouched();\r\n this.ActivityFormGroupWizard2.get(\r\n \"InvestigatedOccupationDiseases\"\r\n ).enable();\r\n this.ActivityFormGroupWizard2.get(\r\n \"InvestigatedOccupationDiseases\"\r\n ).markAsTouched();\r\n this.ActivityFormGroupWizard2.get(\"VisitedOccupationDiseases\").enable();\r\n this.ActivityFormGroupWizard2.get(\r\n \"VisitedOccupationDiseases\"\r\n ).markAsTouched();\r\n } else {\r\n this.isDiseasesInputEnabled = false;\r\n this.ActivityFormGroupWizard2.patchValue({\r\n MenOccupationDiseases: null,\r\n WomenOccupationDiseases: null,\r\n InvestigatedOccupationDiseases: null,\r\n VisitedOccupationDiseases: null,\r\n });\r\n this.ActivityFormGroupWizard2.get(\"MenOccupationDiseases\").disable();\r\n this.ActivityFormGroupWizard2.get(\r\n \"MenOccupationDiseases\"\r\n ).markAsUntouched();\r\n this.ActivityFormGroupWizard2.get(\"WomenOccupationDiseases\").disable();\r\n this.ActivityFormGroupWizard2.get(\r\n \"WomenOccupationDiseases\"\r\n ).markAsUntouched();\r\n this.ActivityFormGroupWizard2.get(\r\n \"InvestigatedOccupationDiseases\"\r\n ).disable();\r\n this.ActivityFormGroupWizard2.get(\r\n \"InvestigatedOccupationDiseases\"\r\n ).markAsUntouched();\r\n this.ActivityFormGroupWizard2.get(\"VisitedOccupationDiseases\").disable();\r\n this.ActivityFormGroupWizard2.get(\r\n \"VisitedOccupationDiseases\"\r\n ).markAsUntouched();\r\n }\r\n }\r\n\r\n checkForPatientCountEnableStatus() {\r\n if (this.ActivityFormGroupWizard2.value.IsAccidentOccured === \"true\") {\r\n this.isPatientCountInputEnabled = true;\r\n this.ActivityFormGroupWizard2.get(\"MenAccidents\").enable();\r\n this.ActivityFormGroupWizard2.get(\"MenAccidents\").markAsTouched();\r\n this.ActivityFormGroupWizard2.get(\"WomenAccidents\").enable();\r\n this.ActivityFormGroupWizard2.get(\"WomenAccidents\").markAsTouched();\r\n this.ActivityFormGroupWizard2.get(\"VisitedAccidents\").enable();\r\n this.ActivityFormGroupWizard2.get(\"VisitedAccidents\").markAsTouched();\r\n this.ActivityFormGroupWizard2.get(\"InvestigatedAccidents\").enable();\r\n this.ActivityFormGroupWizard2.get(\r\n \"InvestigatedAccidents\"\r\n ).markAsTouched();\r\n } else {\r\n this.isPatientCountInputEnabled = false;\r\n this.ActivityFormGroupWizard2.patchValue({\r\n WomenAccidents: null,\r\n MenAccidents: null,\r\n // TotalAccidents: null,\r\n VisitedAccidents: null,\r\n InvestigatedAccidents: null,\r\n });\r\n this.ActivityFormGroupWizard2.get(\"MenAccidents\").disable();\r\n this.ActivityFormGroupWizard2.get(\"MenAccidents\").markAsUntouched();\r\n this.ActivityFormGroupWizard2.get(\"WomenAccidents\").disable();\r\n this.ActivityFormGroupWizard2.get(\"WomenAccidents\").markAsUntouched();\r\n this.ActivityFormGroupWizard2.get(\"VisitedAccidents\").disable();\r\n this.ActivityFormGroupWizard2.get(\"VisitedAccidents\").markAsUntouched();\r\n this.ActivityFormGroupWizard2.get(\"InvestigatedAccidents\").disable();\r\n this.ActivityFormGroupWizard2.get(\r\n \"InvestigatedAccidents\"\r\n ).markAsUntouched();\r\n }\r\n\r\n this.ActivityFormGroupWizard2.updateValueAndValidity();\r\n }\r\n\r\n public saveParteDeVisitaState(): void {\r\n this.isClosedClicked = true;\r\n if (!this.IsValidated) {\r\n this.SetFormValuesToLatest();\r\n this.saveMultiActivityMasterData(false);\r\n }\r\n if (this.isActivityListVerified && this.isClosedClicked) {\r\n this.activityService.fetchActivityList();\r\n }\r\n this.multipleActivityModal.close();\r\n }\r\n\r\n private getSaveModel(isValidated: boolean): MultipleActivitySaveModel {\r\n this.multipleActivityService.saveModel.LoggedUserName = this.userDetails?.nombre + ' ' + this.userDetails?.apellidos;\r\n const saveModel = this.multipleActivityService.saveModel;\r\n saveModel.isValidated = isValidated;\r\n saveModel.sendEmailToUserOnly = false;\r\n const emailList = this.emailAddresses;\r\n saveModel.recipientEmail = emailList.map((item) => item.display);\r\n saveModel.emailSubject = this.emailSubject\r\n ? this.emailSubject\r\n : this.ActivityFormGroupWizard6.value.EmailSubject;\r\n saveModel.emailBody = this.emailBody\r\n ? this.emailBody\r\n : this.ActivityFormGroupWizard6.value.EmailBody;\r\n saveModel.description = this.ActivityFormGroupWizard1.value.Description;\r\n saveModel.userId = JSON.parse(localStorage.getItem(\"loggeduser\")).id;\r\n\r\n // Get the time in the format HH:mm:ss\r\n if (\r\n typeof saveModel.activityPartTime === \"string\" &&\r\n !saveModel.activityPartTime.includes(\":\")\r\n ) {\r\n const startTime = saveModel.activityPartTime;\r\n saveModel.activityPartTime =\r\n startTime.substr(0, 2) +\r\n \":\" +\r\n startTime.substr(2, 2) +\r\n \":\" +\r\n startTime.substr(4, 2);\r\n }\r\n\r\n const actualMonth: number = saveModel.activityPartDate.getMonth() + 1;\r\n const parentDate: Date = saveModel.activityPartDate;\r\n saveModel.activityPartDateStr = `${parentDate\r\n .getDate()\r\n .toString()}/${actualMonth.toString()}/${parentDate\r\n .getFullYear()\r\n .toString()}`;\r\n\r\n if (saveModel.activityList) {\r\n saveModel.activityList.forEach((a) => {\r\n a.activityDate = this.datePipe.transform(\r\n saveModel.activityPartDate,\r\n \"yyyy-MM-dd\"\r\n );\r\n // Get the time in the format HH:mm:ss\r\n a.activityTime =\r\n a.activityTime.substr(0, 2) +\r\n \":\" +\r\n a.activityTime.substr(2, 2) +\r\n \":\" +\r\n a.activityTime.substr(4, 2);\r\n });\r\n }\r\n // Get Last Active Wizard Step\r\n const activeSteps = this.wizardComponent.steps.filter((e) => !e.isDisabled);\r\n saveModel.currentStepTitle = activeSteps[activeSteps.length - 1].title;\r\n\r\n return saveModel;\r\n }\r\n\r\n private saveMultiActivityMasterData(isValidated: boolean): void {\r\n const saveModel = this.getSaveModel(isValidated);\r\n this.masterDataService.saveMultipleActivities(saveModel).then(\r\n async (res) => {\r\n this.multiActivitySaveSuccess = true;\r\n\r\n // Update Visit Parent Activity Status as pending\r\n await this.activityService\r\n .getActivity(this.ActivityFormGroupWizard1.value.VisitActivityId)\r\n .then(\r\n async (response) => {\r\n const activity =\r\n this.activityService.mapActivityResponseToActivityModel(\r\n response\r\n );\r\n const startDate = activity.activityDate;\r\n const month = startDate.getMonth() + 1;\r\n // Get the date in the format dd/MM/yyyy\r\n activity.activityDate =\r\n (\"0\" + startDate.getDate()).slice(-2) +\r\n \"/\" +\r\n (\"0\" + month).slice(-2) +\r\n \"/\" +\r\n startDate.getFullYear();\r\n\r\n const activityRoot =\r\n this.activityService.mapActivityModelToActivityRoot(activity);\r\n /*NOTE:Client requirement=> Status type '11' is not available in client DB.Therefore set '01' instead*/\r\n activityRoot.especialidadTecnica.evento_estado =\r\n activityRoot.especialidadTecnica.evento_estado === \"11\"\r\n ? \"01\"\r\n : activityRoot.especialidadTecnica.evento_estado;\r\n activityRoot.descripcion =\r\n this.ActivityFormGroupWizard1.value.Description;\r\n\r\n this.activityService.saveActivity(activityRoot).then(\r\n (updateResponse) => {\r\n // Check for error\r\n if (updateResponse.webError != null) {\r\n this.errorHandler.handle(\r\n updateResponse.webError.messageToUser,\r\n true\r\n );\r\n } else {\r\n if (this.isActivityListVerified && this.isClosedClicked) {\r\n this.activityService.fetchActivityList();\r\n }\r\n }\r\n },\r\n (error) => {\r\n this.spinner.hide();\r\n this.errorHandler.handle(error);\r\n }\r\n );\r\n },\r\n (error) => {\r\n this.errorHandler.handle(error);\r\n }\r\n );\r\n\r\n this.spinner.hide();\r\n\r\n if (String(res).toLowerCase().includes(\"error\")) {\r\n this.toastrService.error(\r\n \"No pudo validar y firmar la parte de visita\",\r\n \"Error\"\r\n );\r\n } else {\r\n this.toastrService.success(\r\n \"validado y firmado con éxito la parte de visita\",\r\n \"Éxito\"\r\n );\r\n }\r\n },\r\n (err) => {\r\n const responseParam = JSON.stringify(err);\r\n const indexedDBRecord = {\r\n userId: JSON.parse(localStorage.getItem(\"loggeduser\")).id,\r\n activityId: \"\",\r\n loggedInTime: \"\",\r\n loggedOutTime: \"\",\r\n committedAction: \"Multiple Activity=>Base API=>Send email\",\r\n requestParam: JSON.stringify(saveModel),\r\n responseParam: responseParam,\r\n logDate: this.logActivityService.getDateInCustomFormat(new Date()),\r\n };\r\n this.logActivityService.saveDataToIndexedDB(\r\n \"useractivity\",\r\n indexedDBRecord\r\n );\r\n this.spinner.hide();\r\n\r\n if (!err) {\r\n this.errorHandler.handle(\r\n \"Se produjo un error interno al validar y firmar\",\r\n true\r\n );\r\n } else {\r\n this.errorHandler.handle(err);\r\n }\r\n }\r\n );\r\n }\r\n\r\n private async fetchUserDetails(): Promise {\r\n const reqObject = {\r\n id: this.userDetailsId,\r\n usuario_upsert: {\r\n userId: JSON.parse(localStorage.getItem('loggeduser')).id,\r\n fechaHora: new Date(),\r\n ipOrigen: null,\r\n objectId2: null\r\n }\r\n };\r\n \r\n try {\r\n const res = await this.memoriaAnualService.getUserDetailsAndSignature(reqObject).toPromise();\r\n return res?.data;\r\n } catch (err) {\r\n throw err;\r\n }\r\n }\r\n \r\n public async downloadAttachment(): Promise {\r\n try {\r\n this.spinner.show();\r\n \r\n // Fetch user details before proceeding\r\n this.userDetails = await this.fetchUserDetails();\r\n \r\n this.SetFormValuesToLatest();\r\n const saveModel = this.getSaveModel(true);\r\n \r\n const response = await this.masterDataService.downloadParteDeVisitaAttachment(saveModel).toPromise();\r\n \r\n const linkSource = \"data:application/pdf;base64,\" + response.base64String + \"\\n\";\r\n const downloadLink = document.createElement(\"a\");\r\n const fileName = response.fileName;\r\n \r\n downloadLink.href = linkSource;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n \r\n } catch (error) {\r\n this.toastrService.error(\"No se pudo descargar el archivo adjunto\", \"Error\");\r\n this.errorHandler.handle(error);\r\n } finally {\r\n this.spinner.hide();\r\n }\r\n }\r\n\r\n public async sendParteDeVisitaEmail(): Promise{\r\n this.spinner.show();\r\n this.IsFooterHidden = true;\r\n this.emailSubject = this.ActivityFormGroupWizard6.value.EmailSubject;\r\n this.emailBody = this.ActivityFormGroupWizard6.value.EmailBody;\r\n\r\n this.SetFormValuesToLatest();\r\n this.userDetails = await this.fetchUserDetails();\r\n const saveModel = this.getSaveModel(true);\r\n\r\n this.masterDataService.sendParteDeVisitaEmail(saveModel).then(\r\n async (res) => {\r\n document\r\n .getElementsByClassName(\"card-footer\")[0]\r\n .removeAttribute(\"hidden\");\r\n this.IsFooterHidden = false;\r\n this.spinner.hide();\r\n if (String(res).toLowerCase().includes(\"error\")) {\r\n this.toastrService.error(\r\n \"Se guardó correctamente, pero no se envió un correo electrónico ya que no se especificó ninguno en la aplicación\",\r\n \"Error\"\r\n );\r\n } else {\r\n this.toastrService.success(\r\n \"Guardado correctamente, se le enviará un correo electrónico si ha solicitado uno\",\r\n \"Éxito\"\r\n );\r\n this.multipleActivityModal.close();\r\n }\r\n },\r\n (err) => {\r\n document\r\n .getElementsByClassName(\"card-footer\")[0]\r\n .removeAttribute(\"hidden\");\r\n this.IsFooterHidden = false;\r\n const responseParam = JSON.stringify(err);\r\n const indexedDBRecord = {\r\n userId: JSON.parse(localStorage.getItem(\"loggeduser\")).id,\r\n activityId: \"\",\r\n loggedInTime: \"\",\r\n loggedOutTime: \"\",\r\n committedAction: \"Multiple Activity=>Base API=>Send email\",\r\n requestParam: JSON.stringify(saveModel),\r\n responseParam: responseParam,\r\n logDate: this.logActivityService.getDateInCustomFormat(new Date()),\r\n };\r\n this.logActivityService.saveDataToIndexedDB(\r\n \"useractivity\",\r\n indexedDBRecord\r\n );\r\n this.spinner.hide();\r\n\r\n if (!err) {\r\n this.errorHandler.handle(\r\n \"Se produjo un error interno al enviar el correo electrónico\",\r\n true\r\n );\r\n } else {\r\n this.errorHandler.handle(err);\r\n }\r\n }\r\n );\r\n }\r\n\r\n private SetFormValuesToLatest(): void {\r\n this.saveQuestionnaire();\r\n this.updateActivityList(null);\r\n this.updateFormdata1();\r\n this.updateFormData2()\r\n this.saveParteEmailInfo();\r\n this.savePreventionDelegate();\r\n // this.multipleActivityService.saveModel.preventionDelegateName = this.PreventionDelegateForm.value.Name;\r\n // this.multipleActivityService.saveModel.preventionDelegateDNI = this.PreventionDelegateForm.value.DNI;\r\n this.multipleActivityService.saveModel.firmaTecSignature =\r\n this.firmaTecSignaturePad\r\n .toDataURL()\r\n .replace(/^data:image\\/(png|jpg);base64,/, \"\");\r\n }\r\n\r\n public setEmailContent(): void {\r\n let emailSubject = \"\";\r\n let emailBody = \"\";\r\n\r\n if (this.ActivityFormGroupWizard2.value.TemplateLanguage === \"es\") {\r\n emailSubject = \"[GESEME] Comprobante de visita\";\r\n emailBody =\r\n `Apreciado/a cliente. \\n\\n` +\r\n `Después de la visita realizada en el día de hoy, le adjunto el comprobante de visita originado por la misma. ` +\r\n `Ruego archive este documento, junto con el resto de documentos de prevención de riesgos laborales. \\n\\n` +\r\n `Atentamente,`;\r\n } else {\r\n emailSubject = \"[GESEME] Comprovant de visita\";\r\n emailBody =\r\n `Benvolgut/da client, \\n\\n` +\r\n `Després de la visita realitzada en el dia d'avui, adjunto en aquest email el comprovant de visita. ` +\r\n `Prego que arxivi aquest document, juntament amb la resta de documents de prevenció de riscos laborals. \\n\\n` +\r\n `Atentament,`;\r\n }\r\n\r\n this.ActivityFormGroupWizard6.patchValue({\r\n EmailSubject: emailSubject,\r\n EmailBody: emailBody,\r\n ContactEmail: this.emailAddresses,\r\n });\r\n }\r\n\r\n focusOutWorkCentreWorker() {\r\n let men = this.ActivityFormGroupWizard2.controls.NoMen.value;\r\n let women = this.ActivityFormGroupWizard2.controls.NoWomen.value;\r\n let workCenterTotal =\r\n this.ActivityFormGroupWizard2.controls.WorkCentreWorkerCount.value;\r\n\r\n if (men != null || women != null) {\r\n let total = men + women;\r\n if (total > workCenterTotal) {\r\n this.ActivityFormGroupWizard2.controls.NoMen.setValue(null);\r\n this.ActivityFormGroupWizard2.controls.NoWomen.setValue(null);\r\n this.ActivityFormGroupWizard2.controls.WorkCentreWorkerCount.setValue(\r\n null\r\n );\r\n this.toastrService.warning(\r\n \"Total nunca podría ser menor que la suma de ambas\"\r\n );\r\n }\r\n }\r\n }\r\n\r\n focusOutMenandWomen() {\r\n let men = this.ActivityFormGroupWizard2.controls.NoMen.value;\r\n let women = this.ActivityFormGroupWizard2.controls.NoWomen.value;\r\n\r\n if (men != null || women != null) {\r\n let total = men + women;\r\n if (total >= 500) {\r\n this.ActivityFormGroupWizard2.controls.NoMen.setValue(null);\r\n this.ActivityFormGroupWizard2.controls.NoWomen.setValue(null);\r\n this.ActivityFormGroupWizard2.controls.WorkCentreWorkerCount.setValue(\r\n null\r\n );\r\n this.toastrService.warning(\"Ingrese un número entre 1 y 500\");\r\n } else {\r\n this.ActivityFormGroupWizard2.controls.WorkCentreWorkerCount.setValue(\r\n total\r\n );\r\n }\r\n }\r\n }\r\n\r\n\r\n async updateFormdata1() {\r\n Object.keys(this.stepform6.controls).forEach((controlName) => {\r\n switch (controlName) {\r\n case \"trabajos_altura\":\r\n this.multipleActivityService.saveModel.TrabajosAltura =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"trabajos_verticales\":\r\n this.multipleActivityService.saveModel.TrabajosVerticales =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"plataformas_elevadoras\":\r\n this.multipleActivityService.saveModel.PlataformasElevadoras =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"carretillas_elevadoras\":\r\n this.multipleActivityService.saveModel.CarretillasElevadoras =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"transpaletas_apiladores\":\r\n this.multipleActivityService.saveModel.TranspaletasApiladores =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"incendios\":\r\n this.multipleActivityService.saveModel.Incendios =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"primeros_auxilios\":\r\n this.multipleActivityService.saveModel.PrimerosAuxilios =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"espacios_confinados\":\r\n this.multipleActivityService.saveModel.EspaciosConfinados =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"consignacion_maquinas\":\r\n this.multipleActivityService.saveModel.ConsignacionMaquinas =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"riesgo_electrico\":\r\n this.multipleActivityService.saveModel.RiesgoElectrico =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"riesgo_quimico\":\r\n this.multipleActivityService.saveModel.RiesgoQuimico =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"riesgo_biologico\":\r\n this.multipleActivityService.saveModel.RiesgoBiologico =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"riesgo_ergonomico\":\r\n this.multipleActivityService.saveModel.RiesgoErgonomico =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"nivel_basico_prl\":\r\n this.multipleActivityService.saveModel.NivelBasicoPRL =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"delegados_prevencion\":\r\n this.multipleActivityService.saveModel.DelegadosPrevencion =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"seguridad_vial\":\r\n this.multipleActivityService.saveModel.SeguridadVial =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"teletrabajo\":\r\n this.multipleActivityService.saveModel.Teletrabajo =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"otros_formacion\":\r\n this.multipleActivityService.saveModel.OtrosFormacion =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"admin_20h\":\r\n this.multipleActivityService.saveModel.Admin20H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"directivos_10h\":\r\n this.multipleActivityService.saveModel.Directivos10H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"mandos_intermedios_20h\":\r\n this.multipleActivityService.saveModel.MandosIntermedios20H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"responsables_tecnicos_20h\":\r\n this.multipleActivityService.saveModel.ResponsablesTecnicos20H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"nivel_basico_prl_60h\":\r\n this.multipleActivityService.saveModel.NivelBasicoPRL60H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"delegados_prevencion_70h\":\r\n this.multipleActivityService.saveModel.DelegadosPrevencion70H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"oficios_20h\":\r\n this.multipleActivityService.saveModel.Oficios20H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"oficios_6h\":\r\n this.multipleActivityService.saveModel.Oficios6H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"admin_metal_obra_20h\":\r\n this.multipleActivityService.saveModel.AdminMetalObra20H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"directivos_metal_obra_10h\":\r\n this.multipleActivityService.saveModel.DirectivosMetalObra10H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"mandos_intermedios_metal_obra_20h\":\r\n this.multipleActivityService.saveModel.MandosIntermediosMetalObra20H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"responsables_tecnicos_metal_obra_20h\":\r\n this.multipleActivityService.saveModel.ResponsablesTecnicosMetalObra20H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"nivel_basico_prl_metal_obra_60h\":\r\n this.multipleActivityService.saveModel.NivelBasicoPRLMetalObra60H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"delegados_prevencion_metal_obra_50h\":\r\n this.multipleActivityService.saveModel.DelegadosPrevencionMetalObra50H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"oficios_metal_obra_20h\":\r\n this.multipleActivityService.saveModel.OficiosMetalObra20H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"oficios_metal_obra_6h\":\r\n this.multipleActivityService.saveModel.OficiosMetalObra6H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"reciclaje_oficios_metal_obra_4h\":\r\n this.multipleActivityService.saveModel.ReciclajeOficiosMetalObra4H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"personal_oficines\":\r\n this.multipleActivityService.saveModel.PersonalDOficines =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"directius\":\r\n this.multipleActivityService.saveModel.Directius =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"delegats_de_prevenció\":\r\n this.multipleActivityService.saveModel.DelegatsDePrevencio =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"nivell_bàsic\":\r\n this.multipleActivityService.saveModel.NivellBasic =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"oficis_producció\":\r\n this.multipleActivityService.saveModel.OficisProduccioIManteniment =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"conductor_grues\":\r\n this.multipleActivityService.saveModel.ConductorGruesMobilsAutopropulsades =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"altres_oficis\":\r\n this.multipleActivityService.saveModel.AltresOficisNoEspecificatsEnConveni =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"producció\":\r\n this.multipleActivityService.saveModel.OficisProduccioIMantenimentYConductorGruesMobilsAutopropulsades =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"reciclatge_oficis\":\r\n this.multipleActivityService.saveModel.ReciclatgeOficisOficinesIDirectius =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"directivos_10\":\r\n this.multipleActivityService.saveModel.Directius10 =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"administrativos_10\":\r\n this.multipleActivityService.saveModel.Administratius =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"responsables_20\":\r\n this.multipleActivityService.saveModel.ResponsablesObraITècnicsExecució =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"mandos_20\":\r\n this.multipleActivityService.saveModel.ComandamentsIntermedis =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"delegados_50\":\r\n this.multipleActivityService.saveModel.DelegatsDePrevenció =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n\r\n case \"Oficios_20h\":\r\n this.multipleActivityService.saveModel.OficisVintHores =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"Oficinas_6\":\r\n this.multipleActivityService.saveModel.OficisSisHores =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"nivel_básico\":\r\n this.multipleActivityService.saveModel.NivellBàsic =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"administración_6h\":\r\n this.multipleActivityService.saveModel.Administratius10 =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"directivos_10hora\":\r\n this.multipleActivityService.saveModel.Directius10H =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"oficinas_20hora\":\r\n this.multipleActivityService.saveModel.OficisVintHores20 =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"nivel_básico_60hora\":\r\n this.multipleActivityService.saveModel.NivellBàsic60 =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"agentes_químicos\":\r\n this.multipleActivityService.saveModel.ChemicalAgents =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"agentes_biológicos\":\r\n this.multipleActivityService.saveModel.BiologicalAgents =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"sonometría\":\r\n this.multipleActivityService.saveModel.Sonometria =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"dosimetría\":\r\n this.multipleActivityService.saveModel.Dosimetria =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"radiaciones_ionizantes\":\r\n this.multipleActivityService.saveModel.IonizingRadiations =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"campos_electromagnéticos\":\r\n this.multipleActivityService.saveModel.ElectromagneticFields =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"electricidad_estática\":\r\n this.multipleActivityService.saveModel.StaticElectricity =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"estrés_térmico\":\r\n this.multipleActivityService.saveModel.ThermalStress =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"vibraciones\":\r\n this.multipleActivityService.saveModel.Vibrations =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"otros\":\r\n this.multipleActivityService.saveModel.Other =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"manipulación_manual_de_cargas\":\r\n this.multipleActivityService.saveModel.ManipulacioManualDeCargues =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"movimientos_repetitivos\":\r\n this.multipleActivityService.saveModel.MovimentsRepetitius =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"posturas_forzadas\":\r\n this.multipleActivityService.saveModel.PosturesForçades =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"estudi_psicosocial\":\r\n this.multipleActivityService.saveModel.EstudiPsicosocial =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"protocol_assetjament\":\r\n this.multipleActivityService.saveModel.ProtocolAssetjament =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n\r\n case \"pla_digualtat\":\r\n this.multipleActivityService.saveModel.PlaDigualtat =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"emmagatzematge_productes_químics\":\r\n this.multipleActivityService.saveModel.ChemicalStorage =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"document_proteccio_contra_explosions\":\r\n this.multipleActivityService.saveModel.ExplosionProtectionDocument =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"informe_adequacio_maquines\":\r\n this.multipleActivityService.saveModel.MachineryAdequacyReport =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"pla_mobilitat_seguretat_viaria\":\r\n this.multipleActivityService.saveModel.MobilityAndRoadSafetyPlan =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"profesiograma\":\r\n this.multipleActivityService.saveModel.Profesiogram =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n case \"agentes_químicos_text\":\r\n this.multipleActivityService.saveModel.AgentesQuimicosText =\r\n this.stepform6.controls[controlName].value;\r\n\r\n break;\r\n case \"agentes_biológicos_text\":\r\n this.multipleActivityService.saveModel.AgentesBiologicosText =\r\n this.stepform6.controls[controlName].value;\r\n\r\n break;\r\n\r\n case \"otros_text\":\r\n this.multipleActivityService.saveModel.OtrosText =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n\r\n case \"estudi_psicosocial_text\":\r\n this.multipleActivityService.saveModel.EstudiPsicosocialText =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n\r\n case \"protocol_assetjament_text\":\r\n this.multipleActivityService.saveModel.ProtocolAssetjamentText =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n\r\n case \"pla_digualtat_text\":\r\n this.multipleActivityService.saveModel.PlaDigualtatText =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n\r\n case \"emmagatzematge_productes_químics_text\":\r\n this.multipleActivityService.saveModel.EmmagatzematgeProductesQuimicsText =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n\r\n case \"document_proteccio_contra_explosions_text\":\r\n this.multipleActivityService.saveModel.DocumentProteccioContraExplosionsText =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n\r\n case \"informe_adequacio_maquines_text\":\r\n this.multipleActivityService.saveModel.InformeAdequacioMaquinesText =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n\r\n case \"pla_mobilitat_seguretat_viaria_text\":\r\n this.multipleActivityService.saveModel.PlaMobilitatSeguretatViariaText =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n\r\n case \"profesiograma_text\":\r\n this.multipleActivityService.saveModel.ProfesiogramaText =\r\n this.stepform6.controls[controlName].value;\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n\r\n updateFormData2() {\r\n Object.keys(this.stepform7.controls).forEach((controlName) => {\r\n switch (controlName) {\r\n case \"llistat_personal\":\r\n this.multipleActivityService.saveModel.LlistatPersonal =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"llistat_maquinaria\":\r\n this.multipleActivityService.saveModel.LlistatMaquinaria =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"fitxes_dades\":\r\n this.multipleActivityService.saveModel.FitxesDades =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"procediments_instr\":\r\n this.multipleActivityService.saveModel.ProcedimentsInstr =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"declaracio_conformitat\":\r\n this.multipleActivityService.saveModel.DeclaracioConformitat =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"manuals_instr\":\r\n this.multipleActivityService.saveModel.ManualsInstr =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"llibres_registre\":\r\n this.multipleActivityService.saveModel.LlibresRegistre =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"informes_adequacio\":\r\n this.multipleActivityService.saveModel.InformesAdequacio =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"requeriments_inspeccio\":\r\n this.multipleActivityService.saveModel.RequerimentsInspeccio =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"part_accident\":\r\n this.multipleActivityService.saveModel.PartAccident =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"informe_sinistralitat\":\r\n this.multipleActivityService.saveModel.InformeSinistralitat =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"registre_accidents\":\r\n this.multipleActivityService.saveModel.RegistreAccidents =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"documentacio_prevencio\":\r\n this.multipleActivityService.saveModel.DocumentacioPrevencio =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"certificats_formacio\":\r\n this.multipleActivityService.saveModel.CertificatsFormacio =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"estudis_ergonomics\":\r\n this.multipleActivityService.saveModel.EstudisErgonomics =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"estudis_higienics\":\r\n this.multipleActivityService.saveModel.EstudisHigienics =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"estudis_psicosocials\":\r\n this.multipleActivityService.saveModel.EstudisPsicosocials =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"certificat_reo\":\r\n this.multipleActivityService.saveModel.CertificatReo =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"fullet_epis\":\r\n this.multipleActivityService.saveModel.FulletEpis =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n case \"altra_documentacio\":\r\n this.multipleActivityService.saveModel.AltraDocumentacio =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n\r\n case \"manuals_instr_text\":\r\n this.multipleActivityService.saveModel.ManualsInstrText =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n\r\n case \"informe_sinistralitat_text\":\r\n this.multipleActivityService.saveModel.InformeSinistralitatText =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n\r\n case \"registre_accidents1_text\":\r\n this.multipleActivityService.saveModel.RegistreAccidents1Text =\r\n this.stepform7.controls[controlName].value;\r\n break;\r\n\r\n case \"registre_accidents2_text\":\r\n this.multipleActivityService.saveModel.RegistreAccidents2Text =\r\n this.stepform7.controls[controlName].value;\r\n\r\n break;\r\n\r\n case \"altra_documentacio_text\":\r\n this.multipleActivityService.saveModel.AltraDocumentacioText =\r\n this.stepform7.controls[controlName].value;\r\n\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { DropdownService } from 'src/app/services/dropdown.service';\r\nimport { SelectOptions } from 'src/app/models/select-options.model';\r\nimport { ErrorHandlerService } from 'src/app/services/error-handler.service';\r\nimport { Activity } from 'src/app/models/activity.model';\r\nimport { MultipleActivityService } from 'src/app/services/multiple-activity.service';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { SubSink } from 'subsink';\r\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\r\nimport { Constants } from 'src/app/Helpers/constant';\r\n\r\n@Component({\r\n selector: 'app-add-new-activity',\r\n templateUrl: './add-new-activity.component.html',\r\n styleUrls: ['./add-new-activity.component.scss']\r\n})\r\nexport class AddNewActivityComponent implements OnInit {\r\n\r\n @Input() public updatedActivity = new Activity();\r\n @Input() public isUpdate = false;\r\n @Input() public activityArrayIndex = 0;\r\n private subs = new SubSink();\r\n\r\n NewActivityFormGroup: FormGroup;\r\n\r\n activityTypes$: SelectOptions[];\r\n\r\n private typeOfActivitySubject: Subject = new Subject();\r\n\r\n constructor(public addNewActivityModal: NgbActiveModal,\r\n private dropdownService: DropdownService,\r\n private errorHandler: ErrorHandlerService,\r\n private multipleActivityService: MultipleActivityService,\r\n public formBuilder: FormBuilder) { }\r\n\r\n ngOnInit() {\r\n this.InitForm();\r\n\r\n this.subs.add(\r\n this.dropdownService.getActivityTypes('-99', 100, '', true).subscribe(response => {\r\n this.activityTypes$ = this.dropdownService.WrappedToDropDownList(response, 'name', 'activityTypeId', false, true);\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n }\r\n ));\r\n\r\n this.typeOfActivitySubject.pipe(\r\n debounceTime(Constants.DEBOUNCE_TIME),\r\n distinctUntilChanged()\r\n ).subscribe(typeOfActivity => this.loadTopMatchingActivityTypes(typeOfActivity));\r\n\r\n }\r\n\r\n private InitForm() {\r\n this.NewActivityFormGroup = this.formBuilder.group({\r\n ActivityType: [{ value: this.updatedActivity.activityTypeId, label: this.updatedActivity.activityTypeName }, Validators.required],\r\n Description: [this.updatedActivity.description]\r\n });\r\n\r\n if (this.updatedActivity.activityTypeId === undefined) {\r\n this.NewActivityFormGroup.patchValue({\r\n ActivityType: null\r\n });\r\n }\r\n }\r\n\r\n private AddActivity() {\r\n const masterValues = JSON.parse(localStorage.getItem('newactivitymastervalues'));\r\n const activity = this.multipleActivityService.getActivityWithCommonValues();\r\n activity.activityTypeId = this.NewActivityFormGroup.value.ActivityType.value;\r\n activity.activityTypeName = this.NewActivityFormGroup.value.ActivityType.label;\r\n activity.description = this.NewActivityFormGroup.value.Description;\r\n activity.entryDate = new Date();\r\n activity.companyName = masterValues.companyName;\r\n activity.workCentreName = masterValues.workCentreName;\r\n activity.activityTime = 0;\r\n this.multipleActivityService.selectedActivity.push(activity);\r\n this.addNewActivityModal.close();\r\n }\r\n\r\n private UpdateActivity() {\r\n this.updatedActivity.activityTypeId = this.NewActivityFormGroup.value.ActivityType.value;\r\n this.updatedActivity.activityTypeName = this.NewActivityFormGroup.value.ActivityType.label;\r\n this.updatedActivity.description = this.NewActivityFormGroup.value.Description;\r\n this.multipleActivityService.selectedActivity.splice(this.activityArrayIndex, 1, this.updatedActivity);\r\n this.addNewActivityModal.close();\r\n this.isUpdate = false;\r\n }\r\n\r\n OnSave() {\r\n if (this.isUpdate) {\r\n this.UpdateActivity();\r\n } else {\r\n this.AddActivity();\r\n }\r\n }\r\n\r\n deleteActivity() {\r\n this.multipleActivityService.selectedActivity.splice(this.activityArrayIndex, 1);\r\n this.addNewActivityModal.close();\r\n this.isUpdate = false;\r\n }\r\n\r\n //#region \"Limited value loading for main dropdowns \"\r\n // acivity types\r\n loadTopMatchingActivityTypes(activityTypeNameTarget: any) {\r\n // Trigger the loading only if string length is>=4\r\n if (activityTypeNameTarget.length >= 4) { \r\n this.dropdownService.getActivityTypes(activityTypeNameTarget, 100, '', true).subscribe(response => {\r\n this.activityTypes$ = this.dropdownService.WrappedToDropDownList(response, 'name', 'activityTypeId');\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n } else {\r\n this.activityTypes$ = null;\r\n\r\n }\r\n }\r\n\r\n onKeyUpTypeOfActivity(typeOfActivityTarget:any){\r\n if(typeOfActivityTarget.target.value != null){\r\n this.typeOfActivitySubject.next(typeOfActivityTarget.target.value);\r\n }\r\n }\r\n //#endregion\r\n\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { PlanActionModel } from 'src/app/models/multiple.activity.save.model';\r\nimport { ErrorHandlerService } from 'src/app/services/error-handler.service';\r\nimport { MultipleActivityService } from 'src/app/services/multiple-activity.service';\r\nimport Swal from 'sweetalert2';\r\n\r\n@Component({\r\n selector: 'app-add-new-planaction',\r\n templateUrl: './add-new-planaction.component.html',\r\n styleUrls: ['./add-new-planaction.component.scss']\r\n})\r\nexport class AddNewPlanactionComponent implements OnInit {\r\n @Input() public updatedPlanAction = new PlanActionModel();\r\n @Input() public planActionArrayIndex = 0;\r\n @Input() public isUpdate = false;\r\n\r\n NewPlanActionFormGroup: FormGroup;\r\n\r\n constructor(public addNewPlanActionModal: NgbActiveModal,\r\n private multipleActivityService: MultipleActivityService,\r\n private datePipe: DatePipe,\r\n public formBuilder: FormBuilder) { }\r\n\r\n ngOnInit() {\r\n this.InitForm();\r\n }\r\n\r\n private InitForm() {\r\n this.NewPlanActionFormGroup = this.formBuilder.group({\r\n Title: ['', [Validators.required]],\r\n Action: [\"executed\", [Validators.required]],\r\n EstimatedDate: ['', [Validators.required]],\r\n Description: [''],\r\n Cost: [''],\r\n Responsible: [null],\r\n CanMitigateRisk: [null],\r\n CanEliminateRisk: [null],\r\n ActionChekedInVisit: [null]\r\n });\r\n\r\n this.NewPlanActionFormGroup.patchValue({\r\n Title: this.updatedPlanAction.title,\r\n Action: this.updatedPlanAction.action == null ? 'executed' : this.updatedPlanAction.action,\r\n EstimatedDate: this.updatedPlanAction.estimatedDate,\r\n Description: this.updatedPlanAction.description,\r\n Cost: this.updatedPlanAction.cost,\r\n Responsible: this.updatedPlanAction.responsible,\r\n CanMitigateRisk: this.updatedPlanAction.canMitigateRisk == null ? false : this.updatedPlanAction.canMitigateRisk,\r\n CanEliminateRisk: this.updatedPlanAction.canEliminateRisk == null ? false : this.updatedPlanAction.canEliminateRisk,\r\n ActionChekedInVisit: this.updatedPlanAction.actionChekedInVisit == null ? false : this.updatedPlanAction.actionChekedInVisit\r\n });\r\n }\r\n\r\n private AddPlanAction() {\r\n const planAction = this.multipleActivityService.getPlanActionWithCommonValues();\r\n planAction.title = this.NewPlanActionFormGroup.value.Title;\r\n planAction.action = this.NewPlanActionFormGroup.value.Action;\r\n planAction.estimatedDate = this.datePipe.transform(this.NewPlanActionFormGroup.value.EstimatedDate, 'yyyy-MM-dd');\r\n planAction.cost = this.NewPlanActionFormGroup.value.Cost;\r\n planAction.description = this.NewPlanActionFormGroup.value.Description;\r\n planAction.responsible = this.NewPlanActionFormGroup.value.Responsible;\r\n planAction.canMitigateRisk = this.NewPlanActionFormGroup.value.CanMitigateRisk;\r\n planAction.canEliminateRisk = this.NewPlanActionFormGroup.value.CanEliminateRisk;\r\n planAction.actionChekedInVisit = this.NewPlanActionFormGroup.value.ActionChekedInVisit;\r\n this.multipleActivityService.selectedPlanAction.push(planAction);\r\n this.addNewPlanActionModal.close();\r\n }\r\n\r\n private UpdatePlanAction() {\r\n this.updatedPlanAction.title = this.NewPlanActionFormGroup.value.Title;\r\n this.updatedPlanAction.action = this.NewPlanActionFormGroup.value.Action;\r\n this.updatedPlanAction.estimatedDate = this.datePipe.transform(this.NewPlanActionFormGroup.value.EstimatedDate, 'yyyy-MM-dd');\r\n this.updatedPlanAction.description = this.NewPlanActionFormGroup.value.Description;\r\n this.updatedPlanAction.cost = this.NewPlanActionFormGroup.value.Cost;\r\n this.updatedPlanAction.responsible = this.NewPlanActionFormGroup.value.Responsible;\r\n this.updatedPlanAction.canEliminateRisk = this.NewPlanActionFormGroup.value.CanEliminateRisk;\r\n this.updatedPlanAction.canMitigateRisk = this.NewPlanActionFormGroup.value.CanMitigateRisk;\r\n this.updatedPlanAction.actionChekedInVisit = this.NewPlanActionFormGroup.value.ActionChekedInVisit;\r\n this.multipleActivityService.selectedPlanAction.splice(this.planActionArrayIndex, 1, this.updatedPlanAction);\r\n this.addNewPlanActionModal.close();\r\n this.isUpdate = false;\r\n }\r\n\r\n OnPlanActionSave() {\r\n if (this.validatePlanActionForm()) {\r\n if (this.isUpdate) {\r\n this.UpdatePlanAction();\r\n } else {\r\n this.AddPlanAction();\r\n }\r\n }\r\n }\r\n\r\n validatePlanActionForm() {\r\n if (this.NewPlanActionFormGroup.invalid) {\r\n Object.keys(this.NewPlanActionFormGroup.controls).forEach(field => {\r\n const control = this.NewPlanActionFormGroup.get(field);\r\n control.markAsDirty({ onlySelf: true });\r\n control.markAsTouched({ onlySelf: true });\r\n });\r\n return false;\r\n } else {\r\n Object.keys(this.NewPlanActionFormGroup.controls).forEach(field => {\r\n const control = this.NewPlanActionFormGroup.get(field);\r\n control.markAsPristine({ onlySelf: true });\r\n control.markAsUntouched({ onlySelf: true }); \r\n });\r\n return true;\r\n }\r\n }\r\n\r\n deletePlanAction() {\r\n Swal.fire({\r\n title: 'La acción entera se eliminará, y no podrá ser recuperada. Está seguro?',\r\n text: '',\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonText: 'Eliminar',\r\n cancelButtonText: 'Volver'\r\n }).then((result) => {\r\n if (result.value) {\r\n this.multipleActivityService.selectedPlanAction.splice(this.planActionArrayIndex, 1);\r\n this.addNewPlanActionModal.close();\r\n this.isUpdate = false;\r\n }\r\n });\r\n }\r\n\r\n closePlanAction() {\r\n Swal.fire({\r\n title: 'Los cambios no se guardarán, desea continuar',\r\n text: '',\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonText: 'Salir sin guardar',\r\n cancelButtonText: 'Volver'\r\n }).then((result) => {\r\n if (result.value) {\r\n this.addNewPlanActionModal.close();\r\n this.isUpdate = false;\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n ViewChild,\r\n} from \"@angular/core\";\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n Validators,\r\n} from \"@angular/forms\";\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { DropdownService } from \"src/app/services/dropdown.service\";\r\nimport { ErrorHandlerService } from \"src/app/services/error-handler.service\";\r\nimport { MasterDataService } from \"src/app/services/master-data.service\";\r\nimport { WizardComponent } from \"angular2-wizard\";\r\nimport { ParteDeVisitaState } from \"src/app/models/Enum/ParteDeVisitaState\";\r\nimport { GeneratePdfService } from \"src/app/services/common/generate-pdf.service\";\r\nimport { SelectOptions } from \"src/app/models/select-options.model\";\r\nimport { ActiveContract } from \"src/app/models/active-contracts\";\r\nimport { switchMap } from \"rxjs/operators\";\r\nimport { Instance, NgTippyService, Options } from \"angular-tippy\";\r\nimport {\r\n ProgramacionAnualActions,\r\n ProgramacionAnualRegisters,\r\n ProgramacionData,\r\n ProgramacionDataInsert,\r\n} from \"src/app/models/Programacion\";\r\nimport { MemoriaAnualService } from \"src/app/services/common/memoria-anual.service\";\r\nimport moment from \"moment\";\r\n\r\n@Component({\r\n selector: \"app-annual-shipping-micro-sme\",\r\n templateUrl: \"./annual-shipping-micro-sme.component.html\",\r\n styleUrls: [\"./annual-shipping-micro-sme.component.scss\"],\r\n})\r\nexport class AnnualShippingMicroSMEComponent implements OnInit, AfterViewInit {\r\n public shippingSmeForm2: FormGroup;\r\n activityTypes$: SelectOptions[];\r\n @Input() public selectedActivity;\r\n contracts = [\r\n { id: 1, name: 'abc-abc' }\r\n ];\r\n disableSendButton: boolean = true;\r\n\r\n visitsList = [\r\n { id: 0 },\r\n { id: 1 },\r\n { id: 2 },\r\n { id: 3 },\r\n { id: 4 },\r\n { id: 5 },\r\n { id: 6 },\r\n { id: 7 },\r\n { id: 8 },\r\n { id: 9 },\r\n { id: 10 },\r\n { id: 11 },\r\n { id: 12 }\r\n ];\r\n\r\n period: any = [];\r\n\r\n selectedValue: string;\r\n public ActivityTypeForm = new FormGroup({\r\n ActivityType: new FormControl(null, Validators.required),\r\n });\r\n userEmailAddress = \"\";\r\n emailAddresses = [];\r\n public emailValidators = [Validators.email];\r\n public emailPlaceholder =\r\n \"ingrese la (s) dirección (s) de correo electrónico\";\r\n public emailAddMoreText = \"\";\r\n public selectedCompanyLanguage = \"es\";\r\n public selectedFirstYear = \"sí\";\r\n min: any;\r\n max: any = 45;\r\n public contractDate = \"\";\r\n tableData: any[] = [];\r\n date = new Date();\r\n tooltipString: string;\r\n infoTooltipConfig: Options;\r\n newInsertProgramacionAnual: ProgramacionData[];\r\n programacionIds = [];\r\n lastGenId: number;\r\n actuacionTypes: any;\r\n isPeriodDisabled: boolean = false;\r\n activityRequest = {\r\n page_number: 0,\r\n page_size: 100,\r\n incl: \"-99\"\r\n }\r\n userDetailsId: any;\r\n\r\n @ViewChild(\"tippyelement\") tippyElement: ElementRef;\r\n\r\n private tippyInstance: Instance;\r\n\r\n getFormattedDate2(date1) {\r\n let year = date1.getFullYear();\r\n let month = (1 + date1.getMonth()).toString().padStart(2, \"0\");\r\n let day = date1.getDate().toString().padStart(2, \"0\");\r\n return day + \"/\" + month + \"/\" + year;\r\n }\r\n\r\n getFormattedDateReturn(date1) {\r\n let year = date1.getFullYear();\r\n let month = (1 + date1.getMonth()).toString().padStart(2, \"0\");\r\n let day = date1.getDate().toString().padStart(2, \"0\");\r\n\r\n return year + \"-\" + month + \"-\" + day;\r\n }\r\n\r\n @Input() public addEditActivityForm = new FormGroup({\r\n ActivtyTypeName: new FormControl(null),\r\n });\r\n\r\n @ViewChild(\"wizardComponent\") wizardComponent: WizardComponent;\r\n\r\n public ParteDeVisitaStates = ParteDeVisitaState;\r\n public SelectedParteDeVisitaState: ParteDeVisitaState;\r\n\r\n public IsValidated = false;\r\n\r\n public sortedActiveContracts: ActiveContract[] = [];\r\n testx: string = \"dd\";\r\n constructor(\r\n public shippingSmeModal: NgbActiveModal,\r\n private formBuilder: FormBuilder,\r\n private dropdownService: DropdownService,\r\n private errorHandler: ErrorHandlerService,\r\n private masterDataService: MasterDataService,\r\n private memoriaAnualService: MemoriaAnualService,\r\n private toastrService: ToastrService,\r\n private spinner: NgxSpinnerService,\r\n private generatePdfService: GeneratePdfService,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private tippyService: NgTippyService,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n this.changeDetectionShippingSmeForm();\r\n }\r\n\r\n async ngOnInit(): Promise {\r\n this.generatePdfService.shareData = this.selectedActivity;\r\n this.activityRequest.page_number = 0;\r\n await this.getAllContacts();\r\n this.changeWizardText();\r\n //this.getToolTipData();\r\n this.InitFormWizard3();\r\n this.initializeForm();\r\n this.setEmailContent();\r\n this.IsValidated =\r\n this.SelectedParteDeVisitaState === this.ParteDeVisitaStates.Validated;\r\n this.initDropdowns(); \r\n this.setShippingModelValues();\r\n this.changeDetectionShippingSmeForm();\r\n\r\n const workCenterId = this.selectedActivity.WorkCentreId;\r\n\r\n this.dropdownService.getContactEmailAddress(workCenterId).subscribe(response => {\r\n if (response.length > 0) {\r\n response.forEach(element => {\r\n const emailObj = { display: element, value: element }\r\n this.emailAddresses.push(emailObj);\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n changeDetectionShippingSmeForm() {\r\n this.shippingSmeForm.get(\"TemplateLanguage\").valueChanges.subscribe((x) => {\r\n this.initDropdowns();\r\n });\r\n }\r\n\r\n setlang(event) {\r\n this.shippingSmeForm.patchValue({\r\n TemplateLanguage: event.target.value,\r\n });\r\n this.setShippingModelValues();\r\n }\r\n\r\n onStep1Next() {\r\n if (this.contracts.length === 0) {\r\n return;\r\n }\r\n this.emailAddresses\r\n this.min = this.shippingSmeForm?.value?.Inicio;\r\n this.getTableData();\r\n this.setEmailContentAnual();\r\n this.selectedCompanyLanguage = this.shippingSmeForm.value.TemplateLanguage; \r\n }\r\n\r\n removegridData() {\r\n // this.tableData.sort((a: any, b: any) => {\r\n // return new Date(a.date) - new Date(b.date);\r\n // });\r\n if (this.shippingSmeForm.value.PrimerAño == \"sí\") {\r\n let i = this.tableData.findIndex((x) => x.es === \"Visita de Seguimiento\");\r\n\r\n if(i > 0){\r\n this.tableData.splice(i, 1);\r\n } \r\n i = this.tableData.findIndex((x) => x.es === \"Simulacro de Emergencias\");\r\n if (i > 0) {\r\n this.tableData.splice(i, 1);\r\n }\r\n } else {\r\n let i = this.tableData.findIndex((x) => x.ca === \"Visita Inicial de Presa de Dades\");\r\n if (i > 0) {\r\n this.tableData.splice(i, 1);\r\n }\r\n i = this.tableData.findIndex((x) => x.ca === \"Manual de Prevenció\");\r\n if (i > 0) {\r\n this.tableData.splice(i, 1);\r\n }\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.IsValidated) {\r\n this.setParteDeVisitaState();\r\n }\r\n }\r\n\r\n removeData(index) {\r\n this.tableData = this.tableData.filter((v, i) => i != index);\r\n }\r\n\r\n dateChange(i, e) {\r\n this.tableData = this.tableData.map((obj, index) =>\r\n index === i ? { ...obj, date: e.toISOString() } : obj\r\n );\r\n }\r\n\r\n onDuration(i, e) {\r\n if (e <= 365 && e > 0) {\r\n this.tableData = this.tableData.map((obj, index) =>\r\n index === i ? { ...obj, duration: e } : obj\r\n );\r\n } else {\r\n this.tableData = this.tableData.map((obj, index) =>\r\n index === i ? { ...obj, duration: null } : obj);\r\n }\r\n }\r\n\r\n getToolTipData() {\r\n this.dropdownService.getWorkCentreDetails(this.selectedActivity.WorkCentreId).pipe(\r\n switchMap((response: any) => {\r\n return this.dropdownService.GetActiveContractsByCentroCode(response.codigoCentro);\r\n })).subscribe((res: any) => {\r\n if (res.length > 0) {\r\n let formattedDatesArray = res.map((obj) => {\r\n return {\r\n ...obj,\r\n dateBeginContract: this.getFormattedDateReturn(\r\n new Date(obj.dateBeginContract)\r\n ),\r\n dateEndContract: this.getFormattedDateReturn(\r\n new Date(obj.dateEndContract)\r\n ),\r\n dateFirstContact: this.getFormattedDateReturn(\r\n new Date(obj.dateFirstContact)\r\n ),\r\n };\r\n });\r\n formattedDatesArray = formattedDatesArray.map((obj) => {\r\n return {\r\n ...obj,\r\n dateBeginContract: new Date(obj.dateBeginContract),\r\n dateEndContract: new Date(obj.dateEndContract),\r\n dateFirstContact: new Date(obj.dateFirstContact),\r\n };\r\n });\r\n formattedDatesArray = formattedDatesArray.sort(\r\n (a, b) => Number(b.dateBeginContract) - Number(a.dateBeginContract)\r\n );\r\n var dateFirst = formattedDatesArray[0].dateEndContract;\r\n var dateBegin = formattedDatesArray[0].dateBeginContract;\r\n\r\n this.min = this.getFormattedDate2(new Date(dateFirst));\r\n this.max = this.getFormattedDate2(new Date(dateBegin));\r\n const contractDate = this.contracts[0]?.name?.split('-');\r\n this.contractDate = contractDate[0]?? '';\r\n this.date = new Date(dateFirst);\r\n\r\n this.sortedActiveContracts = formattedDatesArray.map((obj) => {\r\n return {\r\n ...obj,\r\n dateBeginContract: this.getFormattedDate2(obj.dateBeginContract),\r\n dateEndContract: this.getFormattedDate2(obj.dateEndContract),\r\n dateFirstContact: this.getFormattedDate2(obj.dateFirstContact),\r\n };\r\n });\r\n const { Inicio, Fin } = this.shippingSmeForm.value;\r\n const initialContract = { dateBeginContract: Inicio, dateEndContract: Fin };\r\n\r\n if (this.sortedActiveContracts.length > 0) {\r\n const topContract = this.sortedActiveContracts[0];\r\n \r\n const isContractDifferent = Inicio !== topContract.dateBeginContract || Fin !== topContract.dateEndContract;\r\n \r\n localStorage.setItem(\"topContracts\", JSON.stringify(isContractDifferent ? initialContract : topContract));\r\n } else {\r\n localStorage.setItem(\"topContracts\", JSON.stringify(null));\r\n }\r\n }\r\n else {\r\n this.min = '01/01/' + new Date().getFullYear();\r\n this.max = '01/01/' + new Date().getFullYear();\r\n this.contractDate = this.max;\r\n this.date = new Date();\r\n }\r\n\r\n if (this.sortedActiveContracts.length > 0) {\r\n var newActiveContracts = this.sortedActiveContracts.filter(function (el) {\r\n return el.especialidades_Preven.includes('S') ||\r\n el.especialidades_Preven.includes('H') ||\r\n el.especialidades_Preven.includes('P')\r\n });\r\n if (newActiveContracts.length > 1) {\r\n this.shippingSmeForm.get(\"PrimerAño\").setValue(\"no\");\r\n }\r\n else { // 0 , 1, null\r\n this.shippingSmeForm.get(\"PrimerAño\").setValue(\"sí\");\r\n }\r\n } else { // 0 , 1, null\r\n this.shippingSmeForm.get(\"PrimerAño\").setValue(\"sí\");\r\n }\r\n\r\n this.tooltipString =\r\n \"
\" +\r\n \"\" +\r\n \"\";\r\n this.tooltipString +=\r\n this.min + \"\" + \"
\" + \"\" + \"\";\r\n this.sortedActiveContracts.forEach((element) => {\r\n this.tooltipString += \"\";\r\n this.tooltipString += \"\";\r\n this.tooltipString += \"\";\r\n this.tooltipString +=\r\n \"\";\r\n this.tooltipString += \"\";\r\n this.tooltipString += \"\";\r\n });\r\n this.tooltipString += \"
\" + element.dateBeginContract + \"\" + element.dateEndContract + \"\" + element.especialidades_Preven + \"\" + element.especialidad_VS + \"
\";\r\n\r\n document.getElementById(\"tooltipContent\").innerHTML =\r\n this.tooltipString;\r\n this.setToolTipoption();\r\n });\r\n }\r\n\r\n async DownloadHtmlReport(ids): Promise {\r\n this.generatePdfService.convertHtmlToPdf(ids);\r\n }\r\n\r\n initDropdowns(incl: string = \"-99\", isScroll = false) {\r\n \r\n this.activityRequest.incl = incl ? incl : null;\r\n this.activityRequest.page_number = isScroll ? (this.activityRequest.page_number + 1) : 0;\r\n\r\n this.dropdownService.getActivityTypes(this.activityRequest.incl , 100, this.addEditActivityForm.value.ActivityTypeId , false, false, this.activityRequest.page_number).subscribe((response) => {\r\n this.actuacionTypes = response;\r\n\r\n if (isScroll) {\r\n this.activityTypes$ = this.activityTypes$.concat(this.dropdownService.WrappedToDropDownListWithLang(this.shippingSmeForm.get(\"TemplateLanguage\").value,\r\n response,\r\n \"name\",\r\n \"nameCatala\",\r\n \"activityTypeId\"\r\n ));\r\n } else {\r\n this.activityTypes$ = this.dropdownService.WrappedToDropDownListWithLang(this.shippingSmeForm.get(\"TemplateLanguage\").value,\r\n response,\r\n \"name\",\r\n \"nameCatala\",\r\n \"activityTypeId\"\r\n );\r\n }\r\n });\r\n } \r\n\r\n onScrollActivity() { \r\n this.initDropdowns(\"-99\",true);\r\n }\r\n\r\n onChangeActivity() {\r\n this.activityRequest.page_number = 0;\r\n }\r\n\r\n onKeyUpTypeOfActivity(activityName) {\r\n let name = activityName.target.value;\r\n this.activityRequest.page_number = 0;\r\n if (name && name.length >= 4) { \r\n this.initDropdowns(name ,false);\r\n } else {\r\n if (name.length == 0) {\r\n this.initDropdowns(\"-99\",false);\r\n }\r\n } \r\n }\r\n\r\n onCloseActivity() {\r\n this.ActivityTypeForm.controls.ActivityType.setValue(null);\r\n }\r\n\r\n\r\n addToArray() {\r\n let customeId = this.programacionIds[this.programacionIds.length - 1];\r\n customeId = Number(customeId + 1);\r\n this.newInsertProgramacionAnual = [];\r\n const actuacionType = this.actuacionTypes.filter((obj) => {\r\n return obj.activityTypeId === this.ActivityTypeForm.value.ActivityType.value;\r\n });\r\n if (this.shippingSmeForm.get(\"TemplateLanguage\").value === \"es\") {\r\n this.tableData = [\r\n ...this.tableData,\r\n {\r\n id: customeId,\r\n ca: actuacionType[0].nameCatala,\r\n es: this.ActivityTypeForm.value.ActivityType.label,\r\n date: \"\",\r\n duration: \"\",\r\n equation: 0,\r\n },\r\n ];\r\n\r\n this.newInsertProgramacionAnual.push({\r\n id: customeId,\r\n ca: actuacionType[0].nameCatala,\r\n es: this.ActivityTypeForm.value.ActivityType.label,\r\n date: \"\",\r\n duration: \"\",\r\n equation: 0,\r\n });\r\n } else {\r\n this.tableData = [\r\n ...this.tableData,\r\n {\r\n id: customeId,\r\n ca: this.ActivityTypeForm.value.ActivityType.label,\r\n es: actuacionType[0].name,\r\n date: \"\",\r\n duration: \"\",\r\n equation: 0,\r\n },\r\n ];\r\n\r\n this.newInsertProgramacionAnual.push({\r\n id: customeId,\r\n ca: this.ActivityTypeForm.value.ActivityType.label,\r\n es: actuacionType[0].name,\r\n date: \"\",\r\n duration: \"\",\r\n equation: 0,\r\n });\r\n }\r\n }\r\n\r\n private setParteDeVisitaState(): void {\r\n this.shippingSmeForm2.disable();\r\n this.shippingSmeForm3.disable();\r\n\r\n this.wizardComponent.steps.forEach((v, i) => {\r\n v.isActive = false;\r\n v.isValid = true;\r\n v.isDisabled = false;\r\n });\r\n\r\n const step =\r\n this.wizardComponent.steps[this.wizardComponent.steps.length - 1];\r\n step.isActive = true;\r\n step.isValid = false;\r\n\r\n this.wizardComponent.goToStep(step);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n shippingSmeForm = new FormGroup({\r\n TemplateLanguage: new FormControl(\r\n this.selectedCompanyLanguage,\r\n Validators.required\r\n ),\r\n PrimerAño: new FormControl(this.selectedFirstYear, Validators.required),\r\n visits: new FormControl(),\r\n DateRange: new FormControl(),\r\n Inicio: new FormControl(),\r\n Fin: new FormControl(),\r\n });\r\n\r\n shippingSmeForm3 = new FormGroup({\r\n TemplateLanguage: new FormControl(\r\n this.selectedCompanyLanguage,\r\n Validators.required\r\n ),\r\n ContactEmail: new FormControl(\r\n this.selectedCompanyLanguage,\r\n Validators.required\r\n ),\r\n EmailSubject: new FormControl(this.selectedFirstYear, Validators.required),\r\n EmailBody: new FormControl(\"1\"),\r\n });\r\n\r\n InitFormWizard3() {\r\n this.shippingSmeForm3 = this.formBuilder.group({\r\n EmailSubject: [\"\", Validators.required],\r\n EmailBody: [\"\", Validators.required],\r\n ContactEmail: [null],\r\n });\r\n }\r\n\r\n initializeForm(): void {\r\n const loggedUserId = JSON.parse(localStorage.getItem(\"loggeduser\")).id;\r\n this.dropdownService.getUserEmailAddress(loggedUserId).subscribe(\r\n (response) => {\r\n this.userEmailAddress = response.userEmail ? response.userEmail : \"\";\r\n if (this.userEmailAddress) {\r\n const emailObj = {\r\n display: this.userEmailAddress,\r\n value: this.userEmailAddress,\r\n };\r\n this.emailAddresses.push(emailObj);\r\n }\r\n },\r\n (error) => {\r\n this.errorHandler.handle(error);\r\n }\r\n );\r\n }\r\n\r\n public downloadAttachment(): void {\r\n this.spinner.show();\r\n this.setShippingModelValues();\r\n this.masterDataService\r\n .getShippingActivityAttachment(this.selectedActivity)\r\n .subscribe(\r\n (response) => {\r\n const linkSource =\r\n \"data:application/pdf;base64,\" + response.base64String + \"\\n\";\r\n const downloadLink = document.createElement(\"a\");\r\n const fileName = response.fileName;\r\n downloadLink.href = linkSource;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n this.spinner.hide();\r\n },\r\n (error) => {\r\n this.spinner.hide();\r\n this.errorHandler.handle(error);\r\n this.toastrService.error(\r\n \"No se pudo descargar el archivo adjunto\",\r\n \"Error\"\r\n );\r\n }\r\n );\r\n }\r\n\r\n public async sendShippingSmeEmail(ids): Promise {\r\n // if(this.disableSendButton){\r\n \r\n // this.toastrService.error('Opción deshabilitada temporalmente: descarga y revisa el PDF y envíalo manualmente, una vez comprobado.');\r\n // return;\r\n // }\r\n if (this.shippingSmeForm3.valid && this.emailAddresses.length > 0) {\r\n this.spinner.show();\r\n \r\n try {\r\n\r\n await this.generatePdfService.convertHtmlToPdf(ids, true);\r\n \r\n // Set the shipping model values\r\n this.setShippingModelValues();\r\n \r\n // Send the email\r\n const response = await this.masterDataService\r\n .sendMeShiipingSmeEmail(this.selectedActivity)\r\n .toPromise(); // Convert the observable to a promise for async/await compatibility\r\n \r\n this.spinner.hide();\r\n this.shippingSmeModal.close();\r\n this.toastrService.success(\r\n \"El correo electrónico se ha enviado correctamente a las direcciones de correo electrónico proporcionadas.\",\r\n \"Éxito\"\r\n );\r\n } catch (error) {\r\n this.spinner.hide();\r\n this.errorHandler.handle(error);\r\n this.toastrService.error(\r\n \"No se pudo enviar el correo electrónico\",\r\n \"Error\"\r\n );\r\n }\r\n \r\n // Save data\r\n this.addprogramacionAnualRegisters();\r\n this.addProgramacionAnualActions();\r\n } else {\r\n this.toastrService.warning(\r\n \"Ingrese detalles válidos para continuar\",\r\n \"Advertencia\"\r\n );\r\n }\r\n }\r\n\r\n private setShippingModelValues(): void {\r\n if (this.shippingSmeForm.value.TemplateLanguage === \"es\") {\r\n this.selectedCompanyLanguage = \"es\";\r\n this.selectedActivity.EmailSubject =\r\n \"[GESEME] Programación anual de la actividad preventiva\";\r\n this.selectedActivity.EmailBody =\r\n `Estimado/a cliente. \\n\\n` +\r\n `Adjunto le remito la “Programación anual de la actividad preventiva” que recoge las actuaciones a llevar ` +\r\n `a cabo por GESEME en su empresa, a lo largo del presente período contractual. \\n\\n` +\r\n `Atentamente,`;\r\n } else {\r\n this.selectedCompanyLanguage = \"ca\";\r\n this.selectedActivity.EmailSubject =\r\n \"[GESEME] Programació anual de l’activitat preventiva\";\r\n this.selectedActivity.EmailBody =\r\n `Benvolgut/da client, \\n\\n` +\r\n `Li adjuntem la “Programació anual de l'activitat preventiva” ` +\r\n `que recull les actuacions a dur a terme per GESEME en la seva empresa, al llarg del present període contractual. \\n\\n` +\r\n `Atentament,`;\r\n }\r\n this.setEmailContent();\r\n this.selectedActivity.RecipientEmail = this.emailAddresses.map(\r\n (item) => item.display\r\n );\r\n this.selectedActivity.EmailSubject =\r\n this.shippingSmeForm3.value.EmailSubject;\r\n this.selectedActivity.EmailBody = this.shippingSmeForm3.value.EmailBody;\r\n this.selectedActivity.TemplateLanguage =\r\n this.shippingSmeForm3.value.TemplateLanguage;\r\n this.selectedActivity.base64String = this.generatePdfService.base64String;\r\n this.selectedActivity.filePath = localStorage.getItem(\"filename\");\r\n }\r\n\r\n changeWizardText(isFirma = false): void {\r\n const modalElement = document.getElementById(\"modal-annual-report-1\");\r\n const footer = modalElement.getElementsByClassName(\"card-footer\")[0];\r\n const footerBtns = footer.getElementsByClassName(\"btn\");\r\n\r\n for (let index = 0; index < footerBtns.length; index++) {\r\n footerBtns[index].classList.add(\"wizard-buttons\");\r\n if (footerBtns[index].innerHTML === \"Previous\") {\r\n footerBtns[index].innerHTML = \"Anterior\";\r\n } else if (footerBtns[index].innerHTML === \"Next\") {\r\n footerBtns[index].innerHTML = \"Siguiente\";\r\n } else if (footerBtns[index].innerHTML === \"Done\") {\r\n const doneBtn = footerBtns[index] as HTMLElement | null;\r\n if (doneBtn != null) {\r\n doneBtn.style.display = \"none\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n setEmailContent(): void {\r\n let emailSubject = \"\";\r\n let emailBody = \"\";\r\n if (this.shippingSmeForm.value.TemplateLanguage === \"es\") {\r\n this.selectedCompanyLanguage = \"es\";\r\n emailSubject = \"[GESEME] Programación anual de la actividad preventiva\";\r\n emailBody =\r\n `Estimado/a cliente. \\n\\n` +\r\n `Adjunto le remito la “Programación anual de la actividad preventiva” que recoge las actuaciones a llevar ` +\r\n `a cabo por GESEME en su empresa, a lo largo del presente período contractual. \\n\\n` +\r\n `Atentamente,`;\r\n } else {\r\n this.selectedCompanyLanguage = \"ca\";\r\n emailSubject = \"[GESEME] Programació anual de l’activitat preventiva\";\r\n emailBody =\r\n `Benvolgut/da client, \\n\\n` +\r\n `Li adjuntem la “Programació anual de l'activitat preventiva” ` +\r\n `que recull les actuacions a dur a terme per GESEME en la seva empresa, al llarg del present període contractual. \\n\\n` +\r\n `Atentament,`;\r\n }\r\n this.shippingSmeForm.patchValue({\r\n EmailSubject: emailSubject,\r\n EmailBody: emailBody,\r\n });\r\n }\r\n\r\n //This method email content will be changed when client gave the real content.\r\n setEmailContentAnual(): void {\r\n let emailSubject = \"\";\r\n let emailBody = \"\";\r\n if (this.shippingSmeForm.value.TemplateLanguage === \"es\") {\r\n this.selectedCompanyLanguage = \"es\";\r\n emailSubject = \"[GESEME] Programación anual de la actividad preventiva\";\r\n emailBody =\r\n `Estimado/a cliente. \\n\\n` +\r\n `Adjunto le remito la “Programación anual de la actividad preventiva” que recoge las actuaciones a llevar ` +\r\n `a cabo por GESEME en su empresa, a lo largo del presente período contractual. \\n\\n` +\r\n `Atentamente,`;\r\n } else {\r\n this.selectedCompanyLanguage = \"ca\";\r\n emailSubject = \"[GESEME] Programació anual de l’activitat preventiva\";\r\n emailBody =\r\n `Benvolgut/da client, \\n\\n` +\r\n `Li adjuntem la “Programació anual de l'activitat preventiva” ` +\r\n `que recull les actuacions a dur a terme per GESEME en la seva empresa, al llarg del present període contractual. \\n\\n` +\r\n `Atentament,`;\r\n }\r\n this.shippingSmeForm3.patchValue({\r\n EmailSubject: emailSubject,\r\n EmailBody: emailBody,\r\n ContactEmail: this.emailAddresses,\r\n });\r\n }\r\n\r\n setToolTipoption() {\r\n this.infoTooltipConfig = {\r\n content: this.tooltipString,\r\n allowHTML: true,\r\n theme: \"info-tippy\",\r\n trigger: \"click\",\r\n placement: \"right\",\r\n arrow: true,\r\n };\r\n this.tippyInstance = this.tippyService.init(\r\n this.tippyElement,\r\n this.infoTooltipConfig\r\n );\r\n }\r\n\r\n getTableData() {\r\n let filterData: any[];\r\n this.masterDataService.getProgramacionAnualDefaultActions().subscribe((res) => {\r\n if (res) {\r\n let dT: ProgramacionData[] = [];\r\n if (this.shippingSmeForm.value.PrimerAño == \"sí\") {\r\n filterData = res.filter(x => x.isFirstYear == true);\r\n }\r\n else {\r\n filterData = res.filter(x => x.isFirstYear == false);\r\n }\r\n\r\n filterData.forEach((item) => {\r\n this.programacionIds.push(item.id);\r\n dT.push({\r\n id: item.id,\r\n ca: item.titleCatalan,\r\n es: item.titleSpanish,\r\n date: this.calculateBeginDate(item.dateBegin).toString(),\r\n duration: item.duration,\r\n equation: 0,\r\n });\r\n });\r\n this.tableData = dT;\r\n }\r\n },\r\n err => console.error('Observer got an error: ' + err),\r\n () => {\r\n this.repeatVisitasSeguimiento();\r\n });\r\n }\r\n\r\n calculateBeginDate(Datebegin: number) {\r\n const trimmedMax = this.min.trim();\r\n const datePattern = /^(\\d{2})\\/(\\d{2})\\/(\\d{4})$/;\r\n const match = trimmedMax.match(datePattern);\r\n \r\n if (!match) {\r\n throw new Error(\"Invalid date format\");\r\n }\r\n \r\n const day = match[1];\r\n const month = match[2];\r\n const year = match[3];\r\n const formatDate = `${year}-${month}-${day}`;\r\n \r\n const newDate = new Date(formatDate);\r\n \r\n if (isNaN(newDate.getTime())) {\r\n throw new Error(\"Invalid date\");\r\n }\r\n newDate.setDate(newDate.getDate() + Datebegin);\r\n return newDate.toISOString();\r\n }\r\n\r\n repeatVisitasSeguimiento() {\r\n var tableCount = this.tableData.filter(x => x.ca == \"Visita de Seguiment\").length;\r\n \r\n for (let i = 0; i < tableCount; i++) {\r\n let index = this.tableData.findIndex(x => x.ca == \"Visita de Seguiment\");\r\n this.tableData.splice(index,1);\r\n } \r\n\r\n let visits = Number(this.shippingSmeForm.value.visits);\r\n if(this.shippingSmeForm.value.PrimerAño == \"sí\"){\r\n visits += 1\r\n }\r\n let visitaDate = this.shippingSmeForm.controls.Inicio.value;\r\n if (visitaDate != null) {\r\n let formatDate = visitaDate.substring(6, 10) + \"-\" + visitaDate.substring(3, 5) + \"-\" + visitaDate.substring(0, 2);\r\n let newDate = new Date(formatDate);\r\n \r\n if (visits > 0) {\r\n let period = 365 / visits;\r\n for (let i = 0; i < visits; i++) {\r\n if (i != 0) {\r\n newDate.setDate(newDate.getDate() + period);\r\n visitaDate = newDate;\r\n }\r\n \r\n this.tableData.push({\r\n ca: \"Visita de Seguiment\",\r\n es: \"Visita de Seguimiento\",\r\n date: this.getFormattedDateReturn(newDate),\r\n duration: \"30\",\r\n equation: 0,\r\n id: 0,\r\n });\r\n }\r\n }\r\n } \r\n\r\n this.handlePrimerAnoCondition();\r\n const reverseArray = this.tableData.reverse();\r\n this.tableData = reverseArray;\r\n this.removegridData();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private handlePrimerAnoCondition() {\r\n if (this.shippingSmeForm.value.PrimerAño === \"sí\") {\r\n let visitdataList = this.tableData.filter(item => item.ca === 'Visita de Seguiment');\r\n \r\n // Find the record with the lowest date\r\n let minDateRecord = visitdataList.reduce((min, current) => \r\n new Date(min.date) < new Date(current.date) ? min : current\r\n );\r\n\r\n // Remove the record with the lowest date\r\n visitdataList = visitdataList.filter(item => item !== minDateRecord);\r\n\r\n this.tableData = this.tableData.filter(record => record.ca !== 'Visita de Seguiment');\r\n visitdataList.forEach(item => this.tableData.push(item));\r\n }\r\n}\r\n\r\n //add new programacion register\r\n addProgramacionAnualActions() {\r\n let allProgramacions = [...this.tableData, this.newInsertProgramacionAnual];\r\n let data: ProgramacionAnualActions[] = [];\r\n\r\n allProgramacions.forEach((res) => {\r\n if (res) {\r\n data.push({\r\n ProgramacionId: res.id == undefined ? 0 : res.id,\r\n ActionId: this.selectedActivity.ActivityId,\r\n Datebegin: new Date(res.date),\r\n Duration: res.duration,\r\n GenerationDate: new Date(),\r\n TitleSpanish: res.es,\r\n TitleCatalan: res.ca,\r\n });\r\n }\r\n });\r\n this.masterDataService\r\n .saveProgramacionAnualActions(data)\r\n .subscribe((res) => {\r\n console.log(res);\r\n });\r\n }\r\n \r\n //add new programacion actions\r\n addprogramacionAnualRegisters() {\r\n let data: ProgramacionAnualRegisters = {\r\n ProgramacionIds: this.programacionIds.toString(),\r\n ActionId: this.selectedActivity.ActivityId,\r\n CompanyId: this.selectedActivity.CompanyId,\r\n UserId: this.selectedActivity.UserId,\r\n EmailSent: this.shippingSmeForm3.value.EmailBody,\r\n Emailcc: this.emailAddresses.toString(),\r\n EmailTo: this.emailAddresses.toString(),\r\n };\r\n this.masterDataService\r\n .saveProgramacionAnualRegisters(data)\r\n .subscribe((res) => {\r\n console.log(res);\r\n });\r\n }\r\n\r\n async getAllContacts() {\r\n this.contracts = [];\r\n var obj = {\r\n codigo_centro: this.selectedActivity.codigoCentro,\r\n id_actuaciontipo: this.selectedActivity.ActivityTypeId,\r\n incluye_prevencion: true,\r\n incluye_vigilancia: false\r\n }\r\n localStorage.setItem('codigoCentro', this.selectedActivity.codigoCentro);\r\n if(this.selectedActivity.ActivtyTypeName.toLowerCase().includes(\"programación anual\") &&\r\n ((this.selectedActivity.ActivtyTypeName.toLowerCase().includes(\"envío\") && \r\n this.selectedActivity.ActivtyTypeName.toLowerCase().includes(\"entrega\"))\r\n || this.selectedActivity.ActivtyTypeName.toLowerCase().includes(\"elaboración\")))\r\n {\r\n this.memoriaAnualService.getAllContracts(obj).subscribe(res => {\r\n if (res.webError != null) {\r\n this.spinner.hide();\r\n this.errorHandler.handle(res.webError.messageToUser, true);\r\n }\r\n else if (res.data.length > 0) {\r\n \r\n if(this.selectedActivity.ActivtyTypeName.toLowerCase().includes(\"envío\") &&\r\n this.selectedActivity.ActivtyTypeName.toLowerCase().includes(\"entrega\"))\r\n {\r\n var currentContract = res;\r\n {\r\n this.shippingSmeForm.patchValue({\r\n DateRange: Number(currentContract.data[0].docEntry),\r\n Inicio: moment(new Date(currentContract.data[0].dateBeginContract)).format('DD/MM/yyyy'),\r\n Fin: moment(new Date(currentContract.data[0].dateEndContract)).format('DD/MM/yyyy')\r\n });\r\n \r\n currentContract.data.forEach((item) =>{\r\n let obj = {\r\n id: item.docEntry,\r\n name: moment(new Date(item.dateBeginContract)).format('DD/MM/yyyy') + ' - ' + moment(new Date(item.dateEndContract)).format('DD/MM/yyyy')\r\n }\r\n this.period.push(obj);\r\n });\r\n this.contracts = this.period;\r\n const contractDate = this.contracts[0]?.name?.split('-');\r\n this.contractDate = contractDate[0]?? '';\r\n }\r\n }\r\n else if (this.selectedActivity.ActivtyTypeName.toLowerCase().includes(\"elaboración\")){\r\n var closedContracts = res\r\n if(closedContracts.data.length > 0)\r\n {\r\n \r\n this.shippingSmeForm.patchValue({\r\n DateRange: Number(closedContracts.data[0].docEntry),\r\n Inicio: moment(new Date(closedContracts.data[0].dateBeginContract)).format('DD/MM/yyyy'),\r\n Fin: moment(new Date(closedContracts.data[0].dateEndContract)).format('DD/MM/yyyy')\r\n });\r\n \r\n closedContracts.data.forEach(element => { \r\n let obj = {\r\n id: element.docEntry,\r\n name: moment(new Date(element.dateBeginContract)).format('DD/MM/yyyy') + ' - ' + moment(new Date(element.dateEndContract)).format('DD/MM/yyyy')\r\n }\r\n this.period.push(obj);\r\n });\r\n this.contracts = this.period;\r\n const contractDate = this.contracts[0]?.name?.split('-');\r\n this.contractDate = contractDate[0]?? '';\r\n }\r\n }\r\n }\r\n else {\r\n this.toastrService.warning(\"no hay contratos pasados para mostrar\");\r\n }\r\n });\r\n }\r\n else {\r\n this.shippingSmeForm.controls.DateRange.disable();\r\n // this.isPeriodDisabled = false;\r\n this.memoriaAnualService.getAllClosedContracts(obj).subscribe(res => {\r\n if (res.webError != null) {\r\n this.spinner.hide();\r\n this.errorHandler.handle(res.webError.messageToUser, true);\r\n }\r\n else if (res.length > 0) {\r\n this.shippingSmeForm.patchValue({\r\n DateRange: Number(res[0].id),\r\n Inicio: moment(new Date(res[0].dateBeginContract)).format('DD/MM/yyyy'),\r\n Fin: moment(new Date(res[0].dateEndContract)).format('DD/MM/yyyy')\r\n });\r\n\r\n res.forEach(element => {\r\n let obj = {\r\n id: element.id,\r\n name: moment(new Date(element.dateBeginContract)).format('DD/MM/yyyy') + ' - ' + moment(new Date(element.dateEndContract)).format('DD/MM/yyyy')\r\n }\r\n this.period.push(obj);\r\n });\r\n this.contracts = this.period;\r\n const contractDate = this.contracts[0]?.name?.split('-');\r\n this.contractDate = contractDate[0]?? '';\r\n }\r\n else {\r\n this.toastrService.warning(\"no hay contratos pasados para mostrar\");\r\n }\r\n })\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n // async getAllContacts() {\r\n // this.contracts = [];\r\n // debugger\r\n // var obj = {\r\n // codigo_centro: this.selectedActivity.codigoCentro,\r\n // id_actuaciontipo: this.selectedActivity.ActivityTypeId,\r\n // incluye_prevencion: true,\r\n // incluye_vigilancia: false\r\n // }\r\n // localStorage.setItem('codigoCentro', this.selectedActivity.codigoCentro)\r\n // if(this.selectedActivity.ActivtyTypeName.toLowerCase().includes(\"programación anual\") &&\r\n // ((this.selectedActivity.ActivtyTypeName.toLowerCase().includes(\"envío\") && \r\n // this.selectedActivity.ActivtyTypeName.toLowerCase().includes(\"entrega\"))\r\n // || this.selectedActivity.ActivtyTypeName.toLowerCase().includes(\"elaboración\")))\r\n // {\r\n // debugger\r\n // this.memoriaAnualService.getAllContracts(obj).subscribe(res => {\r\n // debugger\r\n // if (res.webError != null) {\r\n // this.spinner.hide();\r\n // this.errorHandler.handle(res.webError.messageToUser, true);\r\n // }\r\n // else if (res.length > 0) {\r\n \r\n // if(this.selectedActivity.ActivtyTypeName.toLowerCase().includes(\"envío\") &&\r\n // this.selectedActivity.ActivtyTypeName.toLowerCase().includes(\"entrega\"))\r\n // {\r\n // var currentContract = res.filter(x=> { return (new Date(x.dateEndContract) > new Date()) && (new Date(x.dateBeginContract) < new Date()) });\r\n // if(currentContract.length > 0)\r\n // {\r\n // this.shippingSmeForm.patchValue({\r\n // DateRange: Number(currentContract[0].id),\r\n // Inicio: moment(new Date(currentContract[0].dateBeginContract)).format('DD/MM/yyyy'),\r\n // Fin: moment(new Date(currentContract[0].dateEndContract)).format('DD/MM/yyyy')\r\n // });\r\n \r\n // currentContract.forEach((item) =>{\r\n // let obj = {\r\n // id: item.id,\r\n // name: moment(new Date(item.dateBeginContract)).format('DD/MM/yyyy') + ' - ' + moment(new Date(item.dateEndContract)).format('DD/MM/yyyy')\r\n // }\r\n // this.period.push(obj);\r\n // })\r\n // this.contracts = this.period;\r\n // }\r\n // }\r\n // else if (this.selectedActivity.ActivtyTypeName.toLowerCase().includes(\"elaboración\")){\r\n // var closedContracts = res.filter(x=> { \r\n // return (new Date(x.dateEndContract) < new Date()) });\r\n // if(closedContracts.length > 0)\r\n // {\r\n \r\n // this.shippingSmeForm.patchValue({\r\n // DateRange: Number(closedContracts[0].id),\r\n // Inicio: moment(new Date(closedContracts[0].dateBeginContract)).format('DD/MM/yyyy'),\r\n // Fin: moment(new Date(closedContracts[0].dateEndContract)).format('DD/MM/yyyy')\r\n // });\r\n \r\n // closedContracts.forEach(element => { \r\n // let obj = {\r\n // id: element.id,\r\n // name: moment(new Date(element.dateBeginContract)).format('DD/MM/yyyy') + ' - ' + moment(new Date(element.dateEndContract)).format('DD/MM/yyyy')\r\n // }\r\n // this.period.push(obj);\r\n // });\r\n // this.contracts = this.period;\r\n // }\r\n // }\r\n // }\r\n // else {\r\n // this.toastrService.warning(\"no hay contratos pasados para mostrar\");\r\n // }\r\n // });\r\n // }\r\n // else {\r\n // this.shippingSmeForm.controls.DateRange.disable();\r\n // // this.isPeriodDisabled = false;\r\n // this.memoriaAnualService.getAllClosedContracts(obj).subscribe(res => {\r\n // if (res.webError != null) {\r\n // this.spinner.hide();\r\n // this.errorHandler.handle(res.webError.messageToUser, true);\r\n // }\r\n // else if (res.length > 0) {\r\n // this.shippingSmeForm.patchValue({\r\n // DateRange: Number(res[0].id),\r\n // Inicio: moment(new Date(res[0].dateBeginContract)).format('DD/MM/yyyy'),\r\n // Fin: moment(new Date(res[0].dateEndContract)).format('DD/MM/yyyy')\r\n // });\r\n\r\n // res.forEach(element => {\r\n // let obj = {\r\n // id: element.id,\r\n // name: moment(new Date(element.dateBeginContract)).format('DD/MM/yyyy') + ' - ' + moment(new Date(element.dateEndContract)).format('DD/MM/yyyy')\r\n // }\r\n // this.period.push(obj);\r\n // });\r\n // this.contracts = this.period;\r\n // }\r\n // else {\r\n // this.toastrService.warning(\"no hay contratos pasados para mostrar\");\r\n // }\r\n // })\r\n // }\r\n\r\n // }\r\n\r\n onChangePeriod(period) {\r\n const [startDateStr, endDateStr] = period.name.split('-');\r\n const selectedDate = this.sortedActiveContracts.find(item => item.id === period.id);\r\n localStorage.setItem(\"topContracts\", JSON.stringify(selectedDate));\r\n \r\n this.min = startDateStr;\r\n this.max = endDateStr;\r\n this.contractDate = this.min;\r\n this.date = new Date(startDateStr);\r\n \r\n this.shippingSmeForm.patchValue({\r\n Inicio: startDateStr,\r\n Fin: endDateStr\r\n });\r\n }\r\n\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Component({\r\n selector: 'app-confirmation-popup',\r\n templateUrl: './confirmation-popup.component.html',\r\n styleUrls: ['./confirmation-popup.component.sass']\r\n})\r\nexport class ConfirmationPopupComponent {\r\n\r\n public confirmationMessage = '';\r\n\r\n constructor(public modal: NgbActiveModal) { }\r\n\r\n \r\n\r\n}\r\n","import { ToastrService } from 'ngx-toastr';\r\nimport { Component, OnInit, Input, ViewChild } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { GeneratePdfService } from 'src/app/services/common/generate-pdf.service';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ErrorHandlerService } from 'src/app/services/error-handler.service';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { MemoriaAnualService } from 'src/app/services/common/memoria-anual.service';\r\nimport moment from 'moment';\r\nimport { ActivityFilterModel } from 'src/app/models/activity-filter';\r\nimport { FilterService } from 'src/app/services/filter.service';\r\nimport { ActivityService } from 'src/app/services/activity.service';\r\nimport { DropdownService } from 'src/app/services/dropdown.service';\r\nimport { SubSink } from 'subsink';\r\nimport { WizardComponent } from 'angular2-wizard';\r\nimport { SharedService } from 'src/app/services/shared.service';\r\n\r\n@Component({\r\n selector: 'app-memoria-anual-popup',\r\n templateUrl: './memoria-anual-popup.component.html',\r\n styleUrls: ['./memoria-anual-popup.component.scss']\r\n})\r\nexport class MemoriaAnualPopupComponent implements OnInit {\r\n contracts = [\r\n { id: 1, name: 'Vilnius-abc' },\r\n { id: 2, name: 'Kaunas-abc' },\r\n { id: 3, name: 'Pavilnys-abc', selected: true },\r\n { id: 4, name: 'Pabradė-abc' },\r\n { id: 5, name: 'Klaipėda-abc' }\r\n ];\r\n @ViewChild(\"wizardComponent\") wizardComponent: WizardComponent;\r\n\r\n @Input() public companyData: any;\r\n public emailValidators = [Validators.email];\r\n public emailPlaceholder = 'ingrese la (s) dirección (s) de correo electrónico';\r\n public emailAddMoreText = '';\r\n public IsFooterHidden = false;\r\n period: any = [];\r\n selectedDate: any;\r\n reportValues: any;\r\n ActivityFormGroupWizard1: FormGroup;\r\n ActivityFormGroupWizard2: FormGroup;\r\n ActivityFormGroupWizard3: FormGroup;\r\n filterObject: ActivityFilterModel;\r\n public selectedCompanyLanguage = 'es';\r\n contactPersons: any;\r\n workCenterData: any;\r\n actuacionesData: any;\r\n isCa = false;\r\n isUpdateInputData = false;\r\n Implicacion: any;\r\n activeContracts: any\r\n selected\r\n emailAddresses = [];\r\n private clientReqIPAddress = '';\r\n base64: any;\r\n memoriaEmailObject: any;\r\n private subs = new SubSink();\r\n public userEmailAddress = '';\r\n\r\n\r\n constructor(\r\n public memoriaAnualModal: NgbActiveModal,\r\n public fb: FormBuilder,\r\n private toastrService: ToastrService,\r\n private pdfService: GeneratePdfService,\r\n private spinner: NgxSpinnerService,\r\n private errorHandler: ErrorHandlerService,\r\n public memoriaAnualService: MemoriaAnualService,\r\n private filterService: FilterService,\r\n private sharedService: SharedService,\r\n private activityService: ActivityService,\r\n private dropdownService: DropdownService,\r\n\r\n ) {\r\n this.spinner.hide();\r\n const loggedUserId = JSON.parse(localStorage.getItem('loggeduser')).id;\r\n\r\n this.subs.add(\r\n this.dropdownService.getClientReqIPAddress().subscribe(response => {\r\n this.clientReqIPAddress = response.clientReqIPAddress;\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n }),\r\n this.dropdownService.getUserEmailAddress(loggedUserId).subscribe(response => {\r\n this.userEmailAddress = response.userEmail ? response.userEmail : '';\r\n if (this.userEmailAddress !== '') {\r\n const emailObj = { display: this.userEmailAddress, value: this.userEmailAddress }\r\n this.emailAddresses.push(emailObj);\r\n this.ActivityFormGroupWizard2.get('ContactEmail').setErrors(null);\r\n }\r\n this.ActivityFormGroupWizard2.updateValueAndValidity();\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n }),\r\n );\r\n }\r\n\r\n DownloadHtmlReport(_id): void {\r\n this.spinner.show();\r\n let requestModel = this.setMemoriaValues();\r\n\r\n this.memoriaAnualService.downloadMemoriaAttachment(requestModel).subscribe(response => {\r\n const linkSource = 'data:application/pdf;base64,' + response.base64String + '\\n';\r\n const downloadLink = document.createElement('a');\r\n const fileName = response.fileName;\r\n downloadLink.href = linkSource;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n this.spinner.hide();\r\n }, error => {\r\n this.toastrService.error('No se pudo descargar el archivo adjunto', 'Error');\r\n this.errorHandler.handle(error);\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.spinner.hide();\r\n this.pdfService.shareData = this.companyData;\r\n this.InitFormWizard1();\r\n this.InitFormWizard2();\r\n this.getClosedContacts(this.companyData.WorkCentreId);\r\n this.getWorkCenterData(this.companyData.WorkCentreId);\r\n this.getContactPersons(this.companyData.WorkCentreId);\r\n this.getActuaciones(this.companyData.WorkCentreId)\r\n\r\n this.changeWizardText();\r\n const implicacionValues = {\r\n Baja: 'Baja',\r\n Media: 'Media',\r\n Alta: 'Alta'\r\n }\r\n this.Implicacion = implicacionValues; \r\n const workCenterId = this.companyData.WorkCentreId;\r\n\r\n this.dropdownService.getContactEmailAddress(workCenterId).subscribe(response => {\r\n if (response.length > 0) {\r\n response.forEach(element => {\r\n const emailObj = { display: element, value: element }\r\n this.emailAddresses.push(emailObj);\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n getActuaciones(wordCenterId) {\r\n let fromStr = this.memoriaAnualService.ActivityFormGroupWizard1.controls.Inicio.value;\r\n let toStr = this.memoriaAnualService.ActivityFormGroupWizard1.controls.Fin.value;\r\n\r\n if (fromStr != null && toStr != null) {\r\n const [fromday, frommonth, fromyear] = fromStr.split('/');\r\n const fromdate = fromyear + frommonth + fromday;\r\n\r\n const [today, tomonth, toyear] = toStr.split('/');\r\n const todate = toyear + tomonth + today;\r\n\r\n const obj = new ActivityFilterModel();\r\n obj.fecha_desde = fromdate;\r\n obj.fecha_hasta = todate;\r\n obj.id_centro = wordCenterId;\r\n obj.tipo_consulta = 'TODAS';\r\n obj.id_empresa = this.companyData.CompanyId;\r\n obj.id_tecnico = this.filterService.filterObject.id_tecnico;\r\n obj.id_tecnico_selected = this.filterService.filterObject.id_tecnico_selected;\r\n obj.id_actuacionestado = null;\r\n obj.id_actuaciontipo = localStorage.getItem(\"selectedTipoActuation\");\r\n obj.page_size = Number(localStorage.getItem(\"selectedRowCount\"));\r\n obj.page_number = 1;\r\n\r\n this.activityService.getFilteredActivities(obj).subscribe(res => {\r\n this.actuacionesData = res;\r\n });\r\n }\r\n }\r\n\r\n getClosedContacts(wordCenterId) {\r\n this.contracts = [];\r\n var obj = {\r\n workCentreId: wordCenterId,\r\n activityTypeId: this.companyData.ActivityTypeId\r\n }\r\n this.memoriaAnualService.getAllClosedContracts(obj).subscribe(res => {\r\n if (res.webError != null) {\r\n this.spinner.hide();\r\n this.errorHandler.handle(res.webError.messageToUser, true);\r\n }\r\n else if (res.length > 0) {\r\n this.activeContracts = res;\r\n this.selectedDate = '' + moment(new Date(res[0].dateBeginContract)).format('DD/MM/yyyy') + ' - ' + moment(new Date(res[0].dateEndContract)).format('DD/MM/yyyy') + ''\r\n this.memoriaAnualService.ActivityFormGroupWizard1.patchValue({\r\n DateRange: Number(res[0].id),\r\n Inicio: moment(new Date(res[0].dateBeginContract)).format('DD/MM/yyyy'),\r\n Fin: moment(new Date(res[0].dateEndContract)).format('DD/MM/yyyy')\r\n });\r\n\r\n res.forEach(element => {\r\n\r\n let obj = {\r\n id: element.id,\r\n name: moment(new Date(element.dateBeginContract)).format('DD/MM/yyyy') + ' - ' + moment(new Date(element.dateEndContract)).format('DD/MM/yyyy')\r\n }\r\n this.period.push(obj);\r\n });\r\n this.contracts = this.period;\r\n\r\n this.getActuaciones(this.companyData.wordCenterId);\r\n }\r\n else {\r\n this.toastrService.warning(\"no hay contratos pasados para mostrar\");\r\n }\r\n })\r\n }\r\n\r\n getContactPersons(wordCenterId) {\r\n this.memoriaAnualService.getContactPersons(wordCenterId).subscribe(res => {\r\n if (res) {\r\n if (res.webError != null) {\r\n this.spinner.hide();\r\n this.errorHandler.handle(res.webError.messageToUser, true);\r\n } else {\r\n this.contactPersons = res;\r\n }\r\n }\r\n })\r\n }\r\n\r\n getWorkCenterData(wordCenterId) {\r\n this.memoriaAnualService.getWorkCenterData(wordCenterId).subscribe(res => {\r\n if (res) {\r\n if (res.webError != null) {\r\n this.spinner.hide();\r\n this.errorHandler.handle(res.webError.messageToUser, true);\r\n } else {\r\n this.workCenterData = res;\r\n }\r\n }\r\n })\r\n }\r\n\r\n InitFormWizard1() {\r\n this.memoriaAnualService.ActivityFormGroupWizard1 = this.fb.group({\r\n TemplateLanguage: [this.selectedCompanyLanguage, Validators.required],\r\n Inicio: [],\r\n Fin: [],\r\n Implicacions: [null, Validators.required],\r\n DateRange: [null]\r\n });\r\n }\r\n\r\n get f() {\r\n return this.memoriaAnualService.ActivityFormGroupWizard1.controls;\r\n }\r\n\r\n InitFormWizard2() {\r\n this.ActivityFormGroupWizard2 = this.fb.group({\r\n EmailSubject: [null, Validators.required],\r\n EmailBody: [null, Validators.required],\r\n ContactEmail: [null, Validators.required]\r\n });\r\n\r\n this.updateMailBody();\r\n }\r\n\r\n updateMailBody() {\r\n if (this.memoriaAnualService.ActivityFormGroupWizard1.value.TemplateLanguage == 'es') {\r\n this.ActivityFormGroupWizard2.patchValue({\r\n EmailSubject: '[GESEME] Memoria anual',\r\n EmailBody: `Estimado/a cliente.\\n\\n` +\r\n `Adjunto le remito la “Memoria anual” que recoge las actuaciones llevadas a cabo por GESEME en su empresa, en el último período contractual. \\n\\n` +\r\n `Atentamente,`,\r\n ContactEmail: this.emailAddresses,\r\n });\r\n } else {\r\n this.ActivityFormGroupWizard2.patchValue({\r\n EmailSubject: '[GESEME] Memoria anual',\r\n EmailBody: `Benvolgut/da client, \\n\\n` +\r\n `Li adjuntem la “Memoria anual” que recull les actuacions realitzades per GESEME en la seva empresa, al llarg de l’últim període contractual. \\n\\n` +\r\n `Atentament,`,\r\n ContactEmail: this.emailAddresses,\r\n });\r\n }\r\n }\r\n\r\n onChangePeriod(period) {\r\n this.memoriaAnualService.ActivityFormGroupWizard1.patchValue({\r\n Inicio: period.name.split('-')[0],\r\n Fin: period.name.split('-')[1]\r\n });\r\n\r\n this.getActuaciones(this.companyData.wordCenterId);\r\n }\r\n\r\n onChangeLanguage(lang) {\r\n if (lang.target.value == 'ca') {\r\n this.isCa = true;\r\n this.memoriaAnualService.ActivityFormGroupWizard1.patchValue({\r\n Implicacions: 'Baxia'\r\n });\r\n } else {\r\n this.isCa = false;\r\n this.memoriaAnualService.ActivityFormGroupWizard1.patchValue({\r\n Implicacions: 'Baja'\r\n });\r\n }\r\n this.updateMailBody();\r\n }\r\n\r\n changeWizardText(_isFirma = false): void {\r\n const modalElement = document.getElementById('modal-annual-report');\r\n var footer = modalElement.getElementsByClassName('card-footer')[0];\r\n if(modalElement.getElementsByClassName('card-footer').length > 1){\r\n footer = modalElement.getElementsByClassName('card-footer')[1];\r\n }\r\n const footerBtns = footer.getElementsByClassName('btn');\r\n\r\n for (let index = 0; index < footerBtns.length; index++) {\r\n footerBtns[index].classList.add('wizard-buttons');\r\n if (footerBtns[index].innerHTML === 'Previous') {\r\n footerBtns[index].innerHTML = 'Anterior';\r\n } else if (footerBtns[index].innerHTML === 'Next') {\r\n footerBtns[index].innerHTML = 'Siguiente';\r\n } else if (footerBtns[index].innerHTML === 'Done') {\r\n footerBtns[index].innerHTML = 'Enviar Mail';\r\n }\r\n }\r\n }\r\n\r\n onNextFistFormWizard() {\r\n this.isUpdateInputData = true;\r\n }\r\n\r\n onPreFistFormWizard() {\r\n this.isUpdateInputData = false;\r\n }\r\n\r\n setMemoriaValues() {\r\n let actuacionesTable = [];\r\n if (this.actuacionesData.data.length > 0) {\r\n actuacionesTable = this.actuacionesData.data.sort((a: any, b: any) => {\r\n return new Date(b.fecha) - new Date(a.fecha);\r\n });\r\n }\r\n\r\n let companyDetails = this.companyData;\r\n companyDetails.ActivityDate = this.companyData.ActivityDate != null ?\r\n this.sharedService.dateToString(this.companyData.ActivityDate) : this.companyData.ActivityDate;\r\n companyDetails.ActivityFinishTime = this.companyData.ActivityFinishTime != null ?\r\n this.sharedService.dateToString(this.companyData.ActivityFinishTime) : this.companyData.ActivityFinishTime;\r\n companyDetails.ActivityTime = this.companyData.ActivityTime != null ?\r\n this.sharedService.dateToString(this.companyData.ActivityTime) : this.companyData.ActivityTime;\r\n\r\n let coverData = {\r\n language: this.memoriaAnualService.ActivityFormGroupWizard1.value.TemplateLanguage,\r\n incio: this.memoriaAnualService.ActivityFormGroupWizard1.value.Inicio,\r\n fin: this.memoriaAnualService.ActivityFormGroupWizard1.value.Fin,\r\n implicacions: this.memoriaAnualService.ActivityFormGroupWizard1.value.Implicacions,\r\n }\r\n\r\n return {\r\n activityData: coverData,\r\n companyData: companyDetails,\r\n contactPersons: this.contactPersons,\r\n workCenters: this.workCenterData,\r\n activeContracts: this.activeContracts,\r\n actuacionesData: actuacionesTable,\r\n };\r\n }\r\n\r\n public sendParteDeVisitaEmail(): void {\r\n this.spinner.show();\r\n let requestpdf = this.setMemoriaValues();\r\n if (this.ActivityFormGroupWizard2.valid) {\r\n this.spinner.show();\r\n const obj = {\r\n EmailAddresses: this.emailAddresses,\r\n EmailSubject: this.ActivityFormGroupWizard2.get('EmailSubject').value,\r\n EmailBody: this.ActivityFormGroupWizard2.get('EmailBody').value,\r\n Base64Attachment: null,\r\n CompanyName: this.pdfService.shareData.CompanyName,\r\n WorkCentreName: this.pdfService.shareData.WorkCentreName,\r\n AssignedUserId: this.pdfService.shareData.AssignedUserId\r\n }\r\n\r\n let reuestObj = {\r\n memoriaRequestPDF: requestpdf,\r\n memoriaEmail: obj\r\n };\r\n \r\n this.dropdownService.sendMemoriaEmail(reuestObj).subscribe(res => {\r\n if (res) {\r\n if (res == 1) {\r\n this.toastrService\r\n .success('Se le enviará un correo electrónico si ha solicitado uno',\r\n 'Éxito');\r\n } else {\r\n this.toastrService\r\n .error('Se produjo un error interno al enviar el correo electrónico',\r\n 'Éxito');\r\n }\r\n this.spinner.hide();\r\n this.memoriaAnualModal.close();\r\n }\r\n });\r\n } else {\r\n this.ActivityFormGroupWizard2.touched;\r\n this.spinner.hide();\r\n }\r\n }\r\n\r\n\r\n}\r\n","\r\n\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Component, OnInit, Input, ViewChild, OnDestroy, QueryList, ElementRef, ViewChildren } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { GeneratePdfService } from 'src/app/services/common/generate-pdf.service';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ErrorHandlerService } from 'src/app/services/error-handler.service';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { MemoriaAnualService } from 'src/app/services/common/memoria-anual.service';\r\nimport moment from 'moment';\r\nimport { ActivityFilterModel } from 'src/app/models/activity-filter';\r\nimport { FilterService } from 'src/app/services/filter.service';\r\nimport { ActivityService } from 'src/app/services/activity.service';\r\nimport { DropdownService } from 'src/app/services/dropdown.service';\r\nimport { SubSink } from 'subsink';\r\nimport { WizardComponent } from 'angular2-wizard';\r\nimport { SharedService } from 'src/app/services/shared.service';\r\nimport { MemoriaAnualQuiz } from 'src/app/models/memoria-anual-quiz.model';\r\nimport { ApiService } from 'src/app/services/api.service';\r\nimport { UploadService } from 'src/app/services/upload.service';\r\nimport { HttpErrorResponse, HttpEventType } from '@angular/common/http';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'app-memoria-anual-popup-with-quiz',\r\n templateUrl: './memoria-anual-with-quiz-popup.component.html',\r\n styleUrls: ['./memoria-anual-with-quiz-popup.component.scss']\r\n})\r\nexport class MemoriaAnualWithQuizPopupComponent implements OnInit, OnDestroy {\r\n contracts = [\r\n { id: 1, name: 'Vilnius-abc' },\r\n { id: 2, name: 'Kaunas-abc' },\r\n { id: 3, name: 'Pavilnys-abc', selected: true },\r\n { id: 4, name: 'Pabradė-abc' },\r\n { id: 5, name: 'Klaipėda-abc' }\r\n ];\r\n @ViewChild(\"wizardComponent\") wizardComponent: WizardComponent;\r\n @ViewChild(\"wizardComponentquiz\") wizardComponentquiz: WizardComponent;\r\n\r\n @Input() public companyData: any;\r\n public emailValidators = [Validators.email];\r\n public emailPlaceholder = 'ingrese la (s) dirección (s) de correo electrónico';\r\n public emailAddMoreText = '';\r\n public IsFooterHidden = false;\r\n period: any = [];\r\n selectedDate: any;\r\n reportValues: any;\r\n ActivityFormGroupWizard1: FormGroup;\r\n ActivityFormGroupWizard2: FormGroup;\r\n ActivityFormGroupWizard3: FormGroup;\r\n ActivityFormGroupWizard4: FormGroup;\r\n filterObject: ActivityFilterModel;\r\n public selectedCompanyLanguage = 'es';\r\n contactPersons: any;\r\n workCenterData: any;\r\n actuacionesData: any;\r\n isCa = false;\r\n isUpdateInputData = false;\r\n Implicacion: any;\r\n activeContracts: any\r\n selected\r\n emailAddresses = [];\r\n private clientReqIPAddress = '';\r\n base64: any;\r\n memoriaEmailObject: any;\r\n private subs = new SubSink();\r\n public userEmailAddress = '';\r\n allPoints: number = 15;\r\n disciplinas: any;\r\n actuaciones: any;\r\n requestData: any;\r\n userDetailsId: any;\r\n loggedName: any;\r\n techSignature: any;\r\n disableSendButton: boolean = true;\r\n\r\n\r\n constructor(\r\n public memoriaAnualModal: NgbActiveModal,\r\n public fb: FormBuilder,\r\n private toastrService: ToastrService,\r\n private pdfService: GeneratePdfService,\r\n private spinner: NgxSpinnerService,\r\n private errorHandler: ErrorHandlerService,\r\n public memoriaAnualService: MemoriaAnualService,\r\n private filterService: FilterService,\r\n private sharedService: SharedService,\r\n private activityService: ActivityService,\r\n private dropdownService: DropdownService,\r\n private uploadService: UploadService,\r\n private datePipe: DatePipe\r\n\r\n ) {\r\n this.spinner.hide();\r\n const loggedUserId = JSON.parse(localStorage.getItem('loggeduser')).id;\r\n\r\n this.subs.add(\r\n this.dropdownService.getClientReqIPAddress().subscribe(response => {\r\n this.clientReqIPAddress = response.clientReqIPAddress;\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n }),\r\n this.dropdownService.getUserEmailAddress(loggedUserId).subscribe(response => {\r\n this.userEmailAddress = response.userEmail ? response.userEmail : '';\r\n if (this.userEmailAddress !== '') {\r\n const emailObj = { display: this.userEmailAddress, value: this.userEmailAddress }\r\n this.emailAddresses.push(emailObj);\r\n this.ActivityFormGroupWizard2.get('ContactEmail').setErrors(null);\r\n }\r\n this.ActivityFormGroupWizard2.updateValueAndValidity();\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n }),\r\n );\r\n }\r\n ngOnDestroy(): void {\r\n this.deleteUploads();\r\n this.loadQuestions(1);\r\n }\r\n\r\n async DownloadHtmlReport(_id): Promise {\r\n try {\r\n this.spinner.show();\r\n\r\n if (!this.companyData || !this.companyData.ActivtyTypeName) {\r\n this.showErrorMessage('Company data or activity type name is missing');\r\n return;\r\n }\r\n\r\n this.setRequestData(); // Set the requestData based on activity type\r\n\r\n if (!this.requestData || !this.memoriaAnualService) {\r\n this.showErrorMessage('Invalid request data or service unavailable');\r\n return;\r\n }\r\n\r\n const disciplinasActuaciones = await this.fetchDisciplinasActuaciones();\r\n await this.getActuacioneswhenGeneratingPdf(this.companyData.WorkCentreId);\r\n this.actuaciones = this.actuacionesData?.data ?? [];\r\n\r\n if (disciplinasActuaciones) {\r\n this.disciplinas = disciplinasActuaciones?.disciplinas ?? [];\r\n\r\n let requestModel = this.setMemoriaValues();\r\n const userDetails = await this.fetchUserDetails();\r\n\r\n if (userDetails) {\r\n requestModel.loggedName = `${userDetails?.nombre} ${userDetails?.apellidos}`;\r\n requestModel.techSignature = userDetails?.firma;\r\n }\r\n\r\n await this.downloadMemoriaWithAttachment(requestModel);\r\n }else{\r\n this.disciplinas = [];\r\n let requestModel = this.setMemoriaValues();\r\n const userDetails = await this.fetchUserDetails();\r\n\r\n if (userDetails) {\r\n requestModel.loggedName = `${userDetails?.nombre} ${userDetails?.apellidos}`;\r\n requestModel.techSignature = userDetails?.firma;\r\n }\r\n\r\n await this.downloadMemoriaWithAttachment(requestModel);\r\n }\r\n } catch (error) {\r\n this.handleError(error);\r\n } finally {\r\n this.spinner.hide();\r\n }\r\n }\r\n\r\n\r\n private setRequestData(): void {\r\n if (this.companyData.ActivtyTypeName.includes('(Envío/Entrega)') || this.companyData.ActivtyTypeName.includes('(Enviament/Entrega)')) {\r\n this.requestData = {\r\n empresa: this.companyData.CompanyId ?? '',\r\n centro_trabajo: this.companyData.WorkCentreId ?? '',\r\n fecha_desde: this.transformDate(this.memoriaAnualService.ActivityFormGroupWizard4?.value?.Inicio) ?? '',\r\n fecha_hasta: this.transformDate(this.memoriaAnualService.ActivityFormGroupWizard4?.value?.Fin) ?? '',\r\n codigo_idioma: this.memoriaAnualService.ActivityFormGroupWizard4?.value?.TemplateLanguage ?? ''\r\n };\r\n } else if (this.companyData.ActivtyTypeName.includes('(Elaboración)') || this.companyData.ActivtyTypeName.includes('(Elaboració)')) {\r\n this.requestData = {\r\n empresa: this.companyData.CompanyId ?? '',\r\n centro_trabajo: this.companyData.WorkCentreId ?? '',\r\n fecha_desde: this.transformDate(this.memoriaAnualService.ActivityFormGroupWizard4?.value?.Inicio) ?? '',\r\n fecha_hasta: this.transformDate(this.memoriaAnualService.ActivityFormGroupWizard4?.value?.Fin) ?? ''\r\n };\r\n }\r\n }\r\n\r\n private fetchDisciplinasActuaciones(): Promise {\r\n return new Promise((resolve, reject) => {\r\n this.memoriaAnualService.getdisciplinasyactuaciones(this.requestData).subscribe({\r\n next: (res) => resolve(res?.data),\r\n error: (err) => reject(err)\r\n });\r\n });\r\n }\r\n\r\n private fetchUserDetails(): Promise {\r\n const reqObject = {\r\n id: this.userDetailsId,\r\n usuario_upsert: {\r\n userId: JSON.parse(localStorage.getItem('loggeduser')).id,\r\n fechaHora: new Date(),\r\n ipOrigen: null,\r\n objectId2: null\r\n }\r\n };\r\n\r\n return new Promise((resolve, reject) => {\r\n this.memoriaAnualService.getUserDetailsAndSignature(reqObject).subscribe({\r\n next: (res) => resolve(res?.data),\r\n error: (err) => reject(err)\r\n });\r\n });\r\n }\r\n\r\n private async downloadMemoriaWithAttachment(requestModel: any): Promise {\r\n this.spinner.show();\r\n\r\n try {\r\n const response = await this.memoriaAnualService.downloadMemoriaWithQuizAttachment(requestModel).toPromise();\r\n const base64String = response?.base64String ?? '';\r\n const fileName = response?.fileName ?? 'download.pdf';\r\n\r\n if (base64String) {\r\n const linkSource = `data:application/pdf;base64,${base64String}`;\r\n const downloadLink = document.createElement('a');\r\n downloadLink.href = linkSource;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n } else {\r\n this.showErrorMessage('No se pudo obtener el contenido del archivo');\r\n }\r\n } catch (error) {\r\n this.showErrorMessage('No se pudo descargar el archivo adjunto');\r\n } finally {\r\n this.spinner.hide();\r\n }\r\n}\r\n\r\n\r\n private showErrorMessage(message: string): void {\r\n this.toastrService.error(message, 'Error');\r\n }\r\n\r\n private handleError(error: any): void {\r\n this.toastrService.error('An unexpected error occurred', 'Error');\r\n this.errorHandler.handle(error);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.spinner.hide();\r\n this.pdfService.shareData = this.companyData;\r\n this.InitFormWizard1();\r\n this.InitFormWizard2();\r\n this.getClosedContacts(this.companyData.WorkCentreId);\r\n this.getWorkCenterData(this.companyData.WorkCentreId);\r\n this.getContactPersons(this.companyData.WorkCentreId);\r\n //this.getActuaciones(this.companyData.WorkCentreId)\r\n\r\n this.changeWizardText();\r\n const implicacionValues = {\r\n Baja: 'Baja',\r\n Media: 'Media',\r\n Alta: 'Alta'\r\n }\r\n this.Implicacion = implicacionValues;\r\n const workCenterId = this.companyData.WorkCentreId;\r\n\r\n this.dropdownService.getContactEmailAddress(workCenterId).subscribe(response => {\r\n if (response.length > 0) {\r\n response.forEach(element => {\r\n const emailObj = { display: element, value: element }\r\n this.emailAddresses.push(emailObj);\r\n });\r\n }\r\n });\r\n\r\n this.GeneratedFolderName = ((new Date().getTime() * 10000) + 621355968000000000).toString();\r\n }\r\n\r\n getActuaciones(wordCenterId) {\r\n let fromStr = this.memoriaAnualService.ActivityFormGroupWizard4.controls.Inicio.value;\r\n let toStr = this.memoriaAnualService.ActivityFormGroupWizard4.controls.Fin.value;\r\n\r\n if (fromStr != null && toStr != null) {\r\n const [fromday, frommonth, fromyear] = fromStr.split('/');\r\n const fromdate = fromyear + frommonth + fromday;\r\n\r\n const [today, tomonth, toyear] = toStr.split('/');\r\n const todate = toyear + tomonth + today;\r\n\r\n const obj = new ActivityFilterModel();\r\n obj.fecha_desde = fromdate;\r\n obj.fecha_hasta = todate;\r\n obj.id_centro = wordCenterId;\r\n obj.tipo_consulta = 'TODAS';\r\n obj.id_empresa = this.companyData.CompanyId;\r\n obj.id_tecnico = this.filterService.filterObject.id_tecnico;\r\n obj.id_tecnico_selected = this.filterService.filterObject.id_tecnico_selected;\r\n obj.id_actuacionestado = null;\r\n obj.id_actuaciontipo = localStorage.getItem(\"selectedTipoActuation\");\r\n obj.page_size = Number(localStorage.getItem(\"selectedRowCount\"));\r\n obj.page_number = 1;\r\n\r\n this.activityService.getFilteredActivities(obj).subscribe(res => {\r\n this.actuacionesData = res;\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n async getActuacioneswhenGeneratingPdf(wordCenterId): Promise {\r\n let fromStr = this.memoriaAnualService.ActivityFormGroupWizard4.controls.Inicio.value;\r\n let toStr = this.memoriaAnualService.ActivityFormGroupWizard4.controls.Fin.value;\r\n\r\n if (fromStr != null && toStr != null) {\r\n const [fromday, frommonth, fromyear] = fromStr.split('/');\r\n const fromdate = (fromyear + frommonth + fromday).replace(' ', '');\r\n\r\n const [today, tomonth, toyear] = toStr.split('/');\r\n const todate = (toyear + tomonth + today).replace(' ', '');\r\n\r\n const obj = new ActivityFilterModel();\r\n obj.fecha_desde = fromdate;\r\n obj.fecha_hasta = todate;\r\n obj.id_centro = wordCenterId;\r\n obj.id_empresa = this.companyData.CompanyId;\r\n obj.id_actuaciontipo = localStorage.getItem(\"selectedTipoActuation\");\r\n\r\n return new Promise((resolve, reject) => {\r\n this.activityService.getFilteredActivitiesWhenGeneratingPdf(obj).subscribe({\r\n next: (res) => {\r\n this.actuacionesData = res;\r\n resolve(); // Signal completion\r\n },\r\n error: (err) => reject(err), // Handle errors\r\n });\r\n });\r\n }\r\n }\r\n\r\n\r\n getClosedContacts(wordCenterId) {\r\n this.contracts = [];\r\n var obj = {\r\n codigo_centro: localStorage.getItem('codigoCentro'),\r\n id_actuaciontipo: this.companyData.ActivityTypeId,\r\n incluye_prevencion: true,\r\n incluye_vigilancia: false\r\n }\r\n this.memoriaAnualService.getAllContracts(obj).subscribe(res => {\r\n if (res.webError != null) {\r\n this.spinner.hide();\r\n this.errorHandler.handle(res.webError.messageToUser, true);\r\n }\r\n else if (res.data.length > 0) {\r\n if(this.companyData.ActivtyTypeName.toLowerCase().includes(\"envío\") &&\r\n this.companyData.ActivtyTypeName.toLowerCase().includes(\"entrega\"))\r\n {\r\n var currentContract = res;\r\n if(currentContract.data.length > 0)\r\n {\r\n this.selectedDate = '' + moment(new Date(currentContract.data[0].dateBeginContract)).format('DD/MM/yyyy') + ' - ' + moment(new Date(currentContract.data[0].dateEndContract)).format('DD/MM/yyyy') + ''\r\n this.memoriaAnualService.ActivityFormGroupWizard4.patchValue({\r\n DateRange: Number(currentContract.data[0].docEntry),\r\n Inicio: moment(new Date(currentContract.data[0].dateBeginContract)).format('DD/MM/yyyy'),\r\n Fin: moment(new Date(currentContract.data[0].dateEndContract)).format('DD/MM/yyyy')\r\n });\r\n\r\n currentContract.data.forEach((element: any) => {\r\n let obj = {\r\n id: element.docEntry,\r\n name: moment(new Date(element.dateBeginContract)).format('DD/MM/yyyy') + ' - ' + moment(new Date(element.dateEndContract)).format('DD/MM/yyyy')\r\n }\r\n this.period.push(obj);\r\n });\r\n this.contracts = this.period;\r\n //this.getActuaciones(this.companyData.wordCenterId);\r\n }\r\n }\r\n else if (this.companyData.ActivtyTypeName.toLowerCase().includes(\"elaboración\")){\r\n var closedContracts = res;\r\n if(closedContracts.data.length > 0)\r\n {\r\n this.selectedDate = '' + moment(new Date(closedContracts.data[0].dateBeginContract)).format('DD/MM/yyyy') + ' - ' + moment(new Date(closedContracts.data[0].dateEndContract)).format('DD/MM/yyyy') + ''\r\n this.memoriaAnualService.ActivityFormGroupWizard4.patchValue({\r\n DateRange: Number(closedContracts.data[0].docEntry),\r\n Inicio: moment(new Date(closedContracts.data[0].dateBeginContract)).format('DD/MM/yyyy'),\r\n Fin: moment(new Date(closedContracts.data[0].dateEndContract)).format('DD/MM/yyyy')\r\n });\r\n\r\n closedContracts.data.forEach(element => {\r\n\r\n let obj = {\r\n id: element.docEntry,\r\n name: moment(new Date(element.dateBeginContract)).format('DD/MM/yyyy') + ' - ' + moment(new Date(element.dateEndContract)).format('DD/MM/yyyy')\r\n }\r\n this.period.push(obj);\r\n });\r\n this.contracts = this.period;\r\n // this.getActuaciones(this.companyData.wordCenterId);\r\n }\r\n }\r\n\r\n }\r\n else {\r\n this.toastrService.warning(\"no hay contratos pasados para mostrar\");\r\n }\r\n })\r\n }\r\n\r\n getContactPersons(wordCenterId) {\r\n this.memoriaAnualService.getContactPersons(wordCenterId).subscribe(res => {\r\n if (res) {\r\n if (res.webError != null) {\r\n this.spinner.hide();\r\n this.errorHandler.handle(res.webError.messageToUser, true);\r\n } else {\r\n this.contactPersons = res;\r\n }\r\n }\r\n })\r\n }\r\n\r\n getWorkCenterData(wordCenterId) {\r\n this.memoriaAnualService.getWorkCenterData(wordCenterId).subscribe(res => {\r\n if (res) {\r\n if (res.webError != null) {\r\n this.spinner.hide();\r\n this.errorHandler.handle(res.webError.messageToUser, true);\r\n } else {\r\n this.workCenterData = res;\r\n }\r\n }\r\n })\r\n }\r\n\r\n InitFormWizard1() {\r\n this.memoriaAnualService.ActivityFormGroupWizard4 = this.fb.group({\r\n TemplateLanguage: [this.selectedCompanyLanguage, Validators.required],\r\n Inicio: [],\r\n Fin: [],\r\n TypeOfEmpressa: [\"1\", Validators.required],\r\n DateRange: [null]\r\n });\r\n this.loadQuestions(1);\r\n }\r\n\r\n get f() {\r\n return this.memoriaAnualService.ActivityFormGroupWizard4.controls;\r\n }\r\n\r\n InitFormWizard2() {\r\n this.ActivityFormGroupWizard2 = this.fb.group({\r\n EmailSubject: [null, Validators.required],\r\n EmailBody: [null, Validators.required],\r\n ContactEmail: [null, Validators.required]\r\n });\r\n\r\n this.updateMailBody();\r\n }\r\n\r\n updateMailBody() {\r\n if (this.memoriaAnualService.ActivityFormGroupWizard4.value.TemplateLanguage == 'es') {\r\n this.ActivityFormGroupWizard2.patchValue({\r\n EmailSubject: 'PDF Memoria anual',\r\n EmailBody: `Apreciado cliente.\\n\\n` +\r\n `Adjunto le remito la “Memoria anual” que recoge las actuaciones llevadas a cabo por GESEME en su empresa, en el último período contractual. \\n\\n` +\r\n `Atentamente,`,\r\n ContactEmail: this.emailAddresses,\r\n });\r\n } else {\r\n this.ActivityFormGroupWizard2.patchValue({\r\n EmailSubject: 'PDF Memoria anual',\r\n EmailBody: `Apreciado client, \\n\\n` +\r\n `Li adjuntem la “Memoria anual” que recull les actuacions realitzades per GESEME en la seva empresa, al llarg de l’últim període contractual. \\n\\n` +\r\n `Atentament,`,\r\n ContactEmail: this.emailAddresses,\r\n });\r\n }\r\n }\r\n\r\n onChangePeriod(period) {\r\n this.memoriaAnualService.ActivityFormGroupWizard4.patchValue({\r\n Inicio: period.name.split('-')[0],\r\n Fin: period.name.split('-')[1]\r\n });\r\n }\r\n\r\n onChangeLanguage(lang) {\r\n if (lang.target.value == 'ca') {\r\n this.isCa = true;\r\n this.memoriaAnualService.ActivityFormGroupWizard4.patchValue({\r\n TemplateLanguage: \"ca\"\r\n });\r\n } else {\r\n this.isCa = false;\r\n this.memoriaAnualService.ActivityFormGroupWizard4.patchValue({\r\n TemplateLanguage: \"es\"\r\n });\r\n }\r\n this.updateMailBody();\r\n }\r\n\r\n changeWizardText(_isFirma = false): void {\r\n const modalElement = document.getElementById('modal-annual-report');\r\n var footer = modalElement.getElementsByClassName('card-footer')[0];\r\n (footer).style.display = 'none';\r\n\r\n if(modalElement.getElementsByClassName('card-footer').length > 1){\r\n let quizFooter = modalElement.getElementsByClassName('card-footer')[1];\r\n (quizFooter).style.display = 'none';\r\n }\r\n const footerBtns = footer.getElementsByClassName('btn');\r\n\r\n for (let index = 0; index < footerBtns.length; index++) {\r\n footerBtns[index].classList.add('wizard-buttons');\r\n if (footerBtns[index].innerHTML === 'Previous') {\r\n footerBtns[index].innerHTML = 'Anterior';\r\n } else if (footerBtns[index].innerHTML === 'Next') {\r\n footerBtns[index].innerHTML = 'Siguiente';\r\n } else if (footerBtns[index].innerHTML === 'Done') {\r\n footerBtns[index].innerHTML = 'Enviar Mail';\r\n }\r\n }\r\n }\r\n\r\n onNextFistFormWizard() {\r\n if (this.contracts.length === 0) {\r\n return;\r\n }\r\n this.isUpdateInputData = true;\r\n }\r\n\r\n onPreFistFormWizard() {\r\n this.isUpdateInputData = false;\r\n }\r\n\r\n setMemoriaValues() {\r\n let actuacionesTable = [];\r\n if (this.actuacionesData?.data?.length > 0) {\r\n actuacionesTable = this.actuacionesData.data.sort((a: any, b: any) => {\r\n return new Date(b.fecha) - new Date(a.fecha);\r\n });\r\n }\r\n\r\n let companyDetails = this.companyData;\r\n companyDetails.ActivityDate = this.companyData.ActivityDate != null ?\r\n this.sharedService.dateToString(this.companyData.ActivityDate) : this.companyData.ActivityDate;\r\n companyDetails.ActivityFinishTime = this.companyData.ActivityFinishTime != null ?\r\n this.sharedService.dateToString(this.companyData.ActivityFinishTime) : this.companyData.ActivityFinishTime;\r\n companyDetails.ActivityTime = this.companyData.ActivityTime != null ?\r\n this.sharedService.dateToString(this.companyData.ActivityTime) : this.companyData.ActivityTime;\r\n\r\n let coverData = {\r\n language: this.memoriaAnualService?.ActivityFormGroupWizard4?.value?.TemplateLanguage,\r\n incio: this.memoriaAnualService?.ActivityFormGroupWizard4?.value?.Inicio,\r\n fin: this.memoriaAnualService?.ActivityFormGroupWizard4?.value?.Fin,\r\n typeOfEmpressa: this.memoriaAnualService?.ActivityFormGroupWizard4?.value?.TypeOfEmpressa,\r\n }\r\n\r\n return {\r\n activityData: coverData,\r\n companyData: companyDetails,\r\n contactPersons: this.contactPersons,\r\n workCenters: this.workCenterData,\r\n activeContracts: this.activeContracts?? '',\r\n actuacionesData: actuacionesTable,\r\n questions : this.Questions,\r\n disciplinas: this.disciplinas,\r\n actuaciones: this.actuaciones,\r\n loggedName: '',\r\n techSignature: '',\r\n anexos: { folder: this.GeneratedFolderName, files: this.FilesList }\r\n };\r\n }\r\n\r\n public async sendParteDeVisitaEmail(): Promise {\r\n this.spinner.show();\r\n if (this.ActivityFormGroupWizard2.valid) {\r\n this.spinner.show();\r\n const obj = {\r\n EmailAddresses: this.emailAddresses,\r\n EmailSubject: this.ActivityFormGroupWizard2.get('EmailSubject').value,\r\n EmailBody: this.ActivityFormGroupWizard2.get('EmailBody').value,\r\n Base64Attachment: null,\r\n CompanyName: this.pdfService.shareData.CompanyName,\r\n WorkCentreName: this.pdfService.shareData.WorkCentreName,\r\n AssignedUserId: this.pdfService.shareData.AssignedUserId\r\n }\r\n if (this.companyData.ActivtyTypeName.includes('(Envío/Entrega)') || this.companyData.ActivtyTypeName.includes('(Enviament/Entrega)')) {\r\n let requestData = {\r\n empresa: this.companyData.CompanyId ?? '',\r\n centro_trabajo: this.companyData.WorkCentreId ?? '',\r\n fecha_desde: this.transformDate(this.memoriaAnualService.ActivityFormGroupWizard4?.value?.Inicio) ?? '',\r\n fecha_hasta: this.transformDate(this.memoriaAnualService.ActivityFormGroupWizard4?.value?.Fin) ?? '',\r\n codigo_idioma: this.memoriaAnualService.ActivityFormGroupWizard4?.value?.TemplateLanguage ?? ''\r\n };\r\n this.requestData = requestData;\r\n\r\n } else if (this.companyData.ActivtyTypeName.includes('(Elaboración)') || this.companyData.ActivtyTypeName.includes('(Elaboració)')) {\r\n let requestData = {\r\n empresa: this.companyData.CompanyId ?? '',\r\n centro_trabajo: this.companyData.WorkCentreId ?? '',\r\n fecha_desde: this.transformDate(this.memoriaAnualService.ActivityFormGroupWizard4?.value?.Fin) ?? '',\r\n fecha_hasta: this.transformDate(this.memoriaAnualService.ActivityFormGroupWizard4?.value?.Inicio) ?? ''\r\n };\r\n this.requestData = requestData;\r\n }\r\n const userDetails = await this.fetchUserDetails();\r\n\r\n\r\n this.memoriaAnualService.getdisciplinasyactuaciones(this.requestData).subscribe(res => {\r\n this.disciplinas = res?.data?.disciplinas ?? []; // Check for disciplinas\r\n this.actuaciones = res?.data?.actuaciones ?? []; // Check for actuaciones\r\n let requestpdf = this.setMemoriaValues();\r\n\r\n requestpdf.loggedName = userDetails?.nombre + ' ' + userDetails?.apellidos;\r\n requestpdf.techSignature = userDetails?.firma;\r\n\r\n let reuestObj = {\r\n memoriaRequestPDF: requestpdf,\r\n memoriaEmail: obj\r\n };\r\n\r\n // Ensure download service is available\r\n\r\n this.dropdownService.SendMemoriaEmailWithQuiz(reuestObj).subscribe(res => {\r\n if (res) {\r\n if (res == 1) {\r\n this.toastrService\r\n .success('Se le enviará un correo electrónico si ha solicitado uno',\r\n 'Éxito');\r\n } else {\r\n this.toastrService\r\n .error('Se produjo un error interno al enviar el correo electrónico',\r\n 'Éxito');\r\n }\r\n\r\n this.loadQuestions(1);\r\n this.spinner.hide();\r\n this.memoriaAnualModal.close();\r\n }else{\r\n this.spinner.hide();\r\n }\r\n });\r\n });\r\n } else {\r\n this.ActivityFormGroupWizard2.touched;\r\n this.spinner.hide();\r\n }\r\n }\r\n\r\n\r\n checkformvalidation(form: FormGroup){\r\n return !form.valid;\r\n }\r\n\r\n complete(){\r\n // if(this.disableSendButton){\r\n\r\n // this.toastrService.error('Opción deshabilitada temporalmente: descarga y revisa el PDF y envíalo manualmente, una vez comprobado.');\r\n // return;\r\n // }\r\n this.wizardComponent.complete();\r\n }\r\n\r\n\r\n\r\n\r\n //#region Quiz Section\r\n\r\n Questions: MemoriaAnualQuiz[] = []\r\n Step: number = 1;\r\n SubStep: number = 0;\r\n Blocks: number[] = [];\r\n BlocksAnswer: boolean[] = [];\r\n BlockResult: number[] =[];\r\n TotalCAnswers: number[] = [];\r\n TotalQuestionAnswerd: number[] = [];\r\n\r\n loadQuestions(type: number = 1){\r\n this.Questions = [];\r\n this.Questions = this.memoriaAnualService.generateMemoriaAnualQuiz(type);\r\n this.Blocks = this.Questions.map(x=>x.Section).filter(this.distinct);\r\n this.BlocksAnswer = [];\r\n this.BlockResult = [];\r\n this.BlocksAnswer = [];\r\n this.TotalCAnswers = [];\r\n this.TotalQuestionAnswerd = [];\r\n }\r\n\r\n nextStep(){\r\n if(this.Step == 2){\r\n if(this.Blocks.length == 1){\r\n this.wizardComponent.next();\r\n }\r\n if(this.SubStep == 6)\r\n {\r\n this.Step += 1;\r\n this.wizardComponent.next();\r\n }\r\n else{\r\n this.SubStep += 1;\r\n this.wizardComponentquiz.next();\r\n }\r\n }\r\n else {\r\n this.Step += 1;\r\n\r\n if(this.Step == 2 && this.SubStep == 0)\r\n this.SubStep += 1;\r\n\r\n this.changeWizardText();\r\n this.wizardComponent.next();\r\n }\r\n this.createTotalPoints();\r\n }\r\n\r\n //total points when selecting answers in quiz - memoria-anual\r\n createTotalPoints(): number {\r\n let allPoints = 0;\r\n\r\n const calculatePoints = (result: number): number => {\r\n if (result <= 30) return 0;\r\n else if (result <= 70) return 1;\r\n else if (result < 100) return 2;\r\n else return 3;\r\n };\r\n\r\n for (let i = 0; i < this.BlockResult.length; i++) {\r\n const result = this.BlockResult[i];\r\n let totalPointsBlock = 0;\r\n\r\n if (result) {\r\n totalPointsBlock = calculatePoints(result);\r\n }\r\n\r\n switch (i) {\r\n case 0:\r\n allPoints += totalPointsBlock;\r\n break;\r\n case 1:\r\n allPoints += totalPointsBlock;\r\n break;\r\n case 2:\r\n allPoints += totalPointsBlock;\r\n break;\r\n case 3:\r\n allPoints += totalPointsBlock;\r\n break;\r\n case 4:\r\n allPoints += totalPointsBlock;\r\n break;\r\n }\r\n }\r\n\r\n return allPoints;\r\n}\r\n\r\n prevStep(){\r\n\r\n if(this.Step == 2){\r\n if(this.Blocks.length == 1){\r\n this.wizardComponent.previous();\r\n }\r\n if(this.SubStep == 1)\r\n {\r\n this.Step -= 1;\r\n this.SubStep = 0;\r\n this.wizardComponent.previous();\r\n }\r\n else{\r\n this.SubStep -= 1;\r\n this.wizardComponentquiz.previous();\r\n }\r\n }\r\n else {\r\n this.Step -= 1;\r\n\r\n if(this.Step == 2)\r\n this.SubStep -= 1;\r\n\r\n this.changeWizardText();\r\n this.wizardComponent.previous();\r\n }\r\n }\r\n\r\n distinct(value, index, array) {\r\n return array.indexOf(value) === index;\r\n }\r\n\r\n public checkValidation() {\r\n //question answer is Nc\r\n const invalidQuestions = this.Questions.filter(item => item.Answer === 'nc' && (!item.Comment));\r\n //map ids\r\n const invalidQuestionIds = invalidQuestions.map(item => item.QuestionId);\r\n\r\n //add classes if invalid\r\n if (invalidQuestions.length > 0) {\r\n const textareaElements = document.querySelectorAll('.question-comment');\r\n if (textareaElements) {\r\n textareaElements.forEach(item => {\r\n if (invalidQuestionIds.includes(item.id)) {\r\n item.classList.add('invalid-border-color');\r\n } else {\r\n item.classList.remove('invalid-border-color');\r\n }\r\n });\r\n }\r\n return true;\r\n } else if (this.SubStep === 6 && this.BlocksAnswer.filter(x => x === true).length === 5) {\r\n return false;\r\n } else {\r\n const textareaElements = document.querySelectorAll('.question-comment');\r\n if (textareaElements) {\r\n textareaElements.forEach(item => item.classList.remove('invalid-border-color'));\r\n }\r\n return this.BlocksAnswer[this.SubStep - 1] !== true;\r\n }\r\n}\r\n\r\n public answerQuestion(question: MemoriaAnualQuiz, answer: string){\r\n question.Answer = answer;\r\n\r\n let validated = true;\r\n let canswer = 0\r\n let totalquestions = 0;\r\n // condition for valacion\r\n if(this.Step == 2){\r\n let filteredQuestions = this.Questions.filter(x => {return x.Section == this.SubStep});\r\n filteredQuestions.forEach(question => {\r\n if((question.SubQuestions == null || question.SubQuestions.length == 0) &&\r\n question.Answer == null || question.Answer == ''){\r\n validated = false;\r\n }\r\n else{\r\n if ((question.SubQuestions == null || question.SubQuestions.length == 0) &&\r\n (question.Answer == null || question.Answer == '')) {\r\n validated = false;\r\n } else {\r\n if (question.Answer !== 'na') {\r\n if (question.Answer === 'c') canswer += 1;\r\n totalquestions += 1;\r\n }\r\n }\r\n }\r\n\r\n if (question.SubQuestions != null) {\r\n let answeredSubquestions = question.SubQuestions.filter(x => x.Answer && x.Answer !== '');\r\n let validSubquestions = answeredSubquestions.filter(x => x.Answer !== 'na');\r\n if(answeredSubquestions.length !== question.SubQuestions.length){\r\n validated = false;\r\n }\r\n else{\r\n totalquestions += validSubquestions.length;\r\n canswer += validSubquestions.filter(x => x.Answer === 'c').length;\r\n }\r\n }\r\n });\r\n if(validated){\r\n if(this.SubStep == 2){\r\n totalquestions = 23;\r\n }\r\n this.BlockResult[this.SubStep - 1] =(canswer / totalquestions * 100);\r\n this.TotalCAnswers[this.SubStep - 1] =(canswer);\r\n this.TotalQuestionAnswerd[this.SubStep - 1] =(totalquestions);\r\n this.BlocksAnswer.push(true);\r\n }\r\n }\r\n }\r\n\r\n onStepChanged(){\r\n var index = this.wizardComponentquiz.activeStepIndex;\r\n this.SubStep = index + 1;\r\n }\r\n\r\n aggregate(a, b){\r\n return a + b;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Anexos\r\n\r\n GeneratedFolderName = \"\";\r\n FilesList: string[] = [];\r\n deleteUploads(){\r\n this.uploadService.deleteAll(this.GeneratedFolderName)\r\n .subscribe(res => {\r\n });\r\n }\r\n\r\n uploadFile(files){\r\n if (files.length === 0) {\r\n return;\r\n }\r\n let formDataForImages = new FormData();\r\n formDataForImages.append('folder', this.GeneratedFolderName);\r\n let fileToUpload = files[0];\r\n formDataForImages.append('file', fileToUpload, fileToUpload.name);\r\n\r\n this.uploadService.uploadimage(formDataForImages)\r\n .subscribe({\r\n next: (event) => {\r\n if (event.type === HttpEventType.UploadProgress){\r\n }\r\n else if (event.type === HttpEventType.Response) {\r\n\r\n this.FilesList.push(fileToUpload.name);\r\n this.FilesList = this.FilesList.filter(this.distinct);\r\n }\r\n },\r\n error: (err: HttpErrorResponse) => console.log(err)\r\n });\r\n }\r\n\r\n removeFile(file){\r\n this.uploadService.deleteimage(file, this.GeneratedFolderName)\r\n .subscribe(res => {\r\n this.FilesList = this.FilesList.filter(x => x != file);\r\n });\r\n }\r\n\r\n // transform date to client API format\r\n transformDate(date: string): string {\r\n const transformedDate = moment(date, 'DD/MM/yyyy').format('yyyyMMDD')\r\n return transformedDate ? transformedDate : '';\r\n }\r\n\r\n\r\n //#endregion\r\n\r\n\r\n\r\n}\r\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { NgbActiveModal, NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { WizardComponent } from 'angular2-wizard';\r\nimport { NgxPaginationConfig } from 'src/app/models/ngx-pagination-config';\r\nimport { ActivityService } from 'src/app/services/activity.service';\r\nimport { ConfirmationPopupComponent } from '../confirmation-popup/confirmation-popup.component';\r\nimport { MasterDataService } from 'src/app/services/master-data.service';\r\nimport { CompanyData, WorkCenterData } from 'src/app/models/PlanDePrevWizardModel';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ErrorHandlerService } from 'src/app/services/error-handler.service';\r\n\r\n@Component({\r\n selector: 'app-prevention-plan-popup',\r\n templateUrl: './prevention-plan-popup.component.html',\r\n styleUrls: ['./prevention-plan-popup.component.scss']\r\n})\r\nexport class PreventionPlanPopupComponent implements OnInit {\r\n @ViewChild(\"wizardComponent\", null) wizardComponent: WizardComponent;\r\n\r\n @Input() public companyData: any;\r\n workCenterList: WorkCenterData[];\r\n\r\n languageList = [{ value: 'es', label: 'Español' },\r\n { value: 'ca', label: 'Catalán' },\r\n { value: 'en', label: 'English' }];\r\n\r\n organizationChatrs: any = [];\r\n organizationPaginationConfig = new NgxPaginationConfig();\r\n isCommittee: boolean = false;\r\n isDelegados: boolean = false;\r\n itemsPerPage: number = 5;\r\n language_id: string = 'es';\r\n disableSendButton: boolean = true;\r\n\r\n FomularioForm = new FormGroup({\r\n direction: new FormControl({ disabled: true, value: '' }, [Validators.required]),\r\n population: new FormControl({ disabled: true, value: '' }, [Validators.required]),\r\n provincia: new FormControl({ disabled: true, value: '' }, Validators.required),\r\n companyActivity: new FormControl({ disabled: true, value: '' }),\r\n CIF: new FormControl({ disabled: true, value: '' }, Validators.required),\r\n CP: new FormControl({ disabled: true, value: '' }),\r\n CNAENum: new FormControl(null, [Validators.required]),\r\n CNAEDec: new FormControl(null, [Validators.required]),\r\n centros: new FormControl({ disabled: true, value: '' }),\r\n trabajadores: new FormControl({ disabled: true, value: '' }),\r\n });\r\n\r\n // WorkCenterForm = new FormGroup({\r\n // direction: new FormControl({ disabled: true, value: '' }, [Validators.required]),\r\n // population: new FormControl({ disabled: true, value: '' }, [Validators.required]),\r\n // description: new FormControl('', Validators.required),\r\n // CP: new FormControl({ disabled: true, value: '' }),\r\n // trabajadores: new FormControl({ disabled: true, value: '' }),\r\n // });\r\n\r\n OrganizationForm = new FormGroup({\r\n directorGeneral: new FormControl('', [Validators.required]),\r\n interlocutor: new FormControl('', [Validators.required]),\r\n isDelegados: new FormControl(false),\r\n delegados: new FormControl({value: '' ,disabled: true}),\r\n isCommittee: new FormControl(false),\r\n committee: new FormControl({value: '' ,disabled: true}),\r\n });\r\n\r\n EmailDownloadForm = new FormGroup({\r\n EmailSubject: new FormControl('', [Validators.required]),\r\n EmailBody: new FormControl(null , [Validators.required]),\r\n ContactEmail: new FormControl(null , [Validators.required]),\r\n });\r\n\r\n OrgTypeForm = new FormGroup({\r\n Unidad: new FormControl('', [Validators.required]),\r\n Responsable: new FormControl('', [Validators.required]),\r\n Trabajadores: new FormControl('', [Validators.required]),\r\n });\r\n\r\n constructor(public modal: NgbActiveModal,\r\n public fb: FormBuilder,\r\n private spinner: NgxSpinnerService,\r\n private toastrService: ToastrService,\r\n private errorHandler: ErrorHandlerService,\r\n public masterDataServices: MasterDataService,\r\n public activityService: ActivityService,\r\n private modalService: NgbModal) { }\r\n\r\n ngOnInit() {\r\n this.language_id = 'es';\r\n this.organizationPaginationConfig.itemsPerPage = this.itemsPerPage;\r\n this.organizationPaginationConfig.totalItems = this.organizationChatrs.length;\r\n this.organizationPaginationConfig.currentPage = 1;\r\n this.setEmailContent();\r\n this.getPlanWizardDetails(this.companyData.CompanyId);\r\n this.changeWizardText();\r\n }\r\n\r\n setEmailContent() {\r\n this.EmailDownloadForm.patchValue({\r\n EmailSubject: \"Documento Plan de Prevención\",\r\n EmailBody: `Apreciado cliente, \\n\\n` +\r\n `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eu nunc at nisl pellentesque vehicula sed sed leo. ` +\r\n `Praesent ut quam nec nisl tincidunt aliquet. Curabitur dignissim nulla purus, a semper odio lacinia ut. \\n\\n` +\r\n `Atentamente,`\r\n });\r\n }\r\n\r\n getPlanWizardDetails(companyId: string) {\r\n this.masterDataServices.getPlanDePrevencionDetails(companyId).subscribe(result => { \r\n if (result != null) {\r\n this.workCenterList = result.workCenter;\r\n this.setCompanyValues(result.company); \r\n }\r\n });\r\n }\r\n\r\n setCompanyValues(companyData: CompanyData) {\r\n this.FomularioForm.controls.direction.setValue(companyData.direccion);\r\n this.FomularioForm.controls.population.setValue(companyData.poblacion);\r\n this.FomularioForm.controls.provincia.setValue(companyData.provincia);\r\n this.FomularioForm.controls.CIF.setValue(companyData.cif);\r\n this.FomularioForm.controls.companyActivity.setValue(companyData.activity);\r\n this.FomularioForm.controls.CNAENum.setValue(companyData.cnaE_Num);\r\n this.FomularioForm.controls.CNAEDec.setValue(companyData.cnaE_Desc);\r\n this.FomularioForm.controls.CP.setValue(companyData.codigoPostal);\r\n this.FomularioForm.controls.trabajadores.setValue(companyData.numberOfEmployees);\r\n this.FomularioForm.controls.centros.setValue(this.workCenterList.length);\r\n }\r\n\r\n changeWizardText(_isFirma = false): void {\r\n const modalElement = document.getElementById('prevention-plan');\r\n const footer = modalElement.getElementsByClassName('card-footer')[0];\r\n const footerBtns = footer.getElementsByClassName('btn');\r\n\r\n for (let index = 0; index < footerBtns.length; index++) {\r\n footerBtns[index].classList.add('wizard-buttons');\r\n if (footerBtns[index].innerHTML === 'Previous') {\r\n footerBtns[index].innerHTML = 'Anterior';\r\n } else if (footerBtns[index].innerHTML === 'Next') {\r\n footerBtns[index].innerHTML = 'Siguiente';\r\n } else if (footerBtns[index].innerHTML === \"Done\") {\r\n const doneBtn = footerBtns[index] as HTMLElement | null;\r\n if (doneBtn != null) {\r\n doneBtn.style.display = \"none\";\r\n }\r\n }\r\n }\r\n }\r\n\r\n onDeleteOrganization(data: any) { \r\n const index = this.organizationChatrs.indexOf(data);\r\n const modalRef = this.modalService.open(ConfirmationPopupComponent, { centered: true });\r\n modalRef.componentInstance.confirmationMessage = \"quieres borrar este registro ?\";\r\n modalRef.result.then( close => {\r\n if (close == true) { \r\n this.organizationChatrs.splice(index, 1 );\r\n this.organizationPaginationConfig.totalItems = this.organizationChatrs.length;\r\n } \r\n });\r\n }\r\n\r\n addOrganization() {\r\n this.organizationChatrs.push({\r\n Unidad : \" \" , \r\n Responsable : ' ' , \r\n Trabajadores : ' '\r\n });\r\n this.organizationPaginationConfig.totalItems = this.organizationChatrs.length;\r\n let currentpage = this.calculatePages(this.organizationChatrs.length);\r\n this.organizationPaginationConfig.currentPage = currentpage;\r\n }\r\n\r\n public pageChanged(pageOfItems: number) {\r\n this.organizationPaginationConfig.currentPage = pageOfItems;\r\n }\r\n\r\n onComiteClick(event) {\r\n this.isCommittee = event.target.checked;\r\n if (event.target.checked == true) {\r\n this.isDelegados = true;\r\n this.OrganizationForm.controls.delegados.enable();\r\n this.OrganizationForm.controls.committee.enable();\r\n } else {\r\n this.isDelegados = false;\r\n this.OrganizationForm.controls.delegados.disable();\r\n this.OrganizationForm.controls.committee.disable();\r\n this.OrganizationForm.controls.delegados.setValue(\"\");\r\n this.OrganizationForm.controls.committee.setValue(\"\");\r\n }\r\n }\r\n\r\n calculatePages(rows: number) {\r\n const pages = rows / this.itemsPerPage;\r\n return Math.floor(pages) + (pages % 1 !== 0 ? 1 : 0);\r\n }\r\n\r\n onDelegadosClick(event) {\r\n this.isDelegados = event.target.checked;\r\n if (event.target.checked == true) {\r\n this.isDelegados = true;\r\n this.OrganizationForm.controls.delegados.enable();\r\n } else {\r\n this.isDelegados = false;\r\n this.OrganizationForm.controls.delegados.disable();\r\n this.OrganizationForm.controls.delegados.setValue(\"\");\r\n }\r\n }\r\n\r\n DownloadPDFDocument(): void {\r\n this.spinner.show(); \r\n var requestModel = this.setPlanDePrevDetails();\r\n\r\n this.masterDataServices.exportPlanDePrevePDF(requestModel).subscribe(response => {\r\n const linkSource = 'data:application/pdf;base64,' + response.base64String + '\\n';\r\n const downloadLink = document.createElement('a');\r\n const fileName = response.fileName;\r\n downloadLink.href = linkSource;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n this.spinner.hide();\r\n }, error => {\r\n this.toastrService.error('No se pudo descargar el archivo adjunto', 'Error');\r\n this.errorHandler.handle(error);\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n DownloadWordDocument(): void {\r\n this.spinner.show(); \r\n var requestModel = this.setPlanDePrevDetails();\r\n\r\n this.masterDataServices.exportPlanDePreveWord(requestModel).subscribe(response => {\r\n const linkSource = 'data:application/pdf;base64,' + response.base64String + '\\n';\r\n const downloadLink = document.createElement('a');\r\n const fileName = response.fileName;\r\n downloadLink.href = linkSource;\r\n downloadLink.download = fileName;\r\n downloadLink.click();\r\n this.spinner.hide();\r\n }, error => {\r\n this.toastrService.error('No se pudo descargar el archivo adjunto', 'Error');\r\n this.errorHandler.handle(error);\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n setPlanDePrevDetails() {\r\n let emailAddress = this.EmailDownloadForm.controls.ContactEmail.value;\r\n let recipientEmail= [];\r\n if(emailAddress != null) {\r\n emailAddress.forEach(item => {\r\n recipientEmail.push(item.value);\r\n });\r\n } \r\n\r\n return {\r\n companyName: this.companyData.CompanyName,\r\n cif: this.FomularioForm.controls.CIF.value,\r\n provincia: this.FomularioForm.controls.provincia.value,\r\n cnaE_Num: this.FomularioForm.controls.CNAENum.value,\r\n cnaE_Desc: this.FomularioForm.controls.CNAEDec.value,\r\n activity: this.FomularioForm.controls.companyActivity.value,\r\n direccion: this.FomularioForm.controls.direction.value,\r\n poblacion: this.FomularioForm.controls.population.value,\r\n codigoPostal: this.FomularioForm.controls.CP.value,\r\n numberOfEmployees: Number(this.FomularioForm.controls.trabajadores.value),\r\n workCenters: this.workCenterList,\r\n organizations: {\r\n directorGeneral: this.OrganizationForm.controls.directorGeneral.value,\r\n interlocutor: this.OrganizationForm.controls.interlocutor.value,\r\n isDelegados: this.isDelegados ,\r\n isCommittee: this.isCommittee ,\r\n delegados: this.OrganizationForm.controls.delegados.value,\r\n committee: this.OrganizationForm.controls.committee.value,\r\n organigramaCharts: this.organizationChatrs},\r\n emailSubject: this.EmailDownloadForm.controls.EmailSubject.value,\r\n emailBody: this.EmailDownloadForm.controls.EmailBody.value,\r\n recipientEmail: recipientEmail,\r\n };\r\n \r\n }\r\n\r\n public sendPlanDePrevensionEmail(): void {\r\n // if(this.disableSendButton){\r\n \r\n // this.toastrService.error('Opción deshabilitada temporalmente: descarga y revisa el PDF y envíalo manualmente, una vez comprobado.');\r\n // return;\r\n // }\r\n if (this.EmailDownloadForm.valid) {\r\n this.spinner.show();\r\n setTimeout(() => {\r\n let requestData = this.setPlanDePrevDetails();\r\n this.masterDataServices.sendPlanDePrevencionEmail(requestData).subscribe(\r\n (response) => {\r\n this.spinner.hide();\r\n this.modal.close();\r\n this.toastrService.success(\r\n \"El correo electrónico se ha enviado correctamente a las direcciones de correo electrónico proporcionadas.\",\r\n \"Éxito\"\r\n );\r\n },\r\n (error) => {\r\n this.spinner.hide();\r\n this.errorHandler.handle(error);\r\n this.toastrService.error(\r\n \"No se pudo enviar el correo electrónico\",\r\n \"Error\"\r\n );\r\n }\r\n );\r\n }, 8000);\r\n } else {\r\n this.toastrService.warning(\r\n \"Ingrese detalles válidos para continuar\",\r\n \"Advertencia\"\r\n );\r\n }\r\n }\r\n\r\n}\r\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { NgbActiveModal, NgbModalOptions } from '@ng-bootstrap/ng-bootstrap';\r\nimport { DropDownList } from '@syncfusion/ej2-angular-dropdowns';\r\nimport { Column, DataStateChangeEventArgs, EditEventArgs, EditSettingsModel, GridComponent, IEditCell, SelectionSettingsModel, TextWrapSettingsModel, ToolbarItems } from '@syncfusion/ej2-angular-grids';\r\nimport { DialogComponent } from '@syncfusion/ej2-angular-popups';\r\nimport { EmitType } from '@syncfusion/ej2-base';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { UserConfigService } from 'src/app/services/common/user-config.service';\r\nimport { ErrorHandlerService } from 'src/app/services/error-handler.service';\r\nimport Swal from 'sweetalert2';\r\nimport { L10n, setCulture } from '@syncfusion/ej2-base';\r\n\r\nsetCulture('es-ES');\r\n\r\nL10n.load({\r\n 'es-ES': {\r\n 'grid': {\r\n 'EmptyRecord': 'No hay registros que mostrar', \r\n 'Item': 'Artículo',\r\n 'Items': 'Elementos',\r\n 'Edit': 'Editar',\r\n 'Add' : 'Agregar',\r\n 'Cancel': 'Cerrar',\r\n 'Update': 'Actualizar',\r\n 'EditOperationAlert' : 'No hay registros seleccionados',\r\n 'SaveButton' : 'Guardar' ,\r\n 'OKButton' : 'De acuerdo' ,\r\n 'CancelButton' : 'Cerrar',\r\n 'ClearButton' : 'Limpiar',\r\n 'FilterButton' : 'Filtrar',\r\n 'StartsWith' : 'Comienza con',\r\n 'EndsWith' :\t'Termina con' ,\r\n 'Contains' :\t'Contiene',\r\n 'Equal' :\t'Igual',\r\n 'NotEqual' :\t'No es igual',\r\n 'LessThan' :\t'Menos que',\r\n 'LessThanOrEqual'\t: 'Menor o igual',\r\n 'GreaterThan'\t: 'Mas grande que',\r\n 'GreaterThanOrEqual':\t'Mayor que o igual',\r\n 'Empty' : 'Vacío',\r\n 'Not Empty' : 'No Vacío',\r\n 'InvalidFilterMessage': 'Mensaje de filtro no válido',\r\n 'CustomFilterPlaceHolder' : 'Introduzca el valor',\r\n 'NoResult': 'No se encontraron coincidencias',\r\n 'True': 'Verdadero',\r\n 'False' : 'Falso',\r\n 'Matchs' :\t'No se encontraron coincidencias',\r\n 'FilterTrue' :\t'Verdadero',\r\n 'FilterFalse' :\t'Falso',\r\n 'CustomFilter' :\t'Filtro personalizado',\r\n },\r\n 'pager':{\r\n 'currentPageInfo': '{0} Anterior {1} Siguiente ',\r\n 'totalItemsInfo': ' (Total de {0} documentos encontrados.)' \r\n }\r\n }\r\n});\r\n\r\n@Component({\r\n selector: 'app-role-config-popup',\r\n templateUrl: './role-config-popup.component.html',\r\n styleUrls: ['./role-config-popup.component.scss']\r\n})\r\nexport class RoleConfigPopupComponent implements OnInit {\r\n\r\n @ViewChild('ejRolesDialog') ejRolesDialog: DialogComponent;\r\n @ViewChild('ejUserDialog') ejUserDialog: DialogComponent;\r\n @ViewChild('ejPermitDialog') ejPermitDialog: DialogComponent;\r\n // Create element reference for dialog target element.\r\n @ViewChild('container', { read: ElementRef, static: true }) container: ElementRef;\r\n @ViewChild('roleGrid') roleGrid?: GridComponent;\r\n @ViewChild('userGrid') userGrid?: GridComponent;\r\n @ViewChild('permissionGrid') permissionGrid?: GridComponent;\r\n modalOptions: NgbModalOptions;\r\n\r\n public targetElement: HTMLElement;\r\n public height: string = '300px';\r\n public width: string = '900px';\r\n public rolefilterSettings: object;\r\n public userfilterSettings: object;\r\n public permitfilterSettings: object;\r\n\r\n public roleEditSettings?: EditSettingsModel;\r\n public userEditSettings?: EditSettingsModel;\r\n public permitEditSettings?: EditSettingsModel;\r\n public roletoolbar?: ToolbarItems[];\r\n public usertoolbar?: ToolbarItems[];\r\n public permittoolbar?: ToolbarItems[]; \r\n public userSelectionOptions?: SelectionSettingsModel;\r\n public permitselectionOptions?: SelectionSettingsModel;\r\n\r\n public requiredRule?: object;\r\n public permissionRule?: object;\r\n public state: DataStateChangeEventArgs = { skip: 0, take: 10 };\r\n public roleList: any;\r\n public userList: any;\r\n public allUserList: any;\r\n allPermissions: any;\r\n selectedrecords: any;\r\n permissionList: any;\r\n roleTitle: string = \"\";\r\n permissionRules?: object;\r\n userRules?: object;\r\n\r\n public userstateParams?: IEditCell;\r\n public userstateElem?: HTMLElement;\r\n public userstateObj?: DropDownList;\r\n public permitStateParams?: IEditCell;\r\n public permitStateElem?: HTMLElement;\r\n public permitStateObj?: DropDownList;\r\n public valPermissionChange(args: any) {\r\n (window as any)['permisionCode'] = (args as any).value;\r\n }\r\n\r\n public valUserChange(args: any) {\r\n (window as any)['fullName'] = (args as any).value;\r\n }\r\n\r\n public wrapSettings: TextWrapSettingsModel = { wrapMode: 'Header' };\r\n public isModal: Boolean = true;\r\n roleId: number = 0;\r\n public value = 'value';\r\n\r\n public dialogAnimation: Object = { effect: 'None' };\r\n public closeOnEscape: boolean = false;\r\n public visibleUserDialog: Boolean = false;\r\n public visiblePermitDialog: Boolean = false;\r\n\r\n constructor(public modal: NgbActiveModal,\r\n public service: UserConfigService,\r\n private toastrService: ToastrService,\r\n private errorHandler: ErrorHandlerService) {\r\n this.modalOptions = {\r\n backdrop: 'static',\r\n windowClass: 'text-left modal-fade-animation',\r\n centered: true,\r\n size: 'lg'\r\n };\r\n }\r\n\r\n ngOnInit() {\r\n this.setGridSettings();\r\n this.getAllRoles();\r\n this.getAllUserList();\r\n this.getAllPermissionList();\r\n } \r\n\r\n setGridSettings() {\r\n this.rolefilterSettings = { type: 'Menu' , operators: {\r\n stringOperator: [\r\n { value: 'startsWith', text: 'Comienza con' },\r\n { value: 'endsWith', text: 'Termina con' },\r\n { value: 'contains', text: 'Contiene' }\r\n ],\r\n }};\r\n this.roleEditSettings = { allowEditing: true, allowAdding: true, mode: 'Normal' };\r\n this.roletoolbar = ['Add', 'Edit', 'Update', 'Cancel'];\r\n this.requiredRule = { required: true };\r\n\r\n this.userfilterSettings = { type: 'Menu' };\r\n this.userEditSettings = { allowAdding: true, mode: 'Normal' };\r\n this.usertoolbar = ['Add' , 'Update', 'Cancel'];\r\n this.userSelectionOptions = { checkboxMode: 'ResetOnRowClick'}; \r\n this.userRules = { required: [this.comboValidationFn, 'El campo es obligatorio'] }; \r\n\r\n this.permitfilterSettings = { type: 'Menu' };\r\n this.permitEditSettings = { allowAdding: true, mode: 'Normal' };\r\n this.permittoolbar = ['Add' , 'Update', 'Cancel'];\r\n this.permitselectionOptions = { checkboxMode: 'ResetOnRowClick'}; \r\n this.permissionRules = { required: [this.comboValidationFn, 'El campo es obligatorio'] };\r\n }\r\n\r\n public comboValidationFn: (args: { [key: string]: string }) => boolean = (args: { [key: string]: string }) => {\r\n return args[\"value\"] != '';\r\n }\r\n\r\n // Hide the Dialog when click the footer button.\r\n public hideDialog: EmitType = () => {\r\n this.ejRolesDialog.hide();\r\n }\r\n\r\n getAllRoles() {\r\n this.service.getAllRoles().subscribe(result => {\r\n this.roleList = result;\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n }\r\n\r\n public openUserDialog = (event: any): void => { \r\n this.roleId = event.roleId;\r\n this.roleTitle = \"Role :- \" + event.roleCode;\r\n this.getRoleUserList();\r\n }\r\n\r\n public openPermissionDialog = (event: any): void => {\r\n this.roleId = event.roleId;\r\n this.roleTitle = \"Role :- \" + event.roleCode;\r\n this.getRolePermissions();\r\n }\r\n\r\n public getRolePermissions() {\r\n this.permissionList = [];\r\n this.service.getRolePermissions(this.roleId).subscribe(result => {\r\n if (result.length > 0) {\r\n this.permissionList = result;\r\n this.ejPermitDialog.show();\r\n } else {\r\n this.ejPermitDialog.show();\r\n }\r\n })\r\n }\r\n\r\n public getRoleUserList() {\r\n this.userList = [];\r\n this.service.getRoleUserList(this.roleId).subscribe(result => {\r\n if (result.length > 0) {\r\n this.userList = result;\r\n this.ejUserDialog.show();\r\n } else {\r\n this.ejUserDialog.show();\r\n }\r\n })\r\n }\r\n\r\n userGridSettings() {\r\n this.userstateParams = {\r\n create: () => {\r\n this.userstateElem = document.createElement('input');\r\n return this.userstateElem;\r\n },\r\n read: () => {\r\n return (this.userstateObj as any).text;\r\n },\r\n destroy: () => {\r\n (this.userstateObj as any).destroy();\r\n },\r\n write: () => {\r\n this.userstateObj = new DropDownList({\r\n dataSource: this.allUserList,\r\n fields: { value: 'userId', text: 'fullName' },\r\n enabled: true,\r\n placeholder: 'seleccionar',\r\n floatLabelType: 'Never',\r\n allowFiltering: true,\r\n change: this.valUserChange\r\n });\r\n this.userstateObj.appendTo(this.userstateElem);\r\n }\r\n }\r\n }\r\n\r\n permitGridSettings() {\r\n this.permitStateParams = {\r\n create: () => {\r\n this.permitStateElem = document.createElement('input');\r\n return this.permitStateElem;\r\n },\r\n read: () => {\r\n return (this.permitStateObj as any).text;\r\n },\r\n destroy: () => {\r\n (this.permitStateObj as any).destroy();\r\n },\r\n write: () => {\r\n this.permitStateObj = new DropDownList({\r\n dataSource: this.allPermissions,\r\n fields: { value: 'permissionId', text: 'permisionCode' },\r\n enabled: true,\r\n placeholder: 'seleccionar',\r\n floatLabelType: 'Never',\r\n allowFiltering: true,\r\n change: this.valPermissionChange\r\n });\r\n this.permitStateObj.appendTo(this.permitStateElem);\r\n }\r\n }\r\n }\r\n\r\n getAllUserList() {\r\n this.service.getAllUsers().subscribe(res => {\r\n if(res.length > 0) { \r\n this.allUserList = res.filter(x => x.roleId == 0 && x.deleted == false);\r\n this.userGridSettings();\r\n }\r\n });\r\n }\r\n\r\n getAllPermissionList() {\r\n this.service.getAllPermission().subscribe(res => {\r\n if(res.length > 0) {\r\n this.allPermissions = res.filter(x => x.deleted == false); \r\n this.permitGridSettings();\r\n }\r\n });\r\n }\r\n\r\n // Enables the footer buttons\r\n public buttons: Object = [\r\n {\r\n 'click': this.hideDialog.bind(this),\r\n buttonModel: {\r\n content: 'Cerrar'\r\n }\r\n }\r\n ];\r\n\r\n onClickClose(_event) {\r\n this.modal.close();\r\n }\r\n\r\n actionRoleBegin(args: EditEventArgs) {\r\n if ((args as any).requestType === 'add') {\r\n for (const cols of (this.roleGrid as any).columns) {\r\n if ((cols as Column).field === 'roleCode') {\r\n (cols as Column).allowEditing = true;\r\n }\r\n }\r\n } else if ((args as any).requestType === 'beginEdit') {\r\n for (const cols of (this.roleGrid as any).columns) {\r\n if ((cols as Column).field === 'roleCode') {\r\n (cols as Column).allowEditing = false;\r\n }\r\n }\r\n }\r\n // if ((args as any).requestType === 'refresh' || (args as any).requestType === 'paging') {\r\n // this.roleGrid.hideColumns('RoleId');\r\n // }\r\n }\r\n\r\n actionRoleComplete(args: any) {\r\n if ((args as any).requestType === 'save') {\r\n const editData = args.data;\r\n this.service.saveUpdateRoles(editData).subscribe(_result => {\r\n if (_result && _result.result == \"success\") {\r\n this.toastrService.success('Guardado exitosamente', 'Éxito');\r\n this.getAllRoles(); \r\n }\r\n this.roleGrid.endEdit();\r\n }, (e) => {\r\n console.error(e);\r\n this.roleGrid.closeEdit();\r\n });\r\n }\r\n }\r\n\r\n actionUserComplete(args: any) { \r\n if ((args as any).requestType === 'save') {\r\n const editData = args.data;\r\n \r\n const user = this.allUserList.filter(x => x.fullName == editData[\"fullName\"]);\r\n if (user.length > 0) {\r\n const userRoles = {\r\n roleId: this.roleId,\r\n userId: user[0][\"userId\"]\r\n };\r\n this.service.saveuserRoles(userRoles).subscribe(_result => {\r\n if (_result && _result.result == \"success\") {\r\n this.toastrService.success('Guardado exitosamente', 'Éxito');\r\n this.getRoleUserList();\r\n this.getAllUserList();\r\n }\r\n this.userGrid.endEdit(); \r\n }, (e) => {\r\n console.error(e);\r\n this.userGrid.closeEdit();\r\n });\r\n } else {\r\n this.userGrid.closeEdit();\r\n } \r\n }\r\n } \r\n\r\n actionPermitComplete(args: any) {\r\n if ((args as any).requestType === 'save') {\r\n const editData = args.data;\r\n \r\n const user = this.allPermissions.filter(x => x.permisionCode == editData[\"permisionCode\"]);\r\n if (user.length > 0) {\r\n const rolePermission = {\r\n roleId: this.roleId,\r\n permissionId: user[0][\"permissionId\"]\r\n };\r\n this.service.saveRolePermisssion(rolePermission).subscribe(_result => {\r\n if (_result && _result.result == \"success\") {\r\n this.toastrService.success('Guardado exitosamente', 'Éxito');\r\n this.getRolePermissions();\r\n } else {\r\n this.getRolePermissions();\r\n this.toastrService.warning('El permiso ya existe', 'Advertencia');\r\n }\r\n this.permissionGrid.endEdit(); \r\n }, (e) => {\r\n console.error(e);\r\n this.permissionGrid.closeEdit();\r\n });\r\n } else {\r\n this.permissionGrid.closeEdit();\r\n } \r\n }\r\n }\r\n\r\n onClickUserDelete(selectedrecords: any) {\r\n let userList = [];\r\n selectedrecords.forEach(element => {\r\n var obj = {RoleId: element.roleId , userId: element.userId};\r\n userList.push(obj); \r\n });\r\n\r\n this.service.DeleteRoleUser(userList).subscribe(result => {\r\n if (result && result.result == \"success\") {\r\n this.toastrService.success('Borrado exitosamente !', 'Éxito');\r\n this.getRoleUserList();\r\n } \r\n }, (e) => {\r\n console.error(e);\r\n });\r\n }\r\n\r\n\r\n public onDeleteUsers(_event: any): void { \r\n let selectedrecords = (this.userGrid as any).getSelectedRecords(); \r\n\r\n if (selectedrecords.length > 0) {\r\n Swal.fire({\r\n title: '¿Estás seguro de borrar la acción?',\r\n text: '',\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonText: 'Comienza a borrar',\r\n cancelButtonText: 'Cancelar'\r\n }).then((result) => {\r\n if (result.value) {\r\n this.onClickUserDelete(selectedrecords);\r\n } \r\n }); \r\n } else {\r\n this.toastrService.info('seleccione una fila para eliminar !', 'Información');\r\n } \r\n }\r\n\r\n public onDeletePermission(_event: any): void { \r\n let selectedrecords = (this.permissionGrid as any).getSelectedRecords(); \r\n\r\n if (selectedrecords.length > 0) {\r\n Swal.fire({\r\n title: '¿Estás seguro de borrar la acción?',\r\n text: '',\r\n icon: 'warning',\r\n showCancelButton: true,\r\n confirmButtonText: 'Comienza a borrar',\r\n cancelButtonText: 'Cancelar'\r\n }).then((result) => {\r\n if (result.value) {\r\n this.onClickPermissionDelete(selectedrecords);\r\n } \r\n }); \r\n } else {\r\n this.toastrService.info('seleccione una fila para eliminar !', 'Información');\r\n } \r\n }\r\n\r\n onClickPermissionDelete(selectedrecords: any) {\r\n let userList = [];\r\n selectedrecords.forEach(element => {\r\n var obj = {roleId: element.roleId , permissionId: element.permissionId};\r\n userList.push(obj); \r\n });\r\n\r\n this.service.DeleteRolePermission(userList).subscribe(result => {\r\n if (result && result.result == \"success\") {\r\n this.toastrService.success('Borrado exitosamente !', 'Éxito');\r\n this.getRolePermissions();\r\n } \r\n }, (e) => {\r\n console.error(e);\r\n });\r\n }\r\n\r\n\r\n}\r\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Column, DataStateChangeEventArgs, EditEventArgs, EditSettingsModel, GridComponent, IEditCell, IFilter, TextWrapSettingsModel, ToolbarItems } from '@syncfusion/ej2-angular-grids';\r\nimport { DialogComponent } from '@syncfusion/ej2-angular-popups';\r\nimport { EmitType } from '@syncfusion/ej2-base';\r\nimport { ErrorHandlerService } from 'src/app/services/error-handler.service';\r\nimport { MultiSelect, CheckBoxSelection, DropDownList } from '@syncfusion/ej2-angular-dropdowns';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { UserConfigService } from 'src/app/services/common/user-config.service';\r\nimport { L10n, setCulture } from '@syncfusion/ej2-base';\r\n\r\nMultiSelect.Inject(CheckBoxSelection);\r\nsetCulture('es-ES');\r\n\r\n\r\nL10n.load({\r\n 'es-ES': {\r\n 'grid': {\r\n 'EmptyRecord': 'No hay registros que mostrar', \r\n 'Item': 'Artículo',\r\n 'Items': 'Elementos',\r\n 'Edit': 'Editar',\r\n 'Add' : 'Agregar',\r\n 'Cancel': 'Cerrar',\r\n 'Update': 'Actualizar',\r\n 'EditOperationAlert' : 'No hay registros seleccionados',\r\n 'SaveButton' : 'Guardar' ,\r\n 'OKButton' : 'De acuerdo' ,\r\n 'CancelButton' : 'Cerrar',\r\n 'ClearButton' : 'Limpiar',\r\n 'FilterButton' : 'Filtrar',\r\n 'StartsWith' : 'Comienza con',\r\n 'EndsWith' :\t'Termina con' ,\r\n 'Contains' :\t'Contiene',\r\n 'Equal' :\t'Igual',\r\n 'NotEqual' :\t'No es igual',\r\n 'LessThan' :\t'Menos que',\r\n 'LessThanOrEqual'\t: 'Menor o igual',\r\n 'GreaterThan'\t: 'Mas grande que',\r\n 'GreaterThanOrEqual':\t'Mayor que o igual',\r\n 'Empty' : 'Vacío',\r\n 'Not Empty' : 'No Vacío',\r\n 'InvalidFilterMessage': 'Mensaje de filtro no válido',\r\n 'CustomFilterPlaceHolder' : 'Introduzca el valor',\r\n 'NoResult': 'No se encontraron coincidencias',\r\n 'SelectAll' : 'Seleccionar todo',\r\n 'Blanks' : 'espacios en blanco',\r\n 'TextFilter' : 'Filtro de texto',\r\n 'CustomFilter' : 'Filtro personalizado',\r\n 'Search' : 'Buscar',\r\n 'True': 'Verdadero',\r\n 'False' : 'Falso',\r\n 'Matchs' :\t'No se encontraron coincidencias',\r\n 'FilterTrue' :\t'Verdadero',\r\n 'FilterFalse' :\t'Falso',\r\n },\r\n 'pager':{\r\n 'currentPageInfo': '{0} Anterior {1} Siguiente ',\r\n 'totalItemsInfo': ' (Total de {0} documentos encontrados.)' \r\n }\r\n }\r\n});\r\n\r\n@Component({\r\n selector: 'app-user-config-popup',\r\n templateUrl: './user-config-popup.component.html',\r\n styleUrls: ['./user-config-popup.component.scss']\r\n})\r\nexport class UserConfigPopupComponent implements OnInit {\r\n @ViewChild('ejDialog') ejDialog: DialogComponent;\r\n // Create element reference for dialog target element.\r\n @ViewChild('container', { read: ElementRef, static: true }) container: ElementRef;\r\n @ViewChild('userGrid') userGrid?: GridComponent;\r\n // The Dialog shows within the target element.\r\n public targetElement: HTMLElement;\r\n public visible: Boolean = false;\r\n public height: string = '500px';\r\n public width: string = '900px';\r\n public filterSettings: object;\r\n public filter?: IFilter;\r\n public editSettings?: EditSettingsModel;\r\n public toolbar?: ToolbarItems[];\r\n public stateParams?: IEditCell;\r\n public stateElem?: HTMLElement;\r\n public stateObj?: DropDownList;\r\n public state: DataStateChangeEventArgs;\r\n selectedRoleId: number = 0;\r\n roleRules?: object;\r\n\r\n public usersList: any;\r\n filterUserList: any;\r\n public roleList: any;\r\n public wrapSettings: TextWrapSettingsModel = { wrapMode: 'Header' };\r\n\r\n constructor(\r\n public modal: NgbActiveModal,\r\n public service: UserConfigService,\r\n private toastrService: ToastrService,\r\n private errorHandler: ErrorHandlerService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.setGridSettings();\r\n this.getAllRoles();\r\n this.getAllUsers();\r\n }\r\n\r\n setGridSettings() {\r\n this.filterSettings = { type: 'Menu' };\r\n this.filter = { type: 'CheckBox' };\r\n this.editSettings = { allowEditing: true, mode: 'Dialog' };\r\n this.toolbar = ['Edit'];\r\n const state: any = { skip: 0, take: 12 };\r\n this.roleRules = { required: [this.comboValidationFn, 'El campo es obligatorio'] };\r\n\r\n this.stateParams = {\r\n create: () => {\r\n this.stateElem = document.createElement('input');\r\n return this.stateElem;\r\n },\r\n read: () => {\r\n return (this.stateObj as any).text;\r\n },\r\n destroy: () => {\r\n (this.stateObj as any).destroy();\r\n },\r\n write: () => {\r\n this.stateObj = new DropDownList({\r\n dataSource: this.roleList,\r\n fields: { value: 'roleId', text: 'roleCode' },\r\n enabled: true,\r\n placeholder: 'seleccionar',\r\n floatLabelType: 'Never',\r\n value: this.selectedRoleId\r\n });\r\n this.stateObj.appendTo(this.stateElem);\r\n }\r\n }\r\n }\r\n\r\n public comboValidationFn: (args: { [key: string]: string }) => boolean = (args: { [key: string]: string }) => {\r\n return args[\"value\"] != '0';\r\n }\r\n\r\n // Hide the Dialog when click the footer button.\r\n public hideDialog: EmitType = () => {\r\n this.ejDialog.hide();\r\n }\r\n\r\n // Enables the footer buttons\r\n public buttons: Object = [\r\n {\r\n 'click': this.hideDialog.bind(this),\r\n buttonModel: {\r\n content: 'Cerrar'\r\n }\r\n }\r\n ];\r\n\r\n onClickClose(_event) {\r\n this.modal.close();\r\n }\r\n\r\n getAllUsers() {\r\n this.service.getAllUsers().subscribe(result => {\r\n this.usersList = result;\r\n this.filterUserList = result;\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n }\r\n\r\n getAllRoles() {\r\n this.service.getAllRoles().subscribe(result => {\r\n this.roleList = result;\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n }\r\n\r\n actionBegin(args: EditEventArgs) {\r\n if ((args as any).requestType === 'beginEdit' ) {\r\n this.selectedRoleId = args.rowData[\"roleId\"];\r\n for (const cols of (this.userGrid as any).columns) {\r\n if ((cols as Column).field === 'nombre' || (cols as Column).field === 'nombreApellidos' || (cols as Column).field === 'apellidos'\r\n || (cols as Column).field === 'firma' || (cols as Column).field === 'firmaPath') {\r\n (cols as Column).visible = true;\r\n } else if ((cols as Column).field === 'userId') {\r\n (cols as Column).visible = false;\r\n }\r\n }\r\n }\r\n if ((args as any).requestType === 'refresh' || (args as any).requestType === 'paging') {\r\n this.userGrid.hideColumns('Nombre');\r\n this.userGrid.hideColumns('Nombre Apellidos');\r\n this.userGrid.hideColumns('Firma');\r\n this.userGrid.hideColumns('Apellidos');\r\n this.userGrid.hideColumns('FirmaPath');\r\n this.userGrid.hideColumns('Deleted');\r\n this.userGrid.hideColumns('UserId');\r\n this.userGrid.hideColumns('RoleId');\r\n }\r\n }\r\n\r\n onUserStatus(event) {\r\n const status = event.checked;\r\n this.usersList = this.filterUserList.filter(x => x.deleted == status);\r\n }\r\n\r\n actionComplete(args: any) {\r\n if ((args as any).requestType === 'beginEdit' || (args as any).requestType === 'add') {\r\n const dialog = (args as any).dialog;\r\n dialog.showCloseIcon = false;\r\n dialog.saveModel\r\n dialog.height = 400;\r\n // change the header of the dialog\r\n dialog.header = (args as any).requestType === 'beginEdit' ? 'Editar registro de ' + (args as any).rowData['username'] : 'Nuevo usuario';\r\n } else if ((args as any).requestType === 'save') {\r\n const editData = args.data;\r\n const role = this.roleList.filter(x => x.roleCode == editData[\"role\"]);\r\n const userRoles = {\r\n RoleId: role[0].roleId,\r\n UserId: editData[\"userId\"]\r\n };\r\n this.service.saveuserRoles(userRoles).subscribe(_result => {\r\n if (_result && _result.result == \"success\") {\r\n this.toastrService.success('Guardado exitosamente', 'Éxito');\r\n this.getAllUsers();\r\n }\r\n this.userGrid.endEdit(); \r\n }, (e) => {\r\n console.error(e);\r\n this.userGrid.closeEdit();\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { SelectOptions } from 'src/app/models/select-options.model';\r\nimport { DropdownService } from 'src/app/services/dropdown.service';\r\nimport { ActivityService } from 'src/app/services/activity.service';\r\nimport { ErrorHandlerService } from 'src/app/services/error-handler.service';\r\nimport { Router, NavigationEnd } from '@angular/router';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { FilterService } from 'src/app/services/filter.service';\r\nimport { Subject, debounceTime, distinctUntilChanged } from 'rxjs';\r\nimport { Constants } from 'src/app/Helpers/constant';\r\n\r\n@Component({\r\n selector: 'app-filters',\r\n templateUrl: './filters.component.html',\r\n styleUrls: ['./filters.component.scss']\r\n})\r\nexport class FiltersComponent implements OnInit {\r\n\r\n navigationList$: SelectOptions[];\r\n selectedNavigationOption: string;\r\n activityTypes$: SelectOptions[];\r\n companies$: SelectOptions[];\r\n workingCentres$: SelectOptions[];\r\n users$: SelectOptions[];\r\n activityStatusTypes$: SelectOptions[];\r\n radioButtonOption = 'AssignedToMe';\r\n disableGetAll=true;\r\n isRadioButtonChange = false;\r\n isCompanyDropdownClicked = false;\r\n disableGetAssigna=false;\r\n \r\n private companySubject: Subject = new Subject();\r\n private centerSubject: Subject = new Subject();\r\n private typeOfActivitySubject: Subject = new Subject();\r\n private userSubject: Subject = new Subject();\r\n\r\n constructor(\r\n private dropdownService: DropdownService,\r\n private errorHandler: ErrorHandlerService,\r\n private activityService: ActivityService,\r\n private router: Router,\r\n private spinner: NgxSpinnerService,\r\n public filterService: FilterService\r\n ) {\r\n router.events.subscribe((val) => {\r\n if (val instanceof NavigationEnd) {\r\n this.setCurrentNavigation();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n // Commmented on client request=> Bug ID:74306\r\n // Load only 'all' option\r\n this.loadAllUsers();\r\n this.LoadAllActivityTypes();\r\n this.LoadAllCompanies();\r\n this.LoadAllActivityStatusTypes();\r\n this.LoadNavigationList();\r\n this.clearDropdownValues();\r\n\r\n this.companySubject.pipe( \r\n debounceTime(Constants.DEBOUNCE_TIME),\r\n distinctUntilChanged()\r\n ).subscribe(companyName => this.loadTopMatchingCompanies(companyName));\r\n\r\n this.centerSubject.pipe(\r\n debounceTime(Constants.DEBOUNCE_TIME),\r\n distinctUntilChanged()\r\n ).subscribe(centerName => this.loadTopMatchingWorkcentres(centerName));\r\n\r\n this.typeOfActivitySubject.pipe(\r\n debounceTime(Constants.DEBOUNCE_TIME),\r\n distinctUntilChanged()\r\n ).subscribe(typeOfActivity => this.loadTopMatchingActivityTypes(typeOfActivity));\r\n this.filterService.filterObject.id_tecnico=this.filterService.filterObject.id_tecnico_selected;\r\n }\r\n\r\n isCompanyClicked() {\r\n this.isCompanyDropdownClicked = true;\r\n }\r\n\r\n\r\n /*NOTE: There are 4 types of filters:\r\n 1.) TODAS =>If the ROLE of id_tecnico IS NOT ‘1’ nor ‘3’, returns the actuations relevant to him/her:\r\n the actuations assigned to him/her, plus the actuations created by him/her,\r\n plus the actuations from work centers assigned to him/her (centers where he/she is the “técnico de referencia”).\r\n 2.) ASIGNADASA =>It returns the actuations assigned to id_tecnico(Assigned user)\r\n 3.) DEMISCENTROS =>It returns the actuations from work centers assigned to id_tecnico\r\n (centers where he/she is the “técnico de referencia”).\r\n 4.) DEUNCENTRO =>Returns the actuations of the specified work center\r\n */\r\n\r\n public refreshActivityList(): void {\r\n this.filterService.resetPageDetails();\r\n\r\n if (this.filterService.filterObject.id_actuaciontipo === '0') {\r\n this.LoadAllActivityTypes(false);\r\n }\r\n\r\n if (this.filterService.filterObject.id_empresa === '0') {\r\n this.LoadAllCompanies(false);\r\n this.getCompanyWorkCentres('0', false);\r\n }\r\n\r\n this.filterService.setFilterValuesForAPI();\r\n\r\n // Get radio button selection and change filter mode\r\n if (this.radioButtonOption === 'GetAll') {\r\n this.filterService.filterObject.tipo_consulta = 'TODAS';\r\n } else if (this.radioButtonOption === 'AssignedToMe') {\r\n this.filterService.filterObject.tipo_consulta = 'ASIGNADASA';\r\n } else if (this.radioButtonOption === 'FromMyCentre') {\r\n this.filterService.filterObject.tipo_consulta = 'DEMISCENTROS';\r\n }\r\n\r\n this.spinner.show();\r\n const currentuser = JSON.parse(localStorage.getItem('loggeduser'));\r\n // Refresh the activity list only if the logged in user is valid(Prevent error on authentication failed scenario)\r\n if (currentuser) {\r\n \r\n this.activityService.getFilteredActivities(this.filterService.filterObject)\r\n .subscribe(response => {\r\n if (response.webError != null) {\r\n this.spinner.hide();\r\n this.errorHandler.handle(response.webError.messageToUser, true);\r\n } else {\r\n\r\n if (response.links.rowcount <= 25) {\r\n this.activityService.pageCount = 1;\r\n } else {\r\n this.activityService.pageCount = Math.floor(response.links.rowcount / response.data.length) + 1;\r\n }\r\n\r\n this.activityService.pageNumberList = Array.from(Array(this.activityService.pageCount).keys()).map(i => i + 1);\r\n const paginationRangeArr: any[] = this.activityService.getListViewPaginationRanges(this.activityService.pageNumberList);\r\n this.activityService.mapActivityToCalendarEvent(response.data, paginationRangeArr);\r\n this.activityService.activityCalendarRefreshSubject.next('');\r\n this.activityService.pageRangeSubject.next('');\r\n this.activityService.totalActionCountSubject.next(response.links.rowcount);\r\n this.activityService.selectedPageValueSubject.next('1');\r\n\r\n if (this.isRadioButtonChange) {\r\n this.isRadioButtonChange = false;\r\n }\r\n this.filterService.setFilterValuesForView();\r\n this.spinner.hide();\r\n }\r\n\r\n }, err => {\r\n this.spinner.hide();\r\n this.filterService.setFilterValuesForView();\r\n this.errorHandler.handle(err);\r\n });\r\n }\r\n }\r\n\r\n public onRadioButtonChange() {\r\n this.isCompanyDropdownClicked = false;\r\n\r\n if (this.radioButtonOption === 'GetAll') {\r\n this.disableGetAssigna=true;\r\n const currentUser = JSON.parse(localStorage.getItem('loggeduser'));\r\n this.filterService.filterObject.id_tecnico = currentUser.id;\r\n this.filterService.filterObject.tipo_consulta = 'TODAS';\r\n\r\n } else if (this.radioButtonOption === 'AssignedToMe') {\r\n this.disableGetAssigna=false;\r\n this.filterService.filterObject.id_tecnico=this.filterService.filterObject.id_tecnico_selected;\r\n this.filterService.filterObject.tipo_consulta = 'ASIGNADASA';\r\n\r\n } else if (this.radioButtonOption === 'FromMyCentre') {\r\n this.disableGetAssigna=true;\r\n this.filterService.filterObject.tipo_consulta = 'DEMISCENTROS';\r\n const currentUser = JSON.parse(localStorage.getItem('loggeduser'));\r\n this.filterService.filterObject.id_tecnico = currentUser.id;\r\n \r\n if(this.filterService.filterObject.id_tecnico_selected!=\"00000000000000-0000000-0000-W\")\r\n {\r\n this.filterService.filterObject.id_tecnico_selected=currentUser.id\r\n }\r\n }\r\n this.isRadioButtonChange = true;\r\n this.refreshActivityList();\r\n }\r\n\r\n // Load Dropdowns\r\n private LoadAllActivityTypes(setViewValue = true) {\r\n this.dropdownService.getActivityTypes('-99', 100).subscribe(response => {\r\n this.activityTypes$ = this.dropdownService.WrappedToDropDownList(response, 'name', 'activityTypeId', true);\r\n if (setViewValue) {\r\n this.filterService.filterObject.id_actuaciontipo = !this.filterService.filterObject.id_actuaciontipo\r\n ? '0' : this.filterService.filterObject.id_actuaciontipo;\r\n }\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n }\r\n\r\n private LoadAllCompanies(setViewValue = true) {\r\n this.dropdownService.getCompanies('-99', 0, '').subscribe(response => {\r\n this.companies$ = this.dropdownService.WrappedToDropDownList(response, 'name', 'companyId', true);\r\n if (setViewValue) {\r\n this.filterService.filterObject.id_empresa = !this.filterService.filterObject.id_empresa\r\n ? '0' : this.filterService.filterObject.id_empresa;\r\n }\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n }\r\n\r\n private LoadAllActivityStatusTypes(setViewValue = true) {\r\n this.dropdownService.getActivityStatusTypes().subscribe(response => {\r\n response = response.filter(x=>x.deleted == false);\r\n this.activityStatusTypes$ = this.dropdownService.WrappedToDropDownList(response, 'statusTypeName', 'id', true, false, true, true,true);\r\n if (setViewValue) {\r\n this.filterService.filterObject.id_actuacionestado = !this.filterService.filterObject.id_actuacionestado\r\n ? '0' : this.filterService.filterObject.id_actuacionestado;\r\n }\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n }\r\n\r\n\r\n public getCompanyWorkCentres(selectedOption: any, setViewValue = true) {\r\n this.filterService.filterObject.id_centro = setViewValue ? '0' : null;\r\n if (selectedOption) {\r\n this.dropdownService.getWorkingCentresByCompany(selectedOption.value, '-99', 100, '', false).subscribe(response => {\r\n this.workingCentres$ = this.dropdownService.WrappedToDropDownList(response, 'centreName', 'id', true);\r\n if (this.isCompanyDropdownClicked) {\r\n this.refreshActivityList();\r\n this.isCompanyDropdownClicked = false;\r\n }\r\n if (setViewValue) {\r\n this.filterService.filterObject.id_centro = !this.filterService.filterObject.id_centro\r\n ? '0' : this.filterService.filterObject.id_centro;\r\n }\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n } else {\r\n this.workingCentres$ = null;\r\n }\r\n }\r\n\r\n private LoadNavigationList() {\r\n this.navigationList$ = [\r\n { label: 'Vista Calendario', value: '1' },\r\n { label: 'Vista Listado', value: '2' }\r\n ];\r\n }\r\n\r\n navigateToPage(item) {\r\n switch (item.value) {\r\n case '1':\r\n this.router.navigate(['/home/calendar']);\r\n break;\r\n case '2':\r\n this.router.navigate(['/home/list']);\r\n break;\r\n default:\r\n this.router.navigate(['/home/calendar']);\r\n }\r\n }\r\n\r\n setCurrentNavigation() {\r\n let usePagination: boolean;\r\n if (this.router.url === '/home/calendar') {\r\n this.selectedNavigationOption = '1';\r\n this.disableGetAll = true;\r\n if(this.radioButtonOption==='GetAll'){this.radioButtonOption = 'AssignedToMe'}\r\n } else if (this.router.url === '/home/list') {\r\n this.selectedNavigationOption = '2';\r\n this.disableGetAll = false;\r\n usePagination = true;\r\n }\r\n this.filterService.resetDateFilters();\r\n this.filterService.setPageSize(usePagination);\r\n }\r\n\r\n clearDropdownValues() {\r\n this.LoadAllCompanies();\r\n this.LoadAllActivityTypes();\r\n this.getCompanyWorkCentres('0');\r\n }\r\n\r\n setDropDownValues() {\r\n this.filterService.filterObject.id_actuaciontipo = !this.filterService.filterObject.id_actuaciontipo\r\n ? '0' : this.filterService.filterObject.id_actuaciontipo;\r\n this.filterService.filterObject.id_empresa = !this.filterService.filterObject.id_empresa\r\n ? '0' : this.filterService.filterObject.id_empresa;\r\n this.filterService.filterObject.id_centro = !this.filterService.filterObject.id_centro\r\n ? '0' : this.filterService.filterObject.id_centro;\r\n this.filterService.filterObject.id_actuacionestado = !this.filterService.filterObject.id_actuacionestado\r\n ? '0' : this.filterService.filterObject.id_actuacionestado;\r\n }\r\n\r\n \r\n //#region \"Limited value loading for main dropdowns \"\r\n\r\n // Company\r\n loadTopMatchingCompanies(companyNameTarget: any) {\r\n // Trigger the loading only if string length is>=4\r\n if (companyNameTarget.length >= 4) { \r\n this.dropdownService.getCompanies(companyNameTarget, 100, '', true).subscribe(response => {\r\n this.companies$ = this.dropdownService.WrappedToDropDownList(response, 'name', 'companyId', true);\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n } else {\r\n this.filterService.filterObject.id_empresa = null;\r\n this.companies$ = null;\r\n this.workingCentres$ = null;\r\n if (companyNameTarget.length === 0) {\r\n this.filterService.filterObject.id_empresa = '0';\r\n this.filterService.filterObject.id_centro = '0';\r\n this.refreshActivityList();\r\n }\r\n }\r\n }\r\n onKeyUpCompany(companyNameTarget:any){\r\n if(companyNameTarget.target.value != null){\r\n this.companySubject.next(companyNameTarget.target.value);\r\n }\r\n }\r\n\r\n // workCentres\r\n loadTopMatchingWorkcentres(wcNameTarget: any) {\r\n // Trigger the loading only if string length is>=4\r\n if (wcNameTarget.length >= 4) { \r\n const empresaId = this.filterService.filterObject.id_empresa;\r\n this.dropdownService.getWorkingCentresByCompany(empresaId, wcNameTarget, 100, '', true).subscribe(response => {\r\n this.workingCentres$ = this.dropdownService.WrappedToDropDownList(response, 'centreName', 'id', true);\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n } else {\r\n this.filterService.filterObject.id_centro = null;\r\n this.workingCentres$ = this.workingCentres$ ? this.workingCentres$ : null;\r\n if (wcNameTarget.length === 0) {\r\n this.filterService.filterObject.id_centro = '0';\r\n this.refreshActivityList();\r\n }\r\n }\r\n }\r\n\r\n onKeyUpCenter(centerNameTarget:any){\r\n if(centerNameTarget.target.value != null){\r\n this.centerSubject.next(centerNameTarget.target.value);\r\n }\r\n }\r\n // acivity types\r\n loadTopMatchingActivityTypes(activityTypeNameTarget: any) {\r\n // Trigger the loading only if string length is>=4\r\n if (activityTypeNameTarget.length >= 4) { \r\n this.dropdownService.getActivityTypes(activityTypeNameTarget, 100, '', false, true).subscribe(response => {\r\n this.activityTypes$ = this.dropdownService.WrappedToDropDownList(response, 'name', 'activityTypeId', true);\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n } else {\r\n this.activityTypes$ = null;\r\n this.filterService.filterObject.id_actuaciontipo = null;\r\n if (activityTypeNameTarget.length === 0) {\r\n this.filterService.filterObject.id_actuaciontipo = '0';\r\n this.refreshActivityList();\r\n }\r\n }\r\n }\r\n\r\n onKeyUpTypeOfActivity(typeOfActivityTarget:any){\r\n if(typeOfActivityTarget.target.value != null){\r\n this.typeOfActivitySubject.next(typeOfActivityTarget.target.value);\r\n }\r\n }\r\n\r\n loadAllUsers()\r\n {\r\n const userId = JSON.parse(localStorage.getItem('loggeduser')).id;\r\n this.filterService.filterObject.id_tecnico = userId;\r\n this.filterService.filterObject.id_tecnico_selected=userId\r\n this.dropdownService.getAssociatedTechs('', 100, userId).subscribe(response => {\r\n this.users$ = this.dropdownService.WrappedToDropDownListAsignadasa(response, 'nombre_apellidos', 'id');\r\n response.forEach((keys : any, vals :any)=>{\r\n if (keys.nombre_apellidos == 'técnico inexistente') {\r\n this.filterService.filterObject.id_tecnico_selected=keys.id;\r\n this.filterService.filterObject.id_tecnico=keys.id;\r\n }\r\n });\r\n this.refreshActivityList();\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n })\r\n }\r\n\r\n onKeyUpUser(userTarget:any){\r\n if(userTarget.target.value != null){\r\n this.userSubject.next(userTarget.target.value);\r\n }\r\n }\r\n \r\n setAssignedUser(selectedOption: any) {\r\n this.filterService.filterObject.id_tecnico = selectedOption.value;\r\n this.refreshActivityList();\r\n }\r\n // #endregion\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.scss']\r\n})\r\nexport class FooterComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NgbModal, NgbModalOptions } from '@ng-bootstrap/ng-bootstrap';\r\nimport { AddEditActivityComponent } from '../../popups/add-edit-activity/add-edit-activity.component';\r\nimport { AddMultipleActivitiesComponent } from '../../popups/add-multiple-activities/add-multiple-activities.component';\r\nimport { ActivityService } from 'src/app/services/activity.service';\r\nimport { MultipleActivityService } from 'src/app/services/multiple-activity.service';\r\nimport { GAuthService } from 'src/app/services/_authService/gauth.service';\r\nimport { LoggedUser } from '../../../../services/_authModel/user';\r\nimport { FilterService } from 'src/app/services/filter.service';\r\nimport { Router } from '@angular/router';\r\nimport { PowerbiService } from 'src/app/services/powerBi/powerbi.service';\r\nimport { MasterDataService } from 'src/app/services/master-data.service';\r\nimport { UserConfigPopupComponent } from '../../popups/user-config-popup/user-config-popup.component';\r\nimport { RoleConfigPopupComponent } from '../../popups/role-config-popup/role-config-popup.component';\r\nimport { ActionConfigPopupComponent } from '../../popups/action-config-popup/action-config-popup.component';\r\n\r\n@Component({\r\n selector: 'app-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss']\r\n})\r\nexport class HeaderComponent implements OnInit {\r\n \r\n modalOptions: NgbModalOptions;\r\n public loggedUserInfo: LoggedUser;\r\n powerBiConfigPanels:any=[];\r\n isConfiguration : boolean = false;\r\n isUserVisibale: boolean = false; \r\n private currentDate = new Date();\r\n\r\n constructor(\r\n private modalService: NgbModal,\r\n private gAuthService: GAuthService,\r\n private activityService: ActivityService,\r\n private multipleActivityService: MultipleActivityService,\r\n private filterService: FilterService,\r\n private routerService: Router,\r\n private masterDataService: MasterDataService,\r\n private powerBiService: PowerbiService\r\n ) {\r\n this.modalOptions = {\r\n backdrop: 'static',\r\n windowClass: 'text-left modal-fade-animation',\r\n centered: true,\r\n size: 'lg'\r\n };\r\n\r\n this.loggedUserInfo = new LoggedUser();\r\n this.loggedUserInfo = JSON.parse(localStorage.getItem('loggeduser'));\r\n this.loggedUserInfo.accessLevel = this.gAuthService.getUserAccessLevelInfo(); }\r\n\r\n ngOnInit() {\r\n this.registerUserAccessLevel();\r\n this.getAllPowerBiConfig();\r\n this.getRolePermission();\r\n }\r\n \r\n onClickUsers(_event) {\r\n this.modalService.open(UserConfigPopupComponent, this.modalOptions);\r\n }\r\n\r\n onClickRoles(_event) {\r\n this.modalService.open(RoleConfigPopupComponent, this.modalOptions);\r\n } \r\n\r\n onClickActual() {\r\n this.modalService.open(ActionConfigPopupComponent, this.modalOptions);\r\n }\r\n\r\n openAddActivityPopup() {\r\n const modalRef = this.modalService.open(AddEditActivityComponent, this.modalOptions);\r\n modalRef.componentInstance.addEditActivityForm.patchValue({\r\n StatusTypeId: null,\r\n //ActivityStartTime: this.currentDate\r\n });\r\n\r\n modalRef.result.then((close) => {\r\n this.filterService.setFilterValuesForAPI();\r\n this.activityService.filterValues = this.filterService.filterObject;\r\n this.activityService.fetchActivityList();\r\n });\r\n }\r\n\r\n openMultipleActivityPopup() {\r\n const modalRef = this.modalService.open(AddMultipleActivitiesComponent, this.modalOptions);\r\n modalRef.result.then((_close) => {\r\n this.filterService.setFilterValuesForAPI();\r\n this.activityService.filterValues = this.filterService.filterObject;\r\n this.activityService.fetchActivityList();\r\n }, (_dismiss) => {\r\n this.multipleActivityService.selectedActivity.length = 0;\r\n });\r\n }\r\n\r\n logout() {\r\n this.gAuthService.logout();\r\n return false;\r\n }\r\n\r\n private registerUserAccessLevel() {\r\n this.gAuthService._accessLevelSubject\r\n .subscribe(res => {\r\n if (res) {\r\n this.loggedUserInfo.accessLevel = this.gAuthService.getUserAccessLevelInfo();\r\n }\r\n });\r\n }\r\n\r\n getAllPowerBiConfig(){\r\n this.powerBiService.getAllConfigPanels().subscribe(res=>{\r\n this.powerBiConfigPanels=res.filter(x => x.isActive == true);\r\n })\r\n }\r\n\r\n powerBiRedirect(url:string,reportId:string,_workSpaceId:string){\r\n this.routerService.navigate([]).then((_result) => {\r\n window.open(url+'?reportId='+reportId , '_blank');\r\n });\r\n }\r\n\r\n getRolePermission() {\r\n this.isConfiguration = false;\r\n\r\n let request = {\r\n UserId: this.loggedUserInfo.id\r\n }\r\n this.masterDataService.getRolePermission(request).subscribe(res => {\r\n if (res) {\r\n res.forEach(item => {\r\n if (item.permissions.permisionCode == \"SeeConfingButtonAndEnterConfigArea\") {\r\n this.isConfiguration = true;\r\n return;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Activity } from 'src/app/models/activity.model';\r\nimport { ActivityNotificationService } from 'src/app/services/activity-notification.service';\r\nimport { ActuacionItem } from 'src/app/models/actuacion-item';\r\nimport { ActivityService } from 'src/app/services/activity.service';\r\n\r\n@Component({\r\n selector: 'app-notification',\r\n templateUrl: './notification.component.html',\r\n styleUrls: ['./notification.component.scss']\r\n})\r\nexport class NotificationComponent implements OnInit {\r\n activityCount:number;\r\n activities: ActuacionItem[];\r\n filterObject: { tipo_consulta:string,page_size: number, page_number: number, id_tecnico: string, id_empresa: string, id_centro: string, id_actuaciontipo:string,id_actuacionestado:string,fecha_desde:string};\r\n\r\n constructor(private notificationService : ActivityNotificationService,private activityService:ActivityService) { \r\n\r\n if(localStorage.getItem(\"loggeduser\")!=null)\r\n {\r\n var currentUserId=JSON.parse(localStorage.getItem(\"loggeduser\")).id; \r\n \r\n this.filterObject = {\r\n tipo_consulta:'TODAS',\r\n page_size: 100,\r\n page_number: 1,\r\n id_tecnico: currentUserId,\r\n id_empresa:null ,\r\n id_centro: null,\r\n id_actuaciontipo:null, \r\n id_actuacionestado:\"11\",//For notifications, only the actions with status type='Realizada pdte validar' should be loaded\r\n fecha_desde:null\r\n };\r\n\r\n }\r\n\r\n }\r\n\r\n ngOnInit() {\r\n if(localStorage.getItem(\"loggeduser\")!=null){\r\n this.getNotification();\r\n this.registerEvents();\r\n } \r\n }\r\n\r\ngetNotification()\r\n{ \r\n this.activityService.getFilteredActivities(this.filterObject).subscribe(response => { \r\n let result = response.data;\r\n result.forEach(a => {\r\n a.fecha = a.fecha.substr(4, 2) + \"/\" + a.fecha.substr(6, 2) + \"/\" + a.fecha.substr(0, 4);//Get the date in the format MM/dd/yyyy\r\n a.hora_inicio = a.hora_inicio.substr(0, 2) + \":\" + a.hora_inicio.substr(2, 2) + \":\" + a.hora_inicio.substr(4, 2);//Get the time in the format HH:mm:ss \r\n })\r\n this.activities = result;\r\n this.activityCount = this.activities.length;\r\n });\r\n }\r\n\r\n private registerEvents() {\r\n this.refreshEvents();\r\n }\r\n\r\n private refreshEvents() {\r\n this.activityService.notificationRefeshSubject\r\n .subscribe(res => {\r\n if (res !== null) {\r\n this.getNotification();\r\n }\r\n });\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-pdf-annual-shipping-header',\r\n templateUrl: './pdf-annual-shipping-header.component.html',\r\n styleUrls: ['./pdf-annual-shipping-header.component.scss']\r\n})\r\nexport class PdfAnnualShippingHeaderComponent implements OnInit {\r\n\r\n @Input() language: string;\r\n @Input() locale: any;\r\n @Input() page: string;\r\n @Input() totalPages: string;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Component, OnInit, ViewChild, Input, SimpleChanges, OnChanges } from '@angular/core';\r\nimport { PdfAnnualShippingHeaderComponent } from './pdf-annual-shipping-header/pdf-annual-shipping-header.component';\r\nimport { GeneratePdfService } from 'src/app/services/common/generate-pdf.service';\r\nimport { MasterDataService } from 'src/app/services/master-data.service';\r\nimport { MemoriaAnualService } from 'src/app/services/common/memoria-anual.service';\r\nimport { ChartDataSets, ChartOptions, ChartType } from 'chart.js';\r\nimport { ActiveContract } from 'src/app/models/active-contracts';\r\n\r\nconst labels = [\r\n 'Jan',\r\n 'Feb',\r\n 'Mar',\r\n 'april',\r\n 'may',\r\n 'jun',\r\n 'july',\r\n 'aug',\r\n 'sept',\r\n 'oct',\r\n 'now',\r\n 'dec'\r\n]; let labelstop = [\r\n\r\n];\r\n\r\n\r\n@Component({\r\n selector: 'app-pdf-annual-shipping-micro-sme',\r\n templateUrl: './pdf-annual-shipping-micro-sme.component.html',\r\n styleUrls: ['./pdf-annual-shipping-micro-sme.component.scss']\r\n})\r\nexport class PdfAnnualShippingMicroSmeComponent implements OnInit,OnChanges {\r\n\r\n @Input() language: string;\r\n @Input() tableData: any[] = [];\r\n @Input() contractDate: string;\r\n @ViewChild(PdfAnnualShippingHeaderComponent) pdfAnnualShippingHeaderComponent: PdfAnnualShippingHeaderComponent;\r\n dataTableBkp: any;\r\n public scatterChartType: ChartType = 'line';\r\n public barChartLabels: string[] = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];\r\n locale = {\r\n 'es': {\r\n 'activity_plan': 'PROGRAMACIÓN ANUAL DE LA ACTIVIDAD PREVENTIVA',\r\n 'occupational_risk_prevention_manual': 'Manual de prevencion de riesgos laborales',\r\n 'rev': 'Rev.',\r\n 'made_by': 'Realizado por',\r\n 'technician': 'Técnico/a',\r\n 'date': 'Fecha',\r\n 'approved_by': 'Aprobado por',\r\n 'name': 'Nombre',\r\n 'page': 'Página',\r\n 'of': 'de',\r\n 'report_content': 'Contenido del informe',\r\n 'identification_data': 'Datos Identificativos',\r\n 'purpose_of_the_report': 'Objeto del Informe',\r\n 'proposal_for_action': 'Propuesta de actuación',\r\n 'activity': 'Actividad',\r\n 'address': 'Dirección',\r\n 'location': 'Localidad',\r\n 'provincia' : 'Provincia',\r\n 'cp': 'CP',\r\n 'visit': 'Visita',\r\n 'date_of_visit': 'Fecha visita',\r\n 'accompanied_by': 'Acompañaron',\r\n 'report_date': 'Fecha informe',\r\n 'author': 'Autor',\r\n 'object_p1': 'La Ley 31/1995, de 8 de noviembre de 1995, (B.O.E. 10 de noviembre de 1995), en su artículo 31 \"Servicios de Prevención\" establece, entre otros, que éstos deberán estar en condiciones de proporcionar a la empresa, el asesoramiento y apoyo que precise en función de los tipos de riesgo existentes, así como en lo referente al diseño, aplicación y coordinación de los planes y programas de actuación preventiva.',\r\n 'object_p2': 'Por otro lado, dentro de los planes y programas de actuación preventiva que deben de desarrollar los Servicios de Prevención, el artículo 20 del Reglamento de dichos Servicios, aprobado por el Real Decreto 39/97, de 17 de enero (B.O.E. 31 de enero de 1997), encomienda a los mismos la elaboración de una programación anual, que, en su caso, deberá ser facilitada al Comité de Seguridad y Salud (artículo 39, 2-d de la Ley de Prevención).',\r\n 'object_p3': 'Con el presente documento se pretende definir los objetivos a cubrir con la programación anual y establecer los criterios técnicos a considerar en relación con la misma.',\r\n 'object_p4': 'La programación anual, una vez consensuada servirá como elemento de concreción de la actividad preventiva indicada en el contrato de prestación del servicio de prevención ajeno, durante el periodo indicado en la misma.',\r\n 'object_p5_1': 'En la programación anual,',\r\n 'object_p5_2': 'se definen las acciones preventivas a desarrollar por el servicio de prevención ajeno,',\r\n 'object_p5_3': 'en su caso con la colaboración de la empresa, para cada uno de los principales aspectos exigidos por la normativa de prevención.',\r\n 'object_p6': 'No obstante, durante el periodo especificado en la programación anual esta podrá ser modificada, siempre que concurran una o varias de las siguientes situaciones:',\r\n 'object_p6_li1': 'Que la planificación de la actividad preventiva resultante de la evaluación de los riesgos requiera la inclusión de acciones del servicio de prevención adicionales a las previstas.',\r\n 'object_p6_li2': 'Cuando del resultado del análisis e investigación de los daños a la salud producidos se establezca la necesidad de desarrollar, por el servicio de prevención ajeno, acciones preventivas específicas, no previstas para la eliminación o control de los riesgos que hayan desencadenado los daños a la salud investigados.',\r\n 'object_p6_li3': 'Al producirse modificaciones en las condiciones de trabajo que hagan necesario la adopción de acciones específicas para cumplir con las exigencias que marca la normativa de prevención.',\r\n 'object_p6_li4': 'A tenor de las propuestas que se efectúen por la Autoridad Laboral o en los casos en los que el desarrollo de la actividad aconseje introducir modificaciones, con el fin de conseguir una mejor organización de la acción preventiva o una mayor eficacia de la misma.',\r\n 'object_p6_li5': 'La necesidad de adoptar nuevas actividades o modificar las existentes, a tenor de los imperativos que pudieran determinar la nueva normativa de prevención de riesgos laborales que fuera publicada durante el periodo programado.',\r\n 'object_p7': 'Por último, se recuerda que atendiendo al artículo 36, 2 d) de la Ley de Prevención Riesgos Laborales, el contenido de la programación de los Servicios de Prevención deberá ser puesto a disposición de los delegados de prevención, o de los propios trabajadores, en ausencia de los anteriores. En aquellas empresas que tengan Comité de Seguridad y Salud constituido, dentro de las competencias de este, la Ley de Prevención de Riesgos Laborales en su artículo 39 punto 2, les faculta para conocer e informar acerca de la programación anual de los Servicios de Prevención.',\r\n 'company': 'Empresa',\r\n 'start_date_of_the_current_contact': 'Fecha Inicio del Contrato Actual'\r\n },\r\n 'ca': {\r\n 'activity_plan': 'PROGRAMACIÓ ANUAL DE L\\'ACTIVITAT PREVENTIVA',\r\n 'occupational_risk_prevention_manual': 'Manual de prevencio de riescos laborals',\r\n 'rev': 'Rev.',\r\n 'made_by': 'Realitzat per',\r\n 'technician': 'Tècnic/a',\r\n 'date': 'data',\r\n 'approved_by': 'Aprovat per',\r\n 'name': 'Nom',\r\n 'page': 'Página',\r\n 'of': 'de',\r\n 'report_content': 'Contingut de l\\'informe',\r\n 'identification_data': 'Dades identificatives',\r\n 'purpose_of_the_report': 'Objecte de l\\'Informe',\r\n 'proposal_for_action': 'Proposta d\\'actuació',\r\n 'activity': 'Activitat',\r\n 'address': 'Direcció',\r\n 'location': 'Localitat',\r\n 'provincia': 'Província',\r\n 'cp': 'CP',\r\n 'visit': 'Visita',\r\n 'date_of_visit': 'Data visita',\r\n 'accompanied_by': 'Van acompanyar',\r\n 'report_date': 'Data informe',\r\n 'author': 'Autor',\r\n 'object_p1': 'La Llei 31/1995, de 8 de novembre de 1995, (BOE 10 de novembre de 1995), en el seu article 31 \"Serveis de Prevenció\" estableix, entre altres, que aquests hauran d\\'estar en condicions de proporcionar a l\\'empresa, l\\'assessorament i suport que precisi en funció dels tipus de risc existents, així com pel que fa al disseny, aplicació i coordinació dels plans i programes d\\'actuació preventiva.',\r\n 'object_p2': 'D\\'altra banda, dins dels plans i programes d\\'actuació preventiva que han de desenvolupar els serveis de prevenció, l\\'article 20 del Reglament d\\'aquests Serveis, aprovat pel Reial Decret 39/97, de 17 de gener (BOE 31 de gener de 1997), encomana als mateixos l\\'elaboració d\\'una programació anual, que, si s\\'escau, haurà de ser facilitada al Comitè de Seguretat i Salut (article 39, 2-d de la Llei de Prevenció).',\r\n 'object_p3': 'Amb el present document es pretén definir els objectius a cobrir amb la programació anual i establir els criteris tècnics a considerar en relació amb la mateixa.',\r\n 'object_p4': 'La programació anual, un cop consensuada servirà com a element de concreció de l\\'activitat preventiva indicada en el contracte de prestació de servei de prevenció aliè, durant el període indicat en la mateixa.',\r\n 'object_p5_1': 'En la programació anual,',\r\n 'object_p5_2': 'es defineixen les accions preventives a desenvolupar pel servei de prevenció aliè,',\r\n 'object_p5_3': 'si escau amb la col·laboració de l\\'empresa, per a cada un dels principals aspectes exigits per la normativa de prevenció.',\r\n 'object_p6': 'No obstant això, durant el període especificat en la programació anual aquesta podrà ser modificada, sempre que concorrin una o diverses de les següents situacions:',\r\n 'object_p6_li1': 'Que la planificació de l\\'activitat preventiva resultant de l\\'avaluació dels riscos requereixi la inclusió d\\'accions del servei de prevenció addicionals a les previstes.',\r\n 'object_p6_li2': 'Quan, pel resultat de l\\'anàlisi i investigació dels danys a la salut produïts, s\\'estableixi la necessitat de desenvolupar, pel servei de prevenció aliè, accions preventives específiques, no previstes per a l\\'eliminació o control dels riscos que hagin desencadenat els danys a la salut investigats.',\r\n 'object_p6_li3': 'Al produir-se modificacions en les condicions de treball que facin necessari l\\'adopció d\\'accions específiques per complir amb les exigències que marca la normativa de prevenció.',\r\n 'object_p6_li4': 'D\\'acord amb les propostes que s\\'efectuïn per l\\'autoritat laboral o en els casos en què el desenvolupament de l\\'activitat aconselli introduir modificacions, per tal d\\'aconseguir una millor organització de l\\'acció preventiva o una major eficàcia de la mateixa.',\r\n 'object_p6_li5': 'La necessitat d\\'adoptar noves activitats o modificar les existents, d\\'acord amb els imperatius que puguin determinar la nova normativa de prevenció de riscos laborals que fos publicada durant el període programat.',\r\n 'object_p7': 'Finalment, es recorda que atenent a l\\'article 36, 2 d) de la Llei de Prevenció Riscos Laborals, el contingut de la programació dels serveis de prevenció ha de ser posat a disposició dels delegats de prevenció, o dels propis treballadors, en absència dels anteriors. En aquelles empreses que tinguin Comitè de Seguretat i Salut constituït, dins de les competències d\\'aquest, la Llei de Prevenció de Riscos Laborals en el seu article 39 punt 2, els faculta per a conèixer i informar sobre la programació anual dels serveis de prevenció.',\r\n 'company': 'Empresa',\r\n 'start_date_of_the_current_contact': 'Data d\\'Inici del Contracte Actual'\r\n }\r\n }\r\n chartColor: string = \"rgba(90, 155, 213, 1)\"\r\n fullName = '';\r\n signatureImg: string;\r\n currentDate = new Date();\r\n public SelectedReferenceNo: string;\r\n scatterChartData: ChartDataSets[] = [];\r\n topContracts: ActiveContract = null;\r\n \r\n maxLength: number = 0;\r\n workCenterData: any;\r\n constructor(public pdfService: GeneratePdfService,\r\n private masterDataService: MasterDataService,private memoriaAnualService : MemoriaAnualService) {\r\n\r\n }\r\n\r\n scatterChartOptions: ChartOptions = {\r\n responsive: true,\r\n legend: {\r\n display: false\r\n },\r\n scales: {\r\n xAxes: [{\r\n type: 'linear',\r\n position: 'top',\r\n\r\n ticks: {\r\n min: 0,\r\n callback: function (_value, index, _ticks) {\r\n return labelstop[index];\r\n },\r\n beginAtZero: true,\r\n stepSize: 30,\r\n fontColor: this.chartColor,\r\n fontStyle: 'bold'\r\n }\r\n }],\r\n yAxes: [{\r\n scaleLabel: {\r\n display: false\r\n },\r\n ticks: {\r\n callback: function (_value, index, _ticks) {\r\n return labels[index];\r\n },\r\n fontSize: 10,\r\n stepSize: 1,\r\n beginAtZero: true,\r\n fontColor: this.chartColor,\r\n fontStyle: 'bold'\r\n }\r\n }]\r\n }\r\n };\r\n\r\n ngOnChanges(_changes: SimpleChanges): void {\r\n this.topContracts = JSON.parse(localStorage.getItem('topContracts'));\r\n this.setTableData();\r\n }\r\n\r\n getWorkCenterData(wordCenterId) {\r\n this.memoriaAnualService.getWorkCenterData(wordCenterId).subscribe(res => { \r\n if (res) {\r\n this.workCenterData = res; \r\n }\r\n });\r\n }\r\n\r\n async ngOnInit() { \r\n this.getWorkCenterData(this.pdfService.shareData.WorkCentreId);\r\n let ref = localStorage.getItem(\"reference\");\r\n const userDetails = await this.fetchUserDetails();\r\n const src = 'data:image/png;base64,' + userDetails?.firma\r\n this.signatureImg = src;\r\n this.fullName = userDetails?.nombre + ' ' + userDetails?.apellidos;\r\n }\r\n\r\n getDayDiff(startDate: Date, endDate: Date): number {\r\n const msInDay = 24 * 60 * 60 * 1000; \r\n return Math.round(Math.abs(Number(endDate) - Number(startDate)) / msInDay);\r\n }\r\n\r\n setTableData() {\r\n this.scatterChartData = []\r\n this.dataTableBkp = this.tableData;\r\n labelstop = [];\r\n if (this.dataTableBkp.length > 0) {\r\n let dataTableSorted = this.dataTableBkp;\r\n\r\n dataTableSorted.sort((a, b) => a.date.localeCompare(b.date) || a.duration - b.duration);\r\n var sortedMinDate = dataTableSorted[0].date;\r\n\r\n if (sortedMinDate != '') {\r\n var sortedMaxDate = dataTableSorted[dataTableSorted.length - 1].date;\r\n\r\n const minDate = new Date(sortedMinDate);\r\n var today = new Date(minDate.getFullYear(), 0, 1);\r\n\r\n const maxDate = new Date(sortedMaxDate);\r\n maxDate.setDate(maxDate.getDate() + Number(dataTableSorted[dataTableSorted.length - 1].duration) + 30);\r\n labelstop.push(today.toISOString());\r\n labelstop.push(maxDate.toISOString());\r\n var chartFirstDate = new Date();\r\n for (let i = 0; i < dataTableSorted.length; i++) {\r\n\r\n if (dataTableSorted[i].date != '') {\r\n\r\n labelstop.push(dataTableSorted[i].date);\r\n if (this.language == 'es') {\r\n labels[i] = dataTableSorted[i].es;\r\n }\r\n if (this.language == 'ca') {\r\n labels[i] = dataTableSorted[i].ca;\r\n }\r\n\r\n const selectedActuation = dataTableSorted[i];\r\n var startDate = new Date(selectedActuation.date)\r\n const result = (startDate.getMonth() + 1) + \"/\" + startDate.getDate() + \"/\" + startDate.getFullYear();\r\n if(i==0){\r\n chartFirstDate=new Date(selectedActuation.date)\r\n }\r\n const resultToday = (chartFirstDate.getMonth() + 1) + \"/\" + chartFirstDate.getDate() + \"/\" + chartFirstDate.getFullYear();\r\n\r\n var diff = this.getDayDiff(new Date(resultToday), new Date(result)) + 1;\r\n let obj = {\r\n labels: labels,\r\n data: [\r\n { x: diff, y: (dataTableSorted.length - 1) - i },\r\n { x: diff + Number(dataTableSorted[i].duration), y: (dataTableSorted.length - 1) - i },\r\n ],\r\n backgroundColor: this.chartColor,\r\n borderColor: this.chartColor,\r\n fill: false,\r\n borderWidth: 15, \r\n pointRadius: 0,\r\n }\r\n this.scatterChartData.push(obj);\r\n }\r\n }\r\n\r\n labelstop.sort();\r\n labelstop = labelstop.filter(\r\n (element, i) => i === labelstop.indexOf(element)\r\n );\r\n labelstop = labelstop.map(i => new Date(i)).sort((a, b) => a.getTime() - b.getTime())\r\n let arry1 = [];\r\n\r\n //New code 10-04-2024\r\n let chartStart =new Date(dataTableSorted[0].date)\r\n let chartEnd =new Date(dataTableSorted[dataTableSorted.length - 1].date)\r\n\r\n let sd = new Date(chartStart);\r\n arry1[0] = chartStart;\r\n while (sd < chartEnd) {\r\n let newDate = sd.setMonth(sd.getMonth() + 1);\r\n arry1.push(new Date(newDate))\r\n }\r\n //End code \r\n\r\n //Old code 10-04-2024\r\n // let mid = new Date(labelstop[0]);\r\n // let mad = new Date(labelstop[labelstop.length - 1]);\r\n\r\n // let sd = new Date(mid);\r\n // arry1[0] = mid;\r\n // while (sd < mad) {\r\n // let newDate = sd.setMonth(sd.getMonth() + 1);\r\n // arry1.push(new Date(newDate))\r\n // }\r\n //End code \r\n\r\n let dateArray = [];\r\n\r\n arry1.forEach((value) => {\r\n let options = { year: 'numeric', month: 'short' };\r\n let datestr = value.toLocaleDateString('es-ES', options);\r\n let splittxt = datestr.split(\" \")\r\n\r\n let lastDateStri = splittxt[0] + \".-\" + splittxt[1].slice(2, 4);\r\n dateArray.push(lastDateStri)\r\n });\r\n\r\n labelstop = dateArray;\r\n this.maxLength = labelstop.length;\r\n }\r\n }\r\n }\r\n\r\n private fetchUserDetails(): Promise {\r\n const reqObject = {\r\n id: this.pdfService?.shareData?.ActivityId,\r\n usuario_upsert: {\r\n userId: JSON.parse(localStorage.getItem('loggeduser')).id,\r\n fechaHora: new Date(),\r\n ipOrigen: null,\r\n objectId2: null\r\n }\r\n };\r\n \r\n return new Promise((resolve, reject) => {\r\n this.memoriaAnualService.getUserDetailsAndSignature(reqObject).subscribe({\r\n next: (res) => resolve(res?.data),\r\n error: (err) => reject(err)\r\n });\r\n });\r\n }\r\n\r\n \r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-pdf-memoria-annual-header',\r\n templateUrl: './pdf-memoria-annual-header.component.html',\r\n styleUrls: ['./pdf-memoria-annual-header.component.scss']\r\n})\r\nexport class PdfMemoriaAnnualHeaderComponent implements OnInit {\r\n\r\n @Input() language: string;\r\n @Input() locale: any;\r\n @Input() page: string;\r\n @Input() totalPages: string;\r\n \r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit, SimpleChanges } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport moment from 'moment';\r\nimport { MemoriaAnualService } from 'src/app/services/common/memoria-anual.service';\r\n\r\n@Component({\r\n selector: 'app-pdf-memoria-annual',\r\n templateUrl: './pdf-memoria-annual.component.html',\r\n styleUrls: ['./pdf-memoria-annual.component.scss']\r\n})\r\nexport class PdfMemoriaAnnualComponent implements OnInit {\r\n @Input() language: string;\r\n @Input() reportValues: any;\r\n @Input() activityFormGroupWizard1: FormGroup;\r\n @Input() companyData: any;\r\n @Input() contactPersons: any;\r\n @Input() workCenterData: any;\r\n @Input() activeContracts: any;\r\n @Input() actuacionesData: any;\r\n actuacionesTable:any\r\n locale: any;\r\n hoy= moment(new Date()).format('DD/MM/yyyy')\r\n constructor(private memoriaAnualService:MemoriaAnualService) { }\r\n\r\n ngOnChanges(_changes: any) {\r\n this.language=this.activityFormGroupWizard1.get('TemplateLanguage').value;\r\n if(this.actuacionesData.data.length>0)\r\n {\r\n this.actuacionesTable= this.actuacionesData.data.sort((a: any, b: any) => {\r\n return new Date(b.fecha) - new Date(a.fecha);\r\n });\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n\r\n this.locale = {\r\n 'es' : {\r\n 'page': 'Página',\r\n 'of': 'de',\r\n 'ref': 'Ref',\r\n 'rev': 'Rev',\r\n 'annual_memory': 'Memoria anual',\r\n 'period': 'Periodo',\r\n 'date_of_writing': 'Fecha de redacción',\r\n 'preventive_activity': 'Memoria anual de la actividad preventiva',\r\n 'index': 'Indice',\r\n 'background': 'Antecedentes',\r\n 'objeto': 'Objeto',\r\n 'company_data': 'Datos de empresa',\r\n 'modality_organization': 'Modalidad de organización de la actividad preventiva',\r\n 'actions_carried_out': 'Actuaciones realizadas periodo concertado',\r\n 'para_1':'Se redacta el presente informe en cumplimiento del contrato establecido con GESEME y en cumplimiento de la normativa legal en prevención de riesgos laborales, en particular a la ',\r\n 'para_1_sub1':' Ley de Prevención de Riesgos 31/1995 ',\r\n 'para_1_sub2':'de 8 de noviembre y al ',\r\n 'para_1_sub3':'Real Decreto 39/',\r\n 'para_1_sub4':'de 17 de enero por el que se aprueba el Reglamento de los Servicios de Prevención y RD 337/2010.',\r\n 'para_2':'Según este RD \"Se tiene que facilitar a las empresas para las cuales actúen como servicios de prevención la memoria y la programación anual a las cuales se refiere el apartado 2 d) del artículo 39 de la Ley de Prevención de Riesgos Laborales, a fin de que pueda ser conocida por el comité de Seguridad y Salud en los términos previstos en el artículo citado\", en caso de que exista.',\r\n 'para_3':'Aparte de la normativa, toda actividad preventiva tiene que tener un fondo documental que demuestre su implantación tanto por el seguimiento de la gestión de la prevención en la empresa y pueda ser mostrada a las autoridades competentes el seguimiento de la normativa vigente.',\r\n 'para_4':'Es pues obligación de las empresas de establecer, mantener y guardar toda la documentación relativa en el Plan Preventivo que le fue entregado en su día por los técnicos de nuestra empresa.',\r\n 'para_5':'Por lo tanto, GESEME entrega la presente Memoria Anual, en la que se refleja las diferentes actividades realizadas tanto por la propia empresa como desde este Servicio de Prevención Ajeno.',\r\n 'para_6':'El periodo analizado y al que hace referencia estos documentos, se tratan las reformas y/o mejoras realizadas, tanto por parte del técnico del servicio de prevención, como por parte de la dirección de la empresa. Incidiendo en las acciones realizadas en el año anterior de la renovación y en el periodo de tiempo de vigencia del contrato',\r\n 'para_7':'El objeto de la presente memoria es dar cumplimiento a los requerimientos legales mencionados en el apartado anterior y en particular:',\r\n 'para_7_li1':'Presentar la modalidad de organización preventiva de la empresa.',\r\n 'para_7_li2':'Presentar las actuaciones más relevantes realizadas en el desarrollo de la actividad preventiva por ',\r\n 'para_7_li2_1':', y las llevadas a cabo por el Servicio de Prevención durante el año de concierto (periodo actual)',\r\n 'para_7_li3':'Proponer una planificación de actividades para el periodo próximo en base a las actividades realizadas hasta la fecha.',\r\n 'para_7_li4':'Presentar los datos relativos a los daños derivados del trabajo en la empresa.',\r\n 'para_8':'La memoria tendrá el carácter de Documentación según lo establecido en el art. 23 de la LPRL y RD 337/2010. Esta documentación debe estar en la empresa y a disposición de la autoridad laboral y de los representantes de los trabajadores.',\r\n 'company_data_2': 'Datos de la empresa',\r\n 'name': 'Nombre',\r\n 'company': 'Empresa',\r\n 'nif':'NIF',\r\n 'address': 'Dirección',\r\n 'contact': 'Personas de contacto',\r\n 'population': 'Población',\r\n 'organization_modality':'Modalidad Organizativa:',\r\n 'para_9':'La modalidad adoptada por la empresa durante el concierto de actividades, según lo establecido en el RSP, es la que se especifica a continuación, basada en un concierto con el Servicio de Prevención Ajeno num. SP-0007-B; GESEME 1996 SL. como entidad acreditada por la Generalitat de Catalunya para el desarrollo siguientes modalidades preventivas: ',\r\n 'specialty': 'Especialidad',\r\n 'responsible': 'Responsable',\r\n 'technicianheader': 'Técnico Responsable',\r\n 'technician': 'Técnico responsable: Fulano',\r\n 'security': 'Seguridad',\r\n 'hygiene': 'Higiene',\r\n 'ergonomics': 'Ergonomía y Psicosociologia',\r\n 'medicine':'Medicina del trabajo',\r\n 'para_10':'La organización y el desarrollo de las actividades fueron llevadas a cabo a partir de las visitas que el técnico responsable de la empresa realizó a la misma para obtener información, hacer la evaluación de riesgos, la formación e información a los trabajadores y el resto de actividades previstas en el concierto.',\r\n 'concerted_activities':'Actividades Concertadas con el servicio de prevención ajeno GESEME:',\r\n 'ul_1_li1':'Asesoramiento general sobre necesidades en materia preventiva',\r\n 'ul_1_li2':'Realización de la evaluación inicial de riesgos',\r\n 'ul_1_li3':'Orientación para la realización de los planes y programas preventivos derivados de la evaluación',\r\n 'ul_1_li4':'Fijación de Prioridades y controles de eficacia, así como información complementaria sobre las medidas derivadas de la evaluación de riesgos',\r\n 'ul_1_li5':'Medidas básicas de emergencia',\r\n 'ul_1_li6':'Confección de la memoria anual ',\r\n 'ul_1_li7':'Elaboración de los protocolos específicos según los riesgos detectados',\r\n 'ul_1_li8':'Información básica a los trabajadores sobre los riesgos existentes en sus puestos de trabajo',\r\n 'para_11':'Actuaciones realizadas a partir de la entrada en vigor del Concierto con GESEME.',\r\n 'section_5_1':'Formación - información de riesgos laborales',\r\n 'para_12':'Durante todo el año se debe realizar la entrega de información a los trabajadores por parte de la empresa y según se referencia al artículo 18 de la Ley 31/1995 de 8 de noviembre de Prevención de Riesgos Laborales. GESEME ha entregado en caso de realizar la formación/información referente a los siguientes conceptos, de los cuales podemos encontrar copia en el apartado correspondiente dentro del Plan Preventivo.',\r\n 'para_13':'Geseme ha realizado las siguientes sesiones formativas:',\r\n 'para_14':'Como parte de las obligaciones de la empresa descritas al artículo 19 de la Ley 31/1995 de 8 de noviembre de Prevención de Riesgos Laborales, hay que realizar la formación de los trabajadores en materia de Prevención de Riesgos Laborales.',\r\n 'para_15':'Los registros de las formaciones que se realicen quedarán registrados dentro del Plan Preventivo de la empresa.',\r\n 'para_16':'Los trabajadores asistentes fueron reunidos por la empresa, y firmaron dos justificantes, uno que está a disposición de la empresa, y otro que dispone GESEME al expediente del cliente.',\r\n 'section_5_2':'Equipos de protección individual',\r\n 'para_17':'La empresa, en su afán de dar el máximo nivel de seguridad a sus trabajadores y dando cumplimiento al artículo 17 de la Ley 31/1995 de Prevención de Riesgos Laborales, debe hacer entrega de los diferentes equipos de protección individual necesarios para desarrollar el trabajo de manera correcta y segura. La entrega se ha hecho en diferentes fechas, dependiendo de las incorporaciones nuevas y la renovación del material.',\r\n 'para_18':'En el control efectuado por el técnico se comprueba la entrega de EPI\\'s.',\r\n 'section_5_3':'Investigación y análisis de accidentes',\r\n 'para_19':'La empresa debe pedir a la Mutua de accidentes laborales el informe de accidentabilidad del periodo contractual. Se debe enviar al técnico de GESEME para poder analizar.',\r\n 'para_20':'De los accidentes comunicados por parte de la Empresa a GESEME se ha procedido a realizar la correspondiente investigación, tal y cómo queda recogido al artículo 16 de la Ley 31/1995 de 8 ',\r\n 'para_21':'Las investigaciones realizadas están registradas en los informes correspondientes dentro del Plan Preventivo de la empresa',\r\n 'section_5_4':'Medidas de emergencia y plan de emergencias',\r\n 'para_22':'El artículo 20 de la Ley 31/1995, de prevención de riesgos laborales, dispone que teniendo en cuenta la medida y la actividad de cada empresa, y la posible presencia de personas ajenas a la misma, se tendrán que analizar las posibles situaciones de emergencia y adoptar las medidas necesarias en materia de primeros auxilios, lucha contra incendios y evacuación de los trabajadores.',\r\n 'para_23':'Un plan de emergencia es la planificación y organización humana para la utilización óptima de los medios técnicos previstos, con el fin de reducir al mínimo las posibles consecuencias humanas y/o económicas que se puedan derivar de una situación de emergencia.',\r\n 'para_24':'Los objetivos del plan de emergencias son:',\r\n 'para_24_li1':'Organizar los medios humanos y materiales disponibles para contener y dejar bajo control las emergencias',\r\n 'para_24_li2':'Proteger al personal y a las instalaciones',\r\n 'para_24_li3':'Garantizar la evacuación y la intervención inmediata',\r\n 'para_24_li4':'Facilitar la posible intervención de ayudas exteriores',\r\n 'para_24_li5':'Dar la ayuda necesaria en caso de lisiados',\r\n 'para_25':'Es necesario la implicación y participación de todo el personal de la empresa, para garantizar la competencia del Plan de emergencias, en cuanto a conocimientos, disposición y actuación en estos casos de los trabajadores.',\r\n 'para_26':'GESEME con el Plan Preventivo hace entrega de un Plan Básico de medidas de emergencia en el cual se redactan las actuaciones mínimas ante un accidente o incidente.',\r\n 'para_27':'Este plan se redacta con la intención de ser revisado por la Empresa cada año para poder comprobar y mantener su funcionalidad y con el asesoramiento de GESEME. ',\r\n 'para_28':'Se recuerda pero que en todos los lugares de trabajo deben existir medio y equipos de lucha contra incendios. Así todo el personal que se encuentre en la zona debe ponerse de acuerdo, según formación recibida, para establecer un procedimiento y punto de reunión caso de incendio y/o evacuación y mantener claras las zonas de paso de los trabajadores para que caso de evacuación no se encuentren ningún obstáculo. ',\r\n 'para_29':'Se informó a los trabajadores en las formaciones realizadas de los pasos que deben seguir en cualquier incidente que salga durante el desarrollo de su actividad.',\r\n 'para_30':'Las actuaciones realizadas a este respecto se hayan referenciadas en la anterior tabla de actuaciones.',\r\n 'section_5_5':'COORDINACIÓN DE ACTIVIDADES EMPRESARIALES',\r\n 'para_31':'La Ley 54/03 de reforma de la Ley de 31/95 de Prevención de Riesgos Laborales, modifica el artículo 24 sobre Coordinación de Actividades. Esta modificación se ha desarrollado reglamentariamente por el Real Decreto 171/2004, para regular la concurrencia de actividades en un mismo centro de trabajo. Las empresas que trabajen simultáneamente en un centro de trabajo tendrán que cooperar en la aplicación de las actividades preventivas. A tal fin, establecerán los medios de coordinación necesarios en cuanto a la protección y prevención de riesgos laborales y la información sobre los mismos a sus respectivos trabajadores.',\r\n 'section_5_6':'CONTROL DE EFICACIA SOBRE LA IMPLANTACIÓN DEL SISTEMA DE PREVENCIÓN',\r\n 'para_32':'Una vez llevada a cabo la evaluación y realizada la planificación, no se puede dejar de seguir actuar en prevención, ya que debe ser un hecho continuado y en el que esté implicada toda la organización de la empresa. Los controles de eficacia son un instrumento de Gestión de la Prevención.',\r\n 'para_33':'Los controles de eficacia son revisiones periódicas del sistema de gestión de la prevención de riesgos laborales y un análisis detallado de las condiciones de seguridad (máquinas, instalaciones, herramientas, etc.) a fin de descubrir las situaciones de riesgos que se derivan de ellas (condiciones peligrosas o prácticas inseguras) con el fin de adoptar las medidas adecuadas para su control, evitando el accidente (prevención) o reduciendo los daños materiales o personales derivados del mismo (protección).',\r\n 'para_34':'El grado de implicación de la empresa en referencia a la Implantación de la Prevención en el año contractual se considera ',\r\n 'section_5_7':'Evaluaciones higiénicas',\r\n 'para_35':'El objetivo de este tipo de evaluaciones es determinar que las condiciones higiénicas en la empresa se encuentran dentro de los parámetros de la legislación vigente. Dentro de este tipo de evaluaciones se encuentran las mediciones de ruido, iluminación, temperatura y de la existencia de contaminantes ambientales.',\r\n 'para_36':'Las evaluaciones higiénicas realizadas pueden consultarse en anterior tabla de actuaciones.',\r\n 'section_5_8':'Evaluaciones ergonómicas y psicosociales',\r\n 'para_37':'Las evaluaciones ergonómicas tienen por objetivo determinar la adecuación de los distintos puestos en función de los trabajadores y las tareas que en ellos se realizan. Para ello se analizan los elementos del plano de trabajo, su altura, la adaptabilidad, elementos del entorno de trabajo, etc. De la misma manera se analizan los factores psicosociales determinados por las relaciones sociales, tipo de organización, ritmos de trabajo, horarios, etc.',\r\n 'para_38':'Las evaluaciones ergonómicas y psicosociales realizadas pueden consultarse en anterior tabla de actuaciones.',\r\n 'para_39':'GESEME 1996 SL agradece a la empresa, las atenciones dispensadas, estando a su disposición para cualquier consulta sobre este informe o sobre otros temas relacionados con la prevención de riesgos.',\r\n },\r\n\r\n 'ca' : {\r\n 'page': 'Página',\r\n 'of': 'de',\r\n 'ref': 'Ref',\r\n 'rev': 'Rev',\r\n 'annual_memory': 'Memòria anual',\r\n 'period': 'Període',\r\n 'date_of_writing': 'Data de redacció',\r\n 'preventive_activity': 'Memòria anual de l\\'activitat preventiva',\r\n 'index': 'Index',\r\n 'background': 'Antecedents',\r\n 'objeto': 'Objecte',\r\n 'company_data': 'Dades d\\'empresa',\r\n 'modality_organization': 'Modalitat d\\'organització de l\\'activitat preventiva',\r\n 'actions_carried_out': 'Actuacions realitzades període concertat',\r\n 'para_1':'Es redacta el present informe en compliment del contracte establert amb GESEME i en compliment de la normativa legal en prevenció de riscos laborals, en particular a ',\r\n 'para_1_sub1':'la Llei de Prevenció de Riscos 31/1995 ',\r\n 'para_1_sub2':'de 8 de novembre i al ',\r\n 'para_1_sub3':'Reial decret 39/1997 ',\r\n 'para_1_sub4':'de 17 de gener pel qual s\\'aprova el Reglament dels Serveis de Prevenció i RD 337/2010.',\r\n 'para_2':'Segons aquest RD \"S\\'ha de facilitar a les empreses per les quals actuïn com a serveis de prevenció la memòria i la programació anual a les quals es refereix l\\'apartat 2 d) de l\\'article 39 de la Llei de Prevenció de Riscos Laborals, a fi que pugui ser coneguda pel comitè de Seguretat i Salut en els termes previstos en l\\'article citat\", en cas que existeixi.',\r\n 'para_3':'A part de la normativa, tota activitat preventiva ha de tenir un fons documental que demostri la seva implantació tant pel seguiment de la gestió de la prevenció en l\\'empresa i pugui ser mostrada a les autoritats competents el seguiment de la normativa vigent.',\r\n 'para_4':'És doncs obligació de les empreses d\\'establir, mantenir i guardar tota la documentació relativa en el Pla Preventiu que li va ser lliurat en el seu moment pels tècnics de la nostra empresa.',\r\n 'para_5':'Per tant GESEME lliurament la present Memòria Anual, en la qual es reflecteix les diferents activitats realitzades tant per la pròpia empresa com des d\\'aquest Servei de Prevenció Aliè.',\r\n 'para_6':'El període analitzat i al que fa referència aquests documents, es tracten les reformes i/o millores realitzades, tant per part del tècnic del servei de prevenció, com per part de l\\'adreça de l\\'empresa. Incidint en les accions realitzades l\\'any anterior de la renovació i en el període de temps de vigència del contracte.',\r\n 'para_7':'L\\'objecte de la present memòria és donar compliment als requeriments legals esmentats a l\\'apartat anterior i en particular:',\r\n 'para_7_li1':'Presentar la modalitat d\\'organització preventiva de l\\'empresa.',\r\n 'para_7_li2':'Presentar les actuacions més rellevants realitzades en el desenvolupament de l\\'activitat preventiva de ',\r\n 'para_7_li2_1':', i les dutes a terme pel Servei de Prevenció durant l\\'any de concert (període actual )',\r\n 'para_7_li3':'.\tProposar una planificació d\\'activitats per al període proper sobre la base de les activitats realitzades fins avui.',\r\n 'para_7_li4':'.\tPresentar les dades relatives als danys derivats del treball en l\\'empresa.',\r\n 'para_8':'La memòria tindrà el caràcter de Documentació segons l\\'establert en l\\'art. 23 de la LPRL i RD 337/2010. Aquesta documentació ha d\\'estar en l\\'empresa i a la disposició de l\\'autoritat laboral i dels representants dels treballadors.',\r\n 'company_data_2': 'Dades de l\\'empresa',\r\n 'name': 'Nom',\r\n 'company': 'Empresa',\r\n 'nif':'NIF',\r\n 'address': 'Adreça:',\r\n 'contact': 'Persones de contacte',\r\n 'population': 'Població',\r\n 'organization_modality':'Modalitat Organitzativa:',\r\n 'para_9':'La modalitat adoptada per l\\'empresa durant el concert d\\'activitats, segons l\\'establert en el RSP, és la que s\\'especifica a continuació, basada en un concert amb el Servei de Prevenció Aliè num. SP-0007-B; GESEME 1996 SL. com a entitat acreditada per la Generalitat de Catalunya per al desenvolupament següents modalitats preventives: ',\r\n 'specialty': 'Especialidad',\r\n 'responsible': 'Responsable',\r\n 'technicianheader': 'Tècnic Responsable',\r\n 'technician': 'Tècnic responsable: Mengano',\r\n 'security': 'Seguretat',\r\n 'hygiene': 'Higiene',\r\n 'ergonomics': 'Ergonomía y Psicosociologia',\r\n 'medicine':'Medicina de l\\'treball',\r\n 'para_10':'L\\'organització i el desenvolupament de les activitats van ser dutes a terme a partir de les visites que el tècnic responsable de l\\'empresa va realitzar a la mateixa per obtenir informació, fer l\\'avaluació de riscos, la formació i informació als treballadors i la resta d\\'activitats previstes en el concert.',\r\n 'concerted_activities':'Activitats Concertades amb el servei de prevenció aliè GESEME:',\r\n 'ul_1_li1':'Assessorament general sobre necessitats en matèria preventiva',\r\n 'ul_1_li2':'Realització de l\\'avaluació inicial de riscos',\r\n 'ul_1_li3':'Orientació per a la realització dels plans i programes preventius derivats de l\\'avaluació',\r\n 'ul_1_li4':'Fixació de Prioritats i controls d\\'eficàcia així com informació complementària sobre les mesures derivades de l\\'avaluació de riscos',\r\n 'ul_1_li5':'Mesures bàsiques d\\'emergència',\r\n 'ul_1_li6':'Confecció de la memòria anual',\r\n 'ul_1_li7':'Elaboració dels protocols específics segons els riscos detectats',\r\n 'ul_1_li8':'Informació bàsica als treballadors sobre els riscos existents en els seus llocs de treball',\r\n 'para_11':'Actuacions realitzades a partir de l\\'entrada en vigor del Concert amb GESEME.',\r\n 'section_5_1':'Formació - informació de riscos laborals',\r\n 'para_12':'Durant tot l\\'any s\\'ha de realitzar el lliurament d\\'informació als treballadors per part de l\\'empresa i segons es referencia a l\\'article 18 de la Llei 31/1995 de 8 de Novembre de Prevenció de Riscos Laborals. GESEME ha lliurat en cas de realitzar la formació/informació referent als següents conceptes, dels quals podem trobar còpia a l\\'apartat corresponent dins del Pla Preventiu:',\r\n 'para_13':'Geseme ha realitzat les següents sessions formatives:',\r\n 'para_14':'Com a part de les obligacions de l\\'empresa descrites a l\\'article 19 de la Llei 31/1995 de 8 de Novembre de Prevenció de Riscos Laborals, cal realitzar la formació dels treballadors en matèria de Prevenció de Riscos Laborals.',\r\n 'para_15':'Els registres de les formacions que es realitzin quedaran registrades dins del Pla Preventiu de l\\'empresa.',\r\n 'para_16':'Els treballadors assistents van ser reunits per l\\'empresa, i van signar dos justificants, un que està a la disposició de l\\'empresa, i un altre que disposa GESEME a l\\'expedient del client.',\r\n 'section_5_2':'Equips de protecció individual',\r\n 'para_17':'L\\'empresa, en el seu afany de donar el màxim nivell de seguretat als seus treballadors i donant compliment a l\\'article 17 de la Llei 31/1995 de Prevenció de Riscos Laborals, ha de fer lliurament dels diferents equips de protecció individual necessaris per desenvolupar el treball de manera correcta i segura. El lliurament s\\'ha fet en diferents dates, depenent de les incorporacions noves i la renovació del material.',\r\n 'para_18':'En el control efectuat pel tècnic es comprova el lliurament de EPIs.',\r\n 'section_5_3':'INVESTIGACIÓ I ANÀLISIS D\\'ACCIDENTS',\r\n 'para_19':'L\\'empresa ha de demanar a la Mútua d\\'accidents laborals l\\'informe d\\'accidentabilitat del període contractual. S\\'ha d\\'enviar al tècnic de GESEME per poder analitzar.',\r\n 'para_20':'Dels accidents comunicats per part de l\\'Empresa a GESEME s\\'ha procedit a realitzar la corresponent recerca, tal i com queda recollit a l\\'article 16 de la Llei 31/1995 de 8 de Novembre de Prevenció de Riscos Laborals.',\r\n 'para_21':'Les recerques realitzades estan registrades en els informes corresponents dins del Pla Preventiu de l\\'empresa.',\r\n 'section_5_4':'MESURES D\\'EMERGENCIA I PLA D\\'EMERGENCIES',\r\n 'para_22':'L\\'article 20 de la Llei 31/1995, de prevenció de riscos laborals, disposa que tenint en compte la mesura i l\\'activitat de cada empresa, i la possible presència de persones alienes a la mateixa, s\\'hauran d\\'analitzar les possibles situacions d\\'emergència i adoptar les mesures necessàries en matèria de primers auxilis, lluita contra incendis i evacuació dels treballadors.',\r\n 'para_23':'Un pla d\\'emergència és la planificació i organització humana per a la utilització òptima dels mitjans tècnics previstos, amb la finalitat de reduir al mínim les possibles conseqüències humanes i/o econòmiques que es puguin derivar d\\'una situació d\\'emergència.',\r\n 'para_24':'Els objectius del pla d\\'emergències són:',\r\n 'para_24_li1':'Organitzar els mitjans humans i materials disponibles per contenir i deixar sota control les emergències',\r\n 'para_24_li2':'Protegir al personal i a les instal·lacions',\r\n 'para_24_li3':'Garantir l\\'evacuació i la intervenció immediata',\r\n 'para_24_li4':'Facilitar la possible intervenció d\\'ajudes exteriors',\r\n 'para_24_li5':'Donar l\\'ajuda necessària en cas de lesionats',\r\n 'para_25':'És necessari la implicació i participació de tot el personal de l\\'empresa, per garantir la competència del Pla d\\'emergències, quant a coneixements, disposició i actuació en aquests casos dels treballadors.',\r\n 'para_26':'GESEME amb el Pla Preventiu fa lliurament d\\'un Pla Bàsic de mesures d\\'emergència en el qual es redacten les actuacions mínimes davant un accident o incident.',\r\n 'para_27':'Aquest pla es redacta amb la intenció de ser revisat per l\\'Empresa cada any per poder comprovar i mantenir la seva funcionalitat i amb l\\'assessorament de GESEME. ',\r\n 'para_28':'Es recorda però que en tots els llocs de treball han d\\'existir mitjà i equips de lluita contra incendis. Així tot el personal que es trobi a la zona ha de posar-se d\\'acord, segons formació rebuda, per establir un procediment i punt de reunió caso d\\'incendi i/o evacuació i mantenir clares les zones de pas dels treballadors perquè cas d\\'evacuació no es trobin cap obstacle',\r\n 'para_29':'Es va informar als treballadors en les formacions realitzades dels passos que han de seguir en qualsevol incident que surti durant el desenvolupament de la seva activitat.',\r\n 'section_5_5':'Coordinació d\\'activitats empresarials',\r\n 'para_30':'La Llei 54/03 de reforma de la Llei de 31/95 de Prevenció de Riscos Laborals, modifica l\\'article 24 sobre Coordinació d\\'Activitats. Aquesta modificació s\\'ha desenvolupat reglamentàriament pel Reial decret 171/2004, per regular la concurrència d\\'activitats en un mateix centre de treball. ',\r\n 'para_31':'Les empreses que treballin simultàniament en un centre de treball hauran de cooperar en l\\'aplicació de les activitats preventives. A tal fi, establiran els mitjans de coordinació necessaris quant a la protecció i prevenció de riscos laborals i la informació sobre els mateixos als seus respectius treballadors.',\r\n 'section_5_6':'CONTROL D\\'EFICÀCIA SOBRE LA IMPLANTACIÓ DEL SISTEMA DE PREVENCIÓ',\r\n 'para_32':'Una vegada duta a terme l\\'avaluació i realitzada la planificació, no es pot deixar de seguir actuar en prevenció, ja que ha de ser un fet continuat i en el qual estigui implicada tota l\\'organització de l\\'empresa. Els controls d\\'eficàcia són un instrument de Gestió de la Prevenció.',\r\n 'para_33':'Els controls d\\'eficàcia són revisions periòdiques del sistema de gestió de la prevenció de riscos laborals i una anàlisi detallada de les condicions de seguretat (màquines, instal·lacions, eines, etc.) a fi de descobrir les situacions de riscos que es deriven d\\'elles (condicions perilloses o pràctiques insegures) amb la finalitat d\\'adoptar les mesures adequades per al seu control, evitant l\\'accident (prevenció) o reduint els danys materials o personals derivats del mateix (protecció).',\r\n 'para_34':'El grau d\\'implicació de l\\'empresa en referència a la Implantació de la Prevenció l\\'any contractual es considera ',\r\n 'section_5_7':'Evaluacions higièniques',\r\n 'para_35':'L\\'objectiu d\\'aquest tipus d\\'avaluacions és determinar que les condicions higièniques en l\\'empresa es troben dins dels paràmetres de la legislació vigent. Dins d\\'aquest tipus d\\'avaluacions es troben els mesuraments de soroll, il·luminació, temperatura i de l\\'existència de contaminants ambientals.',\r\n 'para_36':'Les avaluacions higièniques realitzades poden consultar-se en anterior taula d\\'actuacions.',\r\n 'section_5_8':'Avaluacions ergonòmiques i psicosocials',\r\n 'para_37':'Les avaluacions ergonòmiques tenen per objectiu determinar l\\'adequació dels diferents llocs en funció dels treballadors i les tasques que en ells es realitzen. Per a això s\\'analitzen els elements del plànol de treball, la seva altura, l\\'adaptabilitat, elements de l\\'entorn de treball, etc. De la mateixa manera s\\'analitzen els factors psicosocials determinats per les relacions socials, tipus d\\'organització, ritmes de treball, horaris, etc.',\r\n 'para_38':'Les avaluacions ergonòmiques i psicosocials realitzades poden consultar-se en anterior taula d\\'actuacions. ',\r\n 'para_39':'GESEME 1996 SL agraeix a l\\'empresa, les atencions dispensades, estant a la seva disposició per a qualsevol consulta sobre aquest informe o sobre altres temes relacionats amb la prevenció de riscos.',\r\n }\r\n }\r\n }\r\n\r\n convertDate(fecha)\r\n {\r\n return fecha.substr(4, 2) + '/' + fecha.substr(6, 2) + '/' + fecha.substr(0, 4);\r\n }\r\n\r\n}\r\nfunction compareNumbers(a, b) {\r\n return a - b;\r\n}\r\n","export enum ParteDeVisitaState {\r\n Create = 0,\r\n Continue = 1,\r\n Validated = 2,\r\n}\r\n","export class ActivityFilterModel {\r\n tipo_consulta: string;\r\n page_size: number;\r\n page_number: number;\r\n id_tecnico: string;\r\n id_empresa: string;\r\n id_centro: string;\r\n id_actuaciontipo: string;\r\n id_actuacionestado: string;\r\n fecha_desde: string;\r\n fecha_hasta: string;\r\n id_tecnico_selected: string;\r\n}\r\n","export class Activity {\r\n id: string;\r\n alias:string;\r\n activityTypeId: string;\r\n activityTypeName: string;\r\n companyId: string;\r\n companyName: string; \r\n workCentreId: string;\r\n workCentreName: string;\r\n assignedUserId: string;\r\n assignedUserName: string;\r\n activityDate: any;\r\n activityTime: any;\r\n activityFinishTime:any;\r\n duration: string;\r\n description: string;\r\n statusTypeId: string;\r\n statusTypeName: string;\r\n userId: string;\r\n username: string;\r\n isDeleted: boolean=false;\r\n entryDate: Date;\r\n}\r\n","import { EspecialidadTecnica } from \"./activity.save.especialidadtecnica\";\r\nimport { UsuarioUpsert } from './activity.save.usuarioupsert';\r\n\r\nexport class ActivityRoot {\r\n id: string;\r\n alias: string;\r\n descripcion: string;\r\n user_assigned: string;\r\n fecha: string;\r\n hora: string;\r\n especialidadTecnica: EspecialidadTecnica;\r\n usuario_upsert: UsuarioUpsert;\r\n}\r\n","export class EspecialidadTecnica\r\n{\r\n tipo_especialidad : string;\r\n evento_estado : string;\r\n tiempo_estimado :number;\r\n hora_inicio :string;\r\n hora_fin :string;\r\n empresa_id :string\r\n empresa_centro_id :string\r\n}","export class UsuarioUpsert\r\n{ \r\n fechaHora:Date;\r\n ipOrigen :string;\r\n objectId2 :string;\r\n}\r\n","import { SimpleClaim } from './simple-claims';\r\nimport { UserPermission } from './user-permission';\r\n\r\nexport class AuthContext {\r\n\r\n claims: SimpleClaim[];\r\n \r\n userPermissions: UserPermission[];\r\n\r\n get isAdmin(){\r\n return !!this.claims && !!this.claims.find(c => \r\n c.type === 'role' && c.value === 'Admin');\r\n }\r\n\r\n get subjectId(){\r\n if (!!this.claims && !!this.claims.find(c => c.type === 'subjectid'))\r\n {\r\n return this.claims.find(c => c.type === 'subjectid').value;\r\n }\r\n else{\r\n return \"unknown\";\r\n } \r\n }\r\n\r\n\r\n}","import { User } from 'oidc-client';\r\nimport { AuthContext } from './auth-context';\r\n\r\nexport class UserContext {\r\n user: User;\r\n auth: AuthContext;\r\n}","import { ActivityRoot } from \"./activity.save.activityroot\";\r\n\r\nexport class MultipleActivitySaveModel {\r\n activityPartId: number;\r\n companyId: string;\r\n companyName: string;\r\n workCentreId: string;\r\n workCentreName: string;\r\n assignedUserId: string;\r\n assignedUsername: string;\r\n activityPartDate: any;\r\n activityPartDateStr: string;\r\n activityPartTime: string;\r\n activityPartFinishTime: string;\r\n activityPartDuration: string;\r\n activityTypeId: string;\r\n activityTypeName: string;\r\n signedUsername: string;\r\n signedUserDNI: string;\r\n preventionDelegateName: string;\r\n preventionDelegateDNI: string;\r\n recipientEmail: string[];\r\n userId: string;\r\n username: string;\r\n sendEmailToUserOnly: boolean;\r\n description: string;\r\n signatureImage: string;\r\n preventionDelegateSignature: string;\r\n firmaTecSignature: string;\r\n emailSubject: string;\r\n emailBody: string;\r\n isAccidentOccured: boolean;\r\n totalAccidents: number;\r\n visitedAccidents: number;\r\n investigatedAccidents: number;\r\n isNewWorkerAdded: boolean;\r\n isJobInfoGiven: boolean;\r\n isEPIGiven: boolean;\r\n isWorkTeamJoined: boolean;\r\n isPregnantWomenAvl: boolean;\r\n pregnantWomenRemark: string;\r\n isMinorsAvl: boolean;\r\n minorsRemark: string;\r\n isESensitiveAvl: boolean;\r\n eSensitiveRemark: string;\r\n isMedicalCertificateAvl: boolean;\r\n isCoordinationDone: boolean;\r\n noOfWorkCenterWorkers: number | null;\r\n trainingProgramRemark: string;\r\n activityList: Array;\r\n activityListForClientAPI: Array;\r\n isValidated: boolean;\r\n templateLanguage: string;\r\n currentStepTitle: string;\r\n noMen: number;\r\n noWomen: number;\r\n staffWomen: number;\r\n staffMen: number;\r\n ettWomen: number;\r\n ettMen: number;\r\n isTrainedRiskPrevention: boolean;\r\n isUnderMedicalExamination: boolean;\r\n isOccupationDiseases: boolean;\r\n menOccupationDiseases: number;\r\n womenOccupationDiseases: number;\r\n investigatedOccupationDiseases: number;\r\n visitedOccupationDiseases: number;\r\n isChemicalSubstances: boolean;\r\n isWorkPlaceChanged: boolean;\r\n islegalProsecution: boolean;\r\n isRiskNotifications: boolean;\r\n menAccidents: number;\r\n womenAccidents: number;\r\n planActionList: Array;\r\n title?: string;\r\n action?: string;\r\n estimatedDate?: string;\r\n cost?: string;\r\n canMitigateRisk?: boolean;\r\n canEliminateRisk?: boolean;\r\n actionChekedInVisit?: boolean;\r\n\r\n // General training properties\r\n TrabajosAltura: boolean;\r\n TrabajosVerticales: boolean;\r\n PlataformasElevadoras: boolean;\r\n CarretillasElevadoras: boolean;\r\n TranspaletasApiladores: boolean;\r\n Incendios: boolean;\r\n PrimerosAuxilios: boolean;\r\n EspaciosConfinados: boolean;\r\n ConsignacionMaquinas: boolean;\r\n RiesgoElectrico: boolean;\r\n RiesgoQuimico: boolean;\r\n RiesgoBiologico: boolean;\r\n RiesgoErgonomico: boolean;\r\n NivelBasicoPRL: boolean;\r\n DelegadosPrevencion: boolean;\r\n SeguridadVial: boolean;\r\n Teletrabajo: boolean;\r\n OtrosFormacion: boolean;\r\n\r\n // Specific training properties\r\n Admin20H: boolean;\r\n Directivos10H: boolean;\r\n MandosIntermedios20H: boolean;\r\n ResponsablesTecnicos20H: boolean;\r\n NivelBasicoPRL60H: boolean;\r\n DelegadosPrevencion70H: boolean;\r\n Oficios20H: boolean;\r\n Oficios6H: boolean;\r\n\r\n // Metal obra training properties\r\n AdminMetalObra20H: boolean;\r\n DirectivosMetalObra10H: boolean;\r\n MandosIntermediosMetalObra20H: boolean;\r\n ResponsablesTecnicosMetalObra20H: boolean;\r\n NivelBasicoPRLMetalObra60H: boolean;\r\n DelegadosPrevencionMetalObra50H: boolean;\r\n OficiosMetalObra20H: boolean;\r\n OficiosMetalObra6H: boolean;\r\n ReciclajeOficiosMetalObra4H: boolean;\r\n\r\n // Main properties\r\n PersonalDOficines: boolean;\r\n Directius: boolean;\r\n DelegatsDePrevencio: boolean;\r\n NivellBasic: boolean;\r\n OficisProduccioIManteniment: boolean;\r\n ConductorGruesMobilsAutopropulsades: boolean;\r\n AltresOficisNoEspecificatsEnConveni: boolean;\r\n OficisProduccioIMantenimentYConductorGruesMobilsAutopropulsades: boolean;\r\n ReciclatgeOficisOficinesIDirectius: boolean;\r\n\r\n // Vidrio rotulacion training properties\r\n Directius10: boolean;\r\n Administratius: boolean;\r\n ResponsablesObraITècnicsExecució: boolean;\r\n ComandamentsIntermedis: boolean;\r\n DelegatsDePrevenció: boolean;\r\n OficisVintHores: boolean;\r\n OficisSisHores: boolean;\r\n NivellBàsic: boolean;\r\n\r\n // Madera mueble training properties\r\n Administratius10: boolean;\r\n Directius10H: boolean;\r\n OficisVintHores20: boolean;\r\n NivellBàsic60: boolean;\r\n\r\n // General health and safety properties\r\n ChemicalAgents: boolean;\r\n ChemicalAgentsDetails: string;\r\n BiologicalAgents: boolean;\r\n BiologicalAgentsDetails: string;\r\n Sonometria: boolean;\r\n Dosimetria: boolean;\r\n IonizingRadiations: boolean;\r\n ElectromagneticFields: boolean;\r\n StaticElectricity: boolean;\r\n ThermalStress: boolean;\r\n Vibrations: boolean;\r\n Other: boolean;\r\n OtherDetails: string;\r\n\r\n // Musculoskeletal risk properties\r\n ManipulacioManualDeCargues: boolean;\r\n MovimentsRepetitius: boolean;\r\n PosturesForçades: boolean;\r\n\r\n // Psychosocial risk properties\r\n EstudiPsicosocial: boolean;\r\n ProtocolAssetjament: boolean;\r\n PlaDigualtat: boolean;\r\n\r\n // Specific safety documents\r\n ChemicalStorage: boolean;\r\n ExplosionProtectionDocument: boolean;\r\n MachineryAdequacyReport: boolean;\r\n MobilityAndRoadSafetyPlan: boolean;\r\n Profesiogram: boolean;\r\n\r\n //text propeties\r\n AgentesQuimicosText: string = \"\";\r\n AgentesBiologicosText: string = \"\";\r\n OtrosText: string = \"\";\r\n EstudiPsicosocialText: string = \"\";\r\n ProtocolAssetjamentText: string = \"\";\r\n PlaDigualtatText: string = \"\";\r\n EmmagatzematgeProductesQuimicsText: string = \"\";\r\n DocumentProteccioContraExplosionsText: string = \"\";\r\n InformeAdequacioMaquinesText: string = \"\";\r\n PlaMobilitatSeguretatViariaText: string = \"\";\r\n ProfesiogramaText: string = \"\";\r\n\r\n // Other properties\r\n LlistatPersonal: boolean;\r\n LlistatMaquinaria: boolean;\r\n FitxesDades: boolean;\r\n ProcedimentsInstr: boolean;\r\n DeclaracioConformitat: boolean;\r\n ManualsInstr: boolean;\r\n LlibresRegistre: boolean;\r\n InformesAdequacio: boolean;\r\n RequerimentsInspeccio: boolean;\r\n PartAccident: boolean;\r\n InformeSinistralitat: boolean;\r\n RegistreAccidents: boolean;\r\n DocumentacioPrevencio: boolean;\r\n CertificatsFormacio: boolean;\r\n EstudisErgonomics: boolean;\r\n EstudisHigienics: boolean;\r\n EstudisPsicosocials: boolean;\r\n CertificatReo: boolean;\r\n FulletEpis: boolean;\r\n AltraDocumentacio: boolean;\r\n\r\n ManualsInstrText: string = \"\";\r\n InformeSinistralitatText: string = \"\";\r\n RegistreAccidents1Text: string = \"\";\r\n RegistreAccidents2Text: string = \"\";\r\n AltraDocumentacioText: string = \"\";\r\n LoggedUserName: string;\r\n}\r\n\r\nexport class ActivityModel {\r\n id: string;\r\n activityTypeId: string;\r\n companyId: string;\r\n workCentreId: string;\r\n assignedUserId: string;\r\n duration: string;\r\n description: string;\r\n statusTypeId: string;\r\n userId: string;\r\n activityDate: any;\r\n activityTime: string;\r\n isDeleted = false;\r\n entryDate: Date;\r\n activityTypeName: string;\r\n statusTypeName: string;\r\n}\r\n\r\nexport class PlanActionModel {\r\n title: string = \"\";\r\n action: string = null;\r\n estimatedDate: string = \"\";\r\n description: string = \"\";\r\n cost: string = \"\";\r\n responsible: string = \"\";\r\n canMitigateRisk: boolean = null;\r\n canEliminateRisk: boolean = null;\r\n actionChekedInVisit: boolean = null;\r\n isMarked: boolean = true;\r\n}\r\n","export class NgxPaginationConfig {\r\n id: string;\r\n itemsPerPage = 25;\r\n currentPage = 1;\r\n totalItems: number;\r\n}","import { OwlDateTimeIntl } from \"@busacca/ng-pick-datetime\";\r\n\r\n\r\n// here is the default text string\r\nexport class OwlDateTimeSpanish extends OwlDateTimeIntl {\r\n /** A label for the cancel button */\r\n cancelBtnLabel = 'Cancelar';\r\n\r\n /** A label for the set button */\r\n setBtnLabel = 'Aceptar';\r\n}","export class PaginationRange {\r\n PaginationRangeId: string;\r\n PaginationRangeVal: string;\r\n}\r\n","export class PaginationRowsPerPage{\r\n Id: string;\r\n RowsPerPage: string;\r\n}","export class PlanAction {\r\n title: string;\r\n action: string;\r\n estimatedDate: string;\r\n description: string;\r\n cost: string;\r\n responsible:string;\r\n canMitigateRisk: boolean;\r\n canEliminateRisk: boolean;\r\n actionChekedInVisit: boolean;\r\n isMarked: boolean;\r\n}\r\n","import { HttpErrorResponse } from \"@angular/common/http\";\r\n\r\nexport class Utils {\r\n public static formatError(error: HttpErrorResponse): string {\r\n if (error.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n return 'An error occurred: ' + error.error.message;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n let msg = \"Unknown error\";\r\n if (error.error && typeof error.error === 'string') {\r\n msg = error.error;\r\n }\r\n else if (error.message) {\r\n msg = error.message;\r\n }\r\n return `Backend returned code ${error.status}, ${error.error}`;\r\n }\r\n };\r\n\r\n}","// =============================\r\n// Email: info@ebenmonney.com\r\n// www.ebenmonney.com/templates\r\n// =============================\r\n\r\nexport class UserLogin {\r\n constructor(userName?: string, password?: string, rememberMe?: boolean) {\r\n this.userName = userName;\r\n this.password = password;\r\n this.rememberMe = rememberMe;\r\n }\r\n\r\n userName: string;\r\n password: string;\r\n rememberMe: boolean;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { AuthenticationService } from 'src/app/services/_authService/authentication.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthGuard implements CanActivate {\r\n constructor(\r\n private router: Router,\r\n private authenticationService: AuthenticationService\r\n ) { }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { \r\n const currentUser = localStorage.getItem(\"loggeduser\");\r\n \r\n if (currentUser) {\r\n // logged in so return true\r\n return true;\r\n }\r\n\r\n // not logged in so redirect to login page with the return url\r\n this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } });\r\n return false;\r\n }\r\n}","import { Injectable, ErrorHandler } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nimport { AuthenticationService } from 'src/app/services/_authService/authentication.service';\r\nimport { GAuthService } from '../_authService/gauth.service';\r\nimport { Router } from '@angular/router';\r\nimport { ErrorHandlerService } from '../error-handler.service';\r\n\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n constructor(private authenticationService: GAuthService,private router:Router,private errorHandlerService:ErrorHandlerService) { }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> { \r\n return next.handle(request).pipe(catchError(err => { \r\n if (err.status === 401) {\r\n // auto logout if 401 response returned from api\r\n localStorage.setItem(\"sessionErrorMsg\", \"Su sesión ha terminado.Por favor,inicie sesión de nuevo.\");\r\n this.router.navigate(['/login']);\r\n // this.authenticationService.logout();\r\n //location.reload(true);\r\n } \r\n // const error = err.error.message || err.statusText;\r\n return throwError(\"\");\r\n }))\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, from } from 'rxjs';\r\nimport { AuthenticationService } from 'src/app/services/_authService/authentication.service';\r\nimport { GAuthService } from '../_authService/gauth.service';\r\nimport { environment } from 'src/environments/environment'\r\nimport { LoggedUser } from '../_authModel/user';\r\nimport { tap } from 'rxjs/operators';\r\nimport { Router } from '@angular/router';\r\n\r\n@Injectable()\r\nexport class JwtInterceptor implements HttpInterceptor {\r\n constructor(private authService: AuthenticationService, private gAuthService: GAuthService, private router: Router) { }\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n\r\n return from(this.gAuthService.getAccessToken().then(token => {\r\n let headers = new HttpHeaders().set('Authorization', `Bearer ${token}`);\r\n let authReq = request.clone({ headers });\r\n return next.handle(authReq).pipe(tap(_ => { }, error => { // tap <=> nothing to do in the normal case\r\n var respError = error as HttpErrorResponse;\r\n if (respError && (respError.status === 401 || respError.status === 403)) {\r\n localStorage.setItem(\"sessionErrorMsg\", \"Su sesión ha terminado.Por favor,inicie sesión de nuevo.\");\r\n this.router.navigate(['/login']);\r\n }\r\n })).toPromise();\r\n }));\r\n\r\n }\r\n}\r\n","export class LoggedUser {\r\n id: string;\r\n username: string;\r\n sid: string;\r\n fullName: string;\r\n gesemeApiToken?: string;\r\n permissionScope?: string;\r\n accessLevel: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { environment } from 'src/environments/environment';\r\nimport { LoggedUser } from 'src/app/services/_authModel/user';\r\nimport { ActivityStatusService } from '../common/activity-status.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthenticationService {\r\n private currentUserSubject: BehaviorSubject;\r\n public currentUser: Observable;\r\n\r\n constructor(private http: HttpClient, ) {\r\n this.currentUserSubject = new BehaviorSubject(JSON.parse(localStorage.getItem('currentUser')));\r\n this.currentUser = this.currentUserSubject.asObservable();\r\n }\r\n\r\n public get currentUserValue(): LoggedUser {\r\n return this.currentUserSubject.value;\r\n }\r\n\r\n login(userId: string, password: string,gAuthToken:string=\"\") {\r\n return this.http.post(`${environment.baseUrl}/Login/Authenticate?userId=${userId}&password=${password}&gAuthToken=${gAuthToken}`, { userId, password,gAuthToken})\r\n .pipe(map(user => { \r\n // store user details and jwt token in local storage to keep user logged in between page refreshes\r\n localStorage.setItem('currentUser', JSON.stringify(user));\r\n this.currentUserSubject.next(user);\r\n return user;\r\n }));\r\n }\r\n\r\n logout() { \r\n // remove user from local storage to log user out\r\n localStorage.removeItem('loggeduser');\r\n this.currentUserSubject.next(null);\r\n }\r\n \r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AuthContext } from 'src/app/models/auth/auth-context';\r\nimport { UserManager, User } from 'oidc-client';\r\nimport { Subject, Observable } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport { UserContext } from 'src/app/models/auth/user-context';\r\nimport { UserPermission } from 'src/app/models/auth/user-permission';\r\nimport { SimpleClaim } from 'src/app/models/auth/simple-claims';\r\nimport { LogActivityService } from '../_logActivity/log-activity.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GAuthService {\r\n\r\n private _userContext: UserContext;\r\n public _userManager: UserManager; \r\n private _loginChangedSubject = new Subject();\r\n private _userContextChanged = new Subject();\r\n public _accessLevelSubject = new Subject();\r\n\r\n\r\n constructor(private httpClient: HttpClient, private logActivityService:LogActivityService) {\r\n \r\n let stsSettings = {\r\n authority: environment.gesemeIdentityServerUrl,\r\n client_id: environment.gesemeApiClientId,\r\n redirect_uri: `${environment.webRootUrl}signin-callback`,\r\n scope: environment.gesemeLoginScope,\r\n response_type: 'code', //PKCE (for Implicit: \"id_token token\")\r\n post_logout_redirect_uri: `${environment.webRootUrl}signout-callback`,\r\n automaticSilentRenew: true,\r\n silent_redirect_uri: `${environment.webRootUrl}assets/silent-callback.html`\r\n };\r\n\r\n this._userManager = new UserManager(stsSettings);\r\n\r\n this._userManager.events.addAccessTokenExpired(_ => {\r\n this._loginChangedSubject.next(false);\r\n });\r\n\r\n\r\n this._userManager.events.addUserLoaded(user => {\r\n if (this._userContext != undefined) {\r\n if (this._userContext.user != undefined) {\r\n if (this._userContext.user !== user) { \r\n this.loadSecurityContext(user);\r\n this._loginChangedSubject.next(!!user && !user.expired);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n \r\n\r\n login() {\r\n //window.location.href = 'https://it.geseme.com/Account/Login?ReturnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3Dactuacweb%26redirect_uri%3Dhttp%253A%252F%252Flocalhost%253A4200%252Fsignin-callback%26response_type%3Dcode%26scope%3Dopenid%2520profile%2520prl_read%2520prl_write%2520usr_read%26state%3D01d758d1a5e24d24a192ee694c68d16f%26code_challenge%3DQkvl_pOieozO-ImBj8nYuuPudkMzGAyXaGmilo39P20%26code_challenge_method%3DS256%26response_mode%3Dquery';\r\n return this._userManager.signinRedirect();\r\n }\r\n\r\n public loginChanges() {\r\n return this._loginChangedSubject.asObservable(); \r\n };\r\n\r\n public userChangedContext() {\r\n return this._userContextChanged.asObservable();\r\n };\r\n\r\n isLoggedIn(): Promise {\r\n \r\n return this._userManager.getUser().then(user => {\r\n const userCurrent = !!user && !user.expired; // user not expired\r\n if (this._userContext.user !== user) {\r\n this._loginChangedSubject.next(userCurrent);\r\n }\r\n if (userCurrent && !this._userContext) {\r\n this.loadSecurityContext(user);\r\n }\r\n return userCurrent;\r\n });\r\n }\r\n\r\n completeLogin() {\r\n return this._userManager.signinRedirectCallback().then(user => {\r\n \r\n this._loginChangedSubject.next(!!user && !user.expired);\r\n this.loadSecurityContext(user);\r\n return user;\r\n });\r\n }\r\n\r\n\r\n logout() {\r\n //this.router.navigate(['/signout-callback']); \r\n this._userManager.signoutRedirect(); \r\n }\r\n\r\n completeLogout() {\r\n this._userContext = null;\r\n return this._userManager.signoutRedirectCallback();\r\n }\r\n\r\n getAccessToken() {\r\n return this._userManager.getUser().then(user => {\r\n if (!!user && !user.expired) {\r\n return user.access_token;\r\n }\r\n else {\r\n return null;\r\n }\r\n })\r\n\r\n }\r\n\r\n loadSecurityContext(userFromUserManager: User){\r\n\r\n const promise = this.httpClient\r\n .get(`${environment.gesemeApiUrl}access/authContext`).toPromise();\r\n\r\n promise.then(context => {\r\n this._userContext = new UserContext();\r\n this._userContext.user = userFromUserManager;\r\n this._userContext.auth = new AuthContext();\r\n this._userContext.auth.claims = context.claims;\r\n this._userContext.auth.userPermissions = context.userPermissions;\r\n\r\n localStorage.setItem(\"userauthcontext\", JSON.stringify(this._userContext));\r\n this._userContextChanged.next(this._userContext);\r\n this._accessLevelSubject.next('user context created');\r\n }).catch(error => {\r\n let loggedUser = JSON.parse(localStorage.getItem(\"loggeduser\"));\r\n var indexedDBRecord = { userId: !loggedUser ? \"0\" : loggedUser.id, activityId: \"\", loggedInTime: \"\", loggedOutTime: \"\", committedAction: `Load Security Context=>${JSON.stringify(error)}`, requestParam: \"\", responseParam: \"\", logDate: this.logActivityService.getDateInCustomFormat(new Date()) }\r\n this.logActivityService.saveDataToIndexedDB('useractivity', indexedDBRecord);\r\n console.error(error);\r\n });\r\n }\r\n\r\n getUser() {\r\n if (!!this._userContext && !!this._userContext.user && !this._userContext.user.expired) {\r\n return this._userContext.user;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n getAuthPermissions(): UserPermission {\r\n \r\n if (this._userContext!==undefined && !!this._userContext && !!this._userContext.user && !this._userContext.user.expired && !!this._userContext.auth) {\r\n return this._userContext.auth.userPermissions[0]; // positions after \"0\" are for future use\r\n }\r\n else {\r\n if(localStorage.getItem(\"userauthcontext\")!=null)\r\n {\r\n return JSON.parse(localStorage.getItem(\"userauthcontext\")).auth.userPermissions[0];\r\n }\r\n return null;\r\n }\r\n }\r\n\r\n userNameInfo():String{\r\n let textualInformation: String = \"\";\r\n if (!!this._userContext && !!this._userContext.auth)\r\n {\r\n let theClaim: SimpleClaim;\r\n theClaim = this._userContext.auth.claims.find(x => x.type == \"sub\");\r\n if (!!theClaim)\r\n textualInformation = theClaim.value.toString();\r\n }\r\n return textualInformation;\r\n } \r\n \r\n \r\n getUserAccessLevelInfo():string\r\n { \r\n let authContextObj=localStorage.getItem(\"userauthcontext\");\r\n let accessLevel: string = (this._userContext!=undefined && this._userContext!=null)?this._userContext.auth.userPermissions[0].accessLevelId.toString():(authContextObj!=null?JSON.parse(authContextObj).auth.userPermissions[0].accessLevelId.toString():\"\"); \r\n if (accessLevel!=\"\")\r\n { \r\n let i = this.getAuthPermissions().accessLevelId;\r\n switch(this.getAuthPermissions().accessLevelId) \r\n { \r\n case parseInt(environment.authNoAccessCode): { \r\n accessLevel = \"all apps->no access\";\r\n break; \r\n } \r\n case parseInt(environment.authAdminCode): { \r\n accessLevel = \"all apps->admin access\";\r\n break; \r\n } \r\n case parseInt(environment.authActuacWebAdminCode): { \r\n accessLevel = \"actuacweb->admin\";\r\n break; \r\n } \r\n case parseInt(environment.authActuacWebNoAccessCode): { \r\n accessLevel = \"actuacweb->no access\";\r\n break; \r\n } \r\n case parseInt(environment.authActuacWebFullEditCode): { \r\n accessLevel = \"actuacweb->full edit (technical manager)\";\r\n break; \r\n } \r\n case parseInt(environment.authActuacWebOnlyMine): { \r\n accessLevel = \"actuacweb->only edit my actuaciones\";\r\n break; \r\n } \r\n default: { \r\n break; \r\n } \r\n } \r\n }\r\n return accessLevel;\r\n }\r\n\r\n\r\n\r\n}\r\n","import { Compiler, Injectable } from '@angular/core';\r\nimport { NgxIndexedDBService } from 'ngx-indexed-db';\r\nimport { DropdownService } from '../dropdown.service';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LogActivityService {\r\n\r\n constructor(private dbService: NgxIndexedDBService,\r\n private dropdownservice: DropdownService,\r\n private compiler: Compiler) {\r\n }\r\n\r\n saveDataToIndexedDB(collectionName: string, collectionObject: any): Observable {\r\n this.dbService.add(collectionName, collectionObject).then(\r\n () => {\r\n console.log(\"Added new user log activity record.\");\r\n },\r\n error => {\r\n console.log(error);\r\n }\r\n );\r\n return of(true);\r\n }\r\n\r\n getIndexedDBData(collectionName: string) {\r\n return this.dbService.getAll(collectionName);\r\n }\r\n\r\n getDateInCustomFormat(dateParam: Date): string {\r\n let dateValStr: string = \"\";\r\n let actualMonth: number = dateParam.getMonth() + 1; //Javascript month starts with 0\r\n dateValStr = ('0' + (dateParam.getDate())).slice(-2) + \"/\" + ('0' + actualMonth).slice(-2) + \"/\" + dateParam.getFullYear() + \" \" + ('0' + (dateParam.getHours())).slice(-2) + \":\" + ('0' + (dateParam.getMinutes())).slice(-2) + \":\" + ('0' + (dateParam.getSeconds())).slice(-2) + \" \" + ((dateParam.getHours() >= 12) ? \"PM\" : \"AM\") + \" \" + \"[\" + Intl.DateTimeFormat().resolvedOptions().timeZone + \"]\";\r\n return dateValStr;\r\n }\r\n\r\n deleteAllCollectionData(collectionName: string): any {\r\n return this.dbService.clear(collectionName);\r\n }\r\n\r\n saveLogUserActivityToServer(logActivityList): any {\r\n return this.dropdownservice.saveLogUserActivity(logActivityList);\r\n }\r\n\r\n clearAndSaveSessionValues() {\r\n this.getIndexedDBData('useractivity').then(\r\n collectionlist => {\r\n this.saveLogUserActivityToServer(collectionlist).subscribe(_response => {\r\n //Clear log activity in in-built database\r\n this.deleteAllCollectionData('useractivity').then(\r\n () => {\r\n localStorage.removeItem(\"loggeduser\");\r\n localStorage.clear();\r\n sessionStorage.clear();\r\n this.compiler.clearCache();\r\n },\r\n error => {\r\n console.log(error);\r\n localStorage.removeItem(\"loggeduser\");\r\n localStorage.clear();\r\n sessionStorage.clear();\r\n this.compiler.clearCache();\r\n }\r\n );\r\n\r\n }, error => {\r\n console.log(error);\r\n localStorage.removeItem(\"loggeduser\");\r\n localStorage.clear();\r\n sessionStorage.clear();\r\n this.compiler.clearCache();\r\n });\r\n },\r\n error => {\r\n console.log(error);\r\n localStorage.removeItem(\"loggeduser\");\r\n localStorage.clear();\r\n sessionStorage.clear();\r\n this.compiler.clearCache();\r\n }\r\n );\r\n }\r\n\r\n\r\n}\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { NgbModal, NgbModalOptions } from '@ng-bootstrap/ng-bootstrap';\r\nimport { AddEditActivityComponent } from '../layout/shared/popups/add-edit-activity/add-edit-activity.component';\r\nimport { ActivityService } from './activity.service';\r\nimport { ErrorHandlerService } from './error-handler.service';\r\nimport { FilterService } from './filter.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ActivityCalendarListService {\r\n\r\n modalOptions: NgbModalOptions;\r\n public isCalendar = true;\r\n public activityAddEditCompleted = new EventEmitter();\r\n\r\n constructor(\r\n private activityService: ActivityService,\r\n private errorHandler: ErrorHandlerService,\r\n private modalService: NgbModal,\r\n private filterService: FilterService) {\r\n this.modalOptions = {\r\n backdrop: 'static',\r\n windowClass: 'text-left modal-fade-animation',\r\n size: 'lg',\r\n centered: true\r\n };\r\n }\r\n\r\n public async addEditActivity(model: any, isEdit: boolean) {\r\n if (isEdit) {\r\n const activityId = this.isCalendar ? model.event.id : model.id;\r\n this.openActivityEditPopup(activityId);\r\n } else {\r\n this.openActivityAddPopup(model);\r\n }\r\n }\r\n\r\n public openActivityAddPopup(model: any) {\r\n const modalRef = this.modalService.open(AddEditActivityComponent, this.modalOptions);\r\n modalRef.componentInstance.isEdit = false;\r\n let activityTime = model.date;\r\n if (model.view.type === 'dayGridMonth') {\r\n activityTime = new Date();\r\n }\r\n modalRef.componentInstance.addEditActivityForm.patchValue({\r\n ActivityDate: model.date,\r\n ActivityTime: activityTime,\r\n StatusTypeId: null\r\n });\r\n\r\n modalRef.result.then((_close) => {\r\n this.filterService.setFilterValuesForAPI();\r\n this.activityService.filterValues = this.filterService.filterObject;\r\n if (this.isCalendar) {\r\n this.activityService.fetchActivityList();\r\n }\r\n });\r\n }\r\n\r\n public openActivityEditPopup(activityId: string): void {\r\n this.activityService.getActivity(activityId).then(response => {\r\n \r\n const sActivity = this.activityService.mapActivityResponseToActivityModel(response);\r\n\r\n const modalRef = this.modalService.open(AddEditActivityComponent, this.modalOptions);\r\n modalRef.componentInstance.isEdit = true;\r\n\r\n if (sActivity.activityTypeName.toLowerCase().trim().includes('visita')) {\r\n modalRef.componentInstance.isVisit = true;\r\n } else if (sActivity.activityTypeName.toLowerCase().trim().includes('memoria anual')) {\r\n modalRef.componentInstance.isAnnual = true;\r\n }\r\n const activityDate = new Date(sActivity.activityDate);\r\n const [hours, minutes, seconds] = String(sActivity.activityTime).split(':');\r\n const activityTime = new Date(activityDate.getFullYear(), activityDate.getMonth(),\r\n activityDate.getDate(), +hours, Number(minutes), Number(seconds));\r\n\r\n const [hoursE, minutesE, secondsE] = String(sActivity.activityFinishTime).split(':');\r\n const activityEndTime = new Date(activityDate.getFullYear(), activityDate.getMonth(),\r\n activityDate.getDate(), +hoursE, Number(minutesE), Number(secondsE));\r\n\r\n modalRef.componentInstance.addEditActivityForm.patchValue({\r\n Id: sActivity.id,\r\n ActivityTypeId: sActivity.activityTypeId,\r\n ActivtyTypeName: sActivity.activityTypeName,\r\n CompanyId: sActivity.companyId,\r\n CompanyName: sActivity.companyName,\r\n WorkCentreId: sActivity.workCentreId,\r\n WorkCentreName: sActivity.workCentreName,\r\n AssignedUserId: sActivity.assignedUserId,\r\n AssignedUsername: sActivity.assignedUserName,\r\n StatusTypeId: sActivity.statusTypeId,\r\n StatusTypeName: sActivity.statusTypeName,\r\n ActivityDate: sActivity.activityDate,\r\n ActivityStartTime: activityTime,\r\n ActivityEndTime: activityEndTime,\r\n Duration: sActivity.duration,\r\n Description: sActivity.description\r\n });\r\n\r\n modalRef.result.then((close) => {\r\n this.filterService.setFilterValuesForView();\r\n this.activityService.filterValues = this.filterService.filterObject;\r\n\r\n this.activityAddEditCompleted.emit(true);\r\n if (this.isCalendar) {\r\n this.activityService.fetchActivityList();\r\n }\r\n\r\n }, (_dismiss) => { });\r\n this.activityService.companyId = sActivity.companyId;\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ApiService } from './api.service';\r\nimport { Observable } from 'rxjs';\r\nimport { Activity } from '../models/activity.model';\r\nimport { ActivityService } from './activity.service';\r\nimport { ActuacionItem } from '../models/actuacion-item';\r\nimport { ActuacionListResponse } from '../models/actuacion-list-response';\r\nimport { ErrorHandlerService } from './error-handler.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ActivityNotificationService {\r\n\r\n filterObject: { tipo_consulta:string,page_size: number, page_number: number, id_tecnico: string, id_empresa: string, id_centro: string, id_actuaciontipo:string,id_actuacionestado:string,fecha_desde:string};\r\n \r\n\r\n constructor(private apiService: ApiService,private activityService:ActivityService,private errorHandler: ErrorHandlerService) {\r\n\r\n if(localStorage.getItem(\"loggeduser\")!=null)\r\n {\r\n var currentUserId=JSON.parse(localStorage.getItem(\"loggeduser\")).id;\r\n \r\n this.filterObject = {\r\n tipo_consulta:'TODAS',\r\n page_size: 100,\r\n page_number: 1,\r\n id_tecnico: currentUserId,\r\n id_empresa:null ,\r\n id_centro: null,\r\n id_actuaciontipo:null, \r\n id_actuacionestado:\"11\",//For notifications, only the actions with status type='Realizada pdte validar' should be loaded\r\n fecha_desde:null\r\n };\r\n } \r\n }\r\n\r\n getActivityNotification(): ActuacionItem[]\r\n {\r\n let activityList:ActuacionItem[];\r\n var result=this.activityService.getFilteredActivities(this.filterObject).subscribe(response => { \r\n \r\n activityList=response.data\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n });\r\n return activityList; \r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ApiService } from './api.service';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { Activity } from '../models/activity.model';\r\nimport { ActuacionItem } from '../models/actuacion-item';\r\nimport { ActuacionListResponse } from '../models/actuacion-list-response';\r\nimport { ErrorHandlerService } from './error-handler.service';\r\nimport { ActivityCalendarEvent } from 'src/app/models/activity-calendar-event.model';\r\nimport { environment } from 'src/environments/environment'\r\nimport { Utils } from '../models/utils';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ActivityRoot } from '../models/activity.save.activityroot';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { UsuarioUpsert } from '../models/activity.save.usuarioupsert';\r\nimport { EspecialidadTecnica } from '../models/activity.save.especialidadtecnica';\r\nimport { SubSink } from 'subsink';\r\nimport { DropdownService } from './dropdown.service';\r\nimport { PaginationRowsPerPage } from '../models/pagination-rows-per-page-model';\r\nimport { SelectOptions } from '../models/select-options.model';\r\nimport { PaginationRange } from '../models/pagination-range-model';\r\nimport { ActivityFilterModel } from '../models/activity-filter';\r\nimport { NgxPaginationConfig } from '../models/ngx-pagination-config';\r\nimport { ActivityStatusService } from './common/activity-status.service';\r\nimport { FilterService } from './filter.service';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ActivityService {\r\n\r\n // This list is for calendar\r\n public activityList: Array;\r\n // This list is for List View\r\n public listViewArray: Array;\r\n\r\n public selectedDate = new Subject();\r\n public activityCalendarRefreshSubject = new Subject();\r\n public pageRangeSubject = new Subject();\r\n public totalActionCountSubject = new Subject();\r\n public selectedPageValueSubject = new Subject();\r\n public notificationRefeshSubject = new Subject();\r\n public filterValues: ActivityFilterModel;\r\n error: string;\r\n response: ActuacionListResponse;\r\n private activityRoot: ActivityRoot;\r\n private clientReqIPAddress = '';\r\n private subs = new SubSink();\r\n public listViewPaginationRanges$: SelectOptions[];\r\n public listViewPaginationRowsPerPage$: SelectOptions[];\r\n public totalRecordCount = 0;\r\n public pageCount = 0;\r\n public pageNumberList: any[] = [];\r\n companyId:string;\r\n // For list view pagination\r\n listViewPaginationConfig = new NgxPaginationConfig();\r\n\r\n constructor(\r\n private apiService: ApiService, private errorHandler: ErrorHandlerService,\r\n private httpClient: HttpClient, private spinner: NgxSpinnerService, private dropdownService: DropdownService, private activtiyStatus : ActivityStatusService, public filterService: FilterService) {\r\n this.apiService.baseUrl = environment.gesemeApiUrl;\r\n this.subs.add(\r\n this.dropdownService.getClientReqIPAddress().subscribe(response => {\r\n this.clientReqIPAddress = response.clientReqIPAddress;\r\n }, error => {\r\n this.errorHandler.handle(error);\r\n }),\r\n );\r\n }\r\n\r\n mapActivityToCalendarEvent(activities: Array, paginationRangeArr: any[] = []) {\r\n const tempActivityList = [];\r\n activities.forEach(activity => {\r\n // Get the date in the format MM/dd/yyyy\r\n activity.fecha = activity.fecha.substr(4, 2) + '/' + activity.fecha.substr(6, 2) + '/' + activity.fecha.substr(0, 4);\r\n const activityDate = new Date(activity.fecha);\r\n // Get the time in the format HH:mm:ss\r\n activity.hora_inicio = activity.hora_inicio.substr(0, 2) + ':' + activity.hora_inicio.substr(2, 2)\r\n + ':' + activity.hora_inicio.substr(4, 2);\r\n const finishTimeParam = activity.hora_fin == null ? null : new Date(activity.hora_fin);\r\n const activityFinishTime = this.getActivityFinishTime(new Date(activity.fecha), finishTimeParam, null);\r\n activity.hora_fin = activityFinishTime;\r\n\r\n // Dates should be in the following format -- 2020-01-09T12:30:00\r\n const activityStartString = activityDate.getFullYear() + '-'\r\n + ('0' + (activityDate.getMonth() + 1)).slice(-2) + '-'\r\n + ('0' + (activityDate.getDate())).slice(-2)\r\n + 'T' + String(activity.hora_inicio);\r\n\r\n const activityEndString = activityDate.getFullYear() + '-'\r\n + ('0' + (activityDate.getMonth() + 1)).slice(-2) + '-'\r\n + ('0' + (activityDate.getDate())).slice(-2)\r\n + 'T' + String(activity.hora_inicio);\r\n\r\n\r\n const title = activity.empresa_nombre + ' - ' + activity.tipo_evento_especialidad_castellano;\r\n\r\n const activityItem = {\r\n id: activity.id,\r\n title: title,\r\n start: activityStartString,\r\n end: activityEndString,\r\n allDay: false,\r\n color: this.getColorByActivityStatus(activity.evento_estado.trim()),\r\n //classNames: [eventClassName]\r\n };\r\n tempActivityList.push(activityItem);\r\n });\r\n\r\n this.activityList = tempActivityList;\r\n this.listViewArray = activities;\r\n this.listViewPaginationRanges$ = paginationRangeArr;\r\n }\r\n\r\n getActivityFinishTime(startTime: Date, finishTime: Date, duration: number): string {\r\n\r\n // NOTE: Get finish time in HHmmss format\r\n let finishTimeStr = '';\r\n // For adding/updating actuacion\r\n if (duration != null && finishTime == null) {\r\n const actualFinishTime = new Date(startTime.getTime() + duration * 60000); // multiply by 600000 to convert to milliseconds\r\n finishTimeStr = ('0' + actualFinishTime.getHours().toString()).slice(-2) +\r\n ('0' + actualFinishTime.getMinutes().toString()).slice(-2) + ('0' + actualFinishTime.getSeconds().toString()).slice(-2);\r\n } else {\r\n if (finishTime != null) {\r\n finishTimeStr = ('0' + finishTime.getHours().toString()).slice(-2) +\r\n ('0' + finishTime.getMinutes().toString()).slice(-2) + ('0' + finishTime.getSeconds().toString()).slice(-2);\r\n } else {\r\n const timeDiff = finishTime.getTime() - startTime.getTime();\r\n const actualFinishTime = new Date(startTime.getTime() + timeDiff);\r\n finishTimeStr = ('0' + actualFinishTime.getHours().toString()).slice(-2) +\r\n ('0' + actualFinishTime.getMinutes().toString()).slice(-2) + ('0' + actualFinishTime.getSeconds().toString()).slice(-2);\r\n }\r\n }\r\n return finishTimeStr;\r\n }\r\n\r\n getActivityDuration(startTime: Date, finishTime: Date): number {\r\n let durationVal = 15;\r\n if (startTime != null && finishTime != null) {\r\n durationVal = Math.floor((finishTime.getTime() - startTime.getTime()) / 60000); // Divide by 60000 to get value in minutes\r\n }\r\n return durationVal;\r\n }\r\n\r\n getColorByActivityStatus(status_id: String) {\r\n let data = JSON.parse(localStorage.getItem(\"colorList\")); \r\n let activityStatus = data?.find(x=>x.id == status_id);\r\n if(activityStatus!= null && activityStatus != undefined){\r\n return activityStatus.numcolor;\r\n }\r\n \r\n }\r\n \r\n\r\n mapActivityResponseToActivityModel(response: any): Activity {\r\n let startTimeStr: string = null, actualStartTime: Date = null, finishTimeStr: string = null, actualFinishTime: Date = null;\r\n const result = response.data;\r\n const currentDate = new Date();\r\n let [hours, minutes, seconds] = ['', '', ''];\r\n if (result.hora_inicio !== null) {\r\n // Get the time in the format HH:mm:ss //response.activityTime;\r\n startTimeStr = result.hora_inicio.substr(0, 2) + ':' + result.hora_inicio.substr(2, 2) +\r\n ':' + result.hora_inicio.substr(4, 2);\r\n [hours, minutes, seconds] = startTimeStr.split(':');\r\n } else if (result.especialidadTecnica.hora_inicio !== null) {\r\n // Get the time in the format HH:mm:ss //response.activityTime;\r\n startTimeStr = result.especialidadTecnica.hora_inicio.substr(0, 2) + ':' +\r\n result.especialidadTecnica.hora_inicio.substr(2, 2) + ':' + result.especialidadTecnica.hora_inicio.substr(4, 2);\r\n [hours, minutes, seconds] = startTimeStr.split(':');\r\n }\r\n\r\n actualStartTime = new Date(currentDate.getFullYear(), currentDate.getMonth(),\r\n currentDate.getDate(), +hours, Number(minutes), Number(seconds));\r\n\r\n if (result.hora_fin !== null) {\r\n // Get the time in the format HH:mm:ss //response.activityTime;\r\n finishTimeStr = result.hora_fin.substr(0, 2) + ':' + result.hora_fin.substr(2, 2) + ':' + result.hora_fin.substr(4, 2);\r\n [hours, minutes, seconds] = finishTimeStr.split(':');\r\n } else if (result.especialidadTecnica.hora_fin !== null) {\r\n // Get the time in the format HH:mm:ss //response.activityTime;\r\n finishTimeStr = result.especialidadTecnica.hora_fin.substr(0, 2) + ':' +\r\n result.especialidadTecnica.hora_fin.substr(2, 2) + \":\" + result.especialidadTecnica.hora_fin.substr(4, 2);\r\n [hours, minutes, seconds] = finishTimeStr.split(':');\r\n }\r\n\r\n actualFinishTime = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate(), +hours, Number(minutes), Number(seconds));\r\n\r\n let activity = new Activity();\r\n activity = {\r\n id: result.id,\r\n alias: result.alias,\r\n activityTypeId: String(result.especialidadTecnica.tipo_especialidad),\r\n activityTypeName: result.especialidadTecnica.tipo_especialidad_castellano,\r\n companyId: String(result.especialidadTecnica.empresa_id),\r\n companyName: result.especialidadTecnica.empresa_nombre,\r\n workCentreId: String(result.especialidadTecnica.empresa_centro_id),\r\n workCentreName: result.especialidadTecnica.empresa_centro_nombre,\r\n assignedUserId: String(result.user_assigned),\r\n assignedUserName: `${result.user_assigned_nombre} ${result.user_assigned_apellidos}`,\r\n activityDate: new Date(result.fecha.substr(4, 2) + \"/\" + result.fecha.substr(6, 2) + \"/\" + result.fecha.substr(0, 4)),// Get the date in the format mm/dd/yyyy //response.activityDate,\r\n activityTime: startTimeStr,\r\n activityFinishTime: finishTimeStr,\r\n duration: this.getActivityDuration(actualStartTime, actualFinishTime).toString(),\r\n description: result.descripcion,\r\n statusTypeId: String(result.especialidadTecnica.evento_estado),\r\n statusTypeName: result.especialidadTecnica.evento_estado_alias,\r\n userId: result.user_insert,\r\n isDeleted: response.eliminado,\r\n username: '',\r\n entryDate: new Date()\r\n };\r\n return activity;\r\n }\r\n\r\n mapActivityModelToActivityRoot(activity: Activity): ActivityRoot {\r\n\r\n let actualStartTime: Date = null, actualFinishTime: Date = null;\r\n const [actDay, actMonth, actYear] = activity.activityDate.split(\"/\");\r\n let actualActivityDate = new Date(Number(actYear), Number(actMonth), Number(actDay));\r\n const activityDateStr = actYear + ('0' + actMonth).slice(-2) + ('0' + actDay).slice(-2); // Get activity date in YYYYMMdd format\r\n let [hours, minutes, seconds] = activity.activityTime.split(':');\r\n let activityTimeStr = ('0' + hours).slice(-2) + ('0' + minutes).slice(-2) + ':00';\r\n\r\n if (activity.activityTime !== null) {\r\n actualStartTime = new Date(Number(actYear), Number(actMonth), Number(actDay), +hours, Number(minutes), Number(seconds));\r\n }\r\n\r\n if (activity.activityFinishTime !== null) {\r\n let [hours, minutes, seconds] = activity.activityFinishTime.split(':');\r\n actualFinishTime = new Date(Number(actYear), Number(actMonth), Number(actDay), +hours, Number(minutes), Number(seconds));\r\n }\r\n\r\n this.activityRoot = new ActivityRoot();\r\n var mainDetails = new EspecialidadTecnica();\r\n var dataInsertUser = new UsuarioUpsert();\r\n mainDetails = {\r\n tipo_especialidad: activity.activityTypeId,\r\n evento_estado: activity.statusTypeId,\r\n tiempo_estimado: 0,\r\n hora_inicio: activity.activityTime.replace(\":\", \"\").replace(\":\", \"\"),\r\n hora_fin: this.getActivityFinishTime(actualStartTime, actualFinishTime, Number(activity.duration)),\r\n empresa_id: activity.companyId,\r\n empresa_centro_id: activity.workCentreId\r\n };\r\n\r\n dataInsertUser = {\r\n fechaHora: actualActivityDate,\r\n ipOrigen: this.clientReqIPAddress,\r\n objectId2: \"\" // TODO: Not yet clarified.\r\n };\r\n\r\n this.activityRoot = {\r\n id: activity.id == \"\" ? null : activity.id,\r\n alias: activity.alias,\r\n descripcion: activity.description,\r\n fecha: activityDateStr,\r\n hora: activityTimeStr.replace(\":\", \"\").replace(\":\", \"\"), // Replace ':' with empty string =>should be in HHmmss format \r\n user_assigned: activity.assignedUserId,\r\n especialidadTecnica: mainDetails,\r\n usuario_upsert: dataInsertUser\r\n };\r\n\r\n return this.activityRoot;\r\n }\r\n\r\n mapExistingActivityToActivityModel(response: ActuacionItem): Activity {\r\n\r\n let startTimeStr: string = null, actualStartTime: Date = null, finishTimeStr: string = null, actualFinishTime: Date = null;\r\n\r\n if (response.hora_inicio !== null) {\r\n startTimeStr = response.hora_inicio.substr(0, 2) + \":\" + response.hora_inicio.substr(2, 2) + \":\" + response.hora_inicio.substr(4, 2);//Get the time in the format HH:mm:ss \r\n let [hours, minutes, seconds] = startTimeStr.split(':');;\r\n actualStartTime = new Date();\r\n actualStartTime.setHours(+hours);\r\n actualStartTime.setMinutes(Number(minutes));\r\n actualStartTime.setSeconds(Number(seconds));\r\n }\r\n\r\n if (response.hora_fin !== null) {\r\n finishTimeStr = response.hora_fin.substr(0, 2) + \":\" + response.hora_fin.substr(2, 2) + \":\" + response.hora_fin.substr(4, 2);//Get the time in the format HH:mm:ss //response.activityTime; \r\n let [hours, minutes, seconds] = finishTimeStr.split(':');;\r\n actualFinishTime = new Date();\r\n actualFinishTime.setHours(+hours);\r\n actualFinishTime.setMinutes(Number(minutes));\r\n actualFinishTime.setSeconds(Number(seconds));\r\n }\r\n\r\n let activity = new Activity();\r\n let [actMonth, actDate, actYear] = response.fecha.split(\"/\");\r\n activity = {\r\n id: response.id,\r\n alias: response.alias,\r\n activityTypeId: String(response.tipo_evento_especialidad),\r\n activityTypeName: response.tipo_evento_especialidad_castellano,\r\n companyId: String(response.empresa_id),\r\n companyName: response.empresa_nombre,\r\n workCentreId: String(response.empresa_centro_id),\r\n workCentreName: response.empresa_centro_nombre,\r\n assignedUserId: String(response.usuario_asignado),\r\n assignedUserName: `${response.usuario_asignado_nombre} ${response.usuario_asignado_apellidos}`,\r\n activityDate: new Date(parseInt(actYear), parseInt(actMonth) - 1, parseInt(actDate)), //reduce 1 from the month to get the actual month\r\n activityTime: startTimeStr,\r\n activityFinishTime: finishTimeStr,\r\n duration: this.getActivityDuration(actualStartTime, actualFinishTime).toString(),\r\n description: response.descripcion,\r\n statusTypeId: String(response.evento_estado),\r\n statusTypeName: response.evento_estado_alias,\r\n userId: JSON.parse(localStorage.getItem(\"loggeduser\")).id,\r\n isDeleted: false,\r\n username: \"\",\r\n entryDate: new Date()\r\n };\r\n\r\n return activity;\r\n }\r\n\r\n hasFilterValues(obj: any): boolean {\r\n for (const key in obj) {\r\n if (obj[key] === null) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n fetchActivityList() {\r\n this.spinner.show();\r\n let actualFilterObj = new ActivityFilterModel();\r\n actualFilterObj.tipo_consulta = this.filterValues.tipo_consulta;\r\n actualFilterObj.id_tecnico = this.filterValues.id_tecnico;\r\n actualFilterObj.id_tecnico_selected =this.filterService.filterObject.id_tecnico_selected;\r\n actualFilterObj.page_number = this.filterValues.page_number;\r\n actualFilterObj.page_size = this.filterValues.page_size;\r\n actualFilterObj.fecha_desde = this.filterValues.fecha_desde;\r\n actualFilterObj.fecha_hasta = this.filterValues.fecha_hasta;\r\n actualFilterObj.id_actuacionestado = this.filterValues.id_actuacionestado == '0' ? null : this.filterValues.id_actuacionestado;\r\n actualFilterObj.id_actuaciontipo = this.filterValues.id_actuaciontipo == '0' ? null : this.filterValues.id_actuaciontipo;\r\n actualFilterObj.id_empresa = this.filterValues.id_empresa == '0' ? null : this.filterValues.id_empresa;\r\n actualFilterObj.id_centro = this.filterValues.id_centro == '0' ? null : this.filterValues.id_centro;\r\n\r\n\r\n this.getFilteredActivities(actualFilterObj).subscribe(response => {\r\n this.spinner.hide();\r\n this.response = response;\r\n if (this.response != null) {\r\n if (this.response.webError != null) {\r\n this.error = this.response.webError.messageToUser;\r\n this.spinner.hide();\r\n this.errorHandler.handle(this.response.webError.messageToUser, true);\r\n } else {\r\n this.totalRecordCount = response.links.rowcount;\r\n this.listViewPaginationConfig.totalItems = this.totalRecordCount;\r\n this.pageCount = Math.floor(response.links.rowcount / response.data.length);\r\n if (this.pageCount > 0) {\r\n this.pageNumberList = Array.from(Array(this.pageCount).keys()).map(i => i + 1);\r\n } \r\n this.mapActivityToCalendarEvent(response.data);\r\n this.activityCalendarRefreshSubject.next('');\r\n }\r\n }\r\n }, error => {\r\n this.spinner.hide();\r\n this.error = Utils.formatError(error);\r\n });\r\n }\r\n\r\n async getActivity(activityId: string): Promise {\r\n return this.apiService.get('erp/actuacion/' + activityId).toPromise();\r\n }\r\n\r\n // NOTE: Activity list is fetched from the client API\r\n getFilteredActivities(filterParameters: any, isForFilter: boolean = true): Observable {\r\n if (isForFilter) {\r\n this.filterValues = filterParameters;\r\n }\r\n return this.httpClient.post(this.apiService.baseUrl + \"erp/actuaciones\", filterParameters);\r\n }\r\n\r\n // get filtered activity generate pdf\r\n getFilteredActivitiesWhenGeneratingPdf(filterParameters: any): Observable {\r\n return this.httpClient.post(environment.gesemeApiUrl + 'erp/actuaciones/agrupadas', filterParameters);\r\n }\r\n \r\n\r\n async saveActivity(activity: ActivityRoot): Promise {\r\n return this.httpClient.post(this.apiService.baseUrl + \"erp/actuacion\", activity).toPromise();\r\n }\r\n\r\n deleteActivity(activity: any): Observable {\r\n return this.httpClient.post(this.apiService.baseUrl + \"erp/actuacion/delete\", activity);\r\n }\r\n\r\n \r\n\r\n //#region \"Pagination\"\r\n buildRowsPerPageList() {\r\n let rowsPerPageList: PaginationRowsPerPage[] = [];\r\n let rowCountValList: string[] = [\"\", \"5\", \"10\", \"15\", \"20\", \"25\", \"30\"];\r\n\r\n let loopIndex: number = -1;\r\n\r\n for (let i = 0; i < rowCountValList.length; i++) {\r\n var rowPerPageObj = new PaginationRowsPerPage();\r\n rowPerPageObj.Id = rowCountValList[i];\r\n rowPerPageObj.RowsPerPage = rowCountValList[i];\r\n rowsPerPageList.push(rowPerPageObj);\r\n }\r\n this.listViewPaginationRowsPerPage$ = this.dropdownService.WrapPaginationRangeToDropDownList(rowsPerPageList, 'RowsPerPage', 'Id');\r\n }\r\n\r\n buildListViewPaginationRanges(pageNumberList: number[]): void {\r\n let rangeArr: PaginationRange[] = new Array;\r\n let paginationRangeValArr: string[] = [\"1-100\", \"101-200\", \"201-300\", \"301-400\", \"401-500\",\r\n \"501-600\", \"601-700\", \"701-800\", \"801-900\", \"901-1000\",\r\n \"1001-1100\", \"1101-1200\", \"1201-1300\", \"1301-1400\", \"1401-1500\",\r\n \"1501-1600\", \"1601-1700\", \"1701-1800\", \"1801-1900\", \"1901-2000\",\r\n \"2001-2100\", \"2101-2200\", \"2201-2300\", \"2301-2400\", \"2401-2500\",\r\n \"2501-2600\", \"2601-2700\", \"2701-2800\", \"2801-2900\", \"2901-3000\",\r\n \"3001-3100\", \"3101-3200\", \"3201-3300\", \"3301-3400\", \"3401-3500\",\r\n \"3501-3600\", \"3601-3700\", \"3701-3800\", \"3801-3900\", \"3901-3000\",\r\n \"4001-4100\", \"4101-4200\", \"4201-4300\", \"4301-4400\", \"4401-4500\",\r\n \"4501-4600\", \"4601-4700\", \"4701-4800\", \"4801-4900\", \"4901-5000\",\r\n \"5001-5100\", \"5101-5200\", \"5201-5300\", \"5301-5400\", \"5401-5500\",\r\n \"5501-5600\", \"5601-5700\", \"5701-5800\", \"5801-5900\", \"5901-6000\"\r\n ];\r\n\r\n for (let i = 0; i < pageNumberList.length; i++) {\r\n var paginationRangeObj = new PaginationRange();\r\n paginationRangeObj.PaginationRangeId = i.toString();\r\n paginationRangeObj.PaginationRangeVal = paginationRangeValArr[i];\r\n rangeArr.push(paginationRangeObj);\r\n }\r\n this.listViewPaginationRanges$ = this.dropdownService.WrapPaginationRangeToDropDownList(rangeArr, 'PaginationRangeVal', 'PaginationRangeId');\r\n }\r\n\r\n getListViewPaginationRanges(pageNumberList: number[], targetView: string = 'mainlistview'): any[] {\r\n let rangeArr: PaginationRange[] = new Array;\r\n let paginationRangeValArr: string[];\r\n\r\n switch (targetView) {\r\n case \"mainlistview\":\r\n paginationRangeValArr = [\"1-100\", \"101-200\", \"201-300\", \"301-400\", \"401-500\",\r\n \"501-600\", \"601-700\", \"701-800\", \"801-900\", \"901-1000\",\r\n \"1001-1100\", \"1101-1200\", \"1201-1300\", \"1301-1400\", \"1401-1500\",\r\n \"1501-1600\", \"1601-1700\", \"1701-1800\", \"1801-1900\", \"1901-2000\",\r\n \"2001-2100\", \"2101-2200\", \"2201-2300\", \"2301-2400\", \"2401-2500\",\r\n \"2501-2600\", \"2601-2700\", \"2701-2800\", \"2801-2900\", \"2901-3000\",\r\n \"3001-3100\", \"3101-3200\", \"3201-3300\", \"3301-3400\", \"3401-3500\",\r\n \"3501-3600\", \"3601-3700\", \"3701-3800\", \"3801-3900\", \"3901-3000\",\r\n \"4001-4100\", \"4101-4200\", \"4201-4300\", \"4301-4400\", \"4401-4500\",\r\n \"4501-4600\", \"4601-4700\", \"4701-4800\", \"4801-4900\", \"4901-5000\",\r\n \"5001-5100\", \"5101-5200\", \"5201-5300\", \"5301-5400\", \"5401-5500\",\r\n \"5501-5600\", \"5601-5700\", \"5701-5800\", \"5801-5900\", \"5901-6000\"\r\n ];\r\n break;\r\n case \"existingactivities\":\r\n paginationRangeValArr = [\"1-50\", \"51-100\", \"101-150\", \"151-200\",\r\n \"201-250\", \"251-300\", \"301-350\", \"351-400\", \"401-450\", \"451-500\",\r\n \"501-550\", \"551-600\", \"601-650\", \"651-700\", \"701-750\", \"751-800\",\r\n \"801-850\", \"851-900\", \"901-950\", \"951-1000\", \"1001-1050\", \"1051-1100\",\r\n \"1101-1150\", \"1151-1200\", \"1201-1250\", \"1251-1300\", \"1301-1350\", \"1351-1400\",\r\n \"1401-1450\", \"1451-1500\", \"1501-1550\", \"1551-1600\", \"1601-1650\", \"1651-1700\"\r\n ];\r\n break;\r\n default:\r\n paginationRangeValArr = [\"1-100\", \"101-200\", \"201-300\", \"301-400\", \"401-500\",\r\n \"501-600\", \"601-700\", \"701-800\", \"801-900\", \"901-1000\",\r\n \"1001-1100\", \"1101-1200\", \"1201-1300\", \"1301-1400\", \"1401-1500\",\r\n \"1501-1600\", \"1601-1700\", \"1701-1800\", \"1801-1900\", \"1901-2000\",\r\n \"2001-2100\", \"2101-2200\", \"2201-2300\", \"2301-2400\", \"2401-2500\",\r\n \"2501-2600\", \"2601-2700\", \"2701-2800\", \"2801-2900\", \"2901-3000\",\r\n \"3001-3100\", \"3101-3200\", \"3201-3300\", \"3301-3400\", \"3401-3500\",\r\n \"3501-3600\", \"3601-3700\", \"3701-3800\", \"3801-3900\", \"3901-3000\",\r\n \"4001-4100\", \"4101-4200\", \"4201-4300\", \"4301-4400\", \"4401-4500\",\r\n \"4501-4600\", \"4601-4700\", \"4701-4800\", \"4801-4900\", \"4901-5000\",\r\n \"5001-5100\", \"5101-5200\", \"5201-5300\", \"5301-5400\", \"5401-5500\",\r\n \"5501-5600\", \"5601-5700\", \"5701-5800\", \"5801-5900\", \"5901-6000\"\r\n ];\r\n break;\r\n }\r\n\r\n for (let i = 0; i < pageNumberList.length; i++) {\r\n var paginationRangeObj = new PaginationRange();\r\n paginationRangeObj.PaginationRangeId = (i + 1).toString();\r\n paginationRangeObj.PaginationRangeVal = paginationRangeValArr[i];\r\n rangeArr.push(paginationRangeObj);\r\n }\r\n let resultArr = this.dropdownService.WrapPaginationRangeToDropDownList(rangeArr, 'PaginationRangeVal', 'PaginationRangeId');\r\n return resultArr;\r\n }\r\n //#endregion\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';\r\nimport { CustomEncoderService } from './custom-encoder.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AuthenticationService } from './_authService/authentication.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiService {\r\n\r\n protected httpOptions: any;\r\n protected token: any;\r\n protected timeout_seconds = 60000;\r\n public baseUrl: string;\r\n\r\n constructor(private http: HttpClient, private customEncoder: CustomEncoderService,private authService : AuthenticationService) {\r\n this.baseUrl = environment.baseUrl;\r\n }\r\n\r\n // private getAuthorizationToken(): string {\r\n // // Until Login Is Done\r\n // return 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6ImFkbWluIiwicm9sZSI6IkFkbWluaXN0cmF0b3IiLCJuYmYiOjE1NzgzMDU5ODEsImV4cCI6MTU3ODMwOTU4MSwiaWF0IjoxNTc4MzA1OTgxLCJpc3MiOiJFeHBlbnNlc0lzc3VlciIsImF1ZCI6IkV4cGVuc2VzQXVkaWVuY2UifQ.OEsOTnNaOsDSKQ3NzDC9kCxYrKKNbNlIpbKjtke08eq3x8y4BwgyeGg0yr4run3tDTUns-EyDSZFEY1JD4B7cBNSrRmamwYh03jgxCGaUH3vAZ_dPjQ1DFQeekNu8agim37qsZmO_7Ct5E2G2AMnriIeW42Cw2Hg3DdCq3iDx3-1pTyVKaC0cf68QxnxSiXKGlfmin5wDZQkQaujZSd74IZWGd-cKtUukT_5_bwD7Ro9JP5KEHFegmRz726DMGIpgC_p7qrXf-ZdRPisOQ8dwJBth1oiLRtz2C5GfJBecAG7vD3t3COgcgntEoz82ssIMVci424gg3oTGiBFq8lyDQ';\r\n // }\r\n\r\n private getRequestHttpParams(httpParams?: any) {\r\n let params = new HttpParams({ encoder: this.customEncoder });\r\n for (const key in httpParams) {\r\n if (httpParams.hasOwnProperty(key)) {\r\n params = params.append(key, httpParams[key]);\r\n }\r\n }\r\n return params;\r\n }\r\n\r\n private getRequestHttpHeaders(): HttpHeaders {\r\n //const authorizationToken = 'Bearer ' + this.getAuthorizationToken();\r\n const headers = new HttpHeaders({\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': ''\r\n });\r\n return headers;\r\n }\r\n\r\n private getRequestHttpOptions(httpParams?: any) {\r\n const params = this.getRequestHttpParams(httpParams);\r\n const headers = this.getRequestHttpHeaders();\r\n const options = {\r\n headers,\r\n params\r\n };\r\n return options;\r\n }\r\n\r\n get(url: string, httpParams?, withTimeout?: boolean): Observable {\r\n const uri = this.baseUrl + url;\r\n const options = this.getRequestHttpOptions(httpParams);\r\n\r\n let call = this.http.get(uri, options);\r\n if (withTimeout) {\r\n call = call.timeout(this.timeout_seconds);\r\n }\r\n\r\n return call as Observable;\r\n }\r\n\r\n post(url: string, data?: any, httpParams?, withTimeout?: boolean): Observable {\r\n const options = this.getRequestHttpOptions(httpParams);\r\n\r\n let call = this.http.post(this.baseUrl + url, data, options);\r\n if (withTimeout) {\r\n call = call.timeout(this.timeout_seconds);\r\n }\r\n\r\n return call as Observable;\r\n }\r\n\r\n delete(url: string, withTimeout?: boolean) {\r\n const options = this.getRequestHttpOptions();\r\n let call = this.http.delete(this.baseUrl + url, options);\r\n if (withTimeout) {\r\n call = call.timeout(this.timeout_seconds);\r\n }\r\n\r\n return call;\r\n }\r\n\r\n put(url: string, data?: any, httpParams?: any, withTimeout?: boolean) {\r\n const options = this.getRequestHttpOptions();\r\n\r\n let call = this.http.put(this.baseUrl + url, data, options);\r\n if (withTimeout) {\r\n call = call.timeout(this.timeout_seconds);\r\n }\r\n\r\n return call;\r\n }\r\n\r\n multiPartFormPost(url: string, key: string, image, token, withTimeout?: boolean) {\r\n const headers = new HttpHeaders().set('Authorization', token ? token : '');\r\n\r\n const options = {\r\n headers\r\n };\r\n const formData = new FormData();\r\n formData.append(key, image);\r\n\r\n let call = this.http.post(this.baseUrl + url, formData, options);\r\n if (withTimeout) {\r\n call = call.timeout(this.timeout_seconds);\r\n }\r\n\r\n return call;\r\n }\r\n}\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { DecimalToHex } from 'src/app/Helpers/DecimalToHex';\r\nimport { DropdownService } from '../dropdown.service';\r\nimport { ErrorHandlerService } from '../error-handler.service';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ActivityStatusService {\r\n public listOfActivityStatus =[]\r\n constructor(private dropdownService: DropdownService,\r\n private errorHandler: ErrorHandlerService, \r\n private spinner: NgxSpinnerService) { }\r\n\r\n \r\n getColorsOfActivityStatus(){ \r\n this.spinner.show();\r\n return this.dropdownService.getActivityStatusTypes().pipe(\r\n map(response => {\r\n for (let index = 0; index < response.length; index++) {\r\n response[index]['numcolor'] = DecimalToHex.convert(response[index]['numcolor'] );\r\n }\r\n this.listOfActivityStatus = response;\r\n localStorage.setItem('colorList', JSON.stringify(this.listOfActivityStatus));\r\n \r\n }, error => {\r\n this.errorHandler.handle(error);\r\n })\r\n );\r\n }\r\n\r\n \r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport * as html2pdf from 'html2pdf.js';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GeneratePdfService {\r\n base64String: string;\r\n\r\n constructor(\r\n private spinner: NgxSpinnerService,\r\n private datePipe: DatePipe,\r\n ) { }\r\n\r\n public shareData:any;\r\n public pdf:any;\r\n public fileName:any;\r\n\r\n async convertHtmlToPdf(sectionIds, isEmail?: boolean): Promise {\r\n const companyName = this.removeSpecialCharacter(this.shareData.CompanyName);\r\n const workCenterName = this.removeSpecialCharacter(this.shareData.WorkCentreName);\r\n const currentDate = this.datePipe.transform(new Date(), 'yyyyMMdd');\r\n \r\n const opt_gen = {\r\n margin: 0.5,\r\n filename: `${currentDate}_PRG_${companyName}_${workCenterName}.pdf`,\r\n image: { type: 'jpeg', quality: 0.98 },\r\n html2canvas: { dpi: 192, scale: 4, letterRendering: true },\r\n jsPDF: { unit: 'in', format: 'A4', orientation: 'portrait' },\r\n };\r\n \r\n const opt_landscape = {\r\n margin: 0.5,\r\n image: { type: 'jpeg', quality: 0.98 },\r\n html2canvas: { dpi: 192, scale: 4, letterRendering: true },\r\n jsPDF: { unit: 'in', format: 'A4', orientation: 'landscape' },\r\n };\r\n \r\n const html = document.getElementById(sectionIds[0]);\r\n const html2 = document.getElementById(sectionIds[1]);\r\n \r\n if (isEmail) {\r\n // Use a Promise to ensure the operations complete before returning\r\n await new Promise((resolve, reject) => {\r\n html2pdf()\r\n .from(html)\r\n .set(opt_gen)\r\n .toPdf()\r\n .get('pdf')\r\n .then((pdf) => {\r\n pdf.addPage('a4', 'landscape');\r\n })\r\n .from(html2)\r\n .set(opt_landscape)\r\n .toContainer()\r\n .toCanvas()\r\n .toPdf()\r\n .outputPdf('blob')\r\n .then((pdfBlob) => {\r\n // Convert Blob to Base64\r\n const reader = new FileReader();\r\n reader.readAsDataURL(pdfBlob);\r\n \r\n reader.onloadend = () => {\r\n const result = reader.result;\r\n \r\n if (typeof result === 'string') {\r\n const base64String = result.split(',')[1]; // Extract the Base64 part\r\n this.base64String = base64String;\r\n localStorage.setItem('filename', opt_gen.filename);\r\n resolve(); // Resolve the promise after everything is done\r\n }\r\n };\r\n \r\n reader.onerror = () => reject(new Error('Failed to convert Blob to Base64'));\r\n })\r\n .catch((error) => reject(error)); // Handle errors from html2pdf\r\n });\r\n } else {\r\n // Handle the non-email case\r\n await new Promise((resolve, reject) => {\r\n html2pdf()\r\n .from(html)\r\n .set(opt_gen)\r\n .toPdf()\r\n .get('pdf')\r\n .then((pdf) => {\r\n pdf.addPage('a4', 'landscape');\r\n })\r\n .from(html2)\r\n .set(opt_landscape)\r\n .toContainer()\r\n .toCanvas()\r\n .toPdf()\r\n .save()\r\n .outputPdf()\r\n .then(() => resolve())\r\n .catch((error) => reject(error)); // Handle errors from html2pdf\r\n });\r\n }\r\n }\r\n \r\n\r\n removeSpecialCharacter(str) {\r\n str = str.replace(/[^\\w\\s]/gi, \"\") // Remove non word characters\r\n .trim() // Remove trailing and leadings spaces\r\n .replace(/\\s/g, (s) => s.toUpperCase()); // Make the first letter of each word upper case\r\n return str;\r\n }\r\n\r\n \r\n\r\n convertHtmlToPdf1(page){\r\n\r\n let comapnyName = this.removeSpecialCharacter(this.shareData.CompanyName);\r\n let workCenterName = this.removeSpecialCharacter(this.shareData.WorkCentreName);\r\n const currentDate = this.datePipe.transform(new Date(), 'yyyyMMdd');\r\n const element: any = document.getElementById(page);\r\n \r\n var opt = {\r\n margin: 0.5,\r\n filename: currentDate + \"_MEM_\" + comapnyName + \"_\" + workCenterName + \".pdf\", //'_Generar_Memoria_Anual.pdf',\r\n image: { type: 'jpeg', quality: 0.98 },\r\n html2canvas: { dpi: 192, letterRendering: true },\r\n jsPDF: { unit: 'in', format: 'A4', orientation: 'portrait' }\r\n };\r\n \r\n //To download\r\n html2pdf().from(element).set(opt).save();\r\n \r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Observable } from 'rxjs-compat';\r\nimport { MasterDetailsApiService } from '../masterdetailsapi.service';\r\nimport { MemoriaAnualQuiz } from 'src/app/models/memoria-anual-quiz.model';\r\nimport autonomoquiz from \"../_quizes/autonomo.json\";\r\nimport empresaquiz from \"../_quizes/empresa.json\";\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MemoriaAnualService {\r\n public ActivityFormGroupWizard1: FormGroup;\r\n public ActivityFormGroupWizard2: FormGroup;\r\n public ActivityFormGroupWizard3: FormGroup;\r\n public ActivityFormGroupWizard4: FormGroup;\r\n public Questions: [];\r\n constructor(private _httpClient: HttpClient, private apiService: MasterDetailsApiService,public fb: FormBuilder, private httpClient: HttpClient) { }\r\n\r\n getAllClosedContracts(contractsRequest: any) : Observable {\r\n return this.apiService.post('WorkCentre/GetAllClosedContracts' , contractsRequest);\r\n }\r\n\r\n // getAllContracts(contractsRequest: any) : Observable {\r\n // return this.apiService.post('WorkCentre/GetAllContracts' , contractsRequest);\r\n // }\r\n\r\n getAllContracts(contractsRequest) : Observable {\r\n return this._httpClient.post(environment.gesemeApiUrl + 'erp/empresa/centro/contratos' , contractsRequest);\r\n }\r\n\r\n getContactPersons(workCentreId: string) {\r\n return this.apiService.get('Workforce/GetContactPersons/' + workCentreId);\r\n }\r\n \r\n getWorkCenterData(workCentreId: string) {\r\n return this.apiService.get('WorkCentre/GetWorkCenterData/' + workCentreId);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.ActivityFormGroupWizard1 = this.fb.group({\r\n TemplateLanguage: ['',Validators.required],\r\n Inicio:[],\r\n Fin:[],\r\n Implicacions:['Baja'],\r\n DateRange:[]\r\n });\r\n this.ActivityFormGroupWizard4 = this.fb.group({\r\n TemplateLanguage: ['',Validators.required],\r\n Inicio:[],\r\n Fin:[],\r\n TypeOfEmpressa:[\"1\",Validators.required],\r\n DateRange:[]\r\n });\r\n }\r\n\r\n \r\n public downloadMemoriaAttachment(requestModel: any): Observable {\r\n return this.apiService.post('Activity/ExportPdf', requestModel);\r\n }\r\n public downloadMemoriaWithQuizAttachment(requestModel: any): Observable {\r\n return this.apiService.post('Activity/ExportMemAnualWithQuizPdf', requestModel);\r\n }\r\n\r\n public getdisciplinasyactuaciones(requestModel: any) : Observable{\r\n let url = 'https://api.geseme.com/erp/empresa/memoria/disciplinasyactuaciones';\r\n return this.httpClient.post(url, requestModel);\r\n }\r\n \r\n\r\n public generateMemoriaAnualQuiz(type: number) : MemoriaAnualQuiz[] {\r\n let questions = [];\r\n // Empresa\r\n if(type == 1){\r\n this.Questions = JSON.parse(JSON.stringify(empresaquiz));\r\n questions = JSON.parse(JSON.stringify(this.Questions));\r\n }\r\n // Autonomo\r\n else{\r\n this.Questions = JSON.parse(JSON.stringify(autonomoquiz));\r\n questions = JSON.parse(JSON.stringify(this.Questions));\r\n }\r\n return questions\r\n }\r\n\r\n // get user details and signature\r\n public getUserDetailsAndSignature(reqObject: any): Observable{\r\n let url = `${environment.gesemeApiUrl}erp/actuacion/firma`\r\n return this.httpClient.post(url, reqObject)\r\n }\r\n\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { MasterDetailsApiService } from '../masterdetailsapi.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class UserConfigService{\r\n \r\n constructor(private apiService: MasterDetailsApiService) {\r\n this.apiService.baseUrl = environment.baseUrl;\r\n } \r\n \r\n public getAllUsers(): Observable {\r\n return this.apiService.get(\"Workforce/GetAllList\");\r\n }\r\n \r\n public getAllRoles(): Observable {\r\n return this.apiService.get(\"Workforce/AllRoles\");\r\n }\r\n \r\n public saveuserRoles(data: any): Observable {\r\n return this.apiService.post(\"Workforce/SaveUserRoles\", data);\r\n }\r\n\r\n public saveUpdateRoles(data: any): Observable {\r\n return this.apiService.post(\"Workforce/saveRoles\", data);\r\n }\r\n\r\n public getRoleUserList(roleId: number): Observable {\r\n return this.apiService.get(\"Workforce/GetRoleUser/\"+roleId);\r\n }\r\n\r\n public DeleteRoleUser(data: any): Observable {\r\n return this.apiService.post(\"Workforce/deleteRoleUser\", data);\r\n }\r\n\r\n public getAllPermission(): Observable {\r\n return this.apiService.get(\"Workforce/AllPermit\");\r\n }\r\n\r\n public saveRolePermisssion(data: any): Observable {\r\n return this.apiService.post(\"Workforce/SaveRolePermit\", data);\r\n }\r\n\r\n public DeleteRolePermission(data: any): Observable {\r\n return this.apiService.post(\"Workforce/deleteRolePermit\", data);\r\n }\r\n\r\n public getRolePermissions(roleId: number): Observable {\r\n return this.apiService.get(\"Workforce/GetRolePermit/\"+roleId);\r\n }\r\n \r\n }\r\n \r\n","import { Injectable } from '@angular/core';\r\nimport { ApiService } from './api.service';\r\nimport { ContactInfo } from '../models/contact-info.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ContactInfoService {\r\n\r\n constructor(private apiService: ApiService) { }\r\n\r\n getAllContactInfo(workCentreId: string) {\r\n return this.apiService.get('Common/WorkCentre/GetContacts?id=' + workCentreId);\r\n\r\n // for (let index = 1; index < 6; index++) {\r\n // const element = new ContactInfo();\r\n // element.Id = index;\r\n // element.Email = 'email' + index + '@gmail.com';\r\n // element.ContactName = 'Name ' + index;\r\n // contactInfo.push(element);\r\n // }\r\n\r\n // return contactInfo;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpUrlEncodingCodec } from '@angular/common/http';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CustomEncoderService extends HttpUrlEncodingCodec {\r\n encodeKey(key: string): string {\r\n return encodeURIComponent(key);\r\n }\r\n\r\n encodeValue(value: string): string {\r\n return encodeURIComponent(value);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DataSharingService {\r\n\r\n public currentActuacionDataObject:any\r\n constructor() { }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpHeaders } from \"@angular/common/http\";\r\nimport { Observable } from \"rxjs\";\r\nimport { ActivityType } from \"../models/activity-type.model\";\r\nimport { SelectOptions } from \"../models/select-options.model\";\r\nimport { Company } from \"../models/company.model\";\r\nimport { Workforce } from \"../models/workforce.model\";\r\nimport { WorkingCentre } from \"../models/working-centre.model\";\r\nimport { StatusType } from \"../models/status-type.model\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { MasterDetailsApiService } from \"./masterdetailsapi.service\";\r\nimport { MultipleActivitySaveModel } from \"../models/multiple.activity.save.model\";\r\nimport { DecimalToHex } from \"../Helpers/DecimalToHex\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class DropdownService {\r\n httpOptions = {\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/json; charset=utf-8\",\r\n }),\r\n };\r\n emailAddresses = [];\r\n constructor(private apiService: MasterDetailsApiService) {\r\n this.apiService.baseUrl = environment.baseUrl;\r\n }\r\n\r\n WrappedToDropDownList(\r\n res: Array,\r\n displayMember: string,\r\n valueMemeber: string,\r\n withAny?: boolean,\r\n withoutVisit?: boolean,\r\n iStatusType: boolean = false,\r\n isForLateralFilter: boolean = false,\r\n isStatus = false\r\n ): Array {\r\n const tempList = [];\r\n if (withAny) {\r\n tempList.push({ label: \"Cualquiera\", value: String(0) });\r\n }\r\n // Assign the sort order manually first for status types only\r\n // Then bind the values in sort order\r\n if (iStatusType) {\r\n res.forEach((element) => {\r\n element[\"sortOrder\"] = this.getSortOrderForStatusType(\r\n element.statusTypeName\r\n );\r\n });\r\n\r\n // change the status type list order by Sort Order\r\n const sortedStatusTypes = res.sort((a, b) => a.sortOrder - b.sortOrder);\r\n\r\n sortedStatusTypes.forEach((element) => {\r\n if (element.name === \"Visita\" && withoutVisit) {\r\n return;\r\n }\r\n const optItem = {\r\n label: element[displayMember],\r\n value: String(element[valueMemeber]),\r\n };\r\n if (isStatus) {\r\n optItem[\"color\"] = DecimalToHex.convert(element[\"numcolor\"]);\r\n }\r\n // Client request=>Include 'Realizada-Pendiente de validar' ONLY for the lateral filter\r\n if (\r\n !isForLateralFilter &&\r\n element.statusTypeName.trim() === \"Realizada-Pendiente de validar\"\r\n ) {\r\n return;\r\n } else {\r\n tempList.push(optItem);\r\n }\r\n });\r\n } else {\r\n res.forEach((element) => {\r\n if (element.name === \"Visita\" && withoutVisit) {\r\n return;\r\n }\r\n const optItem = {\r\n label: element[displayMember],\r\n value: String(element[valueMemeber]),\r\n };\r\n if (isStatus) {\r\n optItem[\"color\"] = DecimalToHex.convert(element[\"numcolor\"]);\r\n }\r\n tempList.push(optItem);\r\n });\r\n }\r\n return tempList;\r\n }\r\n\r\n WrappedToDropDownListWithLang(\r\n lang: any,\r\n res: Array,\r\n displayMember: string,\r\n displayMember1: string,\r\n valueMemeber: string,\r\n withAny?: boolean,\r\n withoutVisit?: boolean,\r\n iStatusType: boolean = false,\r\n isForLateralFilter: boolean = false,\r\n isStatus = false\r\n ): Array {\r\n const tempList = [];\r\n if (res.length > 0) {\r\n res.forEach((element) => {\r\n if (element.name === \"Visita\" && withoutVisit) {\r\n return;\r\n }\r\n if (lang == \"es\") {\r\n const optItem = {\r\n label: element[displayMember],\r\n value: String(element[valueMemeber]),\r\n };\r\n tempList.push(optItem);\r\n } else {\r\n const optItem = {\r\n label: element[displayMember1],\r\n value: String(element[valueMemeber]),\r\n };\r\n tempList.push(optItem);\r\n }\r\n });\r\n }\r\n return tempList;\r\n }\r\n\r\n WrappedToDropDownListAsignadasa(\r\n res: Array,\r\n displayMember: string,\r\n valueMemeber: string,\r\n withAny?: boolean,\r\n withoutVisit?: boolean,\r\n iStatusType: boolean = false,\r\n isForLateralFilter: boolean = false,\r\n isStatus = false\r\n ): Array {\r\n const tempList = [];\r\n res.forEach((element) => {\r\n if (element.nombre_apellidos === \"técnico inexistente\") {\r\n // this.filterService.filterObject.id_tecnico_selected=element.id;\r\n // this.filterService.filterObject.id_tecnico=element.id;\r\n }\r\n const optItem = {\r\n label: element[displayMember],\r\n value: String(element[valueMemeber]),\r\n };\r\n if (element.nombre_apellidos !== \"cualquiera\") {\r\n tempList.push(optItem);\r\n }\r\n });\r\n return tempList;\r\n }\r\n\r\n WrapPaginationRangeToDropDownList(\r\n res: Array,\r\n displayMember: string,\r\n valueMemeber: string\r\n ): Array {\r\n const tempList = [];\r\n // tempList.push({ label: 'Cualquiera', value: String(-1) });\r\n res.forEach((element) => {\r\n const optItem = {\r\n label: element[displayMember],\r\n value: String(element[valueMemeber]),\r\n };\r\n tempList.push(optItem);\r\n });\r\n return tempList;\r\n }\r\n\r\n getActivityTypes(\r\n activityTypeNameSubstring: string = \"-99\",\r\n fetchLimit: number = 100,\r\n activiyTypeId: string = \"\", \r\n isNotVisitaType: boolean = false,\r\n isSearchMode: boolean = false,\r\n size: number = 0,\r\n ): Observable {\r\n return this.apiService.get(\r\n \"Common/ActivityType/GetAll?activityTypeNameSubstring=\" + activityTypeNameSubstring +\r\n \"&fetchLimit=\" + fetchLimit +\r\n \"&activityTypeId=\" + activiyTypeId + \r\n \"&isNotVisitaType=\" + isNotVisitaType +\r\n \"&isSearchMode=\" + isSearchMode +\r\n \"&size=\" + size\r\n );\r\n }\r\n\r\n getCompanies(\r\n companyNameSubstring: string = \"-99\",\r\n fetchLimit: number = 100,\r\n companyId: string = \"\",\r\n isSearchMode: boolean = false\r\n ): Observable {\r\n return this.apiService.get(\r\n \"Common/Company/GetAll?companyNameSubstring=\" +\r\n companyNameSubstring +\r\n \"&fetchLimit=\" +\r\n fetchLimit +\r\n \"&companyId=\" +\r\n companyId +\r\n \"&isSearchMode=\" +\r\n isSearchMode\r\n );\r\n }\r\n\r\n // Get filtered companies\r\n getFilteredCompanies(companyIds: Array): Observable {\r\n const url: string = \"Common/Company/Get\" + \"?id=\" + companyIds.join(\"&id=\");\r\n return this.apiService.get(url);\r\n }\r\n\r\n getWorkingCentres(\r\n wcNameSubstring: string = \"-99\",\r\n fetchLimit: number = 100,\r\n workCentreId: string = \"\"\r\n ): Observable {\r\n return this.apiService.get(\r\n \"Common/WorkCentre/GetAll?wcNameSubstring=\" +\r\n wcNameSubstring +\r\n \"&fetchLimit=\" +\r\n fetchLimit +\r\n \"&workCentreId\" +\r\n workCentreId\r\n );\r\n }\r\n\r\n getWorkCentreDetails(workCenterId: any): Observable {\r\n return this.apiService.get(\r\n \"Common/WorkCentre/Get/Single\" + \"?id=\" + workCenterId\r\n );\r\n }\r\n\r\n // Get filtered working centres\r\n getFilteredWorkingCentres(\r\n workCentreIds: Array\r\n ): Observable {\r\n const url: string =\r\n \"Common/WorkCentre/Get\" + \"?id=\" + workCentreIds.join(\"&id=\");\r\n return this.apiService.get(url);\r\n }\r\n\r\n getWorkingCentresByCompany(\r\n companyId: string,\r\n wcNameSubstring: string = \"-99\",\r\n fetchLimit: number = 100,\r\n workCentreId: string = \"\",\r\n isSearchMode: boolean = false\r\n ): Observable {\r\n return this.apiService.get(\r\n \"Common/WorkCentre/ForCompanyOrUser?CompanyId=\" +\r\n companyId +\r\n \"&wcNameSubstring=\" +\r\n wcNameSubstring +\r\n \"&fetchLimit=\" +\r\n fetchLimit +\r\n \"&workCentreId=\" +\r\n workCentreId +\r\n \"&isSearchMode=\" +\r\n isSearchMode\r\n );\r\n }\r\n\r\n getUsers(): Observable {\r\n return this.apiService.get(\"Workforce/GetAll\");\r\n }\r\n\r\n getBulkEmail(centroCode: string) {\r\n return this.apiService.get(\"Workforce/BulckEmail?CentroCode=\" + centroCode);\r\n }\r\n\r\n getCompanyCodigo(companyId: string) {\r\n return this.apiService.get(\"Common/Company/Get/Codigo?id=\" + companyId);\r\n }\r\n\r\n getUsersLimited(\r\n usernameSubStr: string = \"-99\",\r\n fetchLimit: number = 100,\r\n userId: string = \"\",\r\n isSearchMode: boolean = false\r\n ): Observable {\r\n return this.apiService.get(\r\n \"Workforce/GetAllLimited?usernameSubStr=\" +\r\n usernameSubStr +\r\n \"&fetchLimit=\" +\r\n fetchLimit +\r\n \"&userId=\" +\r\n userId +\r\n \"&isSearchMode=\" +\r\n isSearchMode\r\n );\r\n }\r\n\r\n getAssociatedTechs(\r\n usernameSubStr: string = \"-99\",\r\n fetchLimit: number = 100,\r\n userId: string = \"\",\r\n isSearchMode: boolean = false\r\n ): Observable {\r\n return this.apiService.get(\r\n \"Workforce/GetAssociatedTechs?usernameSubStr=\" +\r\n usernameSubStr +\r\n \"&fetchLimit=\" +\r\n fetchLimit +\r\n \"&userId=\" +\r\n userId +\r\n \"&isSearchMode=\" +\r\n isSearchMode\r\n );\r\n }\r\n\r\n getActivityStatusTypes(\r\n isAssignableOnly: boolean = false\r\n ): Observable {\r\n return this.apiService.get(\r\n \"Common/StatusType/GetAll?isAssignableOnly=\" + isAssignableOnly\r\n );\r\n }\r\n\r\n // To manually set the order of the status types\r\n getSortOrderForStatusType(statusType): number {\r\n let sortOrder = 0;\r\n const trimmedStatusType = statusType.trim();\r\n switch (trimmedStatusType) {\r\n case \"Pendiente de confirmar\":\r\n sortOrder = 1;\r\n break;\r\n case \"Confirmada-Pendiente de realizar\":\r\n sortOrder = 2;\r\n break;\r\n case \"Realizada-Pendiente de validar\":\r\n sortOrder = 3;\r\n break;\r\n case \"Realizada y Validada\":\r\n sortOrder = 4;\r\n break;\r\n case \"Cancelada\":\r\n sortOrder = 5;\r\n break;\r\n default:\r\n sortOrder = 1;\r\n break;\r\n }\r\n\r\n return sortOrder;\r\n }\r\n\r\n // NOTE : This is related to activity service but is retrieved from the master data API service\r\n getClientReqIPAddress(): Observable {\r\n return this.apiService.get(\"Common/IPAddress/Get\");\r\n }\r\n\r\n // Dedicated API call to log the operations(insert/update/delete) done by the user\r\n // NOTE : This is related to activity service but is invoked from the master data API service\r\n saveLogUserActivity(userActivityLog: any) {\r\n return this.apiService.post(\"Common/UserActivityLog/Save\", userActivityLog);\r\n }\r\n\r\n // NOTE : This is related to activity service but is retrieved from the master data API service\r\n public async saveMultipleActivities(\r\n saveModel: MultipleActivitySaveModel\r\n ): Promise {\r\n return this.apiService.post(\"Activity/AddMultiple\", saveModel).toPromise();\r\n }\r\n\r\n public sendMemoriaEmail(emailModel: any): Observable {\r\n return this.apiService.post(\"Activity/SendMemoriaEmail\", emailModel);\r\n }\r\n public SendMemoriaEmailWithQuiz(emailModel: any): Observable {\r\n return this.apiService.post(\"Activity/SendMemoriaEmailWithQuiz\", emailModel);\r\n }\r\n\r\n // NOTE : This is related to activity service but is retrieved from the master data API service\r\n getUserEmailAddress(userId: string): Observable {\r\n return this.apiService.get(`Workforce/Get/Email/${userId}`);\r\n }\r\n\r\n getContactEmailAddress(workCentreId: string): Observable {\r\n return this.apiService.get(`Workforce/ContactEmail/${workCentreId}`);\r\n }\r\n\r\n GetActiveContractsByCentroCode(CentroCode: string) {\r\n return this.apiService.get(\r\n \"Workforce/GetActiveContractsByCentroCode?CentroCode=\" + CentroCode\r\n );\r\n }\r\n\r\n sendEmail(activity: any): Observable {\r\n return this.apiService.post(\"Activity/SendEmail\", activity);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { throwError } from 'rxjs';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorHandlerService {\r\n\r\n private msgTimeOut = 50000; // Message display timeout in miliseconds\r\n\r\n constructor(private toastrService: ToastrService) { }\r\n\r\n handle(error, isCustomMsg: boolean = false) {\r\n let errorMessage = '';\r\n if (!isCustomMsg && error) {\r\n if (error.error instanceof ErrorEvent) {\r\n // Get client-side error\r\n errorMessage = error.error.message;\r\n } else {\r\n // Get server-side error\r\n if (error.status && error.message) {\r\n errorMessage = `Código de error: ${error.status}\\nMensaje: ${error.message}`;\r\n }\r\n }\r\n\r\n if (!errorMessage) {\r\n this.toastrService.error('La operación falló', 'Error', {\r\n timeOut: this.msgTimeOut\r\n });\r\n } else {\r\n this.toastrService.error(errorMessage, 'Error', {\r\n timeOut: this.msgTimeOut\r\n });\r\n }\r\n } else {\r\n if (error) {\r\n errorMessage = `Mensaje de error: ${error}`;\r\n this.toastrService.error(errorMessage, 'Error', {\r\n enableHtml: true,\r\n timeOut: this.msgTimeOut\r\n });\r\n }\r\n\r\n }\r\n\r\n if (errorMessage) {\r\n return throwError(errorMessage);\r\n }\r\n\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivityFilterModel } from '../models/activity-filter';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FilterService {\r\n\r\n public filterObject: ActivityFilterModel;\r\n private currentUserId: string;\r\n\r\n constructor() {\r\n this.initializeFilters();\r\n }\r\n\r\n private initializeFilters(): void {\r\n this.currentUserId = JSON.parse(localStorage.getItem('loggeduser')).id;\r\n this.filterObject = new ActivityFilterModel();\r\n this.resetFilterValues();\r\n }\r\n\r\n public resetFilterValues(): void {\r\n this.filterObject.tipo_consulta = 'TODAS';\r\n this.filterObject.page_number = 1;\r\n this.filterObject.id_tecnico = this.currentUserId;\r\n this.filterObject.id_empresa = null;\r\n this.filterObject.id_centro = null;\r\n this.filterObject.id_actuaciontipo = null;\r\n this.filterObject.id_actuacionestado = null;\r\n this.filterObject.fecha_desde = null;\r\n this.filterObject.fecha_hasta = null;\r\n }\r\n\r\n public setPageSize(forPagination: boolean) {\r\n this.filterObject.page_size = forPagination ? 25 : 1000;\r\n }\r\n\r\n public resetPageDetails(): void {\r\n this.filterObject.page_number = 1;\r\n }\r\n\r\n public setFilterParamters(fObject: ActivityFilterModel): void {\r\n this.filterObject = fObject;\r\n }\r\n\r\n public resetDateFilters(): void {\r\n this.filterObject.fecha_desde = null;\r\n this.filterObject.fecha_hasta = null;\r\n }\r\n\r\n public setFilterValuesForAPI(): void {\r\n this.filterObject.id_actuaciontipo = this.filterObject.id_actuaciontipo === '0'\r\n ? null : this.filterObject.id_actuaciontipo;\r\n this.filterObject.id_empresa = this.filterObject.id_empresa === '0'\r\n ? null : this.filterObject.id_empresa;\r\n this.filterObject.id_centro = this.filterObject.id_centro === '0'\r\n ? null : this.filterObject.id_centro;\r\n this.filterObject.id_actuacionestado = this.filterObject.id_actuacionestado === '0'\r\n ? null : this.filterObject.id_actuacionestado;\r\n }\r\n\r\n public setFilterValuesForView(): void {\r\n \r\n this.filterObject.id_actuaciontipo = !this.filterObject.id_actuaciontipo ? '0' : this.filterObject.id_actuaciontipo;\r\n this.filterObject.id_empresa = !this.filterObject.id_empresa ? '0' : this.filterObject.id_empresa;\r\n this.filterObject.id_centro = !this.filterObject.id_centro ? '0' : this.filterObject.id_centro;\r\n this.filterObject.id_actuacionestado = !this.filterObject.id_actuacionestado ? '0' : this.filterObject.id_actuacionestado;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\nimport { MultipleActivitySaveModel } from '../models/multiple.activity.save.model';\r\nimport { MasterDetailsApiService } from './masterdetailsapi.service';\r\nimport { PlanDePrevWizardModel } from '../models/PlanDePrevWizardModel';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MasterDataService {\r\n\r\n constructor(private apiService: MasterDetailsApiService) {\r\n this.apiService.baseUrl = environment.baseUrl;\r\n }\r\n\r\n public getVisitRefrenceNumber(activityDate: string, workCenterId: string): Observable {\r\n const activityData = {\r\n activityDate,\r\n workCenterId\r\n };\r\n return this.apiService.post('Activity/GetParteDeVisitaReference', activityData);\r\n }\r\n\r\n public getVisitState(referenceNo: string): Observable {\r\n return this.apiService.get(`Activity/GetVisitState?referenceNo=${referenceNo}`);\r\n }\r\n\r\n public getActivityPart(referenceNo: string): Observable {\r\n return this.apiService.get(`Activity/ActivityPart/ForRefNo/${referenceNo}`);\r\n }\r\n\r\n public async saveMultipleActivities(saveModel: MultipleActivitySaveModel): Promise {\r\n return this.apiService.post('Activity/AddMultiple', saveModel).toPromise();\r\n }\r\n\r\n public async sendParteDeVisitaEmail(saveModel: MultipleActivitySaveModel): Promise {\r\n return this.apiService.post('Activity/SendParteDeVisitaEmail', saveModel).toPromise();\r\n }\r\n\r\n public downloadParteDeVisitaAttachment(saveModel: MultipleActivitySaveModel): Observable {\r\n return this.apiService.post('Activity/GetParteDeVisitaAttachment', saveModel);\r\n }\r\n\r\n public getShippingActivityAttachment(activity: any): Observable {\r\n return this.apiService.post('Activity/GetShippingSMEAttachments', activity);\r\n }\r\n\r\n public sendShiipingSmeEmail(activity: any): Observable {\r\n return this.apiService.post('Activity/SendShiipingSME', activity);\r\n }\r\n public sendMeShiipingSmeEmail(activity: any): Observable {\r\n return this.apiService.post('Activity/SendMemoriaVSEmail', activity);\r\n }\r\n\r\n public getProgramacionAnualDefaultActions(): Observable {\r\n return this.apiService.get('Activity/ProgramacionAnualDefault');\r\n }\r\n\r\n public addProgramacionAnualDefaultActions(data: any): Observable {\r\n return this.apiService.post('Activity/SaveProgAction', data);\r\n }\r\n\r\n public saveProgramacionAnualRegisters(data: any): Observable {\r\n return this.apiService.post('Activity/ProgramacionAnualRegisters', data);\r\n }\r\n\r\n public saveProgramacionAnualActions(data: any): Observable {\r\n return this.apiService.post('Activity/ProgramacionAnualActions', data);\r\n }\r\n\r\n public getRolePermission(permissionReq: any): Observable {\r\n return this.apiService.post('Workforce/GetRolePermission', permissionReq);\r\n }\r\n\r\n public getPlanDePrevencionDetails(companyId: string): Observable {\r\n return this.apiService.get(`Activity/getCompanyData/${companyId}`);\r\n }\r\n\r\n public exportPlanDePrevePDF(data: any): Observable {\r\n return this.apiService.post(`Activity/getPlanPDFDoc`, data);\r\n }\r\n\r\n public exportPlanDePreveWord(data: any): Observable {\r\n return this.apiService.post(`Activity/getPlanWordDoc`, data);\r\n }\r\n\r\n public sendPlanDePrevencionEmail(saveModel: any): Observable {\r\n return this.apiService.post('Activity/emailPlanDePrev', saveModel);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';\r\nimport { CustomEncoderService } from './custom-encoder.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AuthenticationService } from './_authService/authentication.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MasterDetailsApiService {\r\n\r\n protected httpOptions: any;\r\n protected token: any;\r\n protected timeout_seconds = 60000;\r\n public baseUrl: string;\r\n\r\n constructor(private http: HttpClient, private customEncoder: CustomEncoderService,private authService : AuthenticationService) {\r\n this.baseUrl = environment.baseUrl;\r\n }\r\n\r\n // private getAuthorizationToken(): string {\r\n // // Until Login Is Done\r\n // return 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6ImFkbWluIiwicm9sZSI6IkFkbWluaXN0cmF0b3IiLCJuYmYiOjE1NzgzMDU5ODEsImV4cCI6MTU3ODMwOTU4MSwiaWF0IjoxNTc4MzA1OTgxLCJpc3MiOiJFeHBlbnNlc0lzc3VlciIsImF1ZCI6IkV4cGVuc2VzQXVkaWVuY2UifQ.OEsOTnNaOsDSKQ3NzDC9kCxYrKKNbNlIpbKjtke08eq3x8y4BwgyeGg0yr4run3tDTUns-EyDSZFEY1JD4B7cBNSrRmamwYh03jgxCGaUH3vAZ_dPjQ1DFQeekNu8agim37qsZmO_7Ct5E2G2AMnriIeW42Cw2Hg3DdCq3iDx3-1pTyVKaC0cf68QxnxSiXKGlfmin5wDZQkQaujZSd74IZWGd-cKtUukT_5_bwD7Ro9JP5KEHFegmRz726DMGIpgC_p7qrXf-ZdRPisOQ8dwJBth1oiLRtz2C5GfJBecAG7vD3t3COgcgntEoz82ssIMVci424gg3oTGiBFq8lyDQ';\r\n // }\r\n\r\n private getRequestHttpParams(httpParams?: any) {\r\n let params = new HttpParams({ encoder: this.customEncoder });\r\n for (const key in httpParams) {\r\n if (httpParams.hasOwnProperty(key)) {\r\n params = params.append(key, httpParams[key]);\r\n }\r\n }\r\n return params;\r\n }\r\n\r\n private getRequestHttpHeaders(): HttpHeaders {\r\n //const authorizationToken = 'Bearer ' + this.getAuthorizationToken();\r\n const headers = new HttpHeaders({\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n 'Authorization': ''\r\n });\r\n return headers;\r\n }\r\n\r\n private getRequestHttpOptions(httpParams?: any) {\r\n const params = this.getRequestHttpParams(httpParams);\r\n const headers = this.getRequestHttpHeaders();\r\n const options = {\r\n headers,\r\n params\r\n };\r\n return options;\r\n }\r\n\r\n get(url: string, httpParams?, withTimeout?: boolean): Observable {\r\n const uri = this.baseUrl + url;\r\n const options = this.getRequestHttpOptions(httpParams);\r\n\r\n let call = this.http.get(uri, options);\r\n if (withTimeout) {\r\n call = call.timeout(this.timeout_seconds);\r\n }\r\n\r\n return call as Observable;\r\n }\r\n\r\n post(url: string, data?: any, httpParams?, withTimeout?: boolean): Observable {\r\n const options = this.getRequestHttpOptions(httpParams);\r\n\r\n let call = this.http.post(this.baseUrl + url, data, options);\r\n if (withTimeout) {\r\n call = call.timeout(this.timeout_seconds);\r\n }\r\n\r\n return call as Observable;\r\n }\r\n\r\n delete(url: string, withTimeout?: boolean) {\r\n const options = this.getRequestHttpOptions();\r\n let call = this.http.delete(this.baseUrl + url, options);\r\n if (withTimeout) {\r\n call = call.timeout(this.timeout_seconds);\r\n }\r\n\r\n return call;\r\n }\r\n\r\n put(url: string, data?: any, httpParams?: any, withTimeout?: boolean) {\r\n const options = this.getRequestHttpOptions();\r\n\r\n let call = this.http.put(this.baseUrl + url, data, options);\r\n if (withTimeout) {\r\n call = call.timeout(this.timeout_seconds);\r\n }\r\n\r\n return call;\r\n }\r\n\r\n multiPartFormPost(url: string, key: string, image, token, withTimeout?: boolean) {\r\n const headers = new HttpHeaders().set('Authorization', token ? token : '');\r\n\r\n const options = {\r\n headers\r\n };\r\n const formData = new FormData();\r\n formData.append(key, image);\r\n\r\n let call = this.http.post(this.baseUrl + url, formData, options);\r\n if (withTimeout) {\r\n call = call.timeout(this.timeout_seconds);\r\n }\r\n\r\n return call;\r\n }\r\n}\r\n\r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Activity } from \"src/app/models/activity.model\";\r\nimport { ApiService } from \"./api.service\";\r\nimport { MultipleActivitySaveModel } from \"src/app/models/multiple.activity.save.model\";\r\nimport { DropdownService } from \"src/app/services/dropdown.service\";\r\nimport { PlanAction } from \"../models/planAction\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class MultipleActivityService {\r\n constructor(\r\n private apiService: ApiService,\r\n private dropdownService: DropdownService\r\n ) {}\r\n\r\n saveModel: MultipleActivitySaveModel = new MultipleActivitySaveModel();\r\n\r\n // Activity Type, Description List\r\n selectedActivity: Array = [];\r\n selectedPlanAction: Array = [];\r\n\r\n public getActivityWithCommonValues(): Activity {\r\n const activity = new Activity();\r\n activity.companyId = String(this.saveModel.companyId);\r\n activity.companyName = this.saveModel.companyName;\r\n activity.workCentreId = String(this.saveModel.workCentreId);\r\n activity.workCentreName = this.saveModel.workCentreName;\r\n activity.assignedUserId = String(this.saveModel.assignedUserId);\r\n activity.assignedUserName = this.saveModel.assignedUsername;\r\n activity.activityDate = this.saveModel.activityPartDate; // new Date(this.saveModel.activityPartDate);\r\n activity.activityTime = this.saveModel.activityPartTime;\r\n activity.userId = JSON.parse(localStorage.getItem(\"loggeduser\")).id;\r\n return activity;\r\n }\r\n\r\n public refreshActivityList() {\r\n this.selectedActivity.forEach((activity) => {\r\n activity.companyId = String(this.saveModel.companyId);\r\n activity.companyName = this.saveModel.companyName;\r\n activity.workCentreId = String(this.saveModel.workCentreId);\r\n activity.workCentreName = this.saveModel.workCentreName;\r\n activity.assignedUserId = String(this.saveModel.assignedUserId);\r\n activity.assignedUserName = this.saveModel.assignedUsername;\r\n activity.activityDate = this.saveModel.activityPartDate; // new Date(this.saveModel.activityPartDate);\r\n activity.activityTime = this.saveModel.activityPartTime;\r\n activity.statusTypeId = \"4\";\r\n });\r\n }\r\n\r\n public getPlanActionWithCommonValues(): PlanAction {\r\n const planAction = new PlanAction();\r\n planAction.title = this.saveModel.title;\r\n planAction.action = this.saveModel.action;\r\n planAction.description = this.saveModel.description;\r\n planAction.estimatedDate = this.saveModel.estimatedDate;\r\n planAction.cost = this.saveModel.cost;\r\n planAction.canEliminateRisk = this.saveModel.canEliminateRisk;\r\n planAction.canMitigateRisk = this.saveModel.canEliminateRisk;\r\n planAction.actionChekedInVisit = this.saveModel.actionChekedInVisit;\r\n return planAction;\r\n }\r\n\r\n public refreshPlanActionList() {\r\n this.selectedPlanAction.forEach((activity) => {\r\n activity.title = this.saveModel.title;\r\n activity.action = this.saveModel.action;\r\n activity.estimatedDate = this.saveModel.estimatedDate;\r\n activity.description = this.saveModel.description;\r\n activity.cost = this.saveModel.cost;\r\n activity.canEliminateRisk = this.saveModel.canEliminateRisk;\r\n activity.canMitigateRisk = this.saveModel.canEliminateRisk;\r\n activity.actionChekedInVisit = this.saveModel.actionChekedInVisit;\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { PowerBIPanelConfig } from 'src/app/models/powerBi/PowerBIPanelConfig';\r\nimport { environment } from 'src/environments/environment';\r\nimport { MasterDetailsApiService } from '../masterdetailsapi.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PowerbiService {\r\n\r\n constructor(private apiService: MasterDetailsApiService) {\r\n this.apiService.baseUrl = environment.baseUrl;\r\n }\r\n\r\n getEmbededInfo(reportId,workSpaceId){\r\n const url='PowerBi/GetEmbedInfo';\r\n return this.apiService.get(url+`?UserName=${workSpaceId}&ReportId=${reportId}`);\r\n }\r\n\r\n getAllConfigPanels():Observable{\r\n const url='PowerBi/GetAllpowerBiConfig';\r\n return this.apiService.get(url);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\ninterface Scripts {\r\n name: string;\r\n src: string;\r\n}\r\n\r\nexport const ScriptStore: Scripts[] = [\r\n { name: 'fullCalendar', src: '../../../assets/app-assets/js/scripts/extensions/fullcalendar.js' },\r\n];\r\n\r\ndeclare var document: any;\r\n\r\n@Injectable()\r\nexport class DynamicScriptLoaderService {\r\n\r\n private scripts: any = {};\r\n\r\n constructor() {\r\n ScriptStore.forEach((script: any) => {\r\n this.scripts[script.name] = {\r\n loaded: false,\r\n src: script.src\r\n };\r\n });\r\n }\r\n\r\n load(...scripts: string[]) {\r\n const promises: any[] = [];\r\n scripts.forEach((script) => promises.push(this.loadScript(script)));\r\n return Promise.all(promises);\r\n }\r\n\r\n loadScript(name: string) {\r\n return new Promise((resolve, reject) => {\r\n if (!this.scripts[name].loaded) {\r\n // Load Scripts\r\n const script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.src = this.scripts[name].src;\r\n if (script.readyState) { // IE\r\n script.onreadystatechange = () => {\r\n if (script.readyState === 'loaded' || script.readyState === 'complete') {\r\n script.onreadystatechange = null;\r\n this.scripts[name].loaded = true;\r\n resolve({script: name, loaded: true, status: 'Loaded'});\r\n }\r\n };\r\n } else { // Other Browsers\r\n script.onload = () => {\r\n this.scripts[name].loaded = true;\r\n resolve({script: name, loaded: true, status: 'Loaded'});\r\n };\r\n }\r\n script.onerror = (error: any) => resolve({script: name, loaded: false, status: 'Loaded'});\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n } else {\r\n resolve({ script: name, loaded: true, status: 'Already Loaded' });\r\n }\r\n });\r\n }\r\n\r\n}","import { DatePipe } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SharedService {\r\n\r\n constructor(\r\n private datePipe: DatePipe\r\n ) { }\r\n\r\n // CHECK THE API DATE FORMAT AND CHANGE ACCORDINGLY\r\n dateToString(dateToFormat: Date): string {\r\n return this.datePipe.transform(dateToFormat, 'yyyyMMdd');\r\n }\r\n\r\n dateToSpanish(dateToFormat: string): string {\r\n return this.datePipe.transform(dateToFormat, 'dd/MM/yyyy');\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpParams, HttpHeaders, HttpEventType, HttpErrorResponse } from '@angular/common/http';\r\nimport { CustomEncoderService } from './custom-encoder.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AuthenticationService } from './_authService/authentication.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UploadService {\r\n\r\n protected httpOptions: any;\r\n protected token: any;\r\n protected timeout_seconds = 60000;\r\n public baseUrl: string;\r\n\r\n constructor(private http: HttpClient, private customEncoder: CustomEncoderService,private authService : AuthenticationService) {\r\n this.baseUrl = environment.baseUrl;\r\n }\r\n\r\n private getRequestHttpParams(httpParams?: any) {\r\n let params = new HttpParams({ encoder: this.customEncoder });\r\n for (const key in httpParams) {\r\n if (httpParams.hasOwnProperty(key)) {\r\n params = params.append(key, httpParams[key]);\r\n }\r\n }\r\n return params;\r\n }\r\n\r\n\r\n uploadimage(formData: FormData) {\r\n return this.http.post(this.baseUrl +'upload', formData, {reportProgress: true, observe: 'events'});\r\n }\r\n deleteimage(filename, folder) {\r\n return this.http.delete(this.baseUrl +'upload/delete/' + folder + \"/\" + filename);\r\n }\r\n deleteAll(folder) {\r\n return this.http.delete(this.baseUrl +'upload/Deleteall/' + folder);\r\n }\r\n}\r\n\r\n\r\n","import { GAuthService } from './_authService/gauth.service';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class UserPermissionService{\r\n \r\n public isActuacionInsertAllowed:boolean=false;\r\n public isActuacionUpdateAllowed:boolean=false;\r\n public isActuacionDeleteAllowed:boolean=false;\r\n public userAccessLevel:string=\"\";\r\n \r\n constructor(private authService:GAuthService) {\r\n \r\n this.userAccessLevel=authService.getUserAccessLevelInfo();\r\n\r\n if(this.userAccessLevel.toLowerCase().includes(\"admin\")) //Admin has any permission\r\n {\r\n this.isActuacionInsertAllowed=true;\r\n this.isActuacionUpdateAllowed=true;\r\n this.isActuacionDeleteAllowed=true;\r\n }\r\n else\r\n { \r\n var permissionText=JSON.parse(localStorage.getItem(\"loggeduser\")).permissionScope.toString().toLowerCase();\r\n this.isActuacionInsertAllowed=permissionText.includes(\"prl_write\");\r\n this.isActuacionUpdateAllowed=permissionText.includes(\"prl_write\");\r\n this.isActuacionDeleteAllowed=permissionText.includes(\"prl_write\");\r\n } \r\n \r\n } \r\n}\r\n","\r\n\r\nexport const environment = {\r\n production: false,\r\n //baseUrl: 'http://localhost:63106/api/', // LOCAL URL\r\n // baseUrl: 'https://v3.qa.api.actuapp.qualitapps.com/api/', // QA URL\r\n // baseUrl: 'https://uat.api.actuapp.qualitapps.com/api/', // UAT URL\r\n baseUrl: 'https://actapi.geseme.com/api/', // LIVE\r\n tokenUrl: null,\r\n loginUrl: '/login',\r\n gesemeApiUrl: 'https://api.geseme.com/',\r\n gesemeIdentityServerUrl: 'https://it.geseme.com/',\r\n gesemeLoginScope: 'openid profile prl_read prl_write usr_read',\r\n gesemeApiClientId: 'actuacweb',\r\n // local\r\n //webRootUrl: 'http://localhost:4200/',\r\n // QA\r\n // webRootUrl: 'https://v3.qa.actuapp.qualitapps.com/',\r\n // UAT\r\n // webRootUrl:https://uat.actuapp.qualitapps.com/\r\n // LIVE\r\n webRootUrl: 'https://act.geseme.com/',\r\n authNoAccessCode: '-1', // DENIED ACCESS for any app\r\n authAdminCode: '0', // ADMIN for all apps\r\n authActuacWebAdminCode: '100', // edit any actuacion and many other admin functions (i.e. admin permissions)\r\n authActuacWebNoAccessCode: '101', // cannot read/write/access any functionality of actuaciones\r\n authActuacWebFullEditCode: '102', // technical responsible: edit any actuacion\r\n authActuacWebOnlyMine: '103' // only can edit actuaciones assigned/created to/by him or where he is the technical of reference from associated workcenter\r\n\r\n};\r\n\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\nimport { registerLicense } from '@syncfusion/ej2-base';\r\n\r\n// Registering Syncfusion license key\r\nregisterLicense('Ngo9BigBOggjHTQxAR8/V1NHaF5cWWBCf1FpRmJGdld5fUVHYVZUTXxaS00DNHVRdkdgWH5fdnRcRGdcU0J2Wko=');\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n","var map = {\n\t\"./af\": 58685,\n\t\"./af.js\": 58685,\n\t\"./ar\": 254,\n\t\"./ar-dz\": 4312,\n\t\"./ar-dz.js\": 4312,\n\t\"./ar-kw\": 32614,\n\t\"./ar-kw.js\": 32614,\n\t\"./ar-ly\": 18630,\n\t\"./ar-ly.js\": 18630,\n\t\"./ar-ma\": 28674,\n\t\"./ar-ma.js\": 28674,\n\t\"./ar-ps\": 46235,\n\t\"./ar-ps.js\": 46235,\n\t\"./ar-sa\": 49032,\n\t\"./ar-sa.js\": 49032,\n\t\"./ar-tn\": 24730,\n\t\"./ar-tn.js\": 24730,\n\t\"./ar.js\": 254,\n\t\"./az\": 53052,\n\t\"./az.js\": 53052,\n\t\"./be\": 60150,\n\t\"./be.js\": 60150,\n\t\"./bg\": 63069,\n\t\"./bg.js\": 63069,\n\t\"./bm\": 13466,\n\t\"./bm.js\": 13466,\n\t\"./bn\": 18516,\n\t\"./bn-bd\": 90557,\n\t\"./bn-bd.js\": 90557,\n\t\"./bn.js\": 18516,\n\t\"./bo\": 26273,\n\t\"./bo.js\": 26273,\n\t\"./br\": 9588,\n\t\"./br.js\": 9588,\n\t\"./bs\": 19815,\n\t\"./bs.js\": 19815,\n\t\"./ca\": 83331,\n\t\"./ca.js\": 83331,\n\t\"./cs\": 21320,\n\t\"./cs.js\": 21320,\n\t\"./cv\": 72219,\n\t\"./cv.js\": 72219,\n\t\"./cy\": 68266,\n\t\"./cy.js\": 68266,\n\t\"./da\": 66427,\n\t\"./da.js\": 66427,\n\t\"./de\": 67435,\n\t\"./de-at\": 52871,\n\t\"./de-at.js\": 52871,\n\t\"./de-ch\": 12994,\n\t\"./de-ch.js\": 12994,\n\t\"./de.js\": 67435,\n\t\"./dv\": 82357,\n\t\"./dv.js\": 82357,\n\t\"./el\": 95649,\n\t\"./el.js\": 95649,\n\t\"./en-au\": 59961,\n\t\"./en-au.js\": 59961,\n\t\"./en-ca\": 19878,\n\t\"./en-ca.js\": 19878,\n\t\"./en-gb\": 3924,\n\t\"./en-gb.js\": 3924,\n\t\"./en-ie\": 70864,\n\t\"./en-ie.js\": 70864,\n\t\"./en-il\": 91579,\n\t\"./en-il.js\": 91579,\n\t\"./en-in\": 30940,\n\t\"./en-in.js\": 30940,\n\t\"./en-nz\": 16181,\n\t\"./en-nz.js\": 16181,\n\t\"./en-sg\": 44301,\n\t\"./en-sg.js\": 44301,\n\t\"./eo\": 85291,\n\t\"./eo.js\": 85291,\n\t\"./es\": 54529,\n\t\"./es-do\": 53764,\n\t\"./es-do.js\": 53764,\n\t\"./es-mx\": 12584,\n\t\"./es-mx.js\": 12584,\n\t\"./es-us\": 63425,\n\t\"./es-us.js\": 63425,\n\t\"./es.js\": 54529,\n\t\"./et\": 35203,\n\t\"./et.js\": 35203,\n\t\"./eu\": 70678,\n\t\"./eu.js\": 70678,\n\t\"./fa\": 83483,\n\t\"./fa.js\": 83483,\n\t\"./fi\": 96262,\n\t\"./fi.js\": 96262,\n\t\"./fil\": 52521,\n\t\"./fil.js\": 52521,\n\t\"./fo\": 34555,\n\t\"./fo.js\": 34555,\n\t\"./fr\": 63131,\n\t\"./fr-ca\": 88239,\n\t\"./fr-ca.js\": 88239,\n\t\"./fr-ch\": 21702,\n\t\"./fr-ch.js\": 21702,\n\t\"./fr.js\": 63131,\n\t\"./fy\": 267,\n\t\"./fy.js\": 267,\n\t\"./ga\": 23821,\n\t\"./ga.js\": 23821,\n\t\"./gd\": 71753,\n\t\"./gd.js\": 71753,\n\t\"./gl\": 4074,\n\t\"./gl.js\": 4074,\n\t\"./gom-deva\": 92762,\n\t\"./gom-deva.js\": 92762,\n\t\"./gom-latn\": 5969,\n\t\"./gom-latn.js\": 5969,\n\t\"./gu\": 82809,\n\t\"./gu.js\": 82809,\n\t\"./he\": 45402,\n\t\"./he.js\": 45402,\n\t\"./hi\": 315,\n\t\"./hi.js\": 315,\n\t\"./hr\": 10410,\n\t\"./hr.js\": 10410,\n\t\"./hu\": 38288,\n\t\"./hu.js\": 38288,\n\t\"./hy-am\": 67928,\n\t\"./hy-am.js\": 67928,\n\t\"./id\": 71334,\n\t\"./id.js\": 71334,\n\t\"./is\": 86959,\n\t\"./is.js\": 86959,\n\t\"./it\": 34864,\n\t\"./it-ch\": 51124,\n\t\"./it-ch.js\": 51124,\n\t\"./it.js\": 34864,\n\t\"./ja\": 36141,\n\t\"./ja.js\": 36141,\n\t\"./jv\": 29187,\n\t\"./jv.js\": 29187,\n\t\"./ka\": 42136,\n\t\"./ka.js\": 42136,\n\t\"./kk\": 94332,\n\t\"./kk.js\": 94332,\n\t\"./km\": 18607,\n\t\"./km.js\": 18607,\n\t\"./kn\": 84305,\n\t\"./kn.js\": 84305,\n\t\"./ko\": 70234,\n\t\"./ko.js\": 70234,\n\t\"./ku\": 16003,\n\t\"./ku-kmr\": 19619,\n\t\"./ku-kmr.js\": 19619,\n\t\"./ku.js\": 16003,\n\t\"./ky\": 75061,\n\t\"./ky.js\": 75061,\n\t\"./lb\": 32786,\n\t\"./lb.js\": 32786,\n\t\"./lo\": 66183,\n\t\"./lo.js\": 66183,\n\t\"./lt\": 50029,\n\t\"./lt.js\": 50029,\n\t\"./lv\": 24169,\n\t\"./lv.js\": 24169,\n\t\"./me\": 68577,\n\t\"./me.js\": 68577,\n\t\"./mi\": 68177,\n\t\"./mi.js\": 68177,\n\t\"./mk\": 50337,\n\t\"./mk.js\": 50337,\n\t\"./ml\": 65260,\n\t\"./ml.js\": 65260,\n\t\"./mn\": 52325,\n\t\"./mn.js\": 52325,\n\t\"./mr\": 14695,\n\t\"./mr.js\": 14695,\n\t\"./ms\": 75334,\n\t\"./ms-my\": 37151,\n\t\"./ms-my.js\": 37151,\n\t\"./ms.js\": 75334,\n\t\"./mt\": 63570,\n\t\"./mt.js\": 63570,\n\t\"./my\": 97963,\n\t\"./my.js\": 97963,\n\t\"./nb\": 88028,\n\t\"./nb.js\": 88028,\n\t\"./ne\": 86638,\n\t\"./ne.js\": 86638,\n\t\"./nl\": 50302,\n\t\"./nl-be\": 66782,\n\t\"./nl-be.js\": 66782,\n\t\"./nl.js\": 50302,\n\t\"./nn\": 33501,\n\t\"./nn.js\": 33501,\n\t\"./oc-lnc\": 50563,\n\t\"./oc-lnc.js\": 50563,\n\t\"./pa-in\": 50869,\n\t\"./pa-in.js\": 50869,\n\t\"./pl\": 65302,\n\t\"./pl.js\": 65302,\n\t\"./pt\": 49687,\n\t\"./pt-br\": 74884,\n\t\"./pt-br.js\": 74884,\n\t\"./pt.js\": 49687,\n\t\"./ro\": 79107,\n\t\"./ro.js\": 79107,\n\t\"./ru\": 33627,\n\t\"./ru.js\": 33627,\n\t\"./sd\": 30355,\n\t\"./sd.js\": 30355,\n\t\"./se\": 83427,\n\t\"./se.js\": 83427,\n\t\"./si\": 11848,\n\t\"./si.js\": 11848,\n\t\"./sk\": 54590,\n\t\"./sk.js\": 54590,\n\t\"./sl\": 20184,\n\t\"./sl.js\": 20184,\n\t\"./sq\": 56361,\n\t\"./sq.js\": 56361,\n\t\"./sr\": 78965,\n\t\"./sr-cyrl\": 81287,\n\t\"./sr-cyrl.js\": 81287,\n\t\"./sr.js\": 78965,\n\t\"./ss\": 25456,\n\t\"./ss.js\": 25456,\n\t\"./sv\": 70451,\n\t\"./sv.js\": 70451,\n\t\"./sw\": 77558,\n\t\"./sw.js\": 77558,\n\t\"./ta\": 51356,\n\t\"./ta.js\": 51356,\n\t\"./te\": 73693,\n\t\"./te.js\": 73693,\n\t\"./tet\": 21243,\n\t\"./tet.js\": 21243,\n\t\"./tg\": 42500,\n\t\"./tg.js\": 42500,\n\t\"./th\": 55768,\n\t\"./th.js\": 55768,\n\t\"./tk\": 77761,\n\t\"./tk.js\": 77761,\n\t\"./tl-ph\": 35780,\n\t\"./tl-ph.js\": 35780,\n\t\"./tlh\": 29590,\n\t\"./tlh.js\": 29590,\n\t\"./tr\": 33807,\n\t\"./tr.js\": 33807,\n\t\"./tzl\": 93857,\n\t\"./tzl.js\": 93857,\n\t\"./tzm\": 60654,\n\t\"./tzm-latn\": 8806,\n\t\"./tzm-latn.js\": 8806,\n\t\"./tzm.js\": 60654,\n\t\"./ug-cn\": 30845,\n\t\"./ug-cn.js\": 30845,\n\t\"./uk\": 19232,\n\t\"./uk.js\": 19232,\n\t\"./ur\": 47052,\n\t\"./ur.js\": 47052,\n\t\"./uz\": 77967,\n\t\"./uz-latn\": 32233,\n\t\"./uz-latn.js\": 32233,\n\t\"./uz.js\": 77967,\n\t\"./vi\": 98615,\n\t\"./vi.js\": 98615,\n\t\"./x-pseudo\": 12320,\n\t\"./x-pseudo.js\": 12320,\n\t\"./yo\": 31313,\n\t\"./yo.js\": 31313,\n\t\"./zh-cn\": 64490,\n\t\"./zh-cn.js\": 64490,\n\t\"./zh-hk\": 55910,\n\t\"./zh-hk.js\": 55910,\n\t\"./zh-mo\": 98262,\n\t\"./zh-mo.js\": 98262,\n\t\"./zh-tw\": 44223,\n\t\"./zh-tw.js\": 44223\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"],"names":[],"sourceRoot":"webpack:///"}