{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/admin/access-setting-action.component.ts","./src/app/admin/add-user.component.ts","./src/app/admin/add-user.component.html","./src/app/admin/admin.module.ts","./src/app/admin/import-roster.component.ts","./src/app/admin/import-roster.component.html","./src/app/admin/manage-user.component.ts","./src/app/admin/manage-user.component.html","./src/app/admin/operation-access-setting-action.component.ts","./src/app/admin/project-column-access-setting.component.ts","./src/app/admin/project-column-access-setting.component.html","./src/app/admin/reset-password.component.ts","./src/app/admin/reset-password.component.html","./src/app/admin/role-form.component.ts","./src/app/admin/role-form.component.html","./src/app/admin/role-operation-management.component.ts","./src/app/admin/role-operation-management.component.html","./src/app/admin/user-profile.component.ts","./src/app/admin/user-profile.component.html","./src/app/admin/user-role-management.component.ts","./src/app/admin/user-role-management.component.html","./src/app/admin/user-selection-form.component.html","./src/app/admin/user-selection-form.component.ts","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/authentication/login.component.ts","./src/app/authentication/signin-redirect-callback.component.ts","./src/app/authentication/signout-redirect-callback.component.ts","./src/app/employees/employee-action.component.ts","./src/app/employees/employee-activity-form.component.ts","./src/app/employees/employee-activity-form.component.html","./src/app/employees/employee-form.component.ts","./src/app/employees/employee-form.component.html","./src/app/employees/employee-history.component.ts","./src/app/employees/employee-history.component.html","./src/app/employees/employee-training-record-form.component.html","./src/app/employees/employee-training-record-form.component.ts","./src/app/employees/employee-training-record-warning.component.ts","./src/app/employees/employee-training-record-warning.component.html","./src/app/employees/employee-training-record.component.ts","./src/app/employees/employee-training-record.component.html","./src/app/employees/employee.module.ts","./src/app/employees/employees.component.ts","./src/app/employees/employees.component.html","./src/app/home/home.component.ts","./src/app/home/home.component.html","./src/app/nav-menu/nav-menu.component.ts","./src/app/nav-menu/nav-menu.component.html","./src/app/payroll/payroll-timesheet.component.ts","./src/app/payroll/payroll-timesheet.component.html","./src/app/payroll/payroll.module.ts","./src/app/projects/project-form.component.ts","./src/app/projects/project-form.component.html","./src/app/projects/project-invoice-action.component.ts","./src/app/projects/project-invoice-form.component.ts","./src/app/projects/project-invoice-form.component.html","./src/app/projects/project-invoice-list.component.ts","./src/app/projects/project-invoice-list.component.html","./src/app/projects/project-timesheet.component.ts","./src/app/projects/project-timesheet.component.html","./src/app/projects/project.module.ts","./src/app/projects/projects.component.ts","./src/app/projects/projects.component.html","./src/app/projects/validators/bank-guarantee-required.validator.ts","./src/app/projects/validators/po-required.validator.ts","./src/app/reports/monthly-income-report.component.ts","./src/app/reports/monthly-income-report.component.html","./src/app/reports/po-discrepancy-report-item.ts","./src/app/reports/po-invoice-discrepancy-report.component.ts","./src/app/reports/po-invoice-discrepancy-report.component.html","./src/app/reports/report.module.ts","./src/app/roster/delete-roster-data-form.component.html","./src/app/roster/delete-roster-data-form.component.ts","./src/app/roster/employee-filter.component.ts","./src/app/roster/employee-filter.component.html","./src/app/roster/employee-floating-filter.component.ts","./src/app/roster/employee-floating-filter.component.html","./src/app/roster/employee-name-renderer.component.ts","./src/app/roster/employee-roster-form.component.ts","./src/app/roster/employee-roster-form.component.html","./src/app/roster/invalid-employee-rosters.component.ts","./src/app/roster/invalid-employee-rosters.component.html","./src/app/roster/payroll-roster-code-recommendor.ts","./src/app/roster/roster-employee-note-form.component.ts","./src/app/roster/roster-employee-note-form.component.html","./src/app/roster/roster-tooltip.component.ts","./src/app/roster/roster-tooltip.component.html","./src/app/roster/roster.component.ts","./src/app/roster/roster.component.html","./src/app/roster/roster.module.ts","./src/app/roster/update-travel-status-form.component.ts","./src/app/roster/update-travel-status-form.component.html","./src/app/services/account.service.ts","./src/app/services/api-url.provider.ts","./src/app/services/auth-guard.service.ts","./src/app/services/authentication.service.ts","./src/app/services/company.service.ts","./src/app/services/document-service.ts","./src/app/services/employee-training-record.service.ts","./src/app/services/employee.service.ts","./src/app/services/employer.service.ts","./src/app/services/entity.service.ts","./src/app/services/health-check.service.ts","./src/app/services/holiday.service.ts","./src/app/services/image.service.ts","./src/app/services/interceptors/http-header.interceptor.ts","./src/app/services/interceptors/update-request-date.interceptor.ts","./src/app/services/interceptors/update-response-date.interceptor.ts","./src/app/services/invoice.service.ts","./src/app/services/logging.service.ts","./src/app/services/pay-category.service.ts","./src/app/services/payroll.service.ts","./src/app/services/position.service.ts","./src/app/services/pps-utility.service.ts","./src/app/services/project-column.service.ts","./src/app/services/project.service.ts","./src/app/services/report.service.ts","./src/app/services/resource.service.ts","./src/app/services/role-operation.service.ts","./src/app/services/roster-code-setting.service.ts","./src/app/services/roster-code.service.ts","./src/app/services/roster-pattern-parser.ts","./src/app/services/roster-project.service.ts","./src/app/services/roster-settings.service.ts","./src/app/services/roster-summery-line.service.ts","./src/app/services/roster-type.service.ts","./src/app/services/roster.service.ts","./src/app/services/session.service.ts","./src/app/services/timesheet-breakdown-rule.service.ts","./src/app/services/timesheet.service.ts","./src/app/services/training-course.service.ts","./src/app/services/user-role.service.ts","./src/app/services/work-area.service.ts","./src/app/services/workgroup-position-roster.service.ts","./src/app/shared/date-range-form.component.ts","./src/app/shared/date-range-form.component.html","./src/app/shared/error.component.ts","./src/app/shared/error.component.html","./src/app/shared/grid-action.component.ts","./src/app/shared/models/access-permission.ts","./src/app/shared/models/app-status.ts","./src/app/shared/models/business-operation.ts","./src/app/shared/models/company.ts","./src/app/shared/models/employee-activity-model.ts","./src/app/shared/models/employee.ts","./src/app/shared/models/entity-category.ts","./src/app/shared/models/entity-collection.ts","./src/app/shared/models/invoice.ts","./src/app/shared/models/progress-statuses.ts","./src/app/shared/models/project-statuses.ts","./src/app/shared/models/project.ts","./src/app/shared/models/role.ts","./src/app/shared/models/roster-codes.ts","./src/app/shared/models/roster/summary-formular.ts","./src/app/shared/models/roster/ticket-status.ts","./src/app/shared/models/timesheet-breakdown-rule.ts","./src/app/shared/models/timesheet.ts","./src/app/shared/models/update-account-view-model.ts","./src/app/shared/models/user-context.ts","./src/app/shared/models/warning-type.ts","./src/app/shared/roster-type-preview.component.ts","./src/app/shared/roster-type-preview.component.html","./src/app/shared/safe-html.pipe.ts","./src/app/shared/shared.module.ts","./src/app/shared/toast/toast.service.ts","./src/app/system-settings/breakdown-rule-dropdown.component.ts","./src/app/system-settings/breakdown-rule-lock.component.ts","./src/app/system-settings/client-management.component.ts","./src/app/system-settings/client-management.component.html","./src/app/system-settings/delete-action.component.ts","./src/app/system-settings/entity-action.component.ts","./src/app/system-settings/entity-form.component.ts","./src/app/system-settings/entity-form.component.html","./src/app/system-settings/grid-checkbox.component.ts","./src/app/system-settings/manage-employer.component.ts","./src/app/system-settings/manage-employer.component.html","./src/app/system-settings/manage-holiday.component.ts","./src/app/system-settings/manage-holiday.component.html","./src/app/system-settings/manage-project-columns.component.ts","./src/app/system-settings/manage-project-columns.component.html","./src/app/system-settings/manage-resource.component.ts","./src/app/system-settings/manage-resource.component.html","./src/app/system-settings/manage-roster-code-settings.component.ts","./src/app/system-settings/manage-roster-code-settings.component.html","./src/app/system-settings/manage-roster-code.component.ts","./src/app/system-settings/manage-roster-code.component.html","./src/app/system-settings/manage-roster-project.component.ts","./src/app/system-settings/manage-roster-project.component.html","./src/app/system-settings/manage-roster-settings.component.ts","./src/app/system-settings/manage-roster-settings.component.html","./src/app/system-settings/manage-roster-summary-line.component.ts","./src/app/system-settings/manage-roster-summary-line.component.html","./src/app/system-settings/manage-roster-type.component.ts","./src/app/system-settings/manage-roster-type.component.html","./src/app/system-settings/manage-training-course.component.ts","./src/app/system-settings/manage-training-course.component.html","./src/app/system-settings/manage-work-area.component.ts","./src/app/system-settings/manage-work-area.component.html","./src/app/system-settings/manage-workgroup-position-rostertype.component.ts","./src/app/system-settings/manage-workgroup-position-rostertype.component.html","./src/app/system-settings/pay-category-dropdown.component.ts","./src/app/system-settings/position-checkbox.component.ts","./src/app/system-settings/position-dropdown.component.ts","./src/app/system-settings/roster-code-checkbox.component.ts","./src/app/system-settings/roster-code-dropdown.component.ts","./src/app/system-settings/roster-project-form.component.ts","./src/app/system-settings/roster-project-form.component.html","./src/app/system-settings/roster-summary-line-form.component.ts","./src/app/system-settings/roster-summary-line-form.component.html","./src/app/system-settings/roster-type-form.component.html","./src/app/system-settings/roster-type-form.component.ts","./src/app/system-settings/system-data-management.component.ts","./src/app/system-settings/system-data-management.component.html","./src/app/system-settings/system-settings.module.ts","./src/app/system-settings/timesheet-breakdown-rule.component.ts","./src/app/system-settings/timesheet-breakdown-rule.component.html","./src/app/system-settings/workarea-form.component.ts","./src/app/system-settings/workarea-form.component.html","./src/app/system-settings/workgroup-position-rostertype-form.component.ts","./src/app/system-settings/workgroup-position-rostertype-form.component.html","./src/app/timesheet/generate-timesheet-form.component.ts","./src/app/timesheet/generate-timesheet-form.component.html","./src/app/timesheet/manage-timesheet.component.ts","./src/app/timesheet/manage-timesheet.component.html","./src/app/timesheet/timesheet-action.component.ts","./src/app/timesheet/timesheet-form.component.ts","./src/app/timesheet/timesheet-form.component.html","./src/app/timesheet/timesheet.component.ts","./src/app/timesheet/timesheet.component.html","./src/app/timesheet/timesheet.module.ts","./src/environments/environment.smarterasp.prod.ts","./src/main.ts"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\r\nimport { ICellRendererParams, IAfterGuiAttachedParams } from 'ag-grid-community';\r\nimport { AgRendererComponent } from 'ag-grid-angular';\r\n\r\n@Component({\r\n selector: 'pps-access-setting-action',\r\n template: `\r\n \r\n `,\r\n styles: [\r\n ],\r\n})\r\nexport class AccessSettingActionComponent implements AgRendererComponent {\r\n private params: any;\r\n accessPermission: string;\r\n\r\n constructor() { }\r\n\r\n refresh(params: any): boolean {\r\n return true;\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.accessPermission = this.params.data.accessPermission + \"\";\r\n }\r\n\r\n afterGuiAttached?(params?: IAfterGuiAttachedParams): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n onChange(newValue){\r\n console.log(\"New value \" + newValue);\r\n console.log(this.params.data);\r\n this.params.data.accessPermission = newValue * 1;\r\n this.params.context.componentParent.updateRoleProjectColumnAccessSetting(this.params.data);\r\n this.params.context.componentParent.projectColumnGridApi.redrawRows({rowNodes: [this.params.node]});\r\n }\r\n}\r\n","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport * as _ from 'lodash-es';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { SubSink } from 'subsink';\r\nimport { AccountService } from '../services/account.service';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { LoggingService } from '../services/logging.service';\r\nimport { AddAccountViewModel, UpdateAccountViewModel, UpdatePasswordViewModel } from '../shared/models/update-account-view-model';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\n\r\n@Component({\r\n selector: 'pps-add-user',\r\n templateUrl: './add-user.component.html',\r\n styles: [\r\n ],\r\n})\r\nexport class AddUserComponent implements OnDestroy {\r\n private subs = new SubSink();\r\n\r\n items: MenuItem[] = [\r\n {label: \"Admin\", icon: \"pi-fw fas fa-user-cog\"},\r\n {label: \"Manage Users\", icon: \"pi-fw fas fa-users\", routerLink: [\"/manage-user\"]},\r\n {label: \"Add New User\", icon: \"pi-fw fas fa-user-plus\"},\r\n ];\r\n\r\n newAccountViewModel: AddAccountViewModel = new AddAccountViewModel();\r\n section: string = \"profile\";\r\n updating: boolean = false;\r\n errorMessage: string = \"\";\r\n accountCreated: boolean = false;\r\n smallScreen: boolean = false;\r\n\r\n constructor(private _accountService: AccountService,\r\n private _toast: ToastService,\r\n private _router: Router,\r\n private breakpointObserver: BreakpointObserver) {\r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n addUserAccount(userForm){\r\n if (this.newAccountViewModel.newPassword !== this.newAccountViewModel.confirmPassword){\r\n userForm.controls[\"confirmPassword\"].setErrors({\"notmatch\": true});\r\n return;\r\n }\r\n\r\n if (this.newAccountViewModel.newPassword){\r\n if (!/(?=.*[a-z])/g.test(this.newAccountViewModel.newPassword)){\r\n userForm.controls[\"newPassword\"].setErrors({\"nolowercase\": true});\r\n return;\r\n }\r\n\r\n if (!/(?=.*[A-Z])/g.test(this.newAccountViewModel.newPassword)){\r\n userForm.controls[\"newPassword\"].setErrors({\"nouppercase\": true});\r\n return;\r\n }\r\n\r\n if (!/(?=.*\\d)/g.test(this.newAccountViewModel.newPassword)){\r\n userForm.controls[\"newPassword\"].setErrors({\"nodigit\": true});\r\n return;\r\n }\r\n\r\n if (!/(?=.*[-+_!@#$%^&*.,?])/g.test(this.newAccountViewModel.newPassword)){\r\n userForm.controls[\"newPassword\"].setErrors({\"nonalphanumeric\": true});\r\n return;\r\n }\r\n }\r\n\r\n if (userForm.invalid){\r\n return;\r\n }\r\n\r\n this.updating = true;\r\n this.accountCreated = false;\r\n \r\n let newAcct = _.clone(this.newAccountViewModel);\r\n newAcct.newPassword = btoa(this.newAccountViewModel.newPassword);\r\n newAcct.confirmPassword = btoa(this.newAccountViewModel.confirmPassword);\r\n this.subs.sink = this._accountService.add(newAcct)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.accountCreated = true;\r\n this._toast.succeeded(\"New account has been created.\");\r\n }else{\r\n this._toast.failed(`Failed to create new account`);\r\n }\r\n })\r\n .add(()=>{\r\n this.updating = false;\r\n });;\r\n }\r\n\r\n returnToUserManagement(){\r\n this._router.navigate([\"/manage-user\"], {replaceUrl: true});\r\n }\r\n\r\n gotoUserRoleManagement(){\r\n this._router.navigate([\"/user-role-management\"], {replaceUrl: true});\r\n }\r\n}\r\n","\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n\r\n
\r\n
\r\n

Account {{newAccountViewModel.userName}} has been successfully created!

\r\n You can now go to user role management page to assign this user to roles or return to manage users page to add more users.\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n

Create new account

\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n First name is required\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Last name is required\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Email is required\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Username is required\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
    \r\n
  • At least one lowercase
  • \r\n
  • At least one uppercase
  • \r\n
  • At least one numeric
  • \r\n
  • At least one non-alphanumeric: - + _ ! @ # $ % ^ & * . , ?
  • \r\n
  • Minimum 8 characters
  • \r\n
\r\n
\r\n
\r\n Password is required\r\n Password too short\r\n Password not match\r\n At lease one lower case is required\r\n At least one upper case is required\r\n At least one digit is required\r\n At least one non-alphanumeric character is required: - + _ ! @ # $ % ^ & * . , ?\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n Password not match\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { AgGridModule } from \"ag-grid-angular\";\r\nimport { NgxSpinnerModule } from \"ngx-spinner\";\r\nimport { BadgeModule } from \"primeng/badge\";\r\nimport { BreadcrumbModule } from \"primeng/breadcrumb\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { CardModule } from \"primeng/card\";\r\nimport { ConfirmDialogModule } from \"primeng/confirmdialog\";\r\nimport { InputTextModule } from \"primeng/inputtext\";\r\nimport { InputTextareaModule } from \"primeng/inputtextarea\";\r\nimport { PasswordModule } from \"primeng/password\";\r\nimport { SplitterModule } from \"primeng/splitter\";\r\nimport { TableModule } from \"primeng/table\";\r\nimport { ToastModule } from \"primeng/toast\";\r\nimport { ToolbarModule } from \"primeng/toolbar\";\r\nimport { TooltipModule } from \"primeng/tooltip\";\r\nimport { AuthGuardService } from \"../services/auth-guard.service\";\r\nimport { AccessSettingActionComponent } from \"./access-setting-action.component\";\r\nimport { AddUserComponent } from \"./add-user.component\";\r\nimport { ImportRosterComponent } from \"./import-roster.component\";\r\nimport { ManageUserComponent } from \"./manage-user.component\";\r\nimport { OperationAccessSettingActionComponent } from \"./operation-access-setting-action.component\";\r\nimport { ProjectColumnAccessSettingComponent } from \"./project-column-access-setting.component\";\r\nimport { ResetPasswordComponent } from \"./reset-password.component\";\r\nimport { RoleFormComponent } from \"./role-form.component\";\r\nimport { RoleOperationManagementComponent } from \"./role-operation-management.component\";\r\nimport { UserProfileComponent } from \"./user-profile.component\";\r\nimport { UserRoleManagementComponent } from \"./user-role-management.component\";\r\nimport { UserSelectionFormComponent } from \"./user-selection-form.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgxSpinnerModule,\r\n AgGridModule.withComponents([]),\r\n\r\n BadgeModule,\r\n BreadcrumbModule,\r\n ButtonModule, \r\n CardModule,\r\n ConfirmDialogModule,\r\n InputTextModule,\r\n InputTextareaModule,\r\n PasswordModule,\r\n SplitterModule,\r\n TableModule,\r\n ToastModule,\r\n ToolbarModule,\r\n TooltipModule,\r\n \r\n RouterModule.forChild([\r\n { path: 'add-user', component: AddUserComponent, canActivate: [AuthGuardService] },\r\n { path: 'manage-user', component: ManageUserComponent, canActivate: [AuthGuardService] },\r\n { path: 'project-column-access-setting', component: ProjectColumnAccessSettingComponent, canActivate: [AuthGuardService] },\r\n { path: 'reset-password', component: ResetPasswordComponent, canActivate: [AuthGuardService] },\r\n { path: 'role-operation-management', component: RoleOperationManagementComponent, canActivate: [AuthGuardService] },\r\n { path: 'user-role-management', component: UserRoleManagementComponent, canActivate: [AuthGuardService] },\r\n { path: 'user-profile', component: UserProfileComponent, canActivate: [AuthGuardService] },\r\n { path: 'import-roster', component: ImportRosterComponent, canActivate: [AuthGuardService] }\r\n ]) \r\n ],\r\n declarations: [\r\n AddUserComponent,\r\n AccessSettingActionComponent,\r\n ManageUserComponent,\r\n OperationAccessSettingActionComponent,\r\n ProjectColumnAccessSettingComponent,\r\n ResetPasswordComponent,\r\n RoleFormComponent,\r\n RoleOperationManagementComponent,\r\n UserProfileComponent,\r\n UserRoleManagementComponent,\r\n UserSelectionFormComponent,\r\n ImportRosterComponent\r\n ]\r\n})\r\nexport class AdminModule{}","import { Component } from \"@angular/core\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { RosterService } from \"../services/roster.service\";\r\nimport { ToastService } from \"../shared/toast/toast.service\";\r\n\r\n@Component({\r\n selector: \"pps-import-roster\",\r\n templateUrl: \"./import-roster.component.html\"\r\n})\r\nexport class ImportRosterComponent{\r\n spinnerName: string = \"spinner\";\r\n importingFromCsv = false;\r\n importingFromXlsm = false;\r\n\r\n constructor(\r\n private _rosterService: RosterService,\r\n private _toast: ToastService,\r\n private _spinner: NgxSpinnerService) {\r\n }\r\n\r\n ngOnInit(){\r\n }\r\n resetRoster(){\r\n this._rosterService.resetRosterData()\r\n .subscribe(\r\n res => {\r\n if (res.succeed){\r\n this._toast.succeeded(res.result);\r\n }else{\r\n this._toast.failed(res.errors.join(\"; \"));\r\n }\r\n }\r\n );\r\n }\r\n\r\n importRoster(){\r\n this._spinner.show(this.spinnerName);\r\n this.importingFromXlsm = true;\r\n this._rosterService.importRoster(\r\n () => {\r\n this._spinner.hide(this.spinnerName);\r\n this.importingFromXlsm = false;\r\n },\r\n (errorRes) => {\r\n this._spinner.hide(this.spinnerName);\r\n this.importingFromXlsm = false;\r\n this._toast.failed(`${errorRes.errors.join(\"; \")}`);\r\n });\r\n }\r\n\r\n importRosterFromCsvFile(){\r\n this._spinner.show(this.spinnerName);\r\n this.importingFromCsv = true;\r\n this._rosterService.importRosterFromCsv().subscribe(\r\n () => {\r\n this._spinner.hide(this.spinnerName);\r\n },\r\n (errorRes) => {\r\n this._spinner.hide(this.spinnerName);\r\n \r\n this._toast.failed(`${errorRes.errors.join(\"; \")}`);\r\n },\r\n () => this.importingFromCsv = false);\r\n }\r\n}","\r\n

Import Roster...

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

Please make sure you uploaded the roster excel file to data/[local|preview|prod]/LegacyData folder.

\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ConfirmationService, MenuItem } from 'primeng/api';\r\nimport { SubSink } from 'subsink';\r\nimport { AccountService } from '../services/account.service';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { AccountViewModel } from '../shared/models/update-account-view-model';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\n\r\n@Component({\r\n selector: 'pps-manage-user',\r\n templateUrl: './manage-user.component.html',\r\n styles: [\r\n ],\r\n})\r\nexport class ManageUserComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n\r\n items: MenuItem[] = [\r\n {label: \"Admin\", icon: \"pi-fw fas fa-user-cog\"},\r\n {label: \"Manage Users\", icon: \"pi-fw fas fa-users\"}\r\n ];\r\n \r\n spinnerName: string = \"AccountSpinner\";\r\n accounts: AccountViewModel[] = [];\r\n gridHeaders: any[];\r\n context:any = {};\r\n entityLoading: boolean = false;\r\n selectedRow: AccountViewModel = null;\r\n\r\n gridOptions: any = {\r\n getRowId: param => param.data.userId,\r\n onRowClicked: this.onRowClicked,\r\n defaultColDef: {\r\n resizable: true,\r\n floatingFilter: false,\r\n filter: true,\r\n sortable: true\r\n }\r\n };\r\n\r\n private gridApi;\r\n smallScreen: boolean = false;\r\n\r\n constructor(private _accountService: AccountService,\r\n private _spinner: NgxSpinnerService,\r\n private _util: PpsUtilityService,\r\n private _router: Router,\r\n private _confirmationService: ConfirmationService,\r\n private _toast: ToastService,\r\n private breakpointObserver: BreakpointObserver) {\r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initialize();\r\n }\r\n\r\n private initialize(){\r\n this.context = { componentParent: this };\r\n this.gridHeaders = this.getColumnDefs();\r\n this.loadData();\r\n }\r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n } \r\n\r\n onRowClicked(evt){\r\n let _this = evt.context.componentParent;\r\n var selectedRows = _this.gridApi.getSelectedRows();\r\n _this.selectedRow = selectedRows.length === 1 ? selectedRows[0] : null;\r\n }\r\n\r\n addAccount(){\r\n this._router.navigate([\"/add-user\"], { replaceUrl: true});\r\n }\r\n\r\n resetPassword(account: AccountViewModel){\r\n this._router.navigate([\"/reset-password\"], { replaceUrl: true, queryParams: account});\r\n }\r\n\r\n loadData(){\r\n this._spinner.show(\"AccountSpinner\");\r\n this.entityLoading = true;\r\n this.accounts.length = 0;\r\n this.selectedRow = null;\r\n this.subs.sink = this._accountService.getAll()\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n this.accounts = apiResponse.result;\r\n this._toast.succeeded(`${this.accounts.length} accounts loaded`);\r\n }else{\r\n this._toast.failed(`Failed to load accounts: ${apiResponse.errors.join(\";\")}`);\r\n }\r\n }, _error => {\r\n console.log(_error);\r\n })\r\n .add(()=>{\r\n this._spinner.hide(\"AccountSpinner\");\r\n this.entityLoading = false;\r\n });\r\n }\r\n\r\n deleteAccount(account: AccountViewModel){\r\n console.log(account);\r\n if (account === null){\r\n return;\r\n }\r\n\r\n this._confirmationService.confirm({\r\n header: \"Delete Account\",\r\n message: `Are you sure that you want to delete the account: ${account.userName}?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => {\r\n this.subs.sink = this._accountService.delete(account.userId)\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n var foundIndex = this.accounts.findIndex(x => x.userId == account.userId);\r\n if (foundIndex !== -1 ){\r\n this.accounts.splice(foundIndex, 1);\r\n this.gridApi.setRowData(this.accounts);\r\n this.selectedRow = null;\r\n this._toast.succeeded(`Account [${account.userName}] deleted!`);\r\n }else{\r\n this._toast.failed(`Delete account [${account.userName}] failed!`);\r\n }\r\n }else{\r\n this._toast.failed(`Failed to Delete account [${account.userName}]: ${apiResponse.errors.join(\"|\")}`);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n private getColumnDefs(){\r\n let cols = [\r\n {\r\n headerName: 'Username',\r\n field:'userName',\r\n width: 120\r\n },\r\n {\r\n headerName: 'First Name',\r\n field:'firstName',\r\n width: 200\r\n },\r\n {\r\n headerName: 'Last Name',\r\n field:'lastName',\r\n width: 200\r\n },\r\n {\r\n headerName: 'Email',\r\n field:'email',\r\n flex: 1\r\n },\r\n {\r\n headerName: 'Date Created',\r\n field:'addDate',\r\n width: 200,\r\n comparator: (date1, date2) => this._util.dateComparator(date1, date2),\r\n valueGetter: this.getDateValue\r\n }\r\n ];\r\n\r\n return cols;\r\n }\r\n\r\n private getDateValue(params){\r\n if (params.data[params.colDef.field]){\r\n let value = params.context.componentParent._util.getDateString(params.data[params.colDef.field]);\r\n return value;\r\n }\r\n\r\n return \"\";\r\n }\r\n}\r\n","\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n

Loading accounts...

\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n 0\"\r\n style=\"width: 100%; height:100%;\"\r\n class=\"ag-theme-alpine\"\r\n rowSelection=\"single\"\r\n [gridOptions]=\"gridOptions\"\r\n [context]=\"context\"\r\n [rowData]=\"accounts\"\r\n [columnDefs]=\"gridHeaders\"\r\n [enterMovesDown]=\"true\"\r\n [enterMovesDownAfterEdit]=\"true\"\r\n (gridReady)=\"onGridReady($event)\">\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ICellRendererParams, IAfterGuiAttachedParams } from 'ag-grid-community';\r\nimport { AgRendererComponent } from 'ag-grid-angular';\r\n\r\n@Component({\r\n selector: 'pps-operation-access-setting-action',\r\n template: `\r\n \r\n `,\r\n styles: [\r\n ],\r\n})\r\nexport class OperationAccessSettingActionComponent implements AgRendererComponent {\r\n private params: any;\r\n hasAccess: boolean;\r\n\r\n constructor() { }\r\n\r\n refresh(params: any): boolean {\r\n return true;\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.hasAccess = this.params.data.hasAccess;\r\n }\r\n\r\n afterGuiAttached?(params?: IAfterGuiAttachedParams): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n onChange(){\r\n console.log(this.params);\r\n this.params.data.hasAccess = this.hasAccess;\r\n this.params.context.componentParent.updateRoleOperationSetting(this.params.data);\r\n this.params.context.componentParent.roleOperationGridApi.redrawRows({rowNodes: [this.params.node]});\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Role } from '../shared/models/role';\r\nimport { UserRoleService } from '../services/user-role.service';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { ProjectColumnAccessModel } from '../shared/models/project-column-access-model';\r\nimport { AccessPermission } from '../shared/models/access-permission';\r\nimport { AccessSettingActionComponent } from './access-setting-action.component';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { SessionService } from '../services/session.service';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { SubSink } from 'subsink';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\n\r\n@Component({\r\n selector: 'pps-project-column-access-setting',\r\n templateUrl: './project-column-access-setting.component.html',\r\n styleUrls: ['./project-column-access-setting.component.css']\r\n})\r\nexport class ProjectColumnAccessSettingComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n \r\n spinnerName: string = \"spinner\";\r\n spinnerText: string = \"Loading data ...\";\r\n \r\n smallScreen: boolean = false;\r\n \r\n items: MenuItem[] = [\r\n {label: \"Admin\", icon: \"pi-fw fas fa-user-lock\"},\r\n {label: \"Project Column Access Settings\", icon: \"pi-fw fas fa-clipboard-list\"}\r\n ];\r\n\r\n loading: boolean = false;\r\n\r\n roles: Role[] = [];\r\n roleGridHeaders: any = [];\r\n\r\n projectColumns: ProjectColumnAccessModel[] = [];\r\n projectColumnGridHeaders: any = [];\r\n\r\n context:any = {};\r\n selectedRole: any = null;\r\n\r\n private roleGridApi: any;\r\n projectColumnGridApi: any;\r\n\r\n constructor(private _userRoleService: UserRoleService,\r\n private _sessionService: SessionService,\r\n private _toastService: ToastService,\r\n private _util: PpsUtilityService,\r\n private _spinner: NgxSpinnerService,\r\n private breakpointObserver: BreakpointObserver\r\n ) {\r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.context = { componentParent: this };\r\n this.roleGridHeaders = this.getRoleGridHeader();\r\n this.loadRoles();\r\n\r\n this.projectColumnGridHeaders = this.getProjectColumnGridHeader();\r\n }\r\n\r\n onRoleGridReady(params) {\r\n this.roleGridApi = params.api;\r\n }\r\n\r\n onProjectColumnGridReady(params) {\r\n this.projectColumnGridApi = params.api;\r\n }\r\n\r\n onRoleSelectionChanged(params){\r\n var selectedRows = this.roleGridApi.getSelectedRows();\r\n this.selectedRole = selectedRows.length === 1 ? selectedRows[0] : null;\r\n this.loadProjectColumns(this.selectedRole.id);\r\n }\r\n\r\n loadRoles(){\r\n this._spinner.show(this.spinnerName);\r\n this.subs.sink = this._userRoleService.getRoles()\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.roles = res.result;\r\n }else{\r\n this._toastService.failed(\"Load roles failed: \" + res.errors.join(\";\"));\r\n }\r\n })\r\n .add(() => this._spinner.hide(this.spinnerName));\r\n }\r\n\r\n loadProjectColumns(roleId: number){\r\n this.loading = true;\r\n this.projectColumns = [];\r\n this._spinner.show(this.spinnerName);\r\n this.subs.sink = this._userRoleService.getProjectColumnsAccessModelByRole(roleId)\r\n .subscribe(\r\n res => {\r\n if (res.succeed){\r\n this.projectColumns = res.result;\r\n }else{\r\n this._toastService.failed(\"Load project columns failed: \" + res.errors.join(\";\"));\r\n }\r\n }, _ => { }, () => this.loading = false)\r\n .add(() => this._spinner.hide(this.spinnerName));\r\n }\r\n\r\n updateRoleProjectColumnAccessSetting(projectColumn: ProjectColumnAccessModel){\r\n this.subs.sink = this._userRoleService.updateProjectColumnAccessSetting(this.selectedRole.id, projectColumn)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this._sessionService.refreshUserContext();\r\n this._toastService.succeeded(`Access to [${projectColumn.columnDescription}] for role [${this.selectedRole.roleName}] updated successfully`);\r\n }else{\r\n this._toastService.failed(`Access to [${projectColumn.columnDescription}] for role [${this.selectedRole.roleName}] updated failed: ` + res.errors.join(\";\"));\r\n }\r\n });\r\n }\r\n\r\n private getRoleGridHeader(){\r\n var cols = [\r\n {\r\n headerName: 'Role',\r\n field:'roleName',\r\n filter: true,\r\n sortable: true,\r\n width: 180\r\n },\r\n {\r\n headerName: 'Total Users',\r\n field:'userCount',\r\n filter: false,\r\n sortable: true,\r\n width: 100,\r\n cellStyle: this._util.getNumericCellStyle({borderRightColor:'#eeeeee'}),\r\n cellRenderer: params => this._util.formatNumber(params.data[params.colDef.field], 0)\r\n },\r\n {\r\n headerName: 'Role Description',\r\n field:'roleDescription',\r\n filter: false,\r\n sortable: false,\r\n flex: 1\r\n }\r\n ];\r\n\r\n\r\n if (this.smallScreen){\r\n cols[cols.length-1].flex = 0;\r\n cols[cols.length-1].width = 500;\r\n }\r\n \r\n return cols;\r\n }\r\n\r\n private getProjectColumnGridHeader(){\r\n return [\r\n {\r\n headerName: 'Column',\r\n field:'columnDescription',\r\n filter: true,\r\n sortable: true,\r\n width: 260,\r\n cellStyle: this.getCellStyle\r\n },\r\n {\r\n headerName: 'Access Setting',\r\n filter: false,\r\n sortable: false,\r\n flex: 1,\r\n cellRenderer: AccessSettingActionComponent,\r\n cellStyle: this.getCellStyleWithCenterAlign\r\n }\r\n ]\r\n }\r\n\r\n private getCellStyleWithCenterAlign(params){\r\n switch(params.data.accessPermission){\r\n case AccessPermission.NoAccess:\r\n return {textAlign:'center', backgroundColor: '#ffffff'};\r\n case AccessPermission.ReadAccess:\r\n return {textAlign:'center', backgroundColor: '#ffffaa'};\r\n case AccessPermission.WriteAccess:\r\n return {textAlign:'center', backgroundColor: '#44aa44', color: '#ffffff'};\r\n }\r\n }\r\n\r\n private getCellStyle(params){\r\n switch(params.data.accessPermission){\r\n case AccessPermission.NoAccess:\r\n return {backgroundColor: '#ffffff'};\r\n case AccessPermission.ReadAccess:\r\n return {backgroundColor: '#ffffaa'};\r\n case AccessPermission.WriteAccess:\r\n return {backgroundColor: '#44aa44', color: '#ffffff'};\r\n }\r\n }\r\n}\r\n","

{{spinnerText}}

\r\n\r\n\r\n\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n \r\n
\r\n
Roles
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
Project Column Access Settings
\r\n \r\n
\r\n
\r\n
\r\n","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { SubSink } from 'subsink';\r\nimport { AccountService } from '../services/account.service';\r\nimport { ResetPasswordViewModel } from '../shared/models/update-account-view-model';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\n\r\n@Component({\r\n selector: 'pps-reset-password',\r\n templateUrl: './reset-password.component.html',\r\n styles: [\r\n ],\r\n})\r\nexport class ResetPasswordComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n\r\n items: MenuItem[] = [\r\n {label: \"Admin\", icon: \"pi-fw fas fa-user-cog\"},\r\n {label: \"Manage Users\", icon: \"pi-fw fas fa-users\", routerLink: [\"/manage-user\"]},\r\n {label: \"Reset Password\", icon: \"pi-fw fas fa-user-lock\"},\r\n ];\r\n\r\n resetPasswordViewModel: ResetPasswordViewModel = new ResetPasswordViewModel();\r\n updating: boolean = false;\r\n errorMessage: string = \"\";\r\n passwordReset: boolean = false;\r\n smallScreen: boolean = false;\r\n\r\n constructor(private _accountService: AccountService,\r\n private _toast: ToastService,\r\n private _route: ActivatedRoute,\r\n private _router: Router,\r\n private breakpointObserver: BreakpointObserver) {\r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n\r\n }\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subs.sink = this._route.queryParams.subscribe(param => {\r\n this.resetPasswordViewModel.zoesenUserId = param.userId;\r\n this.resetPasswordViewModel.userName = param.userName;\r\n this.resetPasswordViewModel.firstName = param.firstName;\r\n this.resetPasswordViewModel.lastName = param.lastName;\r\n });\r\n }\r\n\r\n resetPassword(userForm){\r\n if (this.resetPasswordViewModel.newPassword !== this.resetPasswordViewModel.confirmPassword){\r\n userForm.controls[\"confirmPassword\"].setErrors({\"notmatch\": true});\r\n return;\r\n }\r\n\r\n if (this.resetPasswordViewModel.newPassword){\r\n if (!/(?=.*[a-z])/g.test(this.resetPasswordViewModel.newPassword)){\r\n userForm.controls[\"newPassword\"].setErrors({\"nolowercase\": true});\r\n return;\r\n }\r\n\r\n if (!/(?=.*[A-Z])/g.test(this.resetPasswordViewModel.newPassword)){\r\n userForm.controls[\"newPassword\"].setErrors({\"nouppercase\": true});\r\n return;\r\n }\r\n\r\n if (!/(?=.*\\d)/g.test(this.resetPasswordViewModel.newPassword)){\r\n userForm.controls[\"newPassword\"].setErrors({\"nodigit\": true});\r\n return;\r\n }\r\n\r\n if (!/(?=.*[-+_!@#$%^&*.,?])/g.test(this.resetPasswordViewModel.newPassword)){\r\n userForm.controls[\"newPassword\"].setErrors({\"nonalphanumeric\": true});\r\n return;\r\n }\r\n }\r\n\r\n if (userForm.invalid){\r\n return;\r\n }\r\n\r\n this.updating = true;\r\n this.passwordReset = false;\r\n this.subs.sink = this._accountService.resetPassword({\r\n zoesenUserId: this.resetPasswordViewModel.zoesenUserId,\r\n userName: this.resetPasswordViewModel.userName,\r\n firstName: this.resetPasswordViewModel.firstName,\r\n lastName: this.resetPasswordViewModel.lastName,\r\n newPassword: btoa(this.resetPasswordViewModel.newPassword),\r\n confirmPassword: btoa(this.resetPasswordViewModel.confirmPassword)\r\n })\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.passwordReset = true;\r\n this._toast.succeeded(\"Password has been reset.\");\r\n }else{\r\n this._toast.failed(`Failed to reset password`);\r\n }\r\n })\r\n .add(()=>{\r\n this.updating = false;\r\n });;\r\n }\r\n\r\n returnToUserManagement(){\r\n this._router.navigate([\"/manage-user\"], {replaceUrl: true});\r\n }\r\n\r\n gotoUserRoleManagement(){\r\n this._router.navigate([\"/user-role-management\"], {replaceUrl: true});\r\n }\r\n}\r\n","\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n\r\n
\r\n
\r\n

Account {{resetPasswordViewModel.userName}} has been successfully reset!

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

Reset Password: {{resetPasswordViewModel.lastName}}, {{resetPasswordViewModel.firstName}}

\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
    \r\n
  • At least one lowercase
  • \r\n
  • At least one uppercase
  • \r\n
  • At least one numeric
  • \r\n
  • At least one non-alphanumeric: - + _ ! @ # $ % ^ & * . , ?
  • \r\n
  • Minimum 8 characters
  • \r\n
\r\n
\r\n
\r\n Password is required\r\n Password too short\r\n Password not match\r\n At lease one lower case is required\r\n At least one upper case is required\r\n At least one digit is required\r\n At least one non-alphanumeric character is required: - + _ ! @ # $ % ^ & * . , ?\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n Password not match\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { Role } from '../shared/models/role';\r\nimport { NgForm } from '@angular/forms';\r\nimport * as _ from \"lodash-es\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\n@Component({\r\n selector: 'pps-role-form',\r\n templateUrl: './role-form.component.html',\r\n styles: [\r\n ],\r\n})\r\nexport class RoleFormComponent implements OnInit {\r\n role: Role = null;\r\n oldRole: Role = null;\r\n\r\n constructor(\r\n private _dialogRef: DynamicDialogRef,\r\n private _dialogConfig: DynamicDialogConfig\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.role = this._dialogConfig.data.role;\r\n }\r\n\r\n save(form: NgForm){\r\n if (form.invalid){\r\n return false;\r\n }\r\n\r\n if (_.isEqual(this.oldRole, this.role)){\r\n this._dialogRef.close();\r\n }else{\r\n this._dialogRef.close(this.role);\r\n }\r\n }\r\n\r\n cancel(){\r\n this._dialogRef.close();\r\n }\r\n\r\n set Role(role: Role){\r\n this.role = Object.assign({}, role);\r\n this.oldRole = role;\r\n }\r\n \r\n isNewRole(){\r\n return this.role === null || this.role.id === 0;\r\n }\r\n}\r\n","
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Role name is required\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Role } from '../shared/models/role';\r\nimport { Operation } from '../shared/models/operation';\r\nimport { RoleOperationService } from '../services/role-operation.service';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { UserRoleService } from '../services/user-role.service';\r\nimport { OperationAccessSettingActionComponent } from './operation-access-setting-action.component';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { SessionService } from '../services/session.service';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { SubSink } from 'subsink';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\n\r\n@Component({\r\n selector: 'pps-role-operation-management',\r\n templateUrl: './role-operation-management.component.html',\r\n styleUrls: ['./role-operation-management.component.css']\r\n})\r\nexport class RoleOperationManagementComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n\r\n spinnerName: string = \"spinner\";\r\n spinnerText: string = \"Loading data ...\";\r\n \r\n smallScreen: boolean = false;\r\n\r\n items: MenuItem[] = [\r\n {label: \"Admin\", icon: \"pi-fw fas fa-user-lock\"},\r\n {label: \"Role Permissions\", icon: \"pi-fw fas fa-user-clock\"}\r\n ];\r\n\r\n loading: boolean = false;\r\n\r\n roles: Role[] = [];\r\n roleGridHeaders: any = [];\r\n\r\n roleOperations: Operation[] = [];\r\n roleOperationGridHeaders: any = [];\r\n\r\n operations: Operation[] = [];\r\n\r\n context:any = {};\r\n selectedRole: Role = null;\r\n\r\n private roleGridApi: any;\r\n roleOperationGridApi: any;\r\n\r\n constructor(private _userRoleService: UserRoleService,\r\n private _roleOperationService: RoleOperationService,\r\n private _sessionService: SessionService,\r\n private _toastService: ToastService,\r\n private _util: PpsUtilityService,\r\n private _spinner: NgxSpinnerService,\r\n private breakpointObserver: BreakpointObserver) {\r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.context = { componentParent: this };\r\n this.roleGridHeaders = this.getRoleGridHeader();\r\n this.loadRoles();\r\n\r\n this.roleOperationGridHeaders = this.getRoleOperationGridHeader();\r\n }\r\n\r\n onRoleGridReady(params) {\r\n this.roleGridApi = params.api;\r\n }\r\n\r\n onRoleOperationGridReady(params) {\r\n this.roleOperationGridApi = params.api;\r\n }\r\n\r\n onRoleSelectionChanged(params){\r\n var selectedRows = this.roleGridApi.getSelectedRows();\r\n this.selectedRole = selectedRows.length === 1 ? selectedRows[0] : null;\r\n this.loadRoleOperations(this.selectedRole.id);\r\n }\r\n\r\n loadRoles(){\r\n this._spinner.show(this.spinnerName);\r\n this.subs.sink = this._userRoleService.getRoles()\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.roles = res.result;\r\n }else{\r\n this._toastService.failed(\"Load roles failed: \" + res.errors.join(\";\"));\r\n }\r\n })\r\n .add(()=>this._spinner.hide(this.spinnerName));\r\n }\r\n\r\n loadRoleOperations(roleId: number){\r\n this.loading = true;\r\n this.roleOperations = [];\r\n this._spinner.show(this.spinnerName);\r\n this.subs.sink = this._roleOperationService.getOperationsByRole(roleId)\r\n .subscribe(\r\n res => {\r\n if (res.succeed){\r\n this.roleOperations = res.result;\r\n }else{\r\n this._toastService.failed(\"Load role operations failed: \" + res.errors.join(\";\"));\r\n }\r\n }, _ => { }, () => this.loading = false)\r\n .add(()=>this._spinner.hide(this.spinnerName));\r\n }\r\n\r\n updateRoleOperationSetting(roleOperation: Operation){\r\n if (roleOperation.hasAccess){\r\n this.subs.sink = this._roleOperationService.addOperationToRole(this.selectedRole.id, roleOperation.id)\r\n .subscribe(res=>{\r\n if (res.succeed){\r\n this._sessionService.refreshUserContext();\r\n this._toastService.succeeded(`Permission [${roleOperation.operationName}] granted to role [${this.selectedRole.roleName}]`);\r\n }else{\r\n this._toastService.succeeded(`Grant permission [${roleOperation.operationName}] to role [${this.selectedRole.roleName}] failed: ` + res.errors.join(\";\"));\r\n }\r\n });\r\n }else{\r\n this.subs.sink = this._roleOperationService.deleteOperationFromRole(this.selectedRole.id, roleOperation.id)\r\n .subscribe(res=>{\r\n if (res.succeed){\r\n this._sessionService.refreshUserContext();\r\n this._toastService.succeeded(`Permission [${roleOperation.operationName}] revoked from role [${this.selectedRole.roleName}]`);\r\n }else{\r\n this._toastService.succeeded(`Revoke permission [${roleOperation.operationName}] from role [${this.selectedRole.roleName}] failed: ` + res.errors.join(\";\"));\r\n }\r\n });\r\n }\r\n }\r\n\r\n private getRoleGridHeader(){\r\n var cols = [\r\n {\r\n headerName: 'Role',\r\n field:'roleName',\r\n filter: true,\r\n sortable: true,\r\n width: 180\r\n },\r\n {\r\n headerName: 'Total Users',\r\n field:'userCount',\r\n filter: false,\r\n sortable: true,\r\n width: 100,\r\n cellStyle: this._util.getNumericCellStyle({borderRightColor:'#eeeeee'}),\r\n cellRenderer: params => this._util.formatNumber(params.data[params.colDef.field], 0)\r\n },\r\n {\r\n headerName: 'Role Description',\r\n field:'roleDescription',\r\n filter: false,\r\n sortable: false,\r\n flex: 1\r\n }\r\n ];\r\n\r\n if (this.smallScreen){\r\n cols[cols.length-1].flex = 0;\r\n cols[cols.length-1].width = 500;\r\n }\r\n \r\n return cols;\r\n }\r\n\r\n private getRoleOperationGridHeader(){\r\n return [\r\n {\r\n headerName: 'Allow Access',\r\n filter: false,\r\n sortable: false,\r\n width: 100,\r\n cellRenderer: OperationAccessSettingActionComponent,\r\n cellStyle: this.getCellStyleWithCenterAlignment\r\n },\r\n {\r\n headerName: 'Allow/Deny',\r\n width: 100,\r\n cellRenderer: params => params.data.hasAccess ? \"Allow\" : \"Deny\",\r\n cellStyle: this.getCellStyleWithCenterAlignment\r\n },\r\n {\r\n headerName: 'Permissions',\r\n field: 'operationName',\r\n filter: true,\r\n floatingFilter: true,\r\n sortable: true,\r\n width: 200,\r\n resizable: true,\r\n cellStyle: this.getCellStyle\r\n },\r\n {\r\n headerName: 'Description',\r\n field: 'description',\r\n filter: false,\r\n sortable: false,\r\n flex: 1,\r\n cellStyle: this.getCellStyle\r\n }\r\n ]\r\n }\r\n\r\n private getCellStyleWithCenterAlignment(params){\r\n var style: any = {};\r\n if(params.data.hasAccess){\r\n style = {textAlign:'center', backgroundColor: '#44aa44', color: '#ffffff'};\r\n }else{\r\n style = {textAlign:'center'};\r\n }\r\n\r\n if (!params.data.businessReady){\r\n style.fontWeight = 'bold';\r\n } \r\n\r\n return style;\r\n }\r\n\r\n private getCellStyle(params){\r\n var style: any = {};\r\n if (!params.data.businessReady){\r\n style = {fontWeight: 'bold'};\r\n }\r\n if(params.data.hasAccess){\r\n style.backgroundColor = \"#44aa44\";\r\n style.color = \"#ffffff\";\r\n }\r\n\r\n return style;\r\n }\r\n}\r\n","

{{spinnerText}}

\r\n\r\n\r\n\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n \r\n
Roles
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
Permission Settings
\r\n
\r\n \r\n
\r\n\r\n
\r\n
","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport * as _ from 'lodash-es';\r\nimport { SubSink } from 'subsink';\r\nimport { AccountService } from '../services/account.service';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { LoggingService } from '../services/logging.service';\r\nimport { BusinessOperation } from '../shared/models/business-operation';\r\nimport { UpdateAccountViewModel, UpdatePasswordViewModel } from '../shared/models/update-account-view-model';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\n\r\n@Component({\r\n selector: 'pps-user-profile',\r\n templateUrl: './user-profile.component.html',\r\n styles: [\r\n ],\r\n})\r\nexport class UserProfileComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n\r\n updateAccountViewModel: UpdateAccountViewModel = null;\r\n updatePasswordViewModel: UpdatePasswordViewModel = null;\r\n section: string = \"profile\";\r\n updating: boolean = false;\r\n errorMessage: string = \"\";\r\n smallScreen: boolean = false;\r\n\r\n constructor(private _authService: AuthenticationService,\r\n private _accountService: AccountService,\r\n private _toast: ToastService,\r\n private _route: ActivatedRoute,\r\n private breakpointObserver: BreakpointObserver) {\r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n\r\n this.subs.sink = this._route.queryParams.subscribe(param => {\r\n this.section = param.section || \"profile\";\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.init();\r\n }\r\n\r\n init(){\r\n this.updateAccountViewModel = {\r\n clientUserId: this._authService.userContext.zoesenUser.id,\r\n zoesenUserId: this._authService.userContext.zoesenUser.zoesenUserId,\r\n userName: this._authService.userContext.zoesenUser.zoesenUsername,\r\n firstName: this._authService.userContext.zoesenUser.firstName,\r\n lastName: this._authService.userContext.zoesenUser.lastName,\r\n email: this._authService.userContext.zoesenUser.email,\r\n //phoneNumber: this._authService.userContext.zoesenUser.phoneNumber,\r\n avatar: this._authService.userContext.zoesenUser.avatar\r\n };\r\n\r\n this.updatePasswordViewModel = {\r\n clientUserId: this._authService.userContext.zoesenUser.id,\r\n zoesenUserId: this._authService.userContext.zoesenUser.zoesenUserId,\r\n userName: this._authService.userContext.zoesenUser.zoesenUsername\r\n };\r\n }\r\n\r\n canManageProfile(): boolean{\r\n return this._authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.ManageOwnProfile,\r\n BusinessOperation.ManageAllAccount\r\n ]);\r\n }\r\n\r\n canManagePassword(): boolean{\r\n return this._authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.ManageOwnPassword,\r\n BusinessOperation.ManageAllAccount\r\n ]);\r\n }\r\n\r\n updateUserProfile(profileForm){\r\n if (profileForm.invalid){\r\n return;\r\n }\r\n\r\n this.updating = true;\r\n this.subs.sink = this._accountService.update(this.updateAccountViewModel)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this._authService.setUserProfile(this.updateAccountViewModel);\r\n this._toast.succeeded(\"Your profile has been successfully updated.\");\r\n }else{\r\n this._toast.failed(`Failed to update your profile: ${res.errors.join(\";\")}`);\r\n }\r\n })\r\n .add(()=>{\r\n this.updating = false;\r\n });;\r\n }\r\n\r\n updateCred(credForm: NgForm){\r\n if (this.updatePasswordViewModel.newPassword !== this.updatePasswordViewModel.confirmPassword){\r\n credForm.controls[\"confirmPassword\"].setErrors({\"notmatch\": true});\r\n return;\r\n }\r\n\r\n if (this.updatePasswordViewModel.newPassword){\r\n if (!/(?=.*[a-z])/g.test(this.updatePasswordViewModel.newPassword)){\r\n credForm.controls[\"newPassword\"].setErrors({\"nolowercase\": true});\r\n return;\r\n }\r\n\r\n if (!/(?=.*[A-Z])/g.test(this.updatePasswordViewModel.newPassword)){\r\n credForm.controls[\"newPassword\"].setErrors({\"nouppercase\": true});\r\n return;\r\n }\r\n\r\n if (!/(?=.*\\d)/g.test(this.updatePasswordViewModel.newPassword)){\r\n credForm.controls[\"newPassword\"].setErrors({\"nodigit\": true});\r\n return;\r\n }\r\n\r\n if (!/(?=.*[-+_!@#$%^&*.,?])/g.test(this.updatePasswordViewModel.newPassword)){\r\n credForm.controls[\"newPassword\"].setErrors({\"nonalphanumeric\": true});\r\n return;\r\n }\r\n }\r\n\r\n if (credForm.invalid){\r\n return;\r\n }\r\n \r\n this.updating = true;\r\n this.errorMessage = \"\";\r\n \r\n let acct = _.clone(this.updatePasswordViewModel);\r\n acct.newPassword = btoa(this.updatePasswordViewModel.newPassword);\r\n acct.confirmPassword = btoa(this.updatePasswordViewModel.confirmPassword);\r\n\r\n this.subs.sink = this._accountService.updatePassword(acct)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this._toast.succeeded(\"Your password has been successfully updated.\");\r\n }else{\r\n this.errorMessage = `${res.errors.join(\";\")}`;\r\n //this._toast.failed(`Failed to update your password: ${res.errors.join(\";\")}`);\r\n }\r\n })\r\n .add(()=>{\r\n this.updating = false;\r\n });;\r\n }\r\n}\r\n","\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n User Profile\r\n
\r\n \r\n You don't have permission to update your profile\r\n \r\n

\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n First name is required\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Last name is required\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n Email is required\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n

\r\n Password Change\r\n
{{errorMessage}}
\r\n
\r\n \r\n You don't have permission to update your password\r\n \r\n

\r\n \r\n
\r\n \r\n \r\n Must provide current password\r\n
\r\n\r\n
\r\n \r\n \r\n Password is required\r\n Password too short\r\n Password not match\r\n At lease one lower case is required\r\n At least one upper case is required\r\n At least one digit is required\r\n At least one non-alphanumeric character is required: - + _ ! @ # $ % ^ & * . , ?\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n Password not match\r\n
\r\n\r\n
\r\n

Suggestions

\r\n
    \r\n
  • At least one lowercase
  • \r\n
  • At least one uppercase
  • \r\n
  • At least one numeric
  • \r\n
  • At least one non-alphanumeric: - + _ ! @ # $ % ^ & * . , ?
  • \r\n
  • Minimum 8 characters
  • \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { UserRoleService } from '../services/user-role.service';\r\nimport { Role } from '../shared/models/role';\r\nimport { User } from '../shared/models/user';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { RoleFormComponent } from './role-form.component';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\nimport { UserSelectionFormComponent } from './user-selection-form.component';\r\nimport { forkJoin } from 'rxjs';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { ConfirmationService, MenuItem } from 'primeng/api';\r\nimport { SessionService } from '../services/session.service';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { SubSink } from 'subsink';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\n\r\n@Component({\r\n selector: 'pps-user-role-management',\r\n templateUrl: './user-role-management.component.html',\r\n styleUrls: ['./user-role-management.component.css']\r\n})\r\nexport class UserRoleManagementComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n smallScreen = false;\r\n\r\n spinnerName: string = \"spinner\";\r\n spinnerText: string = \"Loading data ...\";\r\n \r\n items: MenuItem[] = [\r\n {label: \"Admin\", icon: \"pi-fw fas fa-user-lock\"},\r\n {label: \"Role Users\", icon: \"pi-fw fas fa-users\"},\r\n ];\r\n\r\n roleLoading: boolean = false;\r\n userLoading: boolean = false;\r\n\r\n roles: Role[] = [];\r\n roleGridHeaders: any = [];\r\n userList: User[] = [];\r\n\r\n roleUsers: User[] = [];\r\n roleUserGridHeaders: any = [];\r\n\r\n context:any = {};\r\n selectedRole: Role = null;\r\n selectedRoleUser: User = null;\r\n\r\n private roleGridApi: any;\r\n private userGridApi: any;\r\n\r\n constructor(private _userRoleService: UserRoleService,\r\n private _util: PpsUtilityService,\r\n private _toastService: ToastService,\r\n private _dialog: DialogService,\r\n private _confirmService: ConfirmationService,\r\n private _sessionService: SessionService,\r\n private _spinner: NgxSpinnerService,\r\n private breakpointObserver: BreakpointObserver) {\r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.context = { componentParent: this };\r\n this.roleGridHeaders = this.getRoleGridHeader();\r\n this.loadRoles();\r\n\r\n this.roleUserGridHeaders = this.getRoleUserGridHeader();\r\n }\r\n\r\n onRoleGridReady(params) {\r\n this.roleGridApi = params.api;\r\n }\r\n\r\n onUserGridReady(params) {\r\n this.userGridApi = params.api;\r\n }\r\n\r\n onRoleSelectionChanged(params){\r\n this.selectedRoleUser = null;\r\n var selectedRows = this.roleGridApi.getSelectedRows();\r\n this.selectedRole = selectedRows.length === 1 ? selectedRows[0] : null;\r\n this.loadRoleUsers(this.selectedRole.id);\r\n }\r\n\r\n onRoleUserSelectionChanged(params){\r\n var selectedRows = this.userGridApi.getSelectedRows();\r\n this.selectedRoleUser = selectedRows.length === 1 ? selectedRows[0] : null;\r\n }\r\n\r\n onRoleRowDblClicked(params){\r\n this.openRoleForm(params.data);\r\n }\r\n\r\n loadRoles(){\r\n this.roleLoading = true;\r\n this.roles = [];\r\n this.userList = [];\r\n this.selectedRole = null;\r\n this.selectedRoleUser = null;\r\n \r\n this._spinner.show(this.spinnerName);\r\n this.subs.sink = this._userRoleService.getRoles()\r\n .subscribe(res=>{\r\n if (res.succeed){\r\n this.roles = res.result;\r\n this.loadUsers();\r\n }else{\r\n this._toastService.failed(\"Get roles failed: \" + res.errors.join(\";\"));\r\n }\r\n }, \r\n _ => {}, \r\n () => this.roleLoading = false)\r\n .add(() => this._spinner.hide(this.spinnerName));\r\n }\r\n\r\n loadUsers(){\r\n if (this.userList.length === 0){\r\n this.userList = [];\r\n this.selectedRoleUser = null;\r\n this.subs.sink = this._userRoleService.getUsers()\r\n .subscribe(res=>{\r\n if (res.succeed){\r\n this.userList = res.result;\r\n }else{\r\n this._toastService.failed(\"Get users failed: \" + res.errors.join(\";\"));\r\n }\r\n }, _ => {}, () => this.roleLoading = false)\r\n }\r\n }\r\n\r\n loadRoleUsers(roleId: number){\r\n this.userLoading = true;\r\n this.roleUsers = [];\r\n this._spinner.show(this.spinnerName);\r\n this.subs.sink = this._userRoleService.getUsersByRole(roleId)\r\n .subscribe(res=>{\r\n if (res.succeed){\r\n this.roleUsers = res.result;\r\n }\r\n }, _ => {}, () => this.userLoading = false)\r\n .add(() => this._spinner.hide(this.spinnerName));\r\n }\r\n\r\n openRoleForm(role){\r\n if (role === null){\r\n role = new Role();\r\n role.id = 0;\r\n role.roleName = \"\";\r\n role.roleDescription = \"\";\r\n }\r\n\r\n let dialog = this._dialog.open(RoleFormComponent, {\r\n header: role.id === 0 ? \"Create New Role\" : \"Edit Role\",\r\n styleClass: \"size-sm\",\r\n data: {\r\n role: role\r\n }\r\n });\r\n\r\n this.subs.sink = dialog.onClose.subscribe(role => {\r\n if (role){\r\n if (role.id === 0){\r\n this.saveNewRole(role);\r\n }else{\r\n this.updateRole(role);\r\n }\r\n }\r\n }, _ => {});\r\n }\r\n\r\n saveNewRole(role: Role){\r\n this.roleLoading = true;\r\n this.subs.sink = this._userRoleService\r\n .addRole(role)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.loadRoles();\r\n this._toastService.succeeded(\"Role created!\");\r\n }else{\r\n this._toastService.failed(\"Failed to create role: \" + res.errors.join(\";\"));\r\n }\r\n }, _ => {}, () => this.roleLoading = false);\r\n }\r\n\r\n updateRole(role: Role){\r\n this.roleLoading = true;\r\n this.subs.sink = this._userRoleService\r\n .updateRole(role)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.loadRoles();\r\n this._toastService.succeeded(\"Role update succeeded!\");\r\n }else{\r\n this._toastService.failed(\"Role update failed! \" + res.errors.join(\";\"));\r\n }\r\n }, _ => {}, () => this.roleLoading = false);\r\n }\r\n\r\n assignUser(){\r\n if (this.selectedRole === null){\r\n this._toastService.failed(\"Please select a role first\");\r\n return;\r\n }\r\n\r\n let dialog = this._dialog.open(UserSelectionFormComponent, {\r\n header: \"Assign Users To Role\",\r\n styleClass: \"size-sm\",\r\n data: {\r\n userList: this.userList\r\n }\r\n });\r\n\r\n this.subs.sink = dialog.onClose.subscribe(users => {\r\n if (users){\r\n if (users.length > 0){\r\n this.addUsersToRole(this.selectedRole, users);\r\n }\r\n }},\r\n _ => {}\r\n );\r\n }\r\n\r\n addUsersToRole(role: Role, users: User[]){\r\n let tasks = [];\r\n users.forEach(user => {\r\n tasks.push(this._userRoleService.addUserToRole(role.id, user));\r\n });\r\n\r\n this.subs.sink = forkJoin(tasks)\r\n .subscribe(results => {\r\n var goodCount = 0;\r\n\r\n results.forEach(r => {\r\n goodCount += r[\"succeed\"] ? 1 : 0\r\n })\r\n\r\n this.loadRoleUsers(role.id);\r\n this.loadRoles();\r\n this._sessionService.refreshUserContext();\r\n let msg = `${goodCount} user assigned to role ${role.roleName} !`;\r\n this._toastService.succeeded(msg);\r\n });\r\n }\r\n\r\n removeUser(){\r\n if (this.selectedRole === null){\r\n this._toastService.failed(\"Please select a role first\");\r\n return;\r\n }\r\n\r\n if (this.selectedRoleUser === null){\r\n this._toastService.failed(\"Please select a user to remove\");\r\n return;\r\n }\r\n\r\n this._confirmService.confirm({\r\n header: \"Remove User From Role\",\r\n message: `\r\n Are you sure that you want to remove user:\r\n [${this._util.getEmployeeName(this.selectedRoleUser)}] from role:\r\n [${this.selectedRole.roleName}]?\r\n `,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => {\r\n this.subs.sink = this._userRoleService.deleteUserFromRole(this.selectedRole.id, this.selectedRoleUser.id)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.loadRoleUsers(this.selectedRole.id);\r\n this._sessionService.refreshUserContext();\r\n this._toastService.succeeded(`\r\n User [${this._util.getEmployeeName(this.selectedRoleUser)}]\r\n removed from role [${this.selectedRole.roleName}]`);\r\n }else{\r\n this._toastService.failed(\"Remove user failed: \" + res.errors.join(\";\"));\r\n }\r\n })\r\n }});\r\n }\r\n\r\n private getRoleGridHeader(){\r\n var cols = [\r\n {\r\n headerName: 'Role',\r\n field:'roleName',\r\n filter: true,\r\n sortable: true,\r\n width: 180\r\n },\r\n {\r\n headerName: 'Total Users',\r\n field:'userCount',\r\n filter: false,\r\n sortable: false,\r\n width: 80,\r\n cellStyle: this._util.getNumericCellStyle({borderRightColor:'#eeeeee'}),\r\n cellRenderer: params => this._util.formatNumber(params.data[params.colDef.field], 0)\r\n },\r\n {\r\n headerName: 'Role Description',\r\n field:'roleDescription',\r\n filter: true,\r\n sortable: true,\r\n flex: 1,\r\n suppressSizeToFit: false\r\n }\r\n ];\r\n\r\n if (this.smallScreen){\r\n cols[cols.length-1].flex = 0;\r\n cols[cols.length-1].width = 500;\r\n }\r\n\r\n return cols;\r\n }\r\n\r\n private getRoleUserGridHeader(){\r\n var cols = [\r\n {\r\n headerName: 'Username',\r\n field:'zoesenUsername',\r\n filter: true,\r\n sortable: true,\r\n width: 120\r\n },\r\n {\r\n headerName: 'User Full Name',\r\n field:'fullName',\r\n filter: true,\r\n sortable: true,\r\n width: 200,\r\n cellRenderer: this.getEmployeeName\r\n },\r\n {\r\n headerName: 'Email',\r\n field:'email',\r\n filter: true,\r\n sortable: true,\r\n width: 250\r\n },\r\n {\r\n headerName: 'UserId',\r\n field:'zoesenUserId',\r\n filter: false,\r\n sortable: false,\r\n flex: 1,\r\n width: 380\r\n }\r\n ];\r\n\r\n return cols;\r\n }\r\n\r\n private getEmployeeName(params){\r\n let user: User = params.data;\r\n let employeeName = params.context.componentParent._util.getEmployeeName({firstName: user.firstName, lastName: user.lastName});\r\n return employeeName;\r\n }\r\n}\r\n","

{{spinnerText}}

\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n\r\n \r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n Roles\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
Users Assigned to {{selectedRole === null ? \"Role\" : \"[\" + selectedRole.roleName + \"]\"}}
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n","
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n User List\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{getFullname(emp)}}\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { User } from '../shared/models/user';\r\n\r\n@Component({\r\n selector: 'pps-user-selection-form',\r\n templateUrl: './user-selection-form.component.html',\r\n styles: [\r\n ],\r\n})\r\nexport class UserSelectionFormComponent implements OnInit {\r\n userList: User[] = [];\r\n selectedUsers: User[] = [];\r\n\r\n constructor(\r\n private _dialogRef: DynamicDialogRef,\r\n private _dialogConfig: DynamicDialogConfig,\r\n private _util: PpsUtilityService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.userList = this._dialogConfig.data.userList;\r\n }\r\n\r\n getFullname(user: User){\r\n return this._util.getEmployeeName({firstName: user.firstName, lastName: user.lastName});\r\n }\r\n\r\n save(form: NgForm){\r\n console.log(form);\r\n\r\n if (this.selectedUsers.length === 0){\r\n this._dialogRef.close();\r\n }else{\r\n this._dialogRef.close(this.selectedUsers);\r\n }\r\n }\r\n\r\n cancel(){\r\n this._dialogRef.close();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { SigninRedirectCallbackComponent } from './authentication/signin-redirect-callback.component';\r\nimport { SignoutRedirectCallbackComponent } from './authentication/signout-redirect-callback.component';\r\nimport { HomeComponent } from './home/home.component';\r\nimport { LoginComponent } from './authentication/login.component';\r\nimport { ErrorComponent } from './shared/error.component';\r\nimport { AuthGuardService } from './services/auth-guard.service';\r\n\r\nconst routes: Routes = [\r\n { path: '', component: HomeComponent, canActivate: [AuthGuardService] },\r\n { path: 'home', component: HomeComponent, canActivate: [AuthGuardService] },\r\n { path: 'error', component: ErrorComponent },\r\n { path: 'signin-callback', component: SigninRedirectCallbackComponent },\r\n { path: 'signout-callback', component: SignoutRedirectCallbackComponent },\r\n { path: 'login', component: LoginComponent }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { AuthenticationService } from './services/authentication.service';\r\nimport { HealthCheckService } from './services/health-check.service';\r\nimport { PpsUtilityService } from './services/pps-utility.service';\r\nimport { AppStatus } from './shared/models/app-status';\r\n\r\n@Component({\r\n selector: 'pps-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AppComponent{\r\n spinnerName: string = \"AppLoadingSpinner\";\r\n\r\n healthCheckInterval = 300000;\r\n title = 'pps-client';\r\n AppStatus = AppStatus;\r\n appLoadingStatus: AppStatus = 0;\r\n appLoadingStatusMsg = \"\";\r\n\r\n constructor(private _util: PpsUtilityService,\r\n private _spinner: NgxSpinnerService,\r\n private _authService: AuthenticationService,\r\n private _healthService: HealthCheckService){\r\n this._spinner.show(this.spinnerName);\r\n\r\n this._authService.appLoaded.subscribe(appLoadingStatus => {\r\n console.log(\"App loading status: \" + appLoadingStatus)\r\n this.appLoadingStatus = appLoadingStatus;\r\n switch(appLoadingStatus){\r\n case AppStatus.Initialized: this.appLoadingStatusMsg = \"Application initialized\"; break;\r\n case AppStatus.LoginStarted: this.appLoadingStatusMsg = \"Signing in...\"; break;\r\n case AppStatus.LoginCompleted: this.appLoadingStatusMsg = \"You have been authenticated\"; break;\r\n case AppStatus.LogoutStarted: this.appLoadingStatusMsg = \"Signing out...\"; break;\r\n case AppStatus.LogoutCompleted: this.appLoadingStatusMsg = \"Signed out\"; break;\r\n case AppStatus.UserContextLoading: this.appLoadingStatusMsg = \"Application loading...\"; break;\r\n case AppStatus.Ready: \r\n this.appLoadingStatusMsg = \"Application ready\"; \r\n window.setTimeout(() => this.healthCheck(), this.healthCheckInterval);\r\n this._spinner.hide(this.spinnerName);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n healthCheck(){\r\n this._healthService.healthCheck()\r\n .subscribe()\r\n .add(() => {\r\n window.setTimeout(() => this.healthCheck(), this.healthCheckInterval);\r\n });\r\n }\r\n\r\n get isLocalOrDevelopment(): boolean{\r\n return this._util.isLocalOrDevelopment;\r\n }\r\n \r\n get isTest(): boolean{\r\n return this._util.isTest;\r\n }\r\n \r\n get isProduction(): boolean{\r\n return this._util.isProduction;\r\n }\r\n}\r\n","
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n

{{appLoadingStatusMsg}}

\r\n
\r\n
","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS} from '@angular/common/http';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations'\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { LayoutModule } from '@angular/cdk/layout';\r\n\r\nimport { NgxSpinnerModule } from 'ngx-spinner'\r\nimport { AgGridModule } from 'ag-grid-angular';\r\n\r\nimport {AvatarModule} from 'primeng/avatar';\r\nimport {BadgeModule} from 'primeng/badge';\r\nimport {BreadcrumbModule} from 'primeng/breadcrumb';\r\nimport {ButtonModule} from 'primeng/button';\r\nimport {CardModule} from 'primeng/card'\r\nimport {CalendarModule} from 'primeng/calendar';\r\nimport {ChipModule} from 'primeng/chip';\r\nimport {ConfirmDialogModule} from 'primeng/confirmdialog';\r\nimport {DividerModule} from 'primeng/divider';\r\nimport {DropdownModule} from 'primeng/dropdown';\r\nimport {DialogService, DynamicDialogModule} from 'primeng/dynamicdialog';\r\nimport {InputMaskModule} from 'primeng/inputmask';\r\nimport {InputNumberModule} from 'primeng/inputnumber';\r\nimport {InputTextModule} from 'primeng/inputtext';\r\nimport {InputTextareaModule} from 'primeng/inputtextarea';\r\nimport {MenuModule} from 'primeng/menu';\r\nimport {MenubarModule } from 'primeng/menubar';\r\nimport {MessageModule} from 'primeng/message';\r\nimport {MessagesModule} from 'primeng/messages';\r\nimport {MultiSelectModule} from 'primeng/multiselect';\r\nimport {PasswordModule} from 'primeng/password';\r\nimport {ProgressBarModule} from 'primeng/progressbar';\r\nimport {PanelModule} from 'primeng/panel';\r\nimport {RippleModule} from 'primeng/ripple';\r\nimport {SidebarModule} from 'primeng/sidebar';\r\nimport {SplitterModule} from 'primeng/splitter';\r\nimport {TableModule} from 'primeng/table';\r\nimport {TabViewModule} from 'primeng/tabview';\r\nimport {ToastModule} from 'primeng/toast';\r\nimport {ToolbarModule} from 'primeng/toolbar';\r\nimport {TooltipModule} from 'primeng/tooltip';\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\n\r\nimport { AppComponent } from './app.component';\r\n\r\nimport { NavMenuComponent } from './nav-menu/nav-menu.component';\r\nimport { SigninRedirectCallbackComponent } from './authentication/signin-redirect-callback.component';\r\nimport { SignoutRedirectCallbackComponent } from './authentication/signout-redirect-callback.component';\r\nimport { HttpHeaderInterceptor } from './services/interceptors/http-header.interceptor';\r\nimport { HomeComponent } from './home/home.component';\r\nimport { LoginComponent } from './authentication/login.component';\r\nimport { UpdateRequestDateHttpInterceptor } from './services/interceptors/update-request-date.interceptor';\r\nimport { UpdateResponseDateHttpInterceptor } from './services/interceptors/update-response-date.interceptor';\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { ErrorComponent } from './shared/error.component';\r\n\r\nimport { ProjectModule } from './projects/project.module';\r\nimport { RosterModule } from './roster/roster.module';\r\nimport { EmployeeModule } from './employees/employee.module';\r\nimport { TimesheetModule } from './timesheet/timesheet.module';\r\nimport { AdminModule } from './admin/admin.module';\r\nimport { SystemSettingsModule } from './system-settings/system-settings.module';\r\nimport { PayrollModule } from './payroll/payroll.module';\r\nimport { ReportModule } from './reports/report.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n ErrorComponent,\r\n NavMenuComponent,\r\n SigninRedirectCallbackComponent,\r\n SignoutRedirectCallbackComponent,\r\n HomeComponent,\r\n LoginComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n AppRoutingModule,\r\n HttpClientModule,\r\n LayoutModule,\r\n NgxSpinnerModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n AgGridModule.withComponents([\r\n ]),\r\n AvatarModule,\r\n BadgeModule,\r\n ButtonModule,\r\n BreadcrumbModule,\r\n CalendarModule,\r\n CardModule,\r\n ChipModule,\r\n ConfirmDialogModule,\r\n DividerModule,\r\n DropdownModule,\r\n DynamicDialogModule,\r\n InputMaskModule,\r\n InputNumberModule,\r\n InputTextModule,\r\n InputTextareaModule,\r\n MenuModule,\r\n MenubarModule,\r\n MessageModule,\r\n MessagesModule,\r\n MultiSelectModule,\r\n PasswordModule,\r\n PanelModule,\r\n ProgressBarModule,\r\n RippleModule,\r\n SidebarModule,\r\n SplitterModule,\r\n TableModule,\r\n TabViewModule,\r\n ToastModule,\r\n ToolbarModule,\r\n TooltipModule,\r\n\r\n AdminModule,\r\n EmployeeModule,\r\n ProjectModule,\r\n RosterModule,\r\n TimesheetModule,\r\n PayrollModule,\r\n ReportModule,\r\n SystemSettingsModule\r\n ],\r\n providers: [\r\n ConfirmationService,\r\n DialogService,\r\n MessageService,\r\n {provide: HTTP_INTERCEPTORS, useClass: HttpHeaderInterceptor, multi: true},\r\n {provide: HTTP_INTERCEPTORS, useClass: UpdateRequestDateHttpInterceptor, multi: true}, \r\n {provide: HTTP_INTERCEPTORS, useClass: UpdateResponseDateHttpInterceptor, multi: true}\r\n ],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\n\r\n@Component({\r\n selector: 'pps-login',\r\n template: `\r\n
\r\n Validating login status...\r\n
\r\n \r\n
\r\n \r\n `,\r\n styles: [\r\n ],\r\n})\r\nexport class LoginComponent implements OnInit {\r\n spinnerName: string = \"spinner\";\r\n\r\n constructor(private _authService: AuthenticationService,\r\n private _spinner: NgxSpinnerService,\r\n private _router: Router) { }\r\n\r\n ngOnInit(): void {\r\n this._authService.userLoggedIn().then(loggedIn => {\r\n if (!loggedIn){\r\n this._authService.login();\r\n }else{\r\n window.setTimeout(() => this._router.navigate([\"/home\"], { replaceUrl: true}), 0);\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'pps-signin-redirect-callback',\r\n template: \"
\",\r\n styles: [\r\n ],\r\n})\r\nexport class SigninRedirectCallbackComponent implements OnInit {\r\n\r\n constructor(\r\n private authService: AuthenticationService,\r\n private router: Router\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.authService.completeLogin()\r\n .then(userContext => {\r\n console.log(\"User login completed: \" + userContext);\r\n this.router.navigate([\"/home\"], { replaceUrl: true});\r\n })\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'pps-signout-redirect-callback',\r\n template: \"
\",\r\n styles: []\r\n})\r\nexport class SignoutRedirectCallbackComponent implements OnInit {\r\n constructor(\r\n private authService: AuthenticationService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.authService.completeLogout()\r\n .then(_ => {\r\n window.location.href = \"/index.html\";\r\n })\r\n }\r\n}\r\n","//Test git\r\n//Helen's comment\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { AgRendererComponent } from 'ag-grid-angular';\r\n\r\n@Component({\r\n selector: 'pps-employee-action',\r\n template: `\r\n \r\n \r\n \r\n `,\r\n styles: [\r\n ],\r\n})\r\nexport class EmployeeActionComponent implements AgRendererComponent {\r\n private params: any;\r\n\r\n constructor() { }\r\n refresh(params: any): boolean {\r\n return true;\r\n }\r\n\r\n agInit(params: import(\"ag-grid-community\").ICellRendererParams): void {\r\n this.params = params;\r\n }\r\n\r\n afterGuiAttached?(params?: import(\"ag-grid-community\").IAfterGuiAttachedParams): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n editEmployee(evt){\r\n evt.preventDefault();\r\n this.params.context.componentParent.openEmployeeForm(this.params.data);\r\n }\r\n\r\n terminateEmployee(evt){\r\n evt.preventDefault();\r\n this.params.context.componentParent.activateEmployee(this.params.data, false);\r\n }\r\n\r\n activateEmployee(evt){\r\n evt.preventDefault();\r\n this.params.context.componentParent.activateEmployee(this.params.data, true);\r\n }\r\n\r\n get activeEmployee(){\r\n return this.params.data.active;\r\n }\r\n\r\n get canModifyEmployee(){\r\n return this.params.context.componentParent.canModifyEmployee();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { EmployeeActivityModel } from '../shared/models/employee-activity-model';\r\nimport { NgForm } from '@angular/forms';\r\nimport { Employee } from '../shared/models/employee';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\n\r\n@Component({\r\n selector: 'pps-employee-activity-form',\r\n templateUrl: './employee-activity-form.component.html',\r\n styles: [\r\n ],\r\n})\r\nexport class EmployeeActivityFormComponent implements OnInit {\r\n formTitle: string;\r\n activityModel: EmployeeActivityModel = new EmployeeActivityModel();\r\n\r\n constructor(\r\n private dialogRef: DynamicDialogRef,\r\n private dialogConfig: DynamicDialogConfig,\r\n private util: PpsUtilityService) { }\r\n\r\n ngOnInit(): void {\r\n this.setInitialData(\r\n this.dialogConfig.data.employee, \r\n this.dialogConfig.data.activity, \r\n this.dialogConfig.data.title);\r\n }\r\n\r\n private setInitialData(employee: Employee, activity: string, title: string){\r\n this.activityModel.employeeId = employee.id;\r\n this.activityModel.activity = activity;\r\n this.activityModel.activityDate = new Date();\r\n this.formTitle = `${title} - ${this.util.getEmployeeName(employee)}`;\r\n }\r\n\r\n save(form: NgForm){\r\n if (form.invalid){\r\n return false;\r\n }\r\n\r\n this.dialogRef.close(this.activityModel);\r\n }\r\n\r\n cancel(){\r\n this.dialogRef.close();\r\n }\r\n}\r\n","
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Date is required!\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Note field cannot be empty! \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Employee } from '../shared/models/employee';\r\nimport { IEntity } from '../shared/models/entity';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { subYears, addYears } from 'date-fns';\r\nimport { NgForm } from '@angular/forms';\r\nimport { AustraliaState } from '../shared/models/australia-state';\r\nimport * as _ from 'lodash-es';\r\nimport { Position } from '../shared/models/position';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { IRosterType } from '../shared/models/roster/roster-type';\r\nimport { IWorkArea } from '../shared/models/workarea';\r\nimport { IEmployer } from '../shared/models/employer';\r\n\r\n@Component({\r\n selector: 'pps-employee-form',\r\n templateUrl: './employee-form.component.html',\r\n styleUrls: ['./employee-form.component.css']\r\n})\r\nexport class EmployeeFormComponent implements OnInit {\r\n // value passed in from caller\r\n employee: Employee;\r\n states: AustraliaState[] = [];\r\n groups: IEntity[] = [];\r\n positions: Position[] = [];\r\n supervisors: Employee[] = [];\r\n rosterTypes: IRosterType[] = [];\r\n workAreas: IWorkArea[] = [];\r\n employers: IEmployer[] = [];\r\n maxDate: Date;\r\n yearRange: string = \"\";\r\n\r\n constructor(\r\n private dialogRef: DynamicDialogRef,\r\n private dlgConfig: DynamicDialogConfig,\r\n private _util: PpsUtilityService) {}\r\n\r\n ngOnInit(): void {\r\n this.states = this._util.getStates();\r\n this.maxDate = addYears(new Date(), 1);\r\n this.yearRange = `${2018}:${addYears(new Date(), 3).getFullYear()}`;\r\n\r\n this.setData(\r\n this.dlgConfig.data.employee,\r\n this.dlgConfig.data.employees,\r\n this.dlgConfig.data.workGroups,\r\n this.dlgConfig.data.positions,\r\n this.dlgConfig.data.rosterTypes,\r\n this.dlgConfig.data.workAreas,\r\n this.dlgConfig.data.employers,\r\n ); \r\n }\r\n\r\n setData(selectedEmployee: Employee, \r\n employees: Employee[], \r\n groups: IEntity[], \r\n positions: Position[], \r\n rosterTypes: IRosterType[], \r\n workAreas: IWorkArea[],\r\n employers: IEmployer[]){\r\n this.employee = _.cloneDeep(selectedEmployee);\r\n \r\n if (this.employee.state != null){\r\n this.employee.state = this.employee.state.hasOwnProperty(\"code\") ? this.employee.state : this.getStateObjectByCode(this.employee.state);\r\n }\r\n\r\n this.supervisors = employees\r\n .filter(emp => {\r\n return this._util.isSupervisorGroup(emp.workGroup.name) && emp.active;\r\n });\r\n\r\n if (selectedEmployee.supervisor && !selectedEmployee.supervisor.active){\r\n this.supervisors.push(selectedEmployee.supervisor);\r\n }\r\n\r\n this.supervisors = this.supervisors.sort((a, b) => {\r\n if (a.lastName > b.lastName){\r\n return 1;\r\n }\r\n\r\n if (a.lastName < b.lastName){\r\n return -1;\r\n }\r\n\r\n if (a.firstName > b.firstName){\r\n return 1;\r\n }\r\n\r\n if (a.firstName < b.firstName){\r\n return -1;\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n this.groups = groups;\r\n this.positions = positions;\r\n this.rosterTypes = rosterTypes;\r\n this.workAreas = workAreas.filter(w=>w.active);\r\n this.employers = employers.sort((a, b) => a.employerName > b.employerName ? 1 : -1)\r\n .map(e => {\r\n return {id: e.id, employerName: e.active ? e.employerName : `(Inactive) ${e.employerName}`, active: e.active}\r\n });\r\n }\r\n\r\n save(form: NgForm){\r\n if (form.invalid){\r\n return false;\r\n }\r\n\r\n this.employee.state = this.employee.state ? this.employee.state.code : this.employee.state;\r\n this.dialogRef.close(this.employee);\r\n }\r\n\r\n setRosterTypeStartDate(rosterTypeDropdown){\r\n if (!rosterTypeDropdown.value){\r\n this.employee.rosterTypeStartDate = null;\r\n }\r\n\r\n if (rosterTypeDropdown.value && this.employee.rosterTypeStartDate === null){\r\n this.employee.rosterTypeStartDate = this.employee.hireDate;\r\n }\r\n }\r\n\r\n cancel(){\r\n //this.employee.state = this.employee.state.code;\r\n this.dialogRef.close();\r\n }\r\n\r\n isNewEmployee(){\r\n return this.employee === null || this.employee.id === 0;\r\n }\r\n\r\n getEmployeeName(employee: Employee): string{\r\n return this._util.getEmployeeName(employee);\r\n }\r\n \r\n private getStateObjectByCode(stateCode: string){\r\n return this.states.find(s => s.code === stateCode);\r\n }\r\n}\r\n","
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Work area is required\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Employee No is required\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n First Name is required\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Last Name is required\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Employee must belong to a group!\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n {{ getEmployeeName(supervisor) }}{{supervisor.active ? \"\" : \" - (inactive)\"}}\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Hire date is required!\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Employee must have a position!\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, Input, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { EmployeeService } from \"../services/employee.service\";\r\nimport { SubSink } from \"subsink\";\r\nimport { IEmployeeHistory } from \"../shared/models/EmployeeHistory\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { EmployeeBase } from \"../shared/models/employee-base\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\n\r\n@Component({\r\n selector: \"pps-employee-history\",\r\n templateUrl:\"./employee-history.component.html\"\r\n})\r\nexport class EmployeeHistoryComponent implements OnInit, OnDestroy{\r\n @Input() employeeId?: number = null;\r\n\r\n spinnerName: string = \"loading_emplyment_history\";\r\n employeeHistory: IEmployeeHistory[] = [];\r\n context:any = {};\r\n gridHeaders = [];\r\n gridOptions = {\r\n defaultColDef:{\r\n resizable: true\r\n }\r\n };\r\n\r\n private subs = new SubSink();\r\n \r\n constructor(\r\n private _employeeService: EmployeeService,\r\n private _util: PpsUtilityService,\r\n private _spinner: NgxSpinnerService\r\n ){\r\n\r\n }\r\n\r\n\r\n ngOnInit(){\r\n if (this.employeeId > 0){\r\n this.context = { componentParent: this };\r\n this.gridHeaders = this.getColumnDefs();\r\n \r\n this.getEmployeeHistory(this.employeeId)\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n private getEmployeeHistory(employeeId:number){\r\n this._spinner.show(this.spinnerName);\r\n this.subs.sink = this._employeeService\r\n .getEmployeeHistory(employeeId)\r\n .subscribe(response => {\r\n if (response.succeed){\r\n this.employeeHistory = response.result;\r\n }\r\n\r\n this._spinner.hide(this.spinnerName);\r\n })\r\n .add(() => this._spinner.hide(this.spinnerName));\r\n }\r\n\r\n private getColumnDefs(){\r\n return [\r\n {\r\n headerName: 'Id',\r\n field:'id',\r\n sortable: true,\r\n width: 40,\r\n cellStyle:{textAlign:'right'}\r\n },\r\n {\r\n headerName: 'Activity',\r\n field:'activity',\r\n sortable: false,\r\n width: 140\r\n },\r\n {\r\n headerName: 'Activity Date',\r\n field:'activityDate',\r\n sortable: true,\r\n width: 80,\r\n cellStyle:{textAlign:'right'},\r\n valueGetter: this.getDateValue\r\n },\r\n {\r\n headerName: 'Add By',\r\n sortable: false,\r\n width: 100,\r\n valueGetter: this.getAddByName\r\n },\r\n {\r\n headerName: 'Add Date',\r\n field:'addDate',\r\n sortable: false,\r\n width: 80,\r\n valueGetter: this.getDateValue\r\n },\r\n {\r\n headerName: 'Note',\r\n field:'note',\r\n sortable: false,\r\n width: 240\r\n }\r\n ];\r\n } \r\n private getDateValue(params){\r\n if (params.data[params.colDef.field]){\r\n let value = params.context.componentParent._util.getDateString(params.data[params.colDef.field]);\r\n return value;\r\n }\r\n\r\n return \"\";\r\n } \r\n\r\n private getAddByName(params){\r\n let emp: EmployeeBase = {\r\n firstName: params.data[\"addByFirstName\"],\r\n lastName: params.data[\"addByLastName\"]\r\n };\r\n \r\n let value = params.context.componentParent._util.getEmployeeName(emp);\r\n return value;\r\n } \r\n}","\r\n

Loading employment history data...

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

Employee Employment History:

\r\n
0\" class=\"p-mb-3\">\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n No employment history found for selected employeee!\r\n
","
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n {{ getEmployeeName(employee) }}\r\n \r\n \r\n \r\n \r\n Employee is required!\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Training course is required!\r\n
\r\n
\r\n\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Enrollment date is required\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n","import { Component } from \"@angular/core\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { EmployeeBase } from \"../shared/models/employee-base\";\r\nimport { ITrainingCourse } from \"../shared/models/training-course\";\r\nimport { IEmployeeTrainingRecord } from \"../shared/models/employee-training-record\";\r\nimport { NgForm } from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: \"pps-employee-training-record-form\",\r\n templateUrl: \"./employee-training-record-form.component.html\"\r\n})\r\nexport class EmployeeTrainingRecordFormComponent{\r\n employees: EmployeeBase[] = [];\r\n courses: ITrainingCourse[] = [];\r\n employeeTrainingRecord: IEmployeeTrainingRecord = null;\r\n selectedEmployee: EmployeeBase = null;\r\n isUpdate: boolean = false;\r\n\r\n constructor(\r\n private dialogRef: DynamicDialogRef,\r\n private dlgConfig: DynamicDialogConfig,\r\n private _util: PpsUtilityService) {}\r\n\r\n ngOnInit(): void {\r\n this.employees = this.dlgConfig.data.employees;\r\n this.courses = this.dlgConfig.data.courses;\r\n this.employeeTrainingRecord = this.dlgConfig.data.employeeTrainingRecord;\r\n }\r\n\r\n cancel(){\r\n this.dialogRef.close();\r\n }\r\n\r\n save(form: NgForm){\r\n console.log(form);\r\n if (form.invalid){\r\n return false;\r\n }\r\n\r\n console.log(this.employeeTrainingRecord);\r\n\r\n this.dialogRef.close(this.employeeTrainingRecord);\r\n }\r\n\r\n getEmployeeName(employee: EmployeeBase): string{\r\n return this._util.getEmployeeName(employee);\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { IEmployeeTrainingRecord } from \"../shared/models/employee-training-record\";\r\nimport { initial } from \"lodash\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { BreakpointObserver, BreakpointState } from \"@angular/cdk/layout\";\r\nimport { SubSink } from \"subsink\";\r\n\r\n@Component({\r\n selector: \"pps-employee-training-record-warning\",\r\n templateUrl: \"./employee-training-record-warning.component.html\"\r\n})\r\nexport class EmployeeTrainingRecordWarningComponent{\r\n private gridApi;\r\n private subs = new SubSink();\r\n smallScreen = false;\r\n\r\n employeeTrainingRecords: IEmployeeTrainingRecord[] = [];\r\n totalCost: string = \"\";\r\n\r\n context:any = {};\r\n gridHeaders = [];\r\n gridOptions = {\r\n getRowId: param => param.data.id,\r\n defaultColDef: {\r\n resizable: true,\r\n floatingFilter: false\r\n }\r\n };\r\n\r\n constructor(\r\n private dialogRef: DynamicDialogRef,\r\n private dlgConfig: DynamicDialogConfig,\r\n private _util: PpsUtilityService,\r\n private breakpointObserver: BreakpointObserver) { \r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n }\r\n\r\n ngOnInit(): void {\r\n this.initialize();\r\n }\r\n\r\n private initialize(){\r\n this.context = { componentParent: this };\r\n this.employeeTrainingRecords = this.dlgConfig.data.employeeTrainingRecords;\r\n\r\n let cost = 0;\r\n this.employeeTrainingRecords.forEach(t => cost += t.cost ?? 0);\r\n this.totalCost = this._util.formatCurrency(cost);\r\n\r\n this.gridHeaders = this.getColumnDefs();\r\n }\r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n }\r\n\r\n cancel(){\r\n this.dialogRef.close();\r\n }\r\n\r\n private getColumnDefs(){\r\n let colDefs = [\r\n {\r\n headerName: 'Course Title',\r\n field:'courseTitle',\r\n filter: true,\r\n sortable: true,\r\n flex: 1\r\n },\r\n {\r\n headerName: 'EnrollmentDate',\r\n field:'enrollmentDate',\r\n filter: true,\r\n sortable: true,\r\n width: 130,\r\n valueGetter: this.getDateValue\r\n },\r\n {\r\n headerName: 'Completion Date',\r\n field: 'completionDate',\r\n filter: true,\r\n sortable: true,\r\n width: 130,\r\n valueGetter: this.getDateValue\r\n },\r\n {\r\n headerName: 'Cost',\r\n field:'cost',\r\n filter: true,\r\n sortable: true,\r\n width: 100,\r\n cellStyle: this._util.getNumericCellStyle({borderRightColor:'#eeeeee'}),\r\n valueGetter: params => params.context.componentParent._util.formatCurrency(params.data[params.colDef.field])\r\n }\r\n ];\r\n\r\n if (this.smallScreen){\r\n colDefs.splice(0, 1);\r\n }\r\n\r\n return colDefs;\r\n }\r\n\r\n private getDateValue(params){\r\n if (params.data[params.colDef.field]){\r\n let value = params.context.componentParent._util.getDateString(params.data[params.colDef.field]);\r\n return value;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n}","
\r\n
\r\n We noticed that this employee has taken the following trainings in the past 6 months at a total cost of {{totalCost}}.\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n","import { Component } from \"@angular/core\";\r\nimport { ConfirmationService, MenuItem } from \"primeng/api\";\r\nimport { SubSink } from \"subsink\";\r\nimport { IEmployeeTrainingRecord } from \"../shared/models/employee-training-record\";\r\nimport { BusinessOperation } from \"../shared/models/business-operation\";\r\nimport { DialogService } from \"primeng/dynamicdialog\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { ToastService } from \"../shared/toast/toast.service\";\r\nimport { AuthenticationService } from \"../services/authentication.service\";\r\nimport { Router } from \"@angular/router\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { BreakpointObserver, BreakpointState } from \"@angular/cdk/layout\";\r\nimport { EmployeeTrainingRecordService } from \"../services/employee-training-record.service\";\r\nimport { EmployeeBase } from \"../shared/models/employee-base\";\r\nimport { ITrainingCourse } from \"../shared/models/training-course\";\r\nimport { EmployeeTrainingRecordFormComponent } from \"./employee-training-record-form.component\";\r\nimport { DeleteActionComponent } from \"../system-settings/delete-action.component\";\r\n\r\n@Component({\r\n selector: \"pps-employee-training-record\",\r\n templateUrl: \"./employee-training-record.component.html\"\r\n})\r\nexport class EmployeeTrainingRecordComponent{\r\n private subs = new SubSink();\r\n\r\n smallScreen = false;\r\n\r\n items: MenuItem[] = [{label: \"Employee Training Record\", icon: \"pi-fw fas fa-user-graduate\"}];\r\n spinnerName: string = \"employeeSpinner\";\r\n\r\n context:any = {};\r\n employeeTrainingRecords: IEmployeeTrainingRecord[] = [];\r\n employees: EmployeeBase[] = [];\r\n trainingCourses: ITrainingCourse[] = [];\r\n\r\n gridHeaders = [];\r\n gridOptions = {\r\n getRowId: param => param.data.id,\r\n defaultColDef: {\r\n resizable: true,\r\n floatingFilter: true\r\n }\r\n };\r\n\r\n selectedRow: any = null;\r\n selectedRowNode: any = null; //ag-grid RowNode\r\n\r\n private gridApi;\r\n\r\n constructor(private _dialog: DialogService,\r\n private _spinner: NgxSpinnerService,\r\n private _toast: ToastService,\r\n private _employeeTrainingRecordService: EmployeeTrainingRecordService,\r\n private _authService: AuthenticationService,\r\n private _confirm: ConfirmationService,\r\n private _util: PpsUtilityService,\r\n private breakpointObserver: BreakpointObserver) { \r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n console.log(\"smallScreen? \" + this.smallScreen);\r\n }); \r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initialize();\r\n }\r\n\r\n private initialize(){\r\n this.context = { componentParent: this };\r\n this.gridHeaders = this.getColumnDefs();\r\n this.loadEntities();\r\n }\r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n }\r\n\r\n onRowClicked(evt){\r\n let _this = evt.context.componentParent;\r\n var selectedRows = _this.gridApi.getSelectedRows();\r\n _this.selectedRow = selectedRows.length === 1 ? selectedRows[0] : null;\r\n _this.selectedRowNode = evt.node;\r\n }\r\n\r\n onRowDblClicked(params){\r\n if (this.canManageEmployeeTrainingRecord()){\r\n let employeeTrainingRecord = params.data;\r\n this.openEmployeeTrainingRecordForm(employeeTrainingRecord);\r\n }\r\n }\r\n\r\n loadEmployeeTrainingRecords(){\r\n this._spinner.show(this.spinnerName);\r\n this.employeeTrainingRecords = [];\r\n this.subs.sink = this._employeeTrainingRecordService\r\n .getAll()\r\n .subscribe(response => {\r\n if (response.succeed){\r\n this.employeeTrainingRecords = response.result;\r\n this._toast.succeeded(`${this.employeeTrainingRecords.length} records have been loaded`);\r\n }else{\r\n this._toast.failed(\"Loading employee training records failed: \" + response.errors.join(\";\"));\r\n }\r\n })\r\n .add(() => this._spinner.hide(this.spinnerName));\r\n }\r\n\r\n openEmployeeTrainingRecordForm(employeeTrainingRecord: IEmployeeTrainingRecord){\r\n if (employeeTrainingRecord === null){\r\n employeeTrainingRecord = {\r\n id: null,\r\n employeeId: null,\r\n courseId: null,\r\n enrollmentDate: new Date(),\r\n }\r\n }\r\n\r\n let dialog = this._dialog.open(EmployeeTrainingRecordFormComponent, {\r\n header: employeeTrainingRecord.id ? \"Update Training Record\" : \"Add Training Record\", \r\n styleClass: \"size-md\",\r\n data:{\r\n employees: this.employees,\r\n courses: this.trainingCourses,\r\n employeeTrainingRecord: employeeTrainingRecord\r\n },\r\n draggable: true\r\n });\r\n\r\n\r\n this.subs.sink = dialog.onClose.subscribe(employeeTrainingRecord => {\r\n if (employeeTrainingRecord){\r\n this.save(employeeTrainingRecord);\r\n }\r\n });\r\n }\r\n\r\n save(employeeTrainingRecord: IEmployeeTrainingRecord){\r\n if (!employeeTrainingRecord.id){ // add new\r\n employeeTrainingRecord.id = 0;\r\n this.subs.sink = this._employeeTrainingRecordService\r\n .add(employeeTrainingRecord)\r\n .subscribe(response => {\r\n if (response.succeed){\r\n this.employeeTrainingRecords.unshift(response.result);\r\n this._toast.succeeded(\"Employee training record saved successfully\");\r\n this.gridApi.setRowData(this.employeeTrainingRecords);\r\n }else{\r\n this._toast.failed(\"Failed to save employee training record: \" + response.errors.join(\";\"));\r\n }\r\n });\r\n }else{\r\n this.subs.sink = this._employeeTrainingRecordService\r\n .update(employeeTrainingRecord)\r\n .subscribe(response => {\r\n if (response.succeed){\r\n var foundIndex = this.employeeTrainingRecords.findIndex(x => x.id == response.result.id);\r\n this.employeeTrainingRecords[foundIndex] = response.result;\r\n this.resetGrid(this.employeeTrainingRecords, employeeTrainingRecord.id, false);\r\n this._toast.succeeded(\"Employee training record updated successfully\");\r\n }else{\r\n this._toast.failed(\"Failed to update employee training record: \" + response.errors.join(\";\"));\r\n }\r\n });\r\n }\r\n }\r\n\r\n getFilteredCount(){\r\n if (this.gridApi){\r\n return this.gridApi.getModel().rootNode.childrenAfterFilter.length;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n canManageEmployeeTrainingRecord(): boolean{\r\n return this._authService.canUserDoOperartion(BusinessOperation.ManageEmployeeTrainingRecord);\r\n }\r\n\r\n delete(item: IEmployeeTrainingRecord){\r\n if (item === null){\r\n return;\r\n }\r\n\r\n this._confirm.confirm({\r\n header: `Delete Employee Training Record`,\r\n message: `Are you sure that you want to delete this training record?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => this.deleteHelper(item)\r\n });\r\n }\r\n\r\n deleteHelper(item: IEmployeeTrainingRecord){\r\n this.subs.sink = this._employeeTrainingRecordService.delete(item.id)\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n var foundIndex = this.employeeTrainingRecords.findIndex(x => x.id == item.id);\r\n if (foundIndex !== -1 ){\r\n this.employeeTrainingRecords.splice(foundIndex, 1); \r\n this.gridApi.setRowData(this.employeeTrainingRecords);\r\n this._toast.succeeded(`The employee training record deleted!`);\r\n }else{\r\n this._toast.failed(`Delete the employee's training record failed!`);\r\n }\r\n }else{\r\n this._toast.failed(`Failed to delete employee training record: ${apiResponse.errors.join(\"|\")}`);\r\n }\r\n });\r\n } \r\n\r\n private getActionComponentTooltip(employeeTrainingRecord: IEmployeeTrainingRecord):string{\r\n return \"Click to delete employee training record\";\r\n }\r\n\r\n private getColumnDefs(){\r\n let colDefs = [\r\n {\r\n headerName: \"\",\r\n field: \"action\",\r\n cellRenderer: DeleteActionComponent,\r\n resizable: false,\r\n width: 50,\r\n hide: false,\r\n filter: false,\r\n pinned: true,\r\n suppressMovable: true,\r\n cellStyle: {textAlign: \"center\"}\r\n }, \r\n {\r\n headerName: 'Full Name',\r\n field:'fullname',\r\n filter: true,\r\n sortable: true,\r\n width: 350,\r\n suppressMovable: true,\r\n valueGetter: this.getEmployeeFullname\r\n },\r\n {\r\n headerName: 'Course Title',\r\n field:'courseTitle',\r\n filter: true,\r\n sortable: true,\r\n flex: 1\r\n },\r\n {\r\n headerName: 'EnrollmentDate',\r\n field:'enrollmentDate',\r\n filter: true,\r\n sortable: true,\r\n width: 300,\r\n valueGetter: this.getDateValue\r\n },\r\n {\r\n headerName: 'Completion Date',\r\n field: 'completionDate',\r\n filter: true,\r\n sortable: true,\r\n width: 150,\r\n valueGetter: this.getDateValue\r\n },\r\n {\r\n headerName: 'Cost',\r\n field:'cost',\r\n filter: true,\r\n sortable: true,\r\n width: 200,\r\n cellStyle: this._util.getNumericCellStyle({borderRightColor:'#eeeeee'}),\r\n valueGetter: params => params.context.componentParent._util.formatCurrency(params.data[params.colDef.field])\r\n }\r\n ];\r\n\r\n return colDefs;\r\n }\r\n\r\n private getEmployeeFullname(params){\r\n let employee: EmployeeBase = {\r\n firstName: params.data.employeeFirstName,\r\n lastName: params.data.employeeLastName\r\n }\r\n return params.context.componentParent._util.getEmployeeName(employee);\r\n }\r\n\r\n //\r\n // This is to update the values of the project grid and make sure the selected\r\n // row is rendered correctly\r\n private resetGrid(gridData: any, selectedId: number, ensureVisible: boolean){\r\n this.gridApi.setRowData(gridData);\r\n \r\n if (selectedId !== 0 && ensureVisible){\r\n var node = this.gridApi.getRowNode(selectedId);\r\n if (node){\r\n this.gridApi.ensureIndexVisible(node.rowIndex, 'middle');\r\n node.setSelected(true);\r\n }\r\n }\r\n }\r\n\r\n private getDateValue(params){\r\n if (params.data[params.colDef.field]){\r\n let value = params.context.componentParent._util.getDateString(params.data[params.colDef.field]);\r\n return value;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n private loadEntities(){\r\n this.subs.sink = this._employeeTrainingRecordService.getEmployeeTrainingRecordEntities()\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.employees = res.result.employees;\r\n this.trainingCourses = res.result.trainingCourses;\r\n\r\n console.log(this.employees);\r\n console.log(this.trainingCourses);\r\n\r\n this.loadEmployeeTrainingRecords();\r\n }\r\n });\r\n }\r\n}","\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n

Loading employees's training record...

\r\n \r\n \r\n
\r\n
\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { RouterModule } from \"@angular/router\";\r\n\r\nimport { AgGridModule } from \"ag-grid-angular\";\r\nimport { NgxSpinnerModule } from \"ngx-spinner\";\r\nimport { BadgeModule } from \"primeng/badge\";\r\nimport { BreadcrumbModule } from \"primeng/breadcrumb\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { CalendarModule } from \"primeng/calendar\";\r\nimport { CheckboxModule } from \"primeng/checkbox\";\r\nimport { ConfirmDialogModule } from \"primeng/confirmdialog\";\r\nimport { DropdownModule } from \"primeng/dropdown\";\r\nimport { InputMaskModule } from \"primeng/inputmask\";\r\nimport { InputTextModule } from \"primeng/inputtext\";\r\nimport { InputTextareaModule } from \"primeng/inputtextarea\";\r\nimport { ToastModule } from \"primeng/toast\";\r\nimport { ToolbarModule } from \"primeng/toolbar\";\r\nimport { TooltipModule } from \"primeng/tooltip\";\r\n\r\nimport { AuthGuardService } from \"../services/auth-guard.service\";\r\nimport { EmployeeActionComponent } from \"./employee-action.component\";\r\nimport { EmployeeActivityFormComponent } from \"./employee-activity-form.component\";\r\nimport { EmployeeFormComponent } from \"./employee-form.component\";\r\nimport { EmployeesComponent } from \"./employees.component\";\r\nimport { EmployeeTrainingRecordComponent } from \"./employee-training-record.component\";\r\nimport { InputNumberModule } from \"primeng/inputnumber\";\r\nimport { EmployeeTrainingRecordFormComponent } from \"./employee-training-record-form.component\";\r\nimport { EmployeeTrainingRecordWarningComponent } from \"./employee-training-record-warning.component\";\r\nimport { EmployeeHistoryComponent } from \"./employee-history.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgxSpinnerModule,\r\n AgGridModule.withComponents([]),\r\n\r\n BadgeModule,\r\n BreadcrumbModule,\r\n ButtonModule,\r\n CalendarModule,\r\n CheckboxModule,\r\n ConfirmDialogModule,\r\n DropdownModule,\r\n InputMaskModule,\r\n InputNumberModule,\r\n InputTextareaModule,\r\n InputTextModule,\r\n ToolbarModule,\r\n TooltipModule,\r\n ToastModule,\r\n\r\n RouterModule.forChild([\r\n { path: 'employees', component: EmployeesComponent, canActivate: [AuthGuardService] },\r\n { path: 'employee-training-record', component: EmployeeTrainingRecordComponent, canActivate: [AuthGuardService] },\r\n ])\r\n ],\r\n declarations: [\r\n EmployeeActionComponent,\r\n EmployeeActivityFormComponent,\r\n EmployeeFormComponent,\r\n EmployeesComponent,\r\n EmployeeTrainingRecordComponent,\r\n EmployeeTrainingRecordFormComponent,\r\n EmployeeTrainingRecordWarningComponent,\r\n EmployeeHistoryComponent\r\n ],\r\n exports:[\r\n EmployeeFormComponent\r\n ]\r\n})\r\nexport class EmployeeModule{}","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { EntityService } from '../services/entity.service';\r\nimport { EmployeeService } from '../services/employee.service';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { Employee } from '../shared/models/employee';\r\nimport { EmployeeActionComponent } from './employee-action.component';\r\nimport { IEntity } from '../shared/models/entity';\r\nimport { EmployeeFormComponent } from './employee-form.component';\r\nimport { forkJoin } from 'rxjs';\r\nimport { EmployeeActivityFormComponent } from './employee-activity-form.component';\r\nimport { EmployeeActivityModel } from '../shared/models/employee-activity-model';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { BusinessOperation } from '../shared/models/business-operation';\r\nimport { Router } from '@angular/router';\r\nimport { Position } from '../shared/models/position';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { SubSink } from 'subsink';\r\nimport { RosterTypeService } from '../services/roster-type.service';\r\nimport { IRosterType } from '../shared/models/roster/roster-type';\r\nimport { IWorkArea } from '../shared/models/workarea';\r\nimport { WorkAreaService } from '../services/work-area.service';\r\nimport { EmployeeTrainingRecordService } from '../services/employee-training-record.service';\r\nimport { EmployeeTrainingRecordWarningComponent } from './employee-training-record-warning.component';\r\nimport { EmployerService } from '../services/employer.service';\r\nimport { IEmployer } from '../shared/models/employer';\r\n\r\n@Component({\r\n selector: 'pps-employees',\r\n templateUrl: './employees.component.html',\r\n styleUrls: ['./employees.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class EmployeesComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n\r\n smallScreen = false;\r\n\r\n items: MenuItem[] = [{label: \"Employee\", icon: \"pi-fw far fa-address-card\"}];\r\n spinnerName: string = \"employeeSpinner\";\r\n \r\n isLoggedIn: boolean = false;\r\n exporting: boolean = false;\r\n gridHeaders = [];\r\n context:any = {};\r\n employees: Employee[] = [];\r\n gridOptions = {\r\n getRowId: param => param.data.id,\r\n defaultColDef: {\r\n cellStyle: this.getCellStyle,\r\n resizable: true,\r\n floatingFilter: true\r\n }\r\n };\r\n\r\n selectedRow: any = null;\r\n selectedRowNode: any = null; //ag-grid RowNode\r\n\r\n private gridApi;\r\n private groups: IEntity[] = [];\r\n private positions: Position[] = [];\r\n private rosterTypes: IRosterType[] = [];\r\n private workAreas: IWorkArea[] = [];\r\n private employers: IEmployer[] = [];\r\n\r\n private dateFilterParams = {\r\n comparator: this._util.filterDateComparator,\r\n filterOptions: [\"equals\", \"lessThan\", \"greaterThan\"],\r\n defaultOption: \"greaterThan\"\r\n };\r\n\r\n constructor(private _dialog: DialogService,\r\n private _spinner: NgxSpinnerService,\r\n private _employeeService: EmployeeService,\r\n private _employerService: EmployerService,\r\n private _emplyoeeTrainingRecordService: EmployeeTrainingRecordService,\r\n private _entityService: EntityService,\r\n private _toast: ToastService,\r\n private _authService: AuthenticationService,\r\n private _rosterTypeService: RosterTypeService,\r\n private _workAreaService: WorkAreaService,\r\n private _router: Router,\r\n private _util: PpsUtilityService,\r\n private breakpointObserver: BreakpointObserver) { \r\n this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n console.log(\"smallScreen? \" + this.smallScreen);\r\n }); \r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initialize();\r\n }\r\n\r\n private initialize(){\r\n this.context = { componentParent: this };\r\n this.gridHeaders = this.getColumnDefs();\r\n this.loadEntities();\r\n }\r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n\r\n if (!this.canModifyEmployee()){\r\n params.columnApi.setColumnVisible(\"action\", false);\r\n }\r\n }\r\n\r\n onRowClicked(evt){\r\n let _this = evt.context.componentParent;\r\n var selectedRows = _this.gridApi.getSelectedRows();\r\n _this.selectedRow = selectedRows.length === 1 ? selectedRows[0] : null;\r\n _this.selectedRowNode = evt.node;\r\n }\r\n\r\n onRowDblClicked(params){\r\n if (this.canModifyEmployee()){\r\n let employee = params.data;\r\n this.openEmployeeForm(employee);\r\n }\r\n }\r\n\r\n // load groups and employers\r\n loadEntities(){\r\n this._spinner.show(this.spinnerName);\r\n this.subs.sink = forkJoin([\r\n this._entityService.getGroups(),\r\n this._entityService.getPositions(),\r\n this._rosterTypeService.getAll(),\r\n this._workAreaService.getAll(),\r\n this._employerService.getAll()\r\n ]).subscribe(([groupResponse, positionsResponse, rosterTypesRes, waRes, employerRes]) => { // onNext\r\n if (groupResponse.succeed){\r\n this.groups = groupResponse.result;\r\n }else{\r\n this._toast.failed(\"Load group failed! \" + groupResponse.errors.join(\"|\"));\r\n }\r\n\r\n if (positionsResponse.succeed){\r\n this.positions = positionsResponse.result;\r\n }else{\r\n this._toast.failed(\"Load positions failed! \" + positionsResponse.errors.join(\"|\"));\r\n }\r\n\r\n if (rosterTypesRes.succeed){\r\n this.rosterTypes = rosterTypesRes.result;\r\n }else{\r\n this._toast.failed(\"Load roster types failed! \" + rosterTypesRes.errors.join(\"|\"));\r\n }\r\n\r\n if (waRes.succeed){\r\n this.workAreas = waRes.result;\r\n }else{\r\n this._toast.failed(\"Load work areas failed! \" + waRes.errors.join(\"|\"));\r\n }\r\n\r\n if (employerRes.succeed){\r\n this.employers = employerRes.result;\r\n }else{\r\n this._toast.failed(\"Load company data failed! \" + employerRes.errors.join(\"|\"));\r\n }\r\n }, error => { // onError\r\n if (error.status === 0){\r\n this._router.navigate([\"/\"], { replaceUrl: true});\r\n }\r\n }, () => { //onComplete\r\n this.loadEmployees();\r\n }).add(() => { //Finalize handler\r\n this._spinner.hide(this.spinnerName);\r\n });\r\n }\r\n\r\n loadEmployees(){\r\n this._spinner.show(this.spinnerName);\r\n this.employees = [];\r\n this.subs.sink = this._employeeService\r\n .getEmployees(false)\r\n .subscribe(response => {\r\n if (response.succeed){\r\n this.employees = response.result;\r\n this._toast.succeeded(`${this.employees.length} employees have been loaded`);\r\n }else{\r\n this._toast.failed(\"Loading employee failed: \" + response.errors.join(\";\"));\r\n }\r\n })\r\n .add(() => this._spinner.hide(this.spinnerName));\r\n }\r\n\r\n openEmployeeForm(employee: Employee){\r\n if (employee === null){\r\n employee = new Employee();\r\n employee.id = 0;\r\n employee.showInRoster = true;\r\n }\r\n\r\n let dialog = this._dialog.open(EmployeeFormComponent, {\r\n header: employee.id === 0 ? \"Add Employee\" : \"Edit Employee\", \r\n styleClass: \"size-md\",\r\n data:{\r\n employee: employee,\r\n employees: this.employees,\r\n workGroups: this.groups,\r\n positions: this.positions,\r\n rosterTypes: this.rosterTypes,\r\n workAreas: this.workAreas,\r\n employers: this.employers\r\n },\r\n draggable: true\r\n });\r\n\r\n\r\n this.subs.sink = dialog.onClose.subscribe(employee => {\r\n if (employee){\r\n this.save(employee);\r\n }\r\n });\r\n }\r\n\r\n save(employee: Employee){\r\n if (employee.id === 0){\r\n employee.active = true;\r\n this.subs.sink = this._employeeService\r\n .addEmployee(employee)\r\n .subscribe(response => {\r\n if (response.succeed){\r\n this.employees.unshift(response.result);\r\n this._toast.succeeded(\"Employee create successfully\");\r\n this.gridApi.setRowData(this.employees);\r\n }else{\r\n this._toast.failed(\"Employee creatation failed: \" + response.errors.join(\";\"));\r\n }\r\n });\r\n }else{\r\n this.subs.sink = this._employeeService\r\n .updateEmployee(employee)\r\n .subscribe(response => {\r\n if (response.succeed){\r\n var foundIndex = this.employees.findIndex(x => x.id == response.result.id);\r\n this.employees[foundIndex] = response.result;\r\n this.resetGrid(this.employees, employee.id, false);\r\n this._toast.succeeded(\"Employee updated successfully\");\r\n }else{\r\n this._toast.failed(\"Employee update failed: \" + response.errors.join(\";\"));\r\n }\r\n });\r\n }\r\n }\r\n\r\n checkEmployeeTrainingRecord(employee: Employee, callback){\r\n this.subs.sink = this._emplyoeeTrainingRecordService\r\n .getTrainingRecordInPast6Month(employee.id)\r\n .subscribe(response => {\r\n if (response.succeed && response.result.length > 0){\r\n console.log(response.result);\r\n let dialog = this._dialog.open(EmployeeTrainingRecordWarningComponent, {\r\n header: \"Warning: Training Records Found in the Past 6 Months\",\r\n styleClass: \"size-md\",\r\n data:{\r\n employeeTrainingRecords: response.result\r\n },\r\n draggable: true\r\n });\r\n\r\n this.subs.sink = dialog.onClose.subscribe( () => {\r\n if (callback){\r\n callback();\r\n }\r\n });\r\n }else{\r\n if (callback){\r\n callback();\r\n }\r\n }\r\n });\r\n }\r\n\r\n activateEmployee(employee: Employee, active: boolean){\r\n if (employee === null){\r\n return;\r\n }\r\n\r\n if (!active){\r\n this.checkEmployeeTrainingRecord(employee, () => {\r\n this.activateEmployeeHelper(employee, active);\r\n })\r\n }else{\r\n this.activateEmployeeHelper(employee, active);\r\n }\r\n }\r\n\r\n activateEmployeeHelper(employee: Employee, active: boolean){\r\n let activity = active ? \"Activate Employee\" : \"Terminate Employee\";\r\n\r\n let dialog = this._dialog.open(EmployeeActivityFormComponent, {\r\n header: activity,\r\n styleClass: \"size-md\",\r\n data:{\r\n employee: employee,\r\n activity: activity,\r\n title: activity\r\n },\r\n draggable: true\r\n });\r\n \r\n this.subs.sink = dialog.onClose.subscribe(\r\n employeeActivityModel => {\r\n if (employeeActivityModel){\r\n this.saveEmployeeActivityModel(employee, employeeActivityModel, active);\r\n }\r\n },\r\n reason => {\r\n console.log(reason);\r\n }\r\n );\r\n }\r\n\r\n exportEmployee(){\r\n this.exporting = true;\r\n this.subs.sink = this._employeeService.downloadEmployees(() => this.exporting = false);\r\n }\r\n\r\n private saveEmployeeActivityModel(employee: Employee, empActivityModel: EmployeeActivityModel, active: boolean){\r\n this.subs.sink = this._employeeService.activateEmployee(empActivityModel, active)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this._toast.succeeded(`${this._util.getEmployeeName(employee)} has been ${active ? \"activated\" : \"terminated\"}!`)\r\n this.loadEmployees();\r\n }else{\r\n this._toast.failed(`${active ? \"Activate\" : \"Termiate\"} employee failed: ` + res.errors.join(\";\"));\r\n }\r\n })\r\n }\r\n\r\n getFilteredCount(){\r\n if (this.gridApi){\r\n return this.gridApi.getModel().rootNode.childrenAfterFilter.length;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n getTotalActiveEmployeeCount(){\r\n var arr = this.employees.filter(e=>e.active && e.dateOfBirth && e.employer?.employerName?.toLowerCase() === \"pps\");\r\n return arr.length;\r\n }\r\n\r\n canAddEmployee(): boolean{\r\n return this._authService.canUserDoOperartion(BusinessOperation.AddEmployee);\r\n }\r\n\r\n canModifyEmployee(): boolean{\r\n return this._authService.canUserDoOperartion(BusinessOperation.ModifyEmployee);\r\n }\r\n\r\n canExportEmployee(): boolean{\r\n return this._authService.canUserDoOperartion(BusinessOperation.ExportEmployee);\r\n }\r\n\r\n canViewEmployeeRosterType(): boolean{\r\n return this._authService.canUserDoOperartion(BusinessOperation.ManageRosterSetting);\r\n }\r\n\r\n private getColumnDefs(){\r\n let colDefs = [\r\n {\r\n headerName: \"Action\",\r\n field: \"action\",\r\n cellRenderer: EmployeeActionComponent,\r\n colId: \"action\",\r\n width: 80,\r\n hide: false,\r\n pinned: true,\r\n suppressMovable: true,\r\n resizable: false,\r\n cellStyle: {textAlign:\"center\"}\r\n },\r\n {\r\n headerName: 'Full Name',\r\n field:'fullname',\r\n filter: true,\r\n sortable: true,\r\n pinned: true,\r\n width: 150,\r\n suppressMovable: true,\r\n valueGetter: this.getEmployeeFullname\r\n },\r\n {\r\n headerName: 'Payroll No',\r\n field:'employeeNo',\r\n filter: true,\r\n sortable: true,\r\n width: 100\r\n },\r\n {\r\n headerName: 'Group',\r\n field:'workGroup.name',\r\n filter: true,\r\n sortable: true,\r\n width: 300\r\n },\r\n {\r\n headerName: 'Position',\r\n field: 'position.title',\r\n filter: true,\r\n sortable: true,\r\n width: 150\r\n },\r\n {\r\n headerName: 'Supervisor',\r\n field:'',\r\n filter: true,\r\n sortable: true,\r\n width: 200,\r\n valueGetter: this.getSupervisorName\r\n },\r\n {\r\n headerName: 'Access Id',\r\n field:'accessId',\r\n filter: true,\r\n sortable: true,\r\n width: 100\r\n },\r\n {\r\n headerName: 'Email',\r\n field:'email',\r\n filter: true,\r\n sortable: true,\r\n width: 200\r\n },\r\n {\r\n headerName: 'Phone',\r\n field:'phone',\r\n filter: true,\r\n sortable: true,\r\n width: 160\r\n },\r\n {\r\n headerName: 'Date of Birth',\r\n field:'dateOfBirth',\r\n filter: 'agDateColumnFilter',\r\n filterParams: this.dateFilterParams,\r\n sortable: true,\r\n comparator: (date1, date2) => this._util.dateComparator(date1, date2),\r\n width: 170,\r\n valueGetter: this.getDateValue\r\n },\r\n {\r\n headerName: 'Hire Date',\r\n field:'hireDate',\r\n filter: 'agDateColumnFilter',\r\n filterParams: this.dateFilterParams,\r\n sortable: true,\r\n comparator: (date1, date2) => this._util.dateComparator(date1, date2),\r\n width: 170,\r\n valueGetter: this.getDateValue\r\n },\r\n {\r\n headerName: 'Contract Expire Date',\r\n field:'contractExpireDate',\r\n filter: 'agDateColumnFilter',\r\n filterParams: this.dateFilterParams,\r\n sortable: true,\r\n comparator: (date1, date2) => this._util.dateComparator(date1, date2),\r\n width: 170,\r\n valueGetter: this.getDateValue\r\n },\r\n {\r\n headerName: 'Company',\r\n field:'employer.employerName',\r\n filter: true,\r\n sortable: true,\r\n width: 100\r\n },\r\n {\r\n headerName: 'Home Address',\r\n field:'',\r\n filter: true,\r\n sortable: true,\r\n resizable:true,\r\n width: 300,\r\n valueGetter: this.getEmployeeHomeAddress\r\n },\r\n {\r\n headerName: 'Active Employee',\r\n field:'active',\r\n filter: true,\r\n sortable: true,\r\n valueGetter: params => params.data[params.colDef.field] ? \"Yes\" : \"No\",\r\n cellStyle: this.getCellStyle,\r\n width: 150\r\n },\r\n {\r\n headerName: 'Terminate Date',\r\n field:'terminateDate',\r\n filter: 'agDateColumnFilter',\r\n filterParams: this.dateFilterParams,\r\n sortable: true,\r\n comparator: (date1, date2) => this._util.dateComparator(date1, date2),\r\n width: 170,\r\n valueGetter: this.getDateValue\r\n },\r\n {\r\n headerName: 'Terminate Note',\r\n field:'terminateNote',\r\n filter: true,\r\n sortable: false,\r\n width: 300\r\n },\r\n {\r\n headerName: 'Id',\r\n field:'id',\r\n filter: \"agNumberColumnFilter\",\r\n sortable: true,\r\n width: 50,\r\n floatingFilter: false,\r\n resizable: false,\r\n cellStyle: {textAlign:\"center\"}\r\n }\r\n ];\r\n\r\n if (this.canViewEmployeeRosterType){\r\n colDefs.splice(7, 0, \r\n {\r\n headerName: 'Work Area',\r\n field:'workArea.areaName',\r\n filter: true,\r\n sortable: true,\r\n width: 120\r\n },\r\n {\r\n headerName: 'Roster Type',\r\n field:'rosterType.title',\r\n filter: true,\r\n sortable: true,\r\n width: 150\r\n },\r\n {\r\n headerName: 'Roster Type Start Date',\r\n field:'rosterTypeStartDate',\r\n filter: 'agDateColumnFilter',\r\n filterParams: this.dateFilterParams,\r\n sortable: true,\r\n comparator: (date1, date2) => this._util.dateComparator(date1, date2),\r\n width: 170,\r\n valueGetter: this.getDateValue\r\n });\r\n }\r\n\r\n if (this.smallScreen){\r\n colDefs.splice(0, 1);\r\n colDefs[0].pinned = false;\r\n }\r\n\r\n return colDefs;\r\n }\r\n\r\n private getSupervisorName(params){\r\n let rowData = params.data;\r\n return rowData.supervisor ? params.context.componentParent._util.getEmployeeName(rowData.supervisor) : \"\";\r\n }\r\n \r\n private getEmployeeFullname(params){\r\n return params.context.componentParent._util.getEmployeeName(params.data);\r\n }\r\n\r\n private getEmployeeHomeAddress(params){\r\n let rowData = params.data;\r\n return [rowData.address, rowData.city, rowData.state, rowData.postcode].join(\" \");\r\n }\r\n\r\n private getCellStyle(params){\r\n let employee: Employee = params.data;\r\n\r\n if (!employee.active){\r\n return {color: \"#aaaaaa\"};\r\n }\r\n }\r\n\r\n //\r\n // This is to update the values of the project grid and make sure the selected\r\n // row is rendered correctly\r\n private resetGrid(gridData: any, selectedId: number, ensureVisible: boolean){\r\n // reference:\r\n // https://stackoverflow.com/questions/55723337/ag-grid-how-to-scroll-to-last-known-position\r\n // if ( ensureVisible ){\r\n // this.gridOptions.immutableData = false;\r\n // }\r\n\r\n this.gridApi.setRowData(gridData);\r\n \r\n if (selectedId !== 0 && ensureVisible){\r\n var node = this.gridApi.getRowNode(selectedId);\r\n if (node){\r\n this.gridApi.ensureIndexVisible(node.rowIndex, 'middle');\r\n node.setSelected(true);\r\n }\r\n }\r\n\r\n // if ( ensureVisible ){\r\n // this.gridOptions.immutableData = true;\r\n // }\r\n }\r\n\r\n private getDateValue(params){\r\n if (params.data[params.colDef.field]){\r\n let value = params.context.componentParent._util.getDateString(params.data[params.colDef.field]);\r\n return value;\r\n }\r\n\r\n return \"\";\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n PPS: {{getTotalActiveEmployeeCount()}}\"\r\n tooltipPosition=\"left\"\r\n [escape]=\"false\"\r\n value=\"{{getTotalActiveEmployeeCount()}}\">\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n

Loading employees...

\r\n 0\"\r\n style=\"width: 100%; height:100%;\"\r\n class=\"ag-theme-alpine\"\r\n [rowData]=\"employees\"\r\n [columnDefs]=\"gridHeaders\"\r\n [context]=\"context\"\r\n [gridOptions]=\"gridOptions\"\r\n rowSelection=\"single\"\r\n (rowDoubleClicked)='onRowDblClicked($event)'\r\n (rowClicked)='onRowClicked($event)'\r\n (gridReady)=\"onGridReady($event)\">\r\n \r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport format from 'date-fns/format';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\n\r\n@Component({\r\n selector: 'pps-home',\r\n templateUrl: './home.component.html',\r\n styleUrls: ['./home.component.css']\r\n})\r\nexport class HomeComponent implements OnInit {\r\n currentTime: string = null;\r\n isLoggedIn: boolean = false;\r\n private clockId: any = null;\r\n\r\n constructor(\r\n private _authService: AuthenticationService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n // this._authService.ensureUserLoggedIn(()=>{\r\n // console.log(\"From home page\");\r\n // this.isLoggedIn = true;\r\n // this.startClock();\r\n // });\r\n this.isLoggedIn = true;\r\n this.startClock();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.clockId) {\r\n clearInterval(this.clockId);\r\n }\r\n }\r\n \r\n private startClock(){\r\n this.currentTime = format(new Date(), \"dd/MM/yyyy hh:mm:ss bbbb\");\r\n \r\n this.clockId = setInterval(() => {\r\n this.currentTime = format(new Date(), \"dd/MM/yyyy hh:mm:ss bbbb\");\r\n }, 1000);\r\n }\r\n\r\n get userFullname(){\r\n return this._authService.userFullname;\r\n }\r\n\r\n get version(){\r\n return environment.version;\r\n } \r\n}\r\n","\r\n
\r\n \r\n \r\n
\r\n PPS Management System\r\n
\r\n
\r\n\r\n
\r\n

{{userFullname}}

\r\n

Welcome to PPS Management System!

\r\n

Version: {{version}}

\r\n

{{currentTime}}

\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { Router } from '@angular/router';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { BusinessOperation } from '../shared/models/business-operation';\r\nimport { ReportService } from '../services/report.service';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { LogoutReason } from '../shared/models/login-change-model';\r\nimport { LoggingService } from '../services/logging.service';\r\n\r\nimport { MenuItem } from 'primeng/api';\r\nimport { SharedModule } from 'primeng/api';\r\nimport { SubSink } from 'subsink';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\n\r\n@Component({\r\n selector: 'pps-nav-menu',\r\n templateUrl: './nav-menu.component.html',\r\n styleUrls: ['./nav-menu.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class NavMenuComponent implements OnInit {\r\n smallScreen: boolean = false;\r\n private subs = new SubSink();\r\n\r\n isLoggedIn: boolean = false;\r\n isMenuCollapsed: boolean = true;\r\n title = 'pps-client';\r\n generatingReport: boolean = false;\r\n menuItems: MenuItem[];\r\n userProfileItems: MenuItem[];\r\n showProfileSideBar: boolean = false;\r\n\r\n constructor(\r\n private _authService: AuthenticationService,\r\n private _util: PpsUtilityService,\r\n private _reportService: ReportService,\r\n private _spinner: NgxSpinnerService,\r\n private _router: Router,\r\n private _logger: LoggingService,\r\n private breakpointObserver: BreakpointObserver) {\r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n });\r\n\r\n this._authService.loginChanged.subscribe(loggedIn => {\r\n this.isLoggedIn = loggedIn;\r\n if (this.isLoggedIn){\r\n this.getMenuItems();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this._authService.userLoggedIn().then(loggedIn => {\r\n this.isLoggedIn = loggedIn;\r\n if (this.isLoggedIn){\r\n this.getMenuItems();\r\n }\r\n });\r\n }\r\n\r\n login(){\r\n this._authService.login();\r\n }\r\n\r\n logout(){\r\n this._authService.logout();\r\n }\r\n\r\n isActiveRoute(router: string){\r\n let currentRoute = this._router.url;\r\n currentRoute = currentRoute === \"/\" ? \"/home\" : currentRoute;\r\n\r\n return currentRoute === router;\r\n }\r\n\r\n get isLocalOrDevelopment(): boolean{\r\n return this._util.isLocalOrDevelopment;\r\n }\r\n \r\n get isTest(): boolean{\r\n return this._util.isTest;\r\n }\r\n \r\n get isProduction(): boolean{\r\n return this._util.isProduction;\r\n }\r\n get isUserAdmin(){\r\n return this._authService.isUserAdmin;\r\n }\r\n\r\n get isUserSysAdmin(){\r\n return this._authService.isUserSysAdmin;\r\n }\r\n \r\n get userFullname(){\r\n return this._authService.userFullname;\r\n }\r\n\r\n get userContext(){\r\n return this._authService.userContext;\r\n }\r\n \r\n canViewLinks(): boolean{\r\n return this._authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.ViewLinks,\r\n BusinessOperation.ManageLinks\r\n ]);\r\n }\r\n\r\n canManageLinks(): boolean{\r\n return this._authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.ManageLinks\r\n ]);\r\n }\r\n\r\n canManageRosterCodes(): boolean{\r\n return this._authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.ManageRosterCode\r\n ]);\r\n }\r\n\r\n canManageHoliday(): boolean{\r\n return this._authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.ManageHoliday\r\n ]);\r\n }\r\n\r\n canManageEmployer(): boolean{\r\n return this._authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.ManageEmployer\r\n ]);\r\n }\r\n\r\n canManageRosterSettings(): boolean{\r\n return this._authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.ManageRosterSetting\r\n ]);\r\n }\r\n\r\n canManageTrainingCourses(): boolean{\r\n return this._authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.ManageTrainingCourse\r\n ]);\r\n }\r\n\r\n canViewProject(): boolean{\r\n return this._authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.ViewProject,\r\n BusinessOperation.CreateProject,\r\n BusinessOperation.ModifyProject,\r\n BusinessOperation.DeleteProject,\r\n BusinessOperation.ExportProject\r\n ]);\r\n }\r\n\r\n canViewTimeSheet(): boolean{\r\n return this._authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.ViewTimeSheet,\r\n BusinessOperation.EnterTimeSheet,\r\n BusinessOperation.ModifyTimeSheet,\r\n BusinessOperation.UpdatePastTimeSheet,\r\n BusinessOperation.ExportTimeSheet\r\n ]);\r\n }\r\n\r\n canViewRoster(): boolean{\r\n return this._authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.ViewRoster,\r\n BusinessOperation.ModifyRoster\r\n ]);\r\n }\r\n\r\n canViewEmployee(): boolean{\r\n return this._authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.ViewEmployee,\r\n BusinessOperation.AddEmployee,\r\n BusinessOperation.ModifyEmployee,\r\n BusinessOperation.ExportEmployee\r\n ]);\r\n }\r\n\r\n canViewEmployeeTrainingRecord(): boolean{\r\n return this._authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.ManageEmployeeTrainingRecord\r\n ]);\r\n }\r\n\r\n canViewPayrollTimesheet(): boolean{\r\n return this._authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.ViewPayrollTimesheet,\r\n BusinessOperation.ExportPayrollTimesheet\r\n ]);\r\n }\r\n\r\n canDownloadReport(): boolean{\r\n return this._authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.GenerateMonthlyIncomeReport,\r\n BusinessOperation.ExportPoInvoiceDiscrepancyReport\r\n ]);\r\n }\r\n\r\n canExportPoInvoiceDiscrepanctReport(): boolean{\r\n return this._authService.canUserDoOperartion(BusinessOperation.ExportPoInvoiceDiscrepancyReport);\r\n }\r\n\r\n canGenerateMonthlyIncomeReport(): boolean{\r\n return this._authService.canUserDoOperartion(BusinessOperation.GenerateMonthlyIncomeReport);\r\n }\r\n\r\n canManageSystemSettings(): boolean{\r\n return this._authService.canUserDoAnyOfTheOperartions([\r\n //BusinessOperation.ManageArea,\r\n BusinessOperation.ManageClientEngineer,\r\n BusinessOperation.ManageWorkGroup,\r\n BusinessOperation.ManageJobPosition,\r\n BusinessOperation.ManagePayCategory,\r\n BusinessOperation.ManageLinks,\r\n BusinessOperation.ManageTimesheetBreakDownRule\r\n ]);\r\n }\r\n\r\n canManageClientEngineer(): boolean{\r\n return this._authService.canUserDoOperartion(BusinessOperation.ManageClientEngineer);\r\n }\r\n\r\n canManageWorkGroup(): boolean{\r\n return this._authService.canUserDoOperartion(BusinessOperation.ManageWorkGroup);\r\n }\r\n\r\n canManageJobPosition(): boolean{\r\n return this._authService.canUserDoOperartion(BusinessOperation.ManageJobPosition);\r\n }\r\n\r\n canManagePayCategory(): boolean{\r\n return this._authService.canUserDoOperartion(BusinessOperation.ManagePayCategory);\r\n }\r\n\r\n canManageTimesheetBreakDownRule(): boolean{\r\n return this._authService.canUserDoOperartion(BusinessOperation.ManageTimesheetBreakDownRule);\r\n }\r\n\r\n canManageAccount(): boolean{\r\n return this._authService.canUserDoOperartion(BusinessOperation.ManageAllAccount);\r\n }\r\n\r\n canManageProjectColumn(): boolean{\r\n return this._authService.canUserDoOperartion(BusinessOperation.ManageProjectColumn);\r\n }\r\n\r\n poInvoiceDiscrepancyReport(){\r\n this.generatingReport = true;\r\n this._spinner.show(\"reportSpinner\");\r\n this._reportService.generatePoInvoiceDiscrepancyReport(\r\n () => {\r\n this.generatingReport = false;\r\n this._spinner.hide(\"reportSpinner\");\r\n });\r\n }\r\n\r\n generateMonthlyIncomeReport(){\r\n this.generatingReport = true;\r\n this._spinner.show(\"reportSpinner\");\r\n this._reportService.generateMonthlyIncomeReport(\r\n () => {\r\n this.generatingReport = false;\r\n this._spinner.hide(\"reportSpinner\");\r\n });\r\n } \r\n\r\n getUserFullname(){\r\n return this._authService.userFullname;\r\n }\r\n\r\n getUserInitial(){\r\n let firstname = this._authService.userContext.zoesenUser.firstName;\r\n let lastname = this._authService.userContext.zoesenUser.lastName;\r\n\r\n let initial = (firstname ? firstname.substr(0, 1).toUpperCase() : \"\") +\r\n (lastname ? lastname.substr(0, 1).toUpperCase() : \"\");\r\n\r\n return initial;\r\n }\r\n\r\n getUserEmail(){\r\n return this._authService.userContext.zoesenUser.email;\r\n }\r\n\r\n\r\n getMenuItems(){\r\n this.menuItems = [\r\n {\r\n label: \"Home\",\r\n icon: \"pi-fw fas fa-home\",\r\n routerLink: ['/home']\r\n }\r\n ];\r\n\r\n this.addViewLinksMenu();\r\n this.addProjectMenu();\r\n this.addRosterMenu();\r\n this.addTimesheetMenu();\r\n this.addEmployeeMenu();\r\n this.addPayrollMenu();\r\n this.addReportsMenu();\r\n this.addSystemSettingsMenu();\r\n this.addAdminMenu();\r\n this.addUserProfileMenu();\r\n }\r\n\r\n private addViewLinksMenu(){\r\n if (this.canViewLinks()){\r\n let linksMenu = {\r\n label: \"Links\",\r\n icon: \"pi-fw fas fa-link\",\r\n items: []\r\n };\r\n this.userContext.externalLinks.forEach(link => {\r\n linksMenu.items.push({\r\n label: link.name,\r\n icon: \"pi-fw fas fa-external-link-alt\",\r\n url: link.url,\r\n target: \"_blank\"\r\n });\r\n })\r\n\r\n this.menuItems.push(linksMenu);\r\n }\r\n }\r\n\r\n private addProjectMenu(){\r\n if (this.canViewProject()){\r\n let menu = {\r\n label: \"Project\",\r\n icon: \"pi-fw fas fa-tractor\",\r\n routerLink:['/projects']\r\n };\r\n this.menuItems.push(menu);\r\n }\r\n }\r\n\r\n private addTimesheetMenu(){\r\n if (this.canViewTimeSheet()){\r\n let menu = {\r\n label: \"Timesheet\",\r\n icon: \"pi-fw fas fa-user-clock\",\r\n routerLink: ['/timesheets']\r\n };\r\n this.menuItems.push(menu);\r\n }\r\n }\r\n\r\n private addEmployeeMenu(){\r\n if (this.canViewEmployee()){\r\n if (this.canViewEmployeeTrainingRecord()){\r\n let menu = {\r\n label: \"Employee\",\r\n icon: \"pi-fw far fa-address-card\",\r\n items: []\r\n };\r\n\r\n menu.items.push({\r\n label: \"Employee\",\r\n icon: \"pi-fw far fa-address-card\",\r\n routerLink: ['/employees']\r\n });\r\n\r\n menu.items.push({\r\n label: \"Employee Training Record\",\r\n icon: \"pi-fw fas fa-graduation-cap\",\r\n routerLink: ['/employee-training-record']\r\n });\r\n\r\n this.menuItems.push(menu);\r\n }else{\r\n let menu = {\r\n label: \"Employee\",\r\n icon: \"pi-fw far fa-address-card\",\r\n routerLink: ['/employees']\r\n };\r\n\r\n this.menuItems.push(menu);\r\n }\r\n }\r\n }\r\n\r\n private addPayrollMenu(){\r\n if (this.canViewPayrollTimesheet()){\r\n let menu = {\r\n label: \"Payroll\",\r\n icon: \"pi-fw fas fa-hand-holding-usd\",\r\n routerLink: ['/payroll-timesheet']\r\n };\r\n this.menuItems.push(menu);\r\n }\r\n }\r\n\r\n private addRosterMenu(){\r\n if (this.canViewRoster() && this.userContext.rosterProjects.length > 0){\r\n let menu = {\r\n label: \"Roster\",\r\n icon: \"pi-fw fas fa-calendar-alt\",\r\n items: []\r\n };\r\n this.userContext.rosterProjects.forEach(rp => {\r\n var menuItem = {\r\n label: `${rp.title}`,\r\n icon: \"pi-fw fas fa-calendar-alt fa-lg\",\r\n items: [\r\n {\r\n label: \"Active Roster\",\r\n icon: \"pi-fw far fa-calendar-check text-danger fa-lg\",\r\n routerLink: [`/roster`],\r\n queryParams: {'roster-project': rp.id, 'active-roster': 'true'}\r\n },\r\n {\r\n label: \"Inactive Roster\",\r\n icon: \"pi-fw far fa-calendar-times fa-lg\",\r\n routerLink: [`/roster`],\r\n queryParams: {'roster-project': rp.id, 'active-roster': 'false'}\r\n }\r\n ]\r\n };\r\n\r\n menu.items.push(menuItem);\r\n });\r\n\r\n this.menuItems.push(menu);\r\n }\r\n }\r\n\r\n private addReportsMenu(){\r\n if (this.canDownloadReport()){\r\n let menu = {\r\n label: \"Report\",\r\n icon: \"pi-fw fas fa-table\",\r\n items: []\r\n };\r\n\r\n if (this.canExportPoInvoiceDiscrepanctReport()){\r\n menu.items.push({\r\n label: 'PO/Invoice Discrepancy Report',\r\n icon: \"pi-fw far fa-file-excel fa-lg text-success \",\r\n routerLink: ['/po-invoice-discrepancy-report']\r\n });\r\n }\r\n\r\n if (this.canGenerateMonthlyIncomeReport()){\r\n menu.items.push({\r\n label: 'Monthly Income Report',\r\n icon: \"pi-fw far fa-file-excel fa-lg text-success\",\r\n routerLink: ['/monthly-income-report']\r\n });\r\n }\r\n\r\n this.menuItems.push(menu);\r\n }\r\n }\r\n\r\n private addSystemSettingsMenu(){\r\n if (this.canManageSystemSettings()){\r\n let menu = {\r\n label: \"Settings\",\r\n icon: \"pi-fw fas fa-tools\",\r\n items: []\r\n };\r\n\r\n if (this.canManageEmployer()){\r\n menu.items.push({\r\n label: 'Manage Company',\r\n icon: \"pi-fw fas fa-city fa-lg\",\r\n routerLink: ['/manage-company']\r\n });\r\n }\r\n\r\n if (this.canManageClientEngineer()){\r\n menu.items.push({\r\n label: 'Manage Client',\r\n icon: \"pi-fw fas fa-user-cog fa-lg\",\r\n routerLink: ['/client-management']\r\n });\r\n }\r\n\r\n if (this.canManageWorkGroup()){\r\n menu.items.push({\r\n label: 'Manage Work Group',\r\n icon: \"pi-fw fas fa-user-friends fa-lg\",\r\n routerLink: ['/system-data-management'],\r\n queryParams: { entity: 'Work Group'}\r\n });\r\n }\r\n \r\n if (this.canManageJobPosition()){\r\n menu.items.push({\r\n label: 'Manage Job Position',\r\n icon: \"pi-fw fas fa-address-card fa-lg\",\r\n routerLink: ['/system-data-management'],\r\n queryParams: { entity: 'Position'}\r\n });\r\n }\r\n\r\n if (this.canManagePayCategory()){\r\n menu.items.push({\r\n label: 'Manage Pay Category',\r\n icon: \"pi-fw fas fa-money-check-alt fa-lg\",\r\n routerLink: ['/system-data-management'],\r\n queryParams: { entity: 'Pay Category'}\r\n });\r\n }\r\n\r\n if (this.canManageTimesheetBreakDownRule()){\r\n menu.items.push({\r\n label: 'Manage Payroll Timesheet Rules',\r\n icon: \"pi-fw fas fa-comment-dollar fa-lg\",\r\n routerLink: ['/timesheet-breakdown-rule']\r\n });\r\n }\r\n\r\n if (this.canManageRosterCodes()){\r\n menu.items.push({\r\n label: 'Manage Roster Codes',\r\n icon: \"pi-fw far fa-keyboard fa-lg\",\r\n routerLink: ['/manage-roster-code']\r\n });\r\n }\r\n\r\n if (this.canManageHoliday()){\r\n menu.items.push({\r\n label: 'Manage Public Holiday',\r\n icon: \"pi-fw fas fa-umbrella-beach fa-lg\",\r\n routerLink: ['/manage-holiday']\r\n });\r\n }\r\n\r\n if (this.canManageLinks()){\r\n menu.items.push({\r\n label: 'Manage Links',\r\n icon: \"pi-fw fas fa-link fa-lg\",\r\n routerLink: ['/manage-resource']\r\n });\r\n }\r\n\r\n if (this.canManageRosterSettings()){\r\n menu.items.push({\r\n label: 'Manage Roster Settings',\r\n icon: \"pi-fw fas fa-cog fa-lg\",\r\n routerLink: ['/manage-roster-settings']\r\n });\r\n }\r\n\r\n if (this.canManageTrainingCourses()){\r\n menu.items.push({\r\n label: 'Manage Training Courses',\r\n icon: \"pi-fw fa fa-lg fa-graduation-cap\",\r\n routerLink: ['/manage-training-courses']\r\n });\r\n }\r\n\r\n if (this.canManageProjectColumn()){\r\n menu.items.push({\r\n label: 'Manage Project Columns',\r\n icon: \"pi-fw fas fa-columns fa-lg\",\r\n routerLink: ['/manage-project-columns']\r\n });\r\n }\r\n\r\n if (menu.items.length > 0 ){\r\n this.menuItems.push(menu);\r\n }\r\n }\r\n }\r\n\r\n private addAdminMenu(){\r\n let menu: MenuItem = {\r\n label: \"Admin\",\r\n icon: \"pi-fw fas fa-user-lock\",\r\n items: []\r\n };\r\n\r\n if (this.isUserAdmin || this.isUserSysAdmin){\r\n menu.items.push({\r\n label: 'Role Users',\r\n icon: \"pi-fw fas fa-users fa-lg\",\r\n routerLink: ['/user-role-management']\r\n });\r\n menu.items.push({\r\n label: 'Role Permissions',\r\n icon: \"pi-fw fas fa-user-clock fa-lg\",\r\n routerLink: ['/role-operation-management']\r\n });\r\n menu.items.push({\r\n label: 'Project Column Access Settings',\r\n icon: \"pi-fw fas fa-clipboard-list fa-lg\",\r\n routerLink: ['/project-column-access-setting']\r\n });\r\n }\r\n\r\n if (this.canManageAccount()){\r\n menu.items.push({\r\n label: 'Manage Users',\r\n icon: \"pi-fw far fa-user-circle fa-lg\",\r\n routerLink: ['/manage-user']\r\n });\r\n }\r\n\r\n // if (this.isUserSysAdmin){\r\n // menu.items.push({\r\n // label: 'Supporting Data Management',\r\n // icon: \"pi-fw fas fa-database fa-lg\",\r\n // routerLink: ['/data-import']\r\n // });\r\n\r\n // menu.items.push({\r\n // label: 'Import Excel Roster',\r\n // icon: \"pi-fw fas fa-file-import fa-lg\",\r\n // routerLink: ['/import-roster']\r\n // });\r\n // }\r\n\r\n if (menu.items.length > 0 ){\r\n this.menuItems.push(menu);\r\n }\r\n }\r\n\r\n private addUserProfileMenu(){\r\n this.userProfileItems = [\r\n {\r\n label: \"Manage your profile\",\r\n icon: \"pi pi-fw pi-user fa-lg\",\r\n command: () => this.gotoUserProfile()\r\n },\r\n {\r\n label: \"Update password\",\r\n icon: \"pi pi-fw pi-lock fa-lg\",\r\n command: () => this.updatePassword()\r\n },\r\n {\r\n label: \"Sign out\",\r\n icon: \"pi pi-fw pi-sign-out fa-lg\",\r\n command: () => this._authService.logout()\r\n }\r\n ];\r\n }\r\n\r\n private gotoUserProfile(){\r\n this._router.navigate([\"/user-profile\"], { replaceUrl: true, queryParams: {section: \"profile\"}}); \r\n this.showProfileSideBar = false;\r\n }\r\n\r\n private updatePassword(){\r\n this._router.navigate([\"/user-profile\"], { replaceUrl: true, queryParams: {section: \"cred\"}}); \r\n this.showProfileSideBar = false;\r\n }\r\n}\r\n\r\n","
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n

{{getUserFullname()}}

\r\n
{{getUserEmail()}}
\r\n\r\n
\r\n

You are currently a member of:

\r\n\r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { SubSink } from 'subsink';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { PayrollService } from '../services/payroll.service';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { BusinessOperation } from '../shared/models/business-operation';\r\nimport { IDateRange } from '../shared/models/date-range';\r\nimport { PayrollTimesheet } from '../shared/models/payroll-timesheet';\r\n\r\n@Component({\r\n selector: \"pps-payroll-timesheet\",\r\n templateUrl: \"./payroll-timesheet.component.html\"\r\n})\r\nexport class PayrollTimesheetComponent implements OnInit, OnDestroy{\r\n private subs = new SubSink();\r\n smallScreen = false;\r\n\r\n items: MenuItem[] = [{label: \"Payroll\", icon: \"pi-fw fas fa-hand-holding-usd\"}];\r\n spinnerName: string = \"payrollTimesheetSpinner\";\r\n\r\n message: string = \"\";\r\n\r\n yearRange: string;\r\n\r\n selectedDateRange: IDateRange;\r\n payPeriods: IDateRange[] = [];\r\n payrollTimesheets: PayrollTimesheet[] = [];\r\n totalLines = 0;\r\n exporting: boolean = false;\r\n\r\n gridHeaders = [];\r\n\r\n private gridApi;\r\n gridOptions = {\r\n context: { componentParent: this },\r\n defaultColDef: {\r\n filter: true,\r\n sortable: true,\r\n resizable: true,\r\n floatingFilter: true\r\n }\r\n }; \r\n\r\n constructor(private _payrollService: PayrollService,\r\n private _authService: AuthenticationService,\r\n private spinner: NgxSpinnerService,\r\n private _util: PpsUtilityService){}\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(){\r\n let year = new Date().getFullYear();\r\n this.yearRange = `${year-5}:${year+5}`;\r\n \r\n this.gridHeaders = this.getColumnDefs();\r\n this.payPeriods = this._payrollService.getPayPeriods(36);\r\n this.selectedDateRange = this.payPeriods[0];\r\n this.loadPayrollTimesheet();\r\n }\r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n } \r\n\r\n onDateRangeChanged(event){\r\n if (this.selectedDateRange){\r\n this.loadPayrollTimesheet();\r\n } \r\n }\r\n\r\n loadPayrollTimesheet(errorLineOnly: boolean = false){\r\n this.spinner.show(this.spinnerName);\r\n this.subs.sink = this._payrollService.getPayrollTimesheet(this.selectedDateRange)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n if (res.result.length === 0){\r\n this.message = \"No data found!\";\r\n }else{\r\n this.totalLines = res.result.length;\r\n this.payrollTimesheets = errorLineOnly ? res.result.filter(pts => !pts.payCategoryId || pts.units === null) : res.result;\r\n }\r\n }\r\n }, \r\n error => {},\r\n ()=> {\r\n this.spinner.hide(this.spinnerName);\r\n });\r\n }\r\n\r\n exportPayrollTimesheet(){\r\n this.exporting = true;\r\n this.subs.sink = this._payrollService.downloadPayrollTimesheets(\r\n {fromDate: this.selectedDateRange.range.from, toDate: this.selectedDateRange.range.to}, \r\n () => this.exporting = false);\r\n } \r\n\r\n canExportTimeSheet(){\r\n return this._authService.canUserDoOperartion(BusinessOperation.ExportPayrollTimesheet);\r\n }\r\n\r\n getNumberOfErrorLines(){\r\n return this.payrollTimesheets.filter(pts => !pts.payCategoryId || pts.units === null).length;\r\n }\r\n\r\n private getColumnDefs(){\r\n return [\r\n {\r\n headerName: 'Employee No',\r\n field:'employeeNo',\r\n width: 100\r\n },\r\n {\r\n headerName: 'Employee Name',\r\n field:'employee.position.title',\r\n width: 200,\r\n valueGetter: params => this._util.getEmployeeName({firstName: params.data.firstName, lastName: params.data.lastName}, true)\r\n },\r\n {\r\n headerName: 'Employee Position',\r\n field:'positionTitle',\r\n width: 200\r\n },\r\n {\r\n headerName: 'Job',\r\n field:'projectNo',\r\n width: 100\r\n },\r\n {\r\n headerName: 'Date',\r\n field:'day',\r\n width: 170,\r\n //filter: 'agDateColumnFilter',\r\n //filterParams: this.dateFilterParams,\r\n comparator: (date1, date2) => this._util.dateComparator(date1, date2),\r\n valueGetter: this.getDateValue\r\n },\r\n {\r\n headerName: 'Pay Category',\r\n field:'payCategory',\r\n width: 300, \r\n cellStyle: params => this.getPayCategoryCellStyle(params)\r\n },\r\n {\r\n headerName: 'Units',\r\n field:'units',\r\n width: 100,\r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n cellStyle: params => this.getUnitCellStyle(params),\r\n cellRenderer: params => this._util.formatNumber(params.data[params.colDef.field], 2)\r\n },\r\n {\r\n headerName: 'Day',\r\n field:'weekDayName',\r\n width: 80\r\n }\r\n ];\r\n }\r\n\r\n private getPayCategoryCellStyle(params){\r\n var ts = params.data;\r\n if (!ts.payCategoryId){\r\n return {background: \"red\", color: \"yellow\"};\r\n }\r\n\r\n return {};\r\n }\r\n\r\n private getUnitCellStyle(params){\r\n var ts = params.data;\r\n\r\n if (ts.units === null){\r\n return this._util.getNumericCellStyle({borderRightColor:'#eeeeee', background: \"red\", color: \"yellow\"});\r\n }\r\n\r\n return this._util.getNumericCellStyle({borderRightColor:'#eeeeee'});\r\n }\r\n\r\n\r\n private getDateValue(params){\r\n if (params.data[params.colDef.field]){\r\n let value = params.context.componentParent._util.getDateString(params.data[params.colDef.field]);\r\n return value;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n private dateFilterParams = {\r\n comparator: this._util.filterDateComparator,\r\n filterOptions: [\"equals\", \"lessThan\", \"greaterThan\"],\r\n defaultOption: \"greaterThan\"\r\n };\r\n\r\n private numberFilterParams = {\r\n filterOptions: [\"equals\", \"lessThan\", \"greaterThan\"],\r\n defaultOption: \"equals\"\r\n };\r\n}","\r\n
\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n 0\"\r\n style=\"cursor:pointer\"\r\n severity=\"danger\"\r\n pTooltip=\"Lines with possible error: {{getNumberOfErrorLines()}}. Click to show error data.\"\r\n tooltipPosition=\"left\"\r\n (click)=\"loadPayrollTimesheet(true)\"\r\n value=\"{{getNumberOfErrorLines()}}\">\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n

Generating payroll timesheet...

\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { PayrollTimesheetComponent } from './payroll-timesheet.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AgGridModule} from 'ag-grid-angular';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { BreadcrumbModule } from 'primeng/breadcrumb';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { DividerModule } from 'primeng/divider';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { ToolbarModule } from 'primeng/toolbar';\r\nimport { AuthGuardService } from '../services/auth-guard.service';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { NgxSpinnerModule } from 'ngx-spinner';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgxSpinnerModule,\r\n AgGridModule.withComponents([]),\r\n\r\n BadgeModule,\r\n BreadcrumbModule,\r\n ButtonModule,\r\n CalendarModule,\r\n DividerModule,\r\n DropdownModule,\r\n ToastModule,\r\n ToolbarModule,\r\n TooltipModule,\r\n \r\n RouterModule.forChild([\r\n {path: 'payroll-timesheet', component: PayrollTimesheetComponent, canActivate: [AuthGuardService] }\r\n ])\r\n ],\r\n declarations:[\r\n PayrollTimesheetComponent\r\n ]\r\n})\r\nexport class PayrollModule{\r\n}","import { Component, OnInit, AfterViewChecked, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\r\nimport { Project } from '../shared/models/project';\r\nimport { Employee} from '../shared/models/employee';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { IEntity } from '../shared/models/entity';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators } from '@angular/forms';\r\nimport { bankGuaranteeRequiredValidator } from './validators/bank-guarantee-required.validator';\r\nimport { AccessPermission } from '../shared/models/access-permission';\r\nimport { poRequiredValidator } from './validators/po-required.validator';\r\nimport { Company, CompanyRepresentative } from '../shared/models/company';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { ProjectService } from '../services/project.service';\r\nimport { SubSink } from 'subsink';\r\nimport { IProjectComment } from '../shared/models/project-comment';\r\nimport { format, parseISO } from 'date-fns';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { IDocument } from '../shared/models/document';\r\nimport { DocumentService } from '../services/document-service';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { EmployeeBase } from '../shared/models/employee-base';\r\nimport { UserRoleService } from '../services/user-role.service';\r\nimport { User } from '../shared/models/user';\r\n\r\ninterface IAttachment{\r\n fileName: string;\r\n fileSize: string;\r\n}\r\n\r\n@Component({\r\n selector: 'pps-project-form',\r\n templateUrl: './project-form.component.html',\r\n styleUrls: ['./project-form.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ProjectFormComponent implements OnInit, AfterViewChecked{\r\n smallScreen: boolean = false;\r\n private subs = new SubSink();\r\n \r\n projectColumnAccessPermission: any = {};\r\n\r\n project: Project = new Project();\r\n selectedProjectStatus:any = null;\r\n\r\n attachment: IAttachment = { fileName: \"\", fileSize: \"0\"};\r\n projectAttachment: File = null;\r\n\r\n projectComments: IProjectComment[] = [];\r\n loadingComment = false;\r\n commentInEditing: IProjectComment = null;\r\n defaultQuotingDeadline = new Date();\r\n sourceColumnId = \"\"; // Indicates event source to open this form\r\n activeTabIndex = 0;\r\n\r\n clients: Company[] = [];\r\n representatives: any = {};\r\n\r\n jobTypes: IEntity[] = [];\r\n materialProcurementStatuses: IEntity[] = [];\r\n selectedMaterialStatus: any = null;\r\n projectStatuses: IEntity[] = [];\r\n \r\n clientEngineers: CompanyRepresentative[] = [];\r\n responsibleEngineers: Employee[] = [];\r\n installationProgresses: IEntity[] = [];\r\n\r\n projectForm: UntypedFormGroup;\r\n submitted = false;\r\n\r\n currentUser: User;\r\n\r\n constructor(\r\n private dialogRef: DynamicDialogRef,\r\n private dlgConfig: DynamicDialogConfig,\r\n private projectService: ProjectService,\r\n private documentService: DocumentService,\r\n public util: PpsUtilityService,\r\n private formBuilder: UntypedFormBuilder,\r\n private _toast: ToastService,\r\n private _userRoleService: UserRoleService,\r\n private changeDetectorRef:ChangeDetectorRef,\r\n private _confirmationService: ConfirmationService,\r\n private breakpointObserver: BreakpointObserver) {\r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n });\r\n this.setInitialValues();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.defaultQuotingDeadline.setHours(17, 0, 0);\r\n let canAccessComment = this.hasAccess(\"ProjectComment\");\r\n let canAccessAttachment = this.hasAccess(\"ProjectAttachment\");\r\n let hasBudgetTab = this.showBudgetTab();\r\n\r\n if (this.clickedOnBudgetColumn()){\r\n this.activeTabIndex = 3;\r\n }else{\r\n this.activeTabIndex = this.sourceColumnId === \"projectComment\" ? 3 : this.sourceColumnId === \"hasAttachment\" ? canAccessComment ? 4 : 3 : 0;\r\n if (hasBudgetTab && this.activeTabIndex > 0){\r\n this.activeTabIndex ++;\r\n }\r\n }\r\n\r\n if (canAccessComment){\r\n this.loadProjectComments();\r\n }\r\n\r\n if (canAccessAttachment){\r\n this.loadProjectAttachments();\r\n }\r\n\r\n this.getUploadUrl(this.PpsProject.id);\r\n }\r\n\r\n ngOnDestroy():void{\r\n this.subs.unsubscribe();\r\n } \r\n\r\n ngAfterViewChecked()\r\n {\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n onMaterialStatusChanged(evt){\r\n if (evt){\r\n this.selectedMaterialStatus = evt.value;\r\n }\r\n }\r\n\r\n onClientChange(evt){\r\n if (evt){\r\n let client = evt.value;\r\n this.clientEngineers = !!client ? this.representatives[client.id] : [];\r\n if (this.project.client?.id !== this.projectForm.controls[\"client\"].value?.id){\r\n this.projectForm.controls[\"clientEngineers\"].reset();\r\n }\r\n }\r\n }\r\n\r\n onProjectStatusChanged(evt){\r\n if (!evt || !evt.value){\r\n return;\r\n }\r\n\r\n this.selectedProjectStatus = evt.value;\r\n\r\n this.f.poAmount.setValue(this.poReceived ? this.project.poAmount : 0);\r\n this.f.poNumber.setValue(this.poReceived ? this.project.poNumber : \"\");\r\n\r\n if (this.selectedProjectStatus.name === \"RFQ\" ){\r\n this.f.quotingDeadline.setValidators(Validators.required);\r\n }else{\r\n this.f.quotingDeadline.clearValidators();\r\n }\r\n\r\n this.f.quotingDeadline.updateValueAndValidity();\r\n }\r\n\r\n onCompletionPercentageChanged(event){\r\n let poAmount = this.f.poAmount.value;\r\n let per = this.f.completionPercentage.value;\r\n if (!isNaN(poAmount) && !isNaN(per)){\r\n let estimatedCompletionValue = (poAmount * per / 100.0);\r\n this.project.estimatedCompletionValue = estimatedCompletionValue;\r\n this.f.estimatedCompletionValue.setValue(estimatedCompletionValue);\r\n }\r\n }\r\n\r\n onContractNumberChanged($event){\r\n if (!this.f.contractNumber.value){\r\n this.f.bankGuaranteeAmount.setErrors(null);\r\n this.f.bankGuaranteeExpirationDate.setErrors(null);\r\n }\r\n } \r\n\r\n save(){\r\n this.submitted = true;\r\n\r\n if (this.projectForm.invalid){\r\n return;\r\n }\r\n\r\n if (this.PpsProject.comment?.trim()){\r\n this.postComment(null, () => this.dialogRef.close(this.PpsProject));\r\n }else{\r\n this.dialogRef.close(this.PpsProject);\r\n }\r\n }\r\n\r\n cancel(){\r\n this.dialogRef.close();\r\n }\r\n\r\n reset(){\r\n this.submitted = false;\r\n this.projectForm.reset();\r\n }\r\n\r\n get f(){\r\n return this.projectForm.controls;\r\n }\r\n\r\n private setInitialValues(){\r\n this.Companies = this.dlgConfig.data.companies;\r\n this.Representatives = this.dlgConfig.data.representatives;\r\n this.PpsEntites = this.dlgConfig.data.ppsEntites;\r\n this.PpsProject = this.dlgConfig.data.ppsProject;\r\n this.PpsProjectColumnAccessPermission = this.dlgConfig.data.ppsProjectColumnAccessPermission;\r\n this.sourceColumnId = this.dlgConfig.data.sourceColumnId;\r\n this.currentUser = this.dlgConfig.data.currentUser;\r\n }\r\n\r\n set PpsEntites(projectEntities: any){\r\n this.jobTypes = projectEntities.jobTypes;\r\n this.materialProcurementStatuses = projectEntities.materialProcurementStatuses;\r\n this.projectStatuses = projectEntities.projectStatuses;\r\n this.installationProgresses = projectEntities.installationProgresses;\r\n this.responsibleEngineers = projectEntities.responsibleEngineers;\r\n }\r\n\r\n set PpsProject(prj: Project){\r\n this.project = prj;\r\n\r\n this.getProjectFormGroup(this.project);\r\n this.onProjectStatusChanged({value:this.project.projectStatus});\r\n this.onMaterialStatusChanged({value:this.project.materialProcurementStatus});\r\n this.onClientChange({value:this.project.client});\r\n }\r\n\r\n set PpsProjectColumnAccessPermission(projectColumnAccessPermission){\r\n this.projectColumnAccessPermission = projectColumnAccessPermission;\r\n for (let formControlName in this.projectForm.controls){\r\n let colName = formControlName.charAt(0).toUpperCase() + formControlName.slice(1);\r\n\r\n if (this.projectColumnAccessPermission[colName] &&\r\n this.projectColumnAccessPermission[colName].accessPermission === AccessPermission.ReadAccess){\r\n this.projectForm.controls[formControlName].disable({onlySelf: true});\r\n }\r\n }\r\n\r\n if (this.projectColumnAccessPermission[\"ProjectComment\"] &&\r\n this.projectColumnAccessPermission[\"ProjectComment\"].accessPermission === AccessPermission.ReadAccess){\r\n this.projectForm.controls[\"comment\"].disable({onlySelf: true});\r\n } \r\n }\r\n\r\n set Companies(companies){\r\n this.clients = companies;\r\n }\r\n\r\n set Representatives(reps){\r\n this.representatives = reps;\r\n }\r\n\r\n get PpsProject(){\r\n for (let formControlName in this.projectForm.controls){\r\n this.project[formControlName] = this.projectForm.controls[formControlName].value;\r\n }\r\n\r\n return this.project;\r\n }\r\n\r\n private getProjectFormGroup(project: Project){\r\n this.projectForm = this.formBuilder.group({\r\n \"projectNo\": [project.projectNo, [Validators.required, Validators.minLength(7)]],\r\n \"projectStatus\": [project.projectStatus, Validators.required],\r\n \"poNumber\": [project.poNumber],\r\n \"poAmount\": [project.poAmount],\r\n \"description\": [project.description, Validators.required],\r\n \"jobType\": [project.jobType, Validators.required],\r\n \"responsibleEngineer\": [project.responsibleEngineer, Validators.required],\r\n \"client\": [project.client],\r\n \"clientEngineers\": [project.clientEngineers],\r\n \"quotingDeadline\": [project.quotingDeadline],\r\n \"materialProcurementStatus\": [project.materialProcurementStatus],\r\n \"materialEstimateDeliveryDate\": [project.materialEstimateDeliveryDate],\r\n \"materialActualArrivalDate\": [project.materialActualArrivalDate],\r\n \"materialStatusMemo\": [project.materialStatusMemo],\r\n \"installationProgress\": [project.installationProgress],\r\n \"workOrder\": [project.workOrder],\r\n \"targetStartDate\": [project.targetStartDate],\r\n \"targetCompletionDate\": [project.targetCompletionDate],\r\n \"completionPercentage\": [project.completionPercentage, [Validators.min(0), Validators.max(100)]],\r\n \"budgetHour\": [project.budgetHour, [Validators.min(0), Validators.max(100000)]],\r\n \"plannedHour\": [project.plannedHour, [Validators.min(0), Validators.max(100000)]],\r\n \"actualHour\": [project.actualHour],\r\n \"contractNumber\": [project.contractNumber],\r\n \"bankGuaranteeAmount\": [project.bankGuaranteeAmount],\r\n \"bankGuaranteeExpirationDate\": [project.bankGuaranteeExpirationDate],\r\n \"earnedManHours\": [project.earnedManHours],\r\n \"estimatedCompletionValue\": [project.estimatedCompletionValue],\r\n \"comment\": [project.comment],\r\n \"commentInEditing\": [project.comment],\r\n\r\n \"directLabor\": [project.directLabor],\r\n \"plantAndEquipment\": [project.plantAndEquipment],\r\n \"materialsAndConsumbles\": [project.materialsAndConsumbles],\r\n \"management\": [project.management],\r\n \"thirdParty\": [project.thirdParty],\r\n }, \r\n {\r\n validator: Validators.compose([\r\n bankGuaranteeRequiredValidator,\r\n poRequiredValidator])\r\n });\r\n\r\n this.f.completionPercentage.valueChanges.subscribe(value=>{\r\n this.onCompletionPercentageChanged(null);\r\n });\r\n }\r\n\r\n errorInInfoFields(): boolean{\r\n return this.submitted && (\r\n !!this.f.projectNo.errors ||\r\n !!this.f.projectStatus.errors ||\r\n !!this.f.poNumber.errors ||\r\n !!this.f.poAmount.errors ||\r\n !!this.f.description.errors ||\r\n !!this.f.jobType.errors ||\r\n !!this.f.responsibleEngineer.errors ||\r\n !!this.f.clientEngineers.errors ||\r\n !!this.f.quotingDeadline.errors);\r\n }\r\n\r\n errorInExecutionFields(): boolean{\r\n return this.submitted && (\r\n !!this.f.installationProgress.errors ||\r\n !!this.f.workOrder.errors ||\r\n !!this.f.targetStartDate.errors ||\r\n !!this.f.targetCompletionDate.errors ||\r\n !!this.f.budgetHour.errors ||\r\n !!this.f.plannedHour.errors ||\r\n !!this.f.completionPercentage.errors ||\r\n !!this.f.contractNumber.errors ||\r\n !!this.f.bankGuaranteeAmount.errors ||\r\n !!this.f.bankGuaranteeExpirationDate.errors ||\r\n !!this.f.estimatedCompletionValue.errors);\r\n }\r\n\r\n errorInMaterialFields(): boolean{\r\n return this.submitted && (\r\n !!this.f.materialEstimateDeliveryDate.errors ||\r\n !!this.f.materialActualArrivalDate.errors);\r\n }\r\n\r\n compareFn(a, b) {\r\n return a && b && +a.id === +b.id;\r\n }\r\n\r\n isNewProject(){\r\n return this.project === null || this.project.id === 0;\r\n }\r\n\r\n hasAccess(colName){\r\n return this.projectColumnAccessPermission[colName] && (\r\n this.projectColumnAccessPermission[colName].accessPermission === AccessPermission.ReadAccess ||\r\n this.projectColumnAccessPermission[colName].accessPermission === AccessPermission.WriteAccess ||\r\n this.projectColumnAccessPermission[colName].accessPermission === AccessPermission.ExecuteAccess\r\n );\r\n }\r\n\r\n showBudgetTab(){\r\n const budgetColumns = [\r\n \"DirectLabor\",\r\n \"PlantAndEquipment\",\r\n \"MaterialsAndConsumbles\",\r\n \"Management\",\r\n \"ThirdParty\"\r\n ];\r\n\r\n for(let i = 0; i < budgetColumns.length; i ++){\r\n if (this.projectColumnAccessPermission[budgetColumns[i]] && \r\n this.projectColumnAccessPermission[budgetColumns[i]].accessPermission !== AccessPermission.NoAccess){\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n readonlyAccess(colName){\r\n return this.projectColumnAccessPermission[colName] &&\r\n this.projectColumnAccessPermission[colName].accessPermission === AccessPermission.ReadAccess;\r\n }\r\n\r\n get jobLostOrCancelled(): boolean{\r\n return this.selectedProjectStatus && (this.selectedProjectStatus.name === \"Job Lost\" || this.selectedProjectStatus.name === \"Job Cancelled\");\r\n }\r\n\r\n get poReceived(): boolean{\r\n return this.selectedProjectStatus && this.selectedProjectStatus.name === \"PO Received\" && this.selectedProjectStatus.entityCategory === 2;\r\n }\r\n \r\n get needMaterialEstimateDeliveryDate(): boolean{\r\n return (!!this.selectedMaterialStatus && \r\n (this.selectedMaterialStatus.name === \"PO Raised\" || this.selectedMaterialStatus.name === \"Under Delivery\") &&\r\n this.selectedMaterialStatus.entityCategory === 8);\r\n }\r\n\r\n get needMaterialActualArrivalDate(): boolean{\r\n return (!!this.selectedMaterialStatus && \r\n this.selectedMaterialStatus.name === \"Material Arrived\" &&\r\n this.selectedMaterialStatus.entityCategory === 8);\r\n }\r\n\r\n // Comment tab\r\n showDisplayPostButton(){\r\n return this.projectColumnAccessPermission[\"ProjectComment\"] &&\r\n this.projectColumnAccessPermission[\"ProjectComment\"].accessPermission === AccessPermission.WriteAccess;\r\n }\r\n \r\n isExistingProject(){\r\n return this.PpsProject.id > 0;\r\n }\r\n\r\n loadProjectComments(){\r\n this.projectComments = [];\r\n this.loadingComment = true;\r\n this.commentInEditing = null;\r\n this.subs.sink = this.projectService.getProjectComments(this.PpsProject.id)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.projectComments = res.result;\r\n }\r\n })\r\n .add(()=>this.loadingComment = false);\r\n }\r\n\r\n postComment(comment: IProjectComment, fnAfter = null){\r\n var projectComment: IProjectComment = comment === null ? {\r\n commentId: 0,\r\n commentDate: new Date(),\r\n comment: this.PpsProject.comment\r\n } : comment;\r\n\r\n this.commentInEditing = null;\r\n if (projectComment.comment?.trim()){\r\n this.subs.sink = this.projectService.addProjectComment(this.PpsProject.id, projectComment)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.f.comment.setValue(\"\");\r\n\r\n this.loadProjectComments();\r\n }else{\r\n this._toast.failed(`Failed to post comment: ${res.errors.join(\";\")}`, 5000, \"formToast\");\r\n }\r\n })\r\n .add(() => {\r\n if (fnAfter){\r\n fnAfter();\r\n }\r\n });\r\n }else{\r\n if (!projectComment.comment?.trim()){\r\n this._toast.failed(\"You cannot post empty comment\", 5000, \"formToast\");\r\n }\r\n }\r\n }\r\n\r\n canEditComment(addBy: string){\r\n return addBy === this.currentUser.zoesenUserId;\r\n }\r\n\r\n startEditComment(comment: IProjectComment){\r\n this.commentInEditing = comment;\r\n this.f.commentInEditing.setValue(comment.comment);\r\n }\r\n cancelCommentEditing(){\r\n this.commentInEditing = null;\r\n this.f.commentInEditing.setValue(\"\");\r\n }\r\n\r\n getDate(dateValue:Date): string{\r\n try{\r\n return format(new Date(dateValue), \"dd/MM/yyyy hh:mm:ss a\");\r\n }\r\n catch(e){\r\n console.log(dateValue);\r\n }\r\n }\r\n\r\n updatingComment = false;\r\n updateComment(){\r\n this.updatingComment = true;\r\n this.commentInEditing.comment = this.f.commentInEditing.value;\r\n this.commentInEditing.commentDate = new Date();\r\n console.log(this.commentInEditing);\r\n this.postComment(this.commentInEditing, () => this.updatingComment = false);\r\n }\r\n\r\n // project attachment\r\n documents: IDocument[] = [];\r\n loadingAttachments = false;\r\n loadProjectAttachments(){\r\n this.projectComments = [];\r\n this.loadingAttachments = true;\r\n this.subs.sink = this.projectService.getProjectAttachments(this.PpsProject.id)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.documents = res.result;\r\n console.log(this.documents);\r\n }\r\n })\r\n .add(()=>this.loadingAttachments = false);\r\n }\r\n uploadUrl: string;\r\n getUploadUrl(projectId: number){\r\n this.uploadUrl= this.projectService.getAttachmentUploadUrl(projectId);\r\n }\r\n\r\n beforeProjectAttachmentUpload(event){\r\n console.log(event);\r\n }\r\n\r\n onProjectAttachmentUpload(event){\r\n for(let file of event.files) {\r\n //this.uploadedFiles.push(file);\r\n console.log(file.name + \" \" + file.size);\r\n }\r\n\r\n this.loadProjectAttachments();\r\n }\r\n\r\n dragOverDropZone = false;\r\n mouseOverDropArea(evt){\r\n this.dragOverDropZone = true;\r\n }\r\n\r\n mouseOutDropArea(evt){\r\n this.dragOverDropZone = false;\r\n }\r\n\r\n getUploadDate(uploadDate){\r\n return format(uploadDate, \"dd/MM/dddd HH:mm\");\r\n }\r\n\r\n downloadAttachment(docUrl: string, filename: string){\r\n this.documentService.download(docUrl, 2, filename, null);\r\n }\r\n\r\n deleteAttachment(filename: string, originalFilename: string){\r\n this._confirmationService.confirm({\r\n header: `Delete Attachment`,\r\n message: `Please confirm that you want to delete ${originalFilename}?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n key: \"deleteAttachment\",\r\n accept: () => {\r\n this.subs.sink = this.projectService.deleteProjectAttachment(this.PpsProject.id, filename)\r\n .subscribe(res=>{\r\n if (res.succeed){\r\n this.loadProjectAttachments();\r\n }else{\r\n this._toast.failed(\"Failed to delete the attachment\");\r\n }\r\n });\r\n }\r\n }); \r\n }\r\n\r\n private clickedOnBudgetColumn(){\r\n return this.sourceColumnId === \"directLabor\" ||\r\n this.sourceColumnId === \"plantAndEquipment\" ||\r\n this.sourceColumnId === \"materialsAndConsumbles\" ||\r\n this.sourceColumnId === \"management\" ||\r\n this.sourceColumnId === \"thirdParty\";\r\n }\r\n}\r\n","\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Minimal length is 7\r\n Project no is required\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Project status is required\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n PO# is required!\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n PO value is required!\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Project description is required\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Job type is required\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n {{ util.getEmployeeName(item) }}{{item.active ? \"\" : \" - (inactive)\"}}\r\n \r\n \r\n \r\n \r\n \r\n Responsible engineer is required\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Deadline is required when project status is RFQ!\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Valid range: 0-100,000 hours\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Valid range: 0-100,000 hours\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Valid value 0-100\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Required when contract number is provided\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Required when contract number is provided\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n

{{util.getEmployeeName(comment.commentBy)}}

\r\n {{getDate(comment.commentDate)}}\r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n

{{comment.comment}}

\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
Drop your file here
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n 0\">\r\n \r\n Document\r\n Size (Bytes)\r\n Upload By\r\n Upload Date\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{document.originalFile}}\r\n \r\n \r\n {{util.formatNumber(document.size)}}\r\n {{util.getEmployeeName(document.addBy)}}\r\n {{getUploadDate(document.addDate)}}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AgRendererComponent } from 'ag-grid-angular';\r\n\r\n@Component({\r\n selector: 'pps-project-invoice-action',\r\n template: `\r\n \r\n\r\n \r\n `,\r\n styles: [\r\n ],\r\n})\r\nexport class ProjectInvoiceActionComponent implements AgRendererComponent {\r\n params: any;\r\n\r\n refresh(params: any): boolean {\r\n return false;\r\n }\r\n\r\n agInit(params: import(\"ag-grid-community\").ICellRendererParams): void {\r\n this.params = params;\r\n }\r\n\r\n afterGuiAttached?(params?: import(\"ag-grid-community\").IAfterGuiAttachedParams): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n showInvoice(){\r\n this.params.context.componentParent.showInvoiceImage(this.params.data);\r\n }\r\n\r\n deleteInvoice(){\r\n this.params.context.componentParent.deleteInvoice(this.params.data);\r\n }\r\n\r\n get canDeleteInvoice(){\r\n return this.params.context.componentParent.parent.canDeleteInvoice();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Invoice } from '../shared/models/invoice';\r\nimport { format} from 'date-fns';\r\nimport { DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\n\r\n@Component({\r\n selector: 'pps-project-invoice-form',\r\n templateUrl: './project-invoice-form.component.html',\r\n styleUrls: ['./project-invoice-form.component.css']\r\n})\r\nexport class ProjectInvoiceFormComponent implements OnInit {\r\n invoice: Invoice = new Invoice();\r\n invoiceImage: File = null;\r\n fileToUpload: any = null;\r\n\r\n imageUrl: string = \"\";\r\n fileSize: string = \"\";\r\n\r\n constructor(\r\n private _dialogRef: DynamicDialogRef,\r\n private _util: PpsUtilityService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.init();\r\n }\r\n\r\n private init(){\r\n this.fileToUpload = {\r\n isImage: false,\r\n name: \"\",\r\n width: 0,\r\n height: 0,\r\n fileSize: \"\",\r\n previewSize: \"100% 190px\"\r\n };\r\n }\r\n\r\n save(form){\r\n if (form.invalid){\r\n return;\r\n }\r\n\r\n let formData = new FormData();\r\n if (this.invoiceImage){\r\n formData.append(\"ZoesenDocument\", this.invoiceImage);\r\n }\r\n\r\n for(var name in this.invoice){\r\n if (this.invoice.hasOwnProperty(name)){\r\n var value = this.invoice[name];\r\n if (typeof value.getMonth === 'function'){ // Is of Date type\r\n value = format(value, \"dd/MM/yyyy\");\r\n }\r\n formData.append(name, value);\r\n }\r\n }\r\n\r\n this._dialogRef.close(formData);\r\n }\r\n\r\n cancel(){\r\n this._dialogRef.close();\r\n }\r\n \r\n clearAttachment(){\r\n this.init();\r\n this.invoiceImage = null;\r\n this.imageUrl = \"\";\r\n }\r\n\r\n onFileSelectionChange(event: any) {\r\n if (event.target.files && event.target.files[0]) {\r\n this.invoiceImage = event.target.files[0];\r\n this.fileToUpload = {\r\n isImage: false,\r\n name: this.invoiceImage.name,\r\n width: 0,\r\n height: 0,\r\n fileSize: this._util.formatBytes(this.invoiceImage.size)\r\n };\r\n\r\n this.imageUrl = \"\";\r\n \r\n if (this.invoiceImage.type.startsWith(\"image/\")){\r\n this.fileToUpload.isImage = true;\r\n var reader = new FileReader();\r\n reader.onload = (event: any) => {\r\n this.imageUrl = `url(${event.target.result})`;\r\n let img = new Image();\r\n img.src = event.target.result;\r\n img.onload = () => {\r\n this.fileToUpload.width = img.width;\r\n this.fileToUpload.height = img.height;\r\n\r\n let ratio = img.width / img.height;\r\n\r\n this.fileToUpload.previewSize = `${(190 * ratio).toFixed(0)}px 190px`;\r\n }\r\n }\r\n reader.readAsDataURL(this.invoiceImage);\r\n }\r\n }else{\r\n this.invoiceImage = null;\r\n }\r\n }\r\n}\r\n","
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Invoice No is required\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n Invoice value is required!\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Date is required\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { Invoice } from '../shared/models/invoice';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { ImageService } from '../services/image.service';\r\nimport { ProjectInvoiceActionComponent } from './project-invoice-action.component';\r\nimport { ProjectService } from '../services/project.service';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\nimport { Project } from '../shared/models/project';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { format, formatISO, isValid, parse } from 'date-fns';\r\nimport { InvoiceService } from '../services/invoice.service';\r\nimport * as _ from 'lodash-es';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'pps-project-invoice-list',\r\n templateUrl: './project-invoice-list.component.html',\r\n styles: [`\r\n #project-invoice .ag-theme-alpine .ag-root-wrapper{\r\n border-radius: 0px !important;\r\n }\r\n `],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ProjectInvoiceListComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n\r\n private project: Project;\r\n private projectId: number;\r\n private parent:any = null;\r\n private gridApi;\r\n\r\n invoices: Invoice[] = [];\r\n invoiceTotal: Invoice[] = [];\r\n gridHeaders: any = [];\r\n useAsModalDialog: boolean = true;\r\n context:any = {};\r\n\r\n topOptions = {\r\n alignedGrids: [],\r\n getRowId: param => param.data.id,\r\n suppressHorizontalScroll: true,\r\n defaultColDef: {\r\n resizable: true\r\n }\r\n };\r\n\r\n bottomOptions = {\r\n alignedGrids: []\r\n };\r\n\r\n constructor(\r\n private _dialogRef: DynamicDialogRef,\r\n private _dialogConfig: DynamicDialogConfig,\r\n private util: PpsUtilityService,\r\n private imageService: ImageService,\r\n private _confirm: ConfirmationService,\r\n private projectService: ProjectService,\r\n private invoiceService: InvoiceService,\r\n private toast: ToastService\r\n ) {\r\n this.topOptions.alignedGrids.push(this.bottomOptions);\r\n this.bottomOptions.alignedGrids.push(this.topOptions);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.parent = this._dialogConfig.data.parent;\r\n this.context = {componentParent: this};\r\n this.gridHeaders = this.getColumnDefs();\r\n\r\n this.setData(this._dialogConfig.data.project);\r\n }\r\n\r\n setData(project: Project){\r\n this.project = _.cloneDeep(project);\r\n \r\n this.invoices = this.project.invoices;\r\n let total: number = 0;\r\n this.invoices.forEach(inv => total += inv.invoiceValue);\r\n\r\n this.invoiceTotal = [{\r\n id:0,\r\n invoiceNo: \"Total\",\r\n invoiceValue: total,\r\n invoiceDate: project.poNumber ? \"PO#: \" + project.poNumber : null,\r\n incomeMonth: project.poAmount ? this.util.formatCurrency(project.poAmount) : null,\r\n memo: \"\",\r\n invoiceImageUrl: \"\",\r\n originalInvoiceFilename: \"\"\r\n }];\r\n }\r\n\r\n cancel(){\r\n this._dialogRef.close();\r\n }\r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n } \r\n\r\n showInvoiceImage(invoice){\r\n this.imageService.showInvoiceImage(invoice, () => {});\r\n }\r\n\r\n deleteInvoice(invoice: Invoice){\r\n this._confirm.confirm({\r\n header: \"Delete Invoice\",\r\n message: `Are you sure that you want to delete invoice: ${invoice.invoiceNo}?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => {\r\n this.subs.sink = this.projectService.deleteProjectInvoice(this.project.id, invoice.id)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.toast.succeeded(`Invoice ${invoice.invoiceNo} has been deleted`);\r\n this.invoices = this.invoices.filter(i => i.id !== invoice.id);\r\n this.parent.resetInvoice(this.project.id, this.invoices);\r\n \r\n this.invoiceTotal[0].invoiceValue = 0;\r\n this.invoices.forEach(inv => this.invoiceTotal[0].invoiceValue += inv.invoiceValue); \r\n this.gridApi.setRowData(this.invoiceTotal);\r\n }else{\r\n this.toast.failed(`Failed to delete invoice ${invoice.invoiceNo}`);\r\n }\r\n });\r\n }});\r\n }\r\n\r\n getColumnDefs(){\r\n let canUpdate = this.parent.canUpdateInvoice();\r\n \r\n return [\r\n {\r\n headerName: 'Invoice No',\r\n field:'invoiceNo',\r\n filter: true,\r\n sortable: true,\r\n resizable: true,\r\n width: 100,\r\n editable: this.isCellEditable,\r\n onCellValueChanged: this.invoiceChanged,\r\n headerComponentParams: {\r\n template: this.getEditableHeaderComponent(canUpdate, 'Double click to edit invoice no')\r\n } \r\n },\r\n {\r\n headerName: 'Value',\r\n field:'invoiceValue',\r\n filter: true,\r\n sortable: true,\r\n width: 100,\r\n cellStyle: this.util.getNumericCellStyle,\r\n valueFormatter: this.formatInvoiceValue,\r\n editable: this.isCellEditable,\r\n onCellValueChanged: this.invoiceChanged,\r\n headerComponentParams: {\r\n template: this.getEditableHeaderComponent(canUpdate, 'Double click to edit invoice value')\r\n }\r\n },\r\n {\r\n headerName: 'Date',\r\n field:'invoiceDate',\r\n filter: true,\r\n sortable: true,\r\n comparator: (date1, date2) => this.util.dateComparator(date1, date2),\r\n width: 120,\r\n cellStyle: {textAlign: \"center\"},\r\n valueGetter: this.getDateValue,\r\n editable: this.isCellEditable,\r\n onCellValueChanged: this.invoiceChanged,\r\n valueParser: this.validateDateValue,\r\n headerComponentParams: {\r\n template: this.getEditableHeaderComponent(canUpdate, 'Double click to edit invoice date')\r\n }\r\n },\r\n {\r\n headerName: 'Income Month',\r\n field:'incomeMonth',\r\n filter: true,\r\n sortable: true,\r\n comparator: (date1, date2) => this.util.dateComparator(date1, date2),\r\n width: 150,\r\n cellStyle: {textAlign: \"center\"},\r\n valueGetter: this.getDateValue,\r\n editable: this.isCellEditable,\r\n onCellValueChanged: this.invoiceChanged,\r\n valueParser: this.validateDateValue,\r\n headerComponentParams: {\r\n template: this.getEditableHeaderComponent(canUpdate, 'Double click to edit income month')\r\n } \r\n },\r\n {\r\n headerName: \"Invoice\",\r\n field: \"value\",\r\n cellRenderer: ProjectInvoiceActionComponent,\r\n colId: \"params\",\r\n cellStyle: {textAlign: \"center\"},\r\n width: 220\r\n }\r\n ];\r\n }\r\n\r\n private getEditableHeaderComponent(canUpdate: boolean, title: string): string{\r\n return '
' +\r\n ' ' +\r\n '
' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n ' ' +\r\n (canUpdate ? '' : '') +\r\n ' ' +\r\n ' ' +\r\n '
' +\r\n '
' \r\n }\r\n\r\n private getDateValue(params){\r\n let val = params.data[params.colDef.field];\r\n if (params.data.id === 0){ // Total line;\r\n return val; \r\n }\r\n\r\n if (typeof val === 'string' || val instanceof String){\r\n val = new Date(val as string);\r\n }\r\n\r\n if (val && typeof val.getMonth === 'function' ){\r\n let value = params.context.componentParent.util.getDateString(val);\r\n return value;\r\n }\r\n\r\n return val;\r\n }\r\n\r\n private validateDateValue(params){\r\n let newValue = params.newValue;\r\n let oldValue = params.oldValue;\r\n let invalidDate = false;\r\n\r\n try{\r\n if (!isValid(parse(newValue, \"dd/MM/yyyy\", new Date()))){\r\n invalidDate = true;\r\n }\r\n }catch(e){\r\n invalidDate = true;\r\n }\r\n\r\n if (invalidDate){\r\n params.api.stopEditing(true);\r\n\r\n params.context.componentParent._confirm.confirm({\r\n header: \"Invalid Date\",\r\n message: `Value entered [${newValue}] is not a valid date. Valid date format: dd/mm/yyyy.`,\r\n icon: \"pi pi-question-circle\",\r\n defaultFocus: \"accept\",\r\n key: \"alert\",\r\n accept: () => {\r\n }});\r\n\r\n return oldValue;\r\n }\r\n\r\n return parse(newValue, \"dd/MM/yyyy\", new Date());\r\n }\r\n\r\n private invoiceChanged(params){\r\n let _this = params.context.componentParent;\r\n let projectInvoice = _.cloneDeep(params.data);\r\n let columnName = \"Invoice No\";\r\n let invoiceValueUpdated = false;\r\n\r\n if (params.newValue != params.oldValue){\r\n if (params.column.colId === \"invoiceValue\"){\r\n columnName = \"Invoice Value\";\r\n invoiceValueUpdated = true;\r\n }\r\n\r\n projectInvoice.invoiceValue = +projectInvoice.invoiceValue;\r\n projectInvoice.invoiceDate = new Date(projectInvoice.invoiceDate);\r\n projectInvoice.incomeMonth = new Date(projectInvoice.incomeMonth);\r\n\r\n if (params.column.colId === \"invoiceDate\"){\r\n columnName = \"Invoice Date\";\r\n }\r\n\r\n if (params.column.colId === \"incomeMonth\"){\r\n columnName = \"Income Month\";\r\n }\r\n \r\n _this.subs.sink = _this.invoiceService.updateInvoice(_.cloneDeep(projectInvoice)).subscribe(res => {\r\n if (res.succeed){\r\n _this.updateInvoiceTotal(projectInvoice);\r\n _this.toast.succeeded(`${columnName} updated successfully.`);\r\n }else{\r\n _this.toast.failed(`Failed to update ${columnName}: ${res.errors.join(\";\")}`);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private formatInvoiceValue(params){\r\n var invoiceValue = params.context.componentParent.util.formatCurrency(+params.data.invoiceValue);\r\n return invoiceValue;\r\n }\r\n\r\n private isCellEditable(params){\r\n let canUpdate = params.context.componentParent.parent.canUpdateInvoice();\r\n\r\n let invoice = params.data;\r\n if (canUpdate && invoice.id !== 0){\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private updateInvoiceTotal(invoice: Invoice){\r\n var total: number = 0;\r\n var idx = this.invoices.findIndex(i => i.id === invoice.id);\r\n if (idx !== -1){\r\n this.invoices[idx] = invoice;\r\n }\r\n\r\n this.invoices.forEach(inv => total += inv.invoiceValue);\r\n this.invoiceTotal[0].invoiceValue = total;\r\n this.parent.resetInvoice(this.project.id, this.invoices);\r\n this.gridApi.setRowData(this.invoiceTotal);\r\n }\r\n}\r\n","
\r\n 0\"\r\n style=\"height:240px;\"\r\n class=\"ag-theme-alpine pps-top-grid\"\r\n [context]=\"context\"\r\n [rowData]=\"invoices\"\r\n [columnDefs]=\"gridHeaders\"\r\n [gridOptions]=\"topOptions\"\r\n rowSelection=\"single\">\r\n \r\n 0\"\r\n style=\"height: 34px;\"\r\n class=\"ag-theme-alpine pps-bottom-grid\"\r\n headerHeight=\"0\"\r\n [context]=\"context\"\r\n [rowData]=\"invoiceTotal\"\r\n [columnDefs]=\"gridHeaders\"\r\n [gridOptions]=\"bottomOptions\"\r\n [rowStyle]=\"{ fontWeight: 'bold', backgroundColor: '#eeeeee'}\"\r\n (gridReady)=\"onGridReady($event)\"\r\n rowSelection=\"single\">\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { addMonths, differenceInCalendarMonths, differenceInMonths, format, parse, startOfMonth } from 'date-fns';\r\nimport * as _ from 'lodash-es';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { SubSink } from 'subsink';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { TimesheetService } from '../services/timesheet.service';\r\nimport { Project } from '../shared/models/project';\r\nimport { Timesheet } from '../shared/models/timesheet';\r\nimport { TimesheetSearchModel } from '../shared/models/timesheet-search-model';\r\n\r\n@Component({\r\n selector: 'pps-project-timesheet',\r\n templateUrl: './project-timesheet.component.html',\r\n styles: [\r\n ],\r\n})\r\nexport class ProjectTimesheetComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n private gridApi;\r\n project: Project;\r\n minDate: string;\r\n maxDate: string;\r\n hoursByMonth: any = {};\r\n monthList: string[] = [];\r\n messages: any[] = [];\r\n\r\n timesheets: Timesheet[] = null;\r\n context:any = {};\r\n gridHeaders = [];\r\n gridOptions = {\r\n defaultColDef:{\r\n resizable: true\r\n }\r\n };\r\n\r\n constructor(private dialogConfig: DynamicDialogConfig,\r\n private dialogRef: DynamicDialogRef,\r\n private timesheetService: TimesheetService,\r\n private spinner: NgxSpinnerService,\r\n public util: PpsUtilityService) { }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.context = { componentParent: this };\r\n this.gridHeaders = this.getColumnDefs();\r\n this.setData(this.dialogConfig.data.project);\r\n\r\n this.loadProjectTimesheet();\r\n }\r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n } \r\n\r\n loadProjectTimesheet(){\r\n this.spinner.show();\r\n this.timesheets = null;\r\n let searchModel: TimesheetSearchModel = {\r\n fromDate: new Date(2000, 1, 1),\r\n toDate: new Date(),\r\n groupId: 0,\r\n employeeId: 0,\r\n jobCodeId: this.project.id,\r\n employerId: 0\r\n };\r\n \r\n this.subs.sink = this.timesheetService\r\n .getTimesheets(searchModel)\r\n .subscribe(response => {\r\n if (response.succeed){\r\n this.timesheets = response.result;\r\n if (this.timesheets.length > 0){\r\n this.maxDate = this.util.getDateString(new Date(Math.max.apply(null, this.timesheets.map((o) => o.day))));\r\n this.minDate = this.util.getDateString(new Date(Math.min.apply(null, this.timesheets.map((o) => o.day))));\r\n this.groupHoursByMonth();\r\n }else{\r\n this.messages = [{severity:'error', summary:'', detail:`No timesheet records found for project ${this.project.projectNo}.`}];\r\n }\r\n }\r\n }, () => {}, () => {\r\n this.spinner.hide();\r\n });\r\n }\r\n\r\n private groupHoursByMonth(){\r\n this.hoursByMonth = {};\r\n this.monthList = [];\r\n\r\n let totalHours = 0;\r\n this.timesheets.forEach(ts => {\r\n let month = format(ts.day, \"MMM yyyy\");\r\n if (this.hoursByMonth.hasOwnProperty(month)){\r\n this.hoursByMonth[month] += ts.hours;\r\n }else{\r\n this.hoursByMonth[month] = ts.hours;\r\n }\r\n\r\n totalHours += ts.hours;\r\n });\r\n\r\n let sDate = this.util.getDate(this.minDate);\r\n let eDate = this.util.getDate(this.maxDate)\r\n let months = differenceInCalendarMonths(eDate, sDate);\r\n let month = startOfMonth(sDate);\r\n let monthKey = format(month, \"MMM yyyy\");\r\n\r\n if (this.hoursByMonth[monthKey]){\r\n this.monthList.push(monthKey);\r\n }\r\n\r\n for (let i = 0; i < months; i ++){\r\n month = addMonths(month, 1);\r\n monthKey = format(month, \"MMM yyyy\");\r\n\r\n if (this.hoursByMonth[monthKey]){\r\n this.monthList.push(monthKey);\r\n }\r\n }\r\n\r\n for (var m in this.hoursByMonth){\r\n this.hoursByMonth[m] = this.util.formatNumber(this.hoursByMonth[m], 2);\r\n }\r\n\r\n let budgetHours = this.project.budgetHour === null ? \"Not set\" : this.util.formatNumber(this.project.budgetHour, 2);\r\n\r\n if (this.monthList.length > 1){\r\n let monthKey = \"Total Hours / Budget Hours\";\r\n this.monthList.push(monthKey);\r\n this.hoursByMonth[monthKey] = this.util.formatNumber(totalHours, 2) + \" / \" + budgetHours;\r\n }\r\n\r\n if (this.monthList.length === 1){\r\n var oldMonthKey = this.monthList[0];\r\n let monthKey = this.monthList[0] + \" / Project Budget Hours\";\r\n this.monthList[0] = monthKey;\r\n this.hoursByMonth[monthKey] = this.hoursByMonth[oldMonthKey] + \" / \" + budgetHours;\r\n }\r\n }\r\n\r\n setData(project: Project){\r\n this.project = project;\r\n }\r\n\r\n cancel(){\r\n this.dialogRef.close();\r\n }\r\n\r\n\r\n private getColumnDefs(){\r\n return [\r\n {\r\n headerName: 'Date',\r\n field:'day',\r\n sortable: true,\r\n width: 70,\r\n comparator: (date1, date2) => this.util.dateComparator(date1, date2),\r\n valueGetter: params => this.util.getDateString(params.data[params.colDef.field])\r\n },\r\n {\r\n headerName: 'Day',\r\n field:'day',\r\n sortable: true,\r\n width: 50,\r\n valueGetter: this.getWeekDay,\r\n // Sort day be week day instead of string\r\n comparator: (va, vb, na, nb, inverted) => {\r\n let a = this.util.getDate(na.data.day).getDay();\r\n let b = this.util.getDate(nb.data.day).getDay();\r\n\r\n if (a === b) return 0;\r\n return (a > b) ? 1 : -1;\r\n }\r\n },\r\n {\r\n headerName: 'Employee',\r\n field:'employee',\r\n sortable: true,\r\n width: 140,\r\n valueGetter: params => params.context.componentParent.util.getEmployeeName(params.data[params.colDef.field])\r\n },\r\n {\r\n headerName: 'Position',\r\n field:'employee.position.title',\r\n sortable: true,\r\n width: 140\r\n },\r\n {\r\n headerName: 'Hours',\r\n field:'hours',\r\n sortable: true,\r\n width: 80,\r\n cellStyle:this.util.getNumericCellStyle({borderRightColor:'#eeeeee'}),\r\n cellRenderer: params => params.context.componentParent.util.formatNumber(params.data[params.colDef.field], 2)\r\n },\r\n {\r\n headerName: 'Shift',\r\n field:'shift.code',\r\n sortable: true,\r\n width: 70,\r\n cellStyle:{borderRightColor:'#eeeeee'}\r\n },\r\n {\r\n headerName: 'Group',\r\n field:'employee.workGroup.name',\r\n sortable: true,\r\n width: 250\r\n },\r\n {\r\n headerName: 'Note',\r\n field:'note',\r\n sortable: true,\r\n width: 180\r\n },\r\n {\r\n headerName: 'Company',\r\n field:'employee.employer',\r\n sortable: true,\r\n width: 80,\r\n cellStyle:{borderRightColor:'#eeeeee'}\r\n }\r\n ];\r\n } \r\n\r\n private getWeekDay(params){\r\n var dateValue = params.data[params.colDef.field];\r\n if (dateValue){\r\n return format(dateValue, \"E\");\r\n }\r\n }\r\n}\r\n","
\r\n \r\n

Loading...

\r\n
\r\n\r\n
0\">\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n {{month}}\r\n \r\n \r\n \r\n {{hoursByMonth[month]}}\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n","import { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { AgGridModule } from \"ag-grid-angular\";\r\nimport { NgxSpinnerModule } from \"ngx-spinner\";\r\n\r\nimport {BadgeModule} from 'primeng/badge';\r\nimport {BreadcrumbModule} from 'primeng/breadcrumb';\r\nimport {ButtonModule} from 'primeng/button';\r\nimport {CardModule} from 'primeng/card'\r\nimport {CalendarModule} from 'primeng/calendar';\r\nimport {CheckboxModule} from 'primeng/checkbox';\r\nimport {ChipModule} from 'primeng/chip';\r\nimport {ConfirmDialogModule} from 'primeng/confirmdialog';\r\nimport {DynamicDialogModule} from 'primeng/dynamicdialog';\r\nimport {DropdownModule} from 'primeng/dropdown';\r\nimport {FileUploadModule} from 'primeng/fileupload';\r\nimport {InputNumberModule} from 'primeng/inputnumber';\r\nimport {InputTextModule} from 'primeng/inputtext';\r\nimport {InputTextareaModule} from 'primeng/inputtextarea';\r\nimport {MenuModule} from 'primeng/menu';\r\nimport {MessagesModule} from 'primeng/messages';\r\nimport {MultiSelectModule} from 'primeng/multiselect';\r\nimport {TableModule} from 'primeng/table';\r\nimport {TabViewModule} from 'primeng/tabview';\r\nimport {ToastModule} from 'primeng/toast';\r\nimport {ToolbarModule} from 'primeng/toolbar';\r\nimport {TooltipModule} from 'primeng/tooltip';\r\n\r\n\r\nimport { AuthGuardService } from \"../services/auth-guard.service\";\r\nimport { ProjectFormComponent } from \"./project-form.component\";\r\nimport { ProjectInvoiceActionComponent } from \"./project-invoice-action.component\";\r\nimport { ProjectInvoiceFormComponent } from \"./project-invoice-form.component\";\r\nimport { ProjectInvoiceListComponent } from \"./project-invoice-list.component\";\r\nimport { ProjectTimesheetComponent } from \"./project-timesheet.component\";\r\nimport { ProjectsComponent } from \"./projects.component\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n@NgModule({\r\n imports: [\r\n ReactiveFormsModule,\r\n CommonModule,\r\n FormsModule,\r\n NgxSpinnerModule,\r\n AgGridModule.withComponents([]),\r\n\r\n BadgeModule,\r\n BreadcrumbModule,\r\n ButtonModule,\r\n CalendarModule,\r\n CardModule,\r\n CheckboxModule,\r\n ChipModule,\r\n ConfirmDialogModule,\r\n DropdownModule,\r\n DynamicDialogModule,\r\n FileUploadModule,\r\n InputNumberModule,\r\n InputTextModule,\r\n InputTextareaModule,\r\n MenuModule,\r\n MessagesModule,\r\n MultiSelectModule,\r\n TableModule,\r\n TabViewModule,\r\n ToastModule,\r\n ToolbarModule,\r\n TooltipModule,\r\n\r\n RouterModule.forChild([\r\n {path: \"projects\", component: ProjectsComponent, canActivate: [AuthGuardService]}\r\n ])\r\n ],\r\n declarations: [\r\n ProjectFormComponent,\r\n ProjectInvoiceActionComponent,\r\n ProjectInvoiceFormComponent,\r\n ProjectInvoiceListComponent,\r\n ProjectTimesheetComponent,\r\n ProjectsComponent\r\n ]\r\n})\r\nexport class ProjectModule{}","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { Project } from '../shared/models/project';\r\nimport { ProjectService } from '../services/project.service';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ProjectFormComponent } from './project-form.component';\r\nimport { IEntity } from '../shared/models/entity';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { ProjectInvoiceFormComponent } from './project-invoice-form.component';\r\nimport { InvoiceService } from '../services/invoice.service';\r\nimport { ProjectInvoiceListComponent } from './project-invoice-list.component';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { EntityCategory } from '../shared/models/entity-category';\r\nimport { EntityCollection } from '../shared/models/entity-collection';\r\nimport { AccessPermission } from '../shared/models/access-permission';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\nimport { UserContext } from '../shared/models/user-context';\r\nimport { BusinessOperation } from '../shared/models/business-operation';\r\nimport { Employee } from '../shared/models/employee';\r\nimport { format} from 'date-fns';\r\nimport { Company, CompanyRepresentative } from '../shared/models/company';\r\nimport { ProjectTimesheetComponent } from './project-timesheet.component';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { ConfirmationService, MenuItem } from 'primeng/api';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { forkJoin } from 'rxjs';\r\nimport { SubSink } from 'subsink';\r\nimport { ProjectStatuses } from '../shared/models/project-statuses';\r\nimport { ProgressStatuses } from '../shared/models/progress-statuses';\r\nimport { User } from '../shared/models/user';\r\n\r\n@Component({\r\n selector: 'pps-projects',\r\n templateUrl: './projects.component.html',\r\n styleUrls: ['./projects.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ProjectsComponent implements OnInit, OnDestroy {\r\n smallScreen: boolean = false;\r\n \r\n items: MenuItem[] = [{label: \"Project\", icon: \"pi-fw fas fa-tractor\"}];\r\n private subs = new SubSink();\r\n\r\n private projectColumnAccessPermission: any = {};\r\n isLoggedIn: boolean = false;\r\n spinnerName: string = \"ProjectSpinner\";\r\n\r\n userContext: UserContext = null;\r\n\r\n projectSearchModel: any = {};\r\n projectEntities: EntityCollection = new EntityCollection();\r\n responsibleEngineers: Employee[] = [];\r\n companies: Company[] = [];\r\n companyRepresentatives: any = {};\r\n\r\n projects: Project[] = [];\r\n projectTotal: Project[] = [];\r\n filteredProjectCount: number = 0;\r\n activeProjectsOnly = true;\r\n\r\n gridHeaders = [];\r\n context:any = {};\r\n selectedRow: any = null;\r\n selectedRowNode: any = null; //ag-grid RowNode\r\n\r\n exporting: boolean = false;\r\n\r\n topOptions = {\r\n alignedGrids: [],\r\n onFilterChanged: params => this.onFilterChanged(params),\r\n onRowClicked: this.onRowClicked,\r\n //immutableData: true,\r\n getRowId: param => param.data.id,\r\n context: this,\r\n defaultColDef: {\r\n resizable: true,\r\n minWidth: 60,\r\n floatingFilter: false,\r\n filter: true,\r\n sortable: true,\r\n cellStyle: {borderRightColor:'#eeeeee'}\r\n },\r\n suppressHorizontalScroll: true\r\n };\r\n\r\n bottomOptions = {\r\n alignedGrids: [],\r\n defaultColDef: {\r\n resizable: true,\r\n minWidth: 60\r\n }\r\n };\r\n\r\n private gridApi;\r\n private dateFilterParams = {\r\n comparator: this._util.filterDateComparator,\r\n filterOptions: [\"equals\", \"lessThan\", \"greaterThan\"],\r\n defaultOption: \"greaterThan\"\r\n };\r\n\r\n private numberFilterParams = {\r\n filterOptions: [\"equals\", \"lessThan\", \"greaterThan\"],\r\n defaultOption: \"equals\"\r\n };\r\n\r\n constructor(private projectService: ProjectService,\r\n private invoiceService: InvoiceService,\r\n private spinner: NgxSpinnerService,\r\n private authService: AuthenticationService,\r\n private _util: PpsUtilityService,\r\n private _toast: ToastService,\r\n private _dialog: DialogService,\r\n private _confirmationService: ConfirmationService,\r\n private breakpointObserver: BreakpointObserver) {\r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n });\r\n\r\n this.topOptions.alignedGrids.push(this.bottomOptions);\r\n this.bottomOptions.alignedGrids.push(this.topOptions);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.context = { componentParent: this };\r\n this.loadProjects();\r\n }\r\n\r\n ngOnDestroy():void{\r\n this.subs.unsubscribe();\r\n }\r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n }\r\n \r\n onRowClicked(evt){\r\n let _this = evt.context.componentParent;\r\n var selectedRows = _this.gridApi.getSelectedRows();\r\n _this.selectedRow = selectedRows.length === 1 ? selectedRows[0] : null;\r\n _this.selectedRowNode = evt.node;\r\n }\r\n\r\n onFirstDataRendered(params) {\r\n //params.columnApi.autoSizeAllColumns();\r\n }\r\n\r\n onCellDblClicked(params){\r\n if (this.canModifyProject()){\r\n this.openProjectForm(params.data, params.column.colId);\r\n }\r\n }\r\n\r\n onFilterChanged(param: any){\r\n let children = param.api.getModel().rootNode.childrenAfterFilter;\r\n let projects = children.map(r => r.data);\r\n this.filteredProjectCount = children.length;\r\n this.projectTotal = this.context.componentParent.calculateProjectsTotal(projects);\r\n let bottomGrid = this.topOptions.alignedGrids[0];\r\n bottomGrid.api.setRowData(this.projectTotal);\r\n }\r\n\r\n exportProject(){\r\n this.exporting = true;\r\n let searchModel = Object.assign({}, this.projectSearchModel);\r\n searchModel.ipIds = searchModel.ipIds ? searchModel.ipIds.map(s=>s.id) : [];\r\n searchModel.psIds = searchModel.psIds ? searchModel.psIds.map(s=>s.id) : []; \r\n this.subs.sink = this.projectService.downloadProjects(searchModel, () => this.exporting = false);\r\n }\r\n\r\n loadProjects(){\r\n let searchModel = Object.assign({}, this.projectSearchModel);\r\n searchModel.ipIds = searchModel.ipIds ? searchModel.ipIds.map(s=>s.id) : [];\r\n searchModel.psIds = searchModel.psIds ? searchModel.psIds.map(s=>s.id) : [];\r\n this.spinner.show(this.spinnerName);\r\n\r\n this.subs.sink = forkJoin([\r\n this.projectService.getProjectEntities(),\r\n this.projectService.getProjects(searchModel)\r\n ]).subscribe(([entitiesRes, projectResponse]) => {\r\n if (!this.authService.userContext){\r\n console.log(\"Waiting for permission settings, re-trying...\");\r\n window.setTimeout(() => this.loadProjects(), 1000);\r\n return;\r\n }\r\n\r\n if (entitiesRes.succeed){\r\n this._loadEntitiesHelper(entitiesRes.result.entities);\r\n this.responsibleEngineers = entitiesRes.result.responsibleEngineers;\r\n this.processCompanyAndRepresentative(entitiesRes.result.representatives);\r\n this.companies = entitiesRes.result.companies;\r\n } else {\r\n console.log(`Load entities failed: ${entitiesRes.errors.join(\";\")}`);\r\n console.log(\"Retrying...\");\r\n window.setTimeout(() => this.loadProjects(), 3000);\r\n }\r\n\r\n this.projectColumnAccessPermission = this.authService.userContext.projectColumnAccessSettings;\r\n this.gridHeaders = this.getColumnDefs(this.projectColumnAccessPermission);\r\n\r\n if (projectResponse.succeed){\r\n let projects = projectResponse.result;\r\n this.projects = this.getProjects(projects);\r\n this.projectTotal = this.calculateProjectsTotal(this.projects);\r\n this._toast.succeeded(`${this.projects.length} projects loaded`);\r\n this.gridApi.onFilterChanged();\r\n }else{\r\n this._toast.failed(`Load projects failed: ${projectResponse.errors.join(\";\")}`);\r\n }\r\n })\r\n .add(() => {\r\n this.spinner.hide(this.spinnerName);\r\n });\r\n\r\n }\r\n\r\n private getProjects(projects: Project[]): Project[]{\r\n return this.activeProjectsOnly ? projects.filter(p => this.isActiveProject(p)) : projects;\r\n }\r\n\r\n private isActiveProject(p: Project){\r\n if (p.projectStatus?.id === ProjectStatuses.Quoted){\r\n return true;\r\n }\r\n\r\n if (p.installationProgress?.id === ProgressStatuses.Completed){\r\n return true;\r\n }\r\n\r\n if ((p.projectStatus?.id === ProjectStatuses.POReceived || \r\n p.projectStatus?.id === ProjectStatuses.Approved ||\r\n p.projectStatus?.id === ProjectStatuses.RFQ) &&\r\n (p.installationProgress?.id !== ProgressStatuses.Pending &&\r\n p.installationProgress?.id !== ProgressStatuses.Completed &&\r\n p.installationProgress?.id !== ProgressStatuses.IRCSigned &&\r\n p.installationProgress?.id !== ProgressStatuses.Invoiced &&\r\n p.installationProgress?.id !== ProgressStatuses.Paid)){\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private compareObject(a, b, prop){\r\n if (a[prop] < b[prop]){\r\n return -1;\r\n }\r\n\r\n if (a[prop] > b[prop]){\r\n return 1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n private processCompanyAndRepresentative(compReps: CompanyRepresentative[]){\r\n this.companyRepresentatives = {};\r\n compReps.forEach(r => {\r\n if (!this.companyRepresentatives.hasOwnProperty(r.company.id)){\r\n this.companyRepresentatives[r.company.id] = [{id: r.id, name: r.name, active: r.active}];\r\n }else{\r\n this.companyRepresentatives[r.company.id].push({id: r.id, name: r.name, active: r.active});\r\n }\r\n });\r\n \r\n this.companies = this.companies.sort((a, b) => this.compareObject(a, b, \"name\"));\r\n for (let cid in this.companyRepresentatives){\r\n if (this.companyRepresentatives.hasOwnProperty(cid)){\r\n this.companyRepresentatives[cid] = this.companyRepresentatives[cid].sort((a, b) => this.compareObject(a, b, \"name\"));\r\n }\r\n }\r\n }\r\n\r\n private _loadEntitiesHelper(entities: IEntity[]){\r\n this.projectEntities.jobTypes = [];\r\n this.projectEntities.materialProcurementStatuses = [];\r\n this.projectEntities.projectStatuses = [];\r\n this.projectEntities.areas = [];\r\n this.projectEntities.clientEngineers = [];\r\n this.projectEntities.installationProgresses = [];\r\n entities.forEach(entity => {\r\n switch(entity.entityCategory){\r\n case EntityCategory.JobType:\r\n this.projectEntities.jobTypes.push(entity);\r\n break;\r\n case EntityCategory.MaterialProcurementStatus:\r\n this.projectEntities.materialProcurementStatuses.push(entity);\r\n break;\r\n case EntityCategory.ProjectStatus:\r\n this.projectEntities.projectStatuses.push(entity);\r\n break;\r\n case EntityCategory.Area:\r\n this.projectEntities.areas.push(entity);\r\n break;\r\n case EntityCategory.ClientEngineer:\r\n this.projectEntities.clientEngineers.push(entity);\r\n break;\r\n case EntityCategory.InstallationProgress:\r\n this.projectEntities.installationProgresses.push(entity);\r\n break;\r\n }\r\n });\r\n\r\n this.projectEntities.jobTypes.sort((a, b) => this.compareObject(a, b, \"name\"));\r\n this.projectEntities.projectStatuses.sort((a, b) => this.compareObject(a, b, \"name\"));\r\n this.projectEntities.areas.sort((a, b) => this.compareObject(a, b, \"name\"));\r\n this.projectEntities.clientEngineers.sort((a, b) => this.compareObject(a, b, \"name\"));\r\n this.projectEntities.installationProgresses.sort((a, b) => this.compareObject(a, b, \"sortNo\"));\r\n }\r\n\r\n calculateProjectsTotal(projects: Project[]) : Project[]{\r\n let projectTotal = new Project();\r\n projectTotal.projectNo = \"Total\";\r\n projectTotal.totalInvoiceValue = 0;\r\n projectTotal.budgetHour = 0;\r\n projectTotal.plannedHour = 0;\r\n projectTotal.actualHour = 0;\r\n projectTotal.bankGuaranteeAmount = 0;\r\n projectTotal.poAmount = 0;\r\n projectTotal.estimatedCompletionValue = 0;\r\n projectTotal.completionPercentage = null;\r\n\r\n projectTotal.directLabor = 0;\r\n projectTotal.plantAndEquipment = 0;\r\n projectTotal.materialsAndConsumbles = 0;\r\n projectTotal.management = 0;\r\n projectTotal.thirdParty = 0;\r\n projects.forEach(prj => {\r\n prj.totalInvoiceValue = 0;\r\n if (prj.invoices){\r\n prj.invoices.forEach(inv => {\r\n prj.totalInvoiceValue += inv.invoiceValue || 0;\r\n });\r\n }\r\n\r\n projectTotal.totalInvoiceValue += prj.totalInvoiceValue;\r\n projectTotal.budgetHour += prj.budgetHour || 0;\r\n projectTotal.plannedHour += prj.plannedHour || 0;\r\n projectTotal.actualHour += prj.actualHour || 0;\r\n projectTotal.bankGuaranteeAmount += prj.bankGuaranteeAmount || 0;\r\n projectTotal.poAmount += prj.poAmount || 0;\r\n projectTotal.estimatedCompletionValue += prj.estimatedCompletionValue || 0;\r\n\r\n projectTotal.directLabor += prj.directLabor || 0;\r\n projectTotal.plantAndEquipment += prj.plantAndEquipment || 0;\r\n projectTotal.materialsAndConsumbles += prj.materialsAndConsumbles || 0;\r\n projectTotal.management += prj.management || 0;\r\n projectTotal.thirdParty += prj.thirdParty || 0;\r\n });\r\n\r\n return [projectTotal];\r\n }\r\n\r\n openProjectForm(project: Project, colId: string = \"\"){\r\n if (project === null){\r\n project = new Project();\r\n project.id = 0;\r\n project.projectNo = this.projectService.getNextProjectNo(this.projects);\r\n }\r\n\r\n project.commentDate = new Date();\r\n\r\n if ( project.id === 0 || !project.responsibleEngineer ){\r\n // For new project or the project has NOT been assigned any responsible engineer\r\n this.projectEntities.responsibleEngineers = this.responsibleEngineers.filter(re => re.active);\r\n }else{\r\n if ( project.responsibleEngineer ){\r\n // terminated engineer should be exclude from the selection list except when this engineer was\r\n // assigned to a project\r\n this.projectEntities.responsibleEngineers = [];\r\n this.responsibleEngineers.forEach(e => {\r\n if ( (!e.active && e.id === project.responsibleEngineer.id) || e.active){\r\n this.projectEntities.responsibleEngineers.push(e);\r\n }\r\n });\r\n }\r\n }\r\n\r\n let dialog = this._dialog.open(ProjectFormComponent, \r\n {\r\n header: project.id === 0 ? \"Add Project\" : `Edit Project ${project.projectNo}`, \r\n styleClass: \"size-md2\",\r\n data:{\r\n companies: this.companies,\r\n representatives: this.companyRepresentatives,\r\n currentUser: this.authService.userContext.zoesenUser,\r\n ppsEntites: this.projectEntities,\r\n ppsProject: Object.assign({}, project),\r\n ppsProjectColumnAccessPermission: this.projectColumnAccessPermission,\r\n sourceColumnId: colId\r\n },\r\n draggable: true\r\n });\r\n\r\n this.subs.sink = dialog.onClose.subscribe(prj => {\r\n if (prj){\r\n this.saveProject(prj);\r\n }\r\n });\r\n }\r\n\r\n saveProject(project: Project){\r\n if (project.id === 0){\r\n this.subs.sink = this.projectService\r\n .addProject(project)\r\n .subscribe(response => {\r\n if (response.succeed){\r\n this.projects.unshift(response.result);\r\n this.resetProjectGrid(project.id, false);\r\n this.flashRow(response.result.id);\r\n this._toast.succeeded(`Project [${project.projectNo}] created successfully`);\r\n }else{\r\n this._toast.failed(`Save project [${project.projectNo}] failed: ${response.errors.join(\";\")}`);\r\n }\r\n });\r\n }else{\r\n //update project\r\n this.subs.sink = this.projectService\r\n .updateProject(project)\r\n .subscribe(response => {\r\n if (response.succeed){\r\n var foundIndex = this.projects.findIndex(x => x.id == response.result.id);\r\n if (foundIndex !== -1){\r\n let selectedProject = this.projects[foundIndex] = response.result;\r\n\r\n selectedProject = response.result;\r\n this.resetProjectGrid(selectedProject.id, false);\r\n this.flashRow(response.result.id);\r\n this._toast.succeeded(`Project [${selectedProject.projectNo}] updated successfully`);\r\n }else{\r\n this._toast.failed(`Update project ${response.result.id} failed`);\r\n }\r\n }else{\r\n this._toast.failed(`Update project [${project.projectNo}] failed: ${response.errors.join(\";\")}`);\r\n }\r\n });\r\n }\r\n }\r\n\r\n deleteProject(project: Project){\r\n if (project === null){\r\n return;\r\n }\r\n\r\n this._confirmationService.confirm({\r\n header: `Delete Project ${project.projectNo}`,\r\n message: `Are you sure that you want to delete it?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => {\r\n this.subs.sink = this.projectService.deleteProject(project.id)\r\n .subscribe(res => {\r\n var foundIndex = this.projects.findIndex(x => x.id == project.id);\r\n if (foundIndex !== -1 ){\r\n this.projects.splice(foundIndex, 1);\r\n this.selectedRow = null;\r\n this.selectedRowNode = null;\r\n this.resetProjectGrid(0, false);\r\n\r\n if (foundIndex < this.projects.length){\r\n let nextRow = this.gridApi.getRowNode(this.projects[foundIndex].id);\r\n if (nextRow){\r\n nextRow.setSelected(true);\r\n this.selectedRowNode = nextRow;\r\n this.selectedRow = nextRow.data;\r\n }\r\n }\r\n\r\n this._toast.succeeded(`Project [${project.projectNo}] deleted`);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n addInvoice(project: Project){\r\n if (project === null){\r\n return;\r\n }\r\n\r\n let _this = this;\r\n let dialog = this._dialog.open(ProjectInvoiceFormComponent, {\r\n header: `Create invoice for ${project.projectNo}`,\r\n styleClass: \"size-sm\",\r\n draggable: true\r\n });\r\n\r\n this.subs.sink = dialog.onClose.subscribe(invoiceFormData => {\r\n if (invoiceFormData){\r\n _this.saveInvoice(project.id, invoiceFormData);\r\n }},\r\n _ => { }\r\n );\r\n }\r\n\r\n saveInvoice(projectId: number, formData: FormData){\r\n this.subs.sink = this.invoiceService.createInvoice(projectId, formData)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n var foundIndex = this.projects.findIndex(x => x.id == projectId);\r\n if (!this.projects[foundIndex].invoices){\r\n this.projects[foundIndex].invoices = [];\r\n }\r\n\r\n this.projects[foundIndex].invoices.push(res.result);\r\n\r\n this.resetInvoice(projectId, this.projects[foundIndex].invoices);\r\n this._toast.succeeded(`Invoice created for project [${this.projects[foundIndex].projectNo}]`);\r\n }else{\r\n this._toast.failed(`Create invoice for project [${this.projects[foundIndex].projectNo}] failed: ${res.errors.join(\";\")}`);\r\n }\r\n });\r\n }\r\n\r\n viewProjectInvoices(project: Project){\r\n if (project === null){\r\n return;\r\n }\r\n\r\n let dialog = this._dialog.open(ProjectInvoiceListComponent, {\r\n header: `Project Invoices: ${project.invoices.length}`,\r\n styleClass: this.smallScreen ? \"size-100\" : \"size-md\",\r\n data: {\r\n parent: this,\r\n project: project\r\n },\r\n draggable: true\r\n });\r\n //dialog.componentInstance.setData(this, project, project.invoices);\r\n this.subs.sink = dialog.onClose.subscribe(\r\n invoiceFormData => { },\r\n reason => { }\r\n );\r\n }\r\n // This method is used to deleteInvoie. DO NOT REMOVE IT\r\n resetInvoice(projectId, invoices){\r\n var prjIndex = this.projects.findIndex(p => p.id === projectId);\r\n if (prjIndex !== -1){\r\n this.projects[prjIndex].invoices = invoices;\r\n this.resetProjectGrid(projectId, true);\r\n\r\n var node = this.gridApi.getRowNode(projectId);\r\n if (node){\r\n node.setData(this.projects[prjIndex]);\r\n }\r\n }\r\n }\r\n\r\n viewProjectTimesheet(project: Project){\r\n if (project === null){\r\n return;\r\n }\r\n\r\n this._dialog.open(ProjectTimesheetComponent, \r\n {\r\n header: `Timesheet for project ${project.projectNo}`,\r\n styleClass: this.smallScreen ? \"size-100\" : \"size-lg\",\r\n data:{\r\n project: project\r\n },\r\n draggable: true\r\n });\r\n }\r\n \r\n //\r\n // This is to update the values of the project grid and make sure the selected\r\n // row is rendered correctly\r\n private resetProjectGrid(selectedProjectId: number, ensureVisible: boolean){\r\n this.projectTotal = this.calculateProjectsTotal(this.projects);\r\n\r\n // reference:\r\n // https://stackoverflow.com/questions/55723337/ag-grid-how-to-scroll-to-last-known-position\r\n // if ( ensureVisible ){\r\n // this.topOptions.immutableData = false;\r\n // }\r\n\r\n this.gridApi.setRowData(this.projects);\r\n \r\n if (selectedProjectId !== 0){\r\n var node = this.gridApi.getRowNode(selectedProjectId);\r\n if (node){\r\n if (ensureVisible){\r\n this.gridApi.ensureIndexVisible(node.rowIndex, 'middle');\r\n }\r\n node.setSelected(true);\r\n this.selectedRow = node.data;\r\n }\r\n }\r\n\r\n // if ( ensureVisible ){\r\n // this.topOptions.immutableData = true;\r\n // }\r\n }\r\n\r\n canViewProject(): boolean{\r\n return this.authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.ViewProject,\r\n BusinessOperation.CreateProject,\r\n BusinessOperation.ModifyProject,\r\n BusinessOperation.DeleteProject\r\n ]);\r\n }\r\n\r\n canCreateProject(): boolean{\r\n return this.authService.canUserDoOperartion(BusinessOperation.CreateProject);\r\n }\r\n\r\n canModifyProject(): boolean{\r\n return this.authService.canUserDoOperartion(BusinessOperation.ModifyProject);\r\n }\r\n\r\n canDeleteProject(): boolean{\r\n return this.authService.canUserDoOperartion(BusinessOperation.DeleteProject);\r\n }\r\n\r\n canExportProject(): boolean{\r\n return this.authService.canUserDoOperartion(BusinessOperation.ExportProject);\r\n }\r\n\r\n canCreateProjectInvoice(): boolean{\r\n return this.authService.canUserDoOperartion(BusinessOperation.CreateProjectInvoice);\r\n }\r\n\r\n canViewProjectInvoice(): boolean{\r\n return this.authService.canUserDoOperartion(BusinessOperation.ViewProjectInvoice);\r\n }\r\n\r\n canDeleteInvoice(): boolean{\r\n return this.authService.canUserDoOperartion(BusinessOperation.DeleteProjectInvoice);\r\n }\r\n\r\n canUpdateInvoice(): boolean{\r\n return this.authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.CreateProjectInvoice,\r\n BusinessOperation.DeleteProjectInvoice\r\n ]);\r\n }\r\n\r\n canViewTimeSheet(): boolean{\r\n return this.authService.canUserDoAnyOfTheOperartions([\r\n BusinessOperation.ViewTimeSheet,\r\n BusinessOperation.EnterTimeSheet,\r\n BusinessOperation.ModifyTimeSheet,\r\n BusinessOperation.UpdatePastTimeSheet,\r\n BusinessOperation.ExportTimeSheet\r\n ]);\r\n }\r\n\r\n\r\n private getTotalColumns(){\r\n return {\r\n \"ProjectAttachment\": {\r\n headerName: '',\r\n field:'hasAttachment',\r\n width: 20,\r\n pinned: true,\r\n resizable: false,\r\n minWidth: 20,\r\n floatingFilter: false,\r\n filter: false,\r\n sortable: true,\r\n cellRenderer: (params) => params.value ? \"\" : \"\"\r\n },\r\n \"ProjectNo\": {\r\n headerName: 'Project No',\r\n field:'projectNo',\r\n width: 90,\r\n pinned: true\r\n },\r\n \"Description\": {\r\n headerName: 'Description',\r\n field:'description',\r\n width: 500,\r\n headerClass: this.getProjectInfoHeaderClass,\r\n tooltipField: 'description'\r\n },\r\n \"JobType\": {\r\n headerName: 'Job Type',\r\n field:'jobType.name',\r\n width: 120,\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"ProjectStatus\": {\r\n headerName: 'Project Status',\r\n field:'projectStatus.name',\r\n width: 130,\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"ResponsibleEngineer\": {\r\n headerName: 'Responsible Engineer',\r\n field:'employeeId',\r\n width: 180,\r\n headerClass: this.getProjectInfoHeaderClass,\r\n valueGetter: this.getResponsibleEngineer\r\n },\r\n \"Client\": {\r\n headerName: 'Client',\r\n field:'client.name',\r\n width: 140,\r\n headerClass: this.getProjectInfoHeaderClass,\r\n tooltipField: 'client.name'\r\n },\r\n \"ClientEngineers\": {\r\n headerName: 'Client Representatives',\r\n field:'clientEngineerId',\r\n width: 160,\r\n headerClass: this.getProjectInfoHeaderClass,\r\n valueGetter: this.getClientEngineers\r\n },\r\n \"ProjectComment\": {\r\n headerName: 'Project Comment',\r\n field:'projectComment',\r\n width: 200,\r\n headerClass: this.getProjectInfoHeaderClass,\r\n tooltipField: 'projectComment'\r\n\r\n },\r\n \"QuotingDeadline\": {\r\n headerName: 'Quoting Deadline',\r\n field:'quotingDeadline',\r\n filter: 'agDateColumnFilter',\r\n filterParams: this.dateFilterParams,\r\n browserDatePicker: true,\r\n width: 170,\r\n comparator: (date1, date2) => this._util.dateTimeComparator(date1, date2),\r\n headerClass: this.getProjectInfoHeaderClass,\r\n valueGetter: this.getQuotingDeadline\r\n },\r\n \"MaterialProcurementStatus\": {\r\n headerName: 'Material Status - Arrival Date',\r\n field:'materialProcurementStatus.name',\r\n width: 220,\r\n headerClass: this.getProjectInfoHeaderClass,\r\n valueGetter: (params) => this.getMaterialProcurementStatus(this, params)\r\n },\r\n \"InstallationProgress\": {\r\n headerName: 'Progress',\r\n field:'installationProgress.name',\r\n width: 100,\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"InvoiceNo\": {\r\n headerName: 'Invoices',\r\n field:'invoices',\r\n headerClass: this.getProjectInfoHeaderClass,\r\n valueGetter: this.getInvoices\r\n },\r\n \"InvoiceValue\": {\r\n headerName: 'Total Invoice Value',\r\n field:'totalInvoiceValue',\r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n width: 150,\r\n cellRenderer: params => params.context.componentParent._util.formatCurrency(params.data[params.colDef.field]),\r\n cellStyle: this._util.getComputedCellStyle(this._util.getNumericCellStyle({borderRightColor:'#eeeeee', color:'#226622'})),\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"TargetStartDate\": {\r\n headerName: 'Target Start Date',\r\n field:'targetStartDate',\r\n filter: 'agDateColumnFilter',\r\n filterParams: this.dateFilterParams,\r\n width: 170,\r\n comparator: (date1, date2) => this._util.dateComparator(date1, date2),\r\n headerClass: this.getProjectInfoHeaderClass,\r\n valueGetter: this.getDateValue\r\n },\r\n \"TargetCompletionDate\": {\r\n headerName: 'Target Completion Date',\r\n field:'targetCompletionDate',\r\n filter: 'agDateColumnFilter',\r\n filterParams: this.dateFilterParams,\r\n width: 170,\r\n comparator: (date1, date2) => this._util.dateComparator(date1, date2),\r\n headerClass: this.getProjectInfoHeaderClass,\r\n valueGetter: this.getDateValue\r\n },\r\n \"BudgetHour\": {\r\n headerName: 'Budget Hours',\r\n field:'budgetHour',\r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n width: 120,\r\n cellStyle: this._util.getNumericCellStyle({borderRightColor:'#eeeeee'}),\r\n cellRenderer: params => params.context.componentParent._util.formatNumber(params.data[params.colDef.field], 2),\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"PlannedHour\": {\r\n headerName: 'Planned Hours',\r\n field:'plannedHour',\r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n width: 120,\r\n cellStyle: this._util.getNumericCellStyle({borderRightColor:'#eeeeee'}),\r\n cellRenderer: params => params.context.componentParent._util.formatNumber(params.data[params.colDef.field], 2),\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"ActualHour\": {\r\n headerName: 'Spent Hours',\r\n field:'actualHour',\r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n width:120,\r\n cellStyle: this._util.getComputedCellStyle(this._util.getNumericCellStyle({borderRightColor:'#eeeeee', color:'#226622'})),\r\n cellRenderer: params => params.context.componentParent._util.formatNumber(params.data[params.colDef.field], 2),\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"EarnedHour\": {\r\n headerName: 'Earned Hours',\r\n field:'earnedHours',\r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n width: 120,\r\n cellStyle: this._util.getComputedCellStyle(this._util.getNumericCellStyle({borderRightColor:'#eeeeee', color:'#226622'})),\r\n cellRenderer: params => {\r\n let prj = params.data;\r\n let earnedHours = prj.budgetHour - prj.actualHour;\r\n return params.context.componentParent._util.formatNumber(earnedHours, 2);\r\n },\r\n valueGetter: params => {\r\n let prj = params.data;\r\n let earnedHours = prj.budgetHour - prj.actualHour;\r\n return earnedHours;\r\n },\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"CompletionPercentage\": {\r\n headerName: 'Completion %',\r\n field:'completionPercentage',\r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n width: 120,\r\n cellStyle: this._util.getNumericCellStyle({borderRightColor:'#eeeeee'}),\r\n cellRenderer: params => params.context.componentParent._util.formatPercentage(params.data[params.colDef.field]),\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"WorkOrder\": {\r\n headerName: 'WorkOrder',\r\n field:'workOrder',\r\n width: 100,\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"ContractNumber\": {\r\n headerName: 'Contract#',\r\n field:'contractNumber',\r\n width: 120,\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"BankGuaranteeAmount\": {\r\n headerName: 'Bank Guarantee Amount',\r\n field:'bankGuaranteeAmount',\r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n width: 180,\r\n cellStyle: this._util.getNumericCellStyle({borderRightColor:'#eeeeee'}),\r\n cellRenderer: params => params.context.componentParent._util.formatCurrency(params.data[params.colDef.field]),\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"BankGuaranteeExpirationDate\": {\r\n headerName: 'Bank Guarantee Expiration Date',\r\n field:'bankGuaranteeExpirationDate',\r\n filter: 'agDateColumnFilter',\r\n filterParams: this.dateFilterParams,\r\n width: 170,\r\n comparator: (date1, date2) => this._util.dateComparator(date1, date2),\r\n headerClass: this.getProjectInfoHeaderClass,\r\n valueGetter: this.getDateValue\r\n },\r\n \"PoNumber\": {\r\n headerName: 'PO#',\r\n field:'poNumber',\r\n width: 100,\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"PoAmount\": {\r\n headerName: 'PO Value',\r\n field:'poAmount',\r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n width: 120,\r\n cellStyle: this._util.getNumericCellStyle({borderRightColor:'#eeeeee'}),\r\n cellRenderer: params => params.context.componentParent._util.formatCurrency(params.data[params.colDef.field]),\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"PoValueWithGST\": {\r\n headerName: 'PO Value With GST',\r\n field:'poAmount',\r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n width: 150,\r\n cellStyle: this._util.getComputedCellStyle(this._util.getNumericCellStyle({borderRightColor:'#eeeeee', color:'#226622'})),\r\n cellRenderer: params => params.context.componentParent._util.formatCurrency(params.data[params.colDef.field] * params.context.componentParent._util.getGstRate()),\r\n valueGetter: params => params.data[params.colDef.field] * params.context.componentParent._util.getGstRate(),\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"EstimatedCompletionValue\": {\r\n headerName: 'Estimated Completion Value',\r\n field:'estimatedCompletionValue',\r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n width: 200,\r\n cellStyle: this._util.getComputedCellStyle(this._util.getNumericCellStyle({borderRightColor:'#eeeeee', color:'#226622'})),\r\n cellRenderer: params => params.context.componentParent._util.formatCurrency(params.data[params.colDef.field]),\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"DirectLabor\": {\r\n headerName: 'Direct Labour',\r\n field:'directLabor',\r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n width: 120,\r\n cellStyle: this._util.getNumericCellStyle({borderRightColor:'#eeeeee'}),\r\n cellRenderer: params => params.context.componentParent._util.formatCurrency(params.data[params.colDef.field]),\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"PlantAndEquipment\": {\r\n headerName: 'Plant And Equipment',\r\n field:'plantAndEquipment',\r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n width: 180,\r\n cellStyle: this._util.getNumericCellStyle({borderRightColor:'#eeeeee'}),\r\n cellRenderer: params => params.context.componentParent._util.formatCurrency(params.data[params.colDef.field]),\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"MaterialsAndConsumbles\": {\r\n headerName: 'Materials And Consumbles',\r\n field:'materialsAndConsumbles',\r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n width: 180,\r\n cellStyle: this._util.getNumericCellStyle({borderRightColor:'#eeeeee'}),\r\n cellRenderer: params => params.context.componentParent._util.formatCurrency(params.data[params.colDef.field]),\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"Management\": {\r\n headerName: 'Management',\r\n field:'management',\r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n width: 120,\r\n cellStyle: this._util.getNumericCellStyle({borderRightColor:'#eeeeee'}),\r\n cellRenderer: params => params.context.componentParent._util.formatCurrency(params.data[params.colDef.field]),\r\n headerClass: this.getProjectInfoHeaderClass\r\n },\r\n \"ThirdParty\": {\r\n headerName: '3rd Party',\r\n field:'thirdParty',\r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n width: 120,\r\n cellStyle: this._util.getNumericCellStyle({borderRightColor:'#eeeeee'}),\r\n cellRenderer: params => params.context.componentParent._util.formatCurrency(params.data[params.colDef.field]),\r\n headerClass: this.getProjectInfoHeaderClass\r\n }\r\n };\r\n }\r\n\r\n getColumnDefs(columnsWithPermission){\r\n let totalColumn = this.getTotalColumns();\r\n let columns = [];\r\n for (var columnName in totalColumn){\r\n if (columnsWithPermission.hasOwnProperty(columnName) && columnsWithPermission[columnName].accessPermission !== AccessPermission.NoAccess){\r\n totalColumn[columnName].sortNo = columnsWithPermission[columnName].sortNo;\r\n columns.push(totalColumn[columnName]);\r\n }\r\n }\r\n\r\n columns = columns.sort((c1,c2) => c1.sortNo - c2.sortNo);\r\n\r\n // This extra column is to avoid cut off the last column\r\n columns.push({ // Extra column\r\n headerName:\"\",\r\n field:\"\",\r\n filter:false,\r\n sortable:false,\r\n width:20\r\n });\r\n \r\n return columns;\r\n }\r\n\r\n getProjectInfoHeaderClass(){\r\n return [\"project-header\", \"project-info\"];\r\n }\r\n\r\n getProjectStatusHeaderClass(){\r\n return [\"project-header\", \"project-status\"];\r\n }\r\n\r\n getProjectPoHeaderClass(){\r\n return [\"project-header\", \"po-info\"];\r\n }\r\n\r\n hasAccess(colName){\r\n return this.projectColumnAccessPermission[colName] && (\r\n this.projectColumnAccessPermission[colName].accessPermission === AccessPermission.ReadAccess ||\r\n this.projectColumnAccessPermission[colName].accessPermission === AccessPermission.WriteAccess ||\r\n this.projectColumnAccessPermission[colName].accessPermission === AccessPermission.ExecuteAccess\r\n );\r\n }\r\n\r\n flashRow(id){\r\n let rowNode = this.gridApi.getRowNode(id);\r\n if (rowNode){\r\n this.gridApi.flashCells({rowNodes: [rowNode]});\r\n } \r\n } \r\n\r\n private getDateValue(params){\r\n if (params.data[params.colDef.field]){\r\n let value = params.context.componentParent._util.getDateString(params.data[params.colDef.field]);\r\n return value;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n private getResponsibleEngineer(params){\r\n let project: Project = params.data;\r\n let employeeName = params.context.componentParent._util.getEmployeeName(project.responsibleEngineer);\r\n return employeeName;\r\n }\r\n\r\n private getClientEngineers(params){\r\n let rowData: Project = params.data;\r\n let clientEngineers: string[] = [];\r\n if (Array.isArray(rowData.clientEngineers)){\r\n rowData.clientEngineers.forEach(emp => {\r\n clientEngineers.push(emp.name);\r\n })\r\n }\r\n\r\n return clientEngineers.join(\", \");\r\n }\r\n\r\n private getInvoices(params){\r\n let rowData: Project = params.data;\r\n let invoices: string[] = [];\r\n if (Array.isArray(rowData.invoices)){\r\n rowData.invoices.forEach(inv => {\r\n invoices.push(inv.invoiceNo);\r\n })\r\n }\r\n return invoices.join(\", \");\r\n }\r\n\r\n private getQuotingDeadline(params){\r\n let project: Project = params.data;\r\n if (project.quotingDeadline){\r\n var date = new Date(project.quotingDeadline);\r\n //date.setHours(project.quotingDeadlineTime.hour, project.quotingDeadlineTime.minute, project.quotingDeadlineTime.second);\r\n \r\n return format(date, \"dd/MM/yyyy hh:mm a\");\r\n }\r\n \r\n return project.quotingDeadline;\r\n }\r\n\r\n private getMaterialProcurementStatus(caller, params){\r\n let project: Project = params.data;\r\n let name = project.materialProcurementStatus?.name.toLowerCase();\r\n if (name === \"po raised\" || name === \"under delivery\"){\r\n let dateStr = project.materialEstimateDeliveryDate ? \" - \" + caller._util.getDateString(project.materialEstimateDeliveryDate) : \"\";\r\n let deliveryDate = params.context.componentParent.hasAccess(\"MaterialEstimateDeliveryDate\") ? dateStr : \"\";\r\n return `${project.materialProcurementStatus.name}${deliveryDate}`;\r\n }\r\n\r\n if (name === \"material arrived\"){\r\n let dateStr = project.materialActualArrivalDate ? \" - \" + caller._util.getDateString(project.materialActualArrivalDate) : \"\";\r\n let deliveryDate = params.context.componentParent.hasAccess(\"MaterialActualArrivalDate\") ? dateStr : \"\";\r\n return `${project.materialProcurementStatus.name}${deliveryDate}`;\r\n }\r\n \r\n return project.materialProcurementStatus?.name;\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n 0)\"\r\n [styleClass]=\"'p-button p-button-text'\" \r\n label=\"View Invoices\" \r\n icon=\"pi-fw fas fa-search-dollar\"\r\n badge=\"{{selectedRow && selectedRow.invoices ? selectedRow.invoices.length : 0}}\" \r\n badgeClass=\"{{selectedRow && selectedRow.invoices.length > 0 ? 'p-badge-success' : 'hide'}}\">\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n 0)\"\r\n [styleClass]=\"'p-button-rounded p-button-success'\" \r\n icon=\"pi-fw fas fa-search-dollar\">\r\n\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n

Loading projects...

\r\n
\r\n\r\n '\"\r\n (gridReady)=\"onGridReady($event)\">\r\n \r\n \r\n \r\n
\r\n
","import { AbstractControl } from \"@angular/forms\";\r\nimport { isValid, parse } from 'date-fns';\r\n\r\nexport function bankGuaranteeRequiredValidator(c: AbstractControl): {[key:string]:boolean} | null{\r\n let contractNumber = c.get(\"contractNumber\");\r\n let bankGuaranteeAmount = c.get(\"bankGuaranteeAmount\");\r\n let bankGuaranteeExpireDate = c.get(\"bankGuaranteeExpirationDate\");\r\n\r\n // Project status is in the format of {id:number, name:string}\r\n let result = null;\r\n if (contractNumber.value && contractNumber.value.length > 0){\r\n // return result;\r\n if (!bankGuaranteeAmount.value){\r\n bankGuaranteeAmount.setErrors({\"required\": true});\r\n return {\"bankGuaranteeAmountRequired\": true};\r\n }\r\n\r\n if (!bankGuaranteeExpireDate.value){\r\n bankGuaranteeExpireDate.setErrors({\"required\": true});\r\n return {\"bankGuaranteeExpireDateRequired\": true};\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\nimport { isValid, parse } from 'date-fns';\r\n\r\nexport function poRequiredValidator(c: AbstractControl): {[key:string]:boolean} | null{\r\n let projectStatus = c.get(\"projectStatus\");\r\n let poNumber = c.get(\"poNumber\");\r\n let poAmount = c.get(\"poAmount\");\r\n\r\n // Project status is in the format of {id:number, name:string}\r\n if (projectStatus.value && projectStatus.value.name === \"PO Received\"){\r\n if (!poNumber.value){\r\n poNumber.setErrors({\"required\": true});\r\n return {\"poNumberRequired\": true};\r\n }\r\n\r\n if (!poAmount.value){\r\n poAmount.setErrors({\"required\": true});\r\n return {\"poAmountRequired\": true};\r\n }\r\n }\r\n return null;\r\n}\r\n","import { Component, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { MenuItem } from \"primeng/api\";\r\nimport { SubSink } from \"subsink/dist/subsink\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { ReportService } from \"../services/report.service\";\r\nimport { MonthlyIncomeReportItem } from \"../shared/models/monthly-income-report-item\";\r\n\r\n@Component({\r\n selector: \"pps-monthly-income-report\",\r\n templateUrl: \"./monthly-income-report.component.html\"\r\n})\r\nexport class MonthlyIncomeReportComponent implements OnInit, OnDestroy{\r\n private subs = new SubSink();\r\n smallScreen = false;\r\n\r\n items: MenuItem[] = [{label: \"Report\", icon: \"pi-fw fas fa-table\"}, {label: \"Monthly Income Report\", icon: \"pi-fw far fa-file-excel\"}];\r\n spinnerName: string = \"spinner\";\r\n exporting = false;\r\n\r\n reportItems: MonthlyIncomeReportItem[] = [];\r\n message: string = \"\";\r\n\r\n constructor(private _reportService: ReportService,\r\n private spinner: NgxSpinnerService,\r\n public util: PpsUtilityService){}\r\n\r\n ngOnInit(): void {\r\n this.loadReportData();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n \r\n loadReportData(){\r\n this.spinner.show(this.spinnerName);\r\n this.subs.sink = this._reportService.getMonthlyIncomeReportData()\r\n .subscribe(res => {\r\n if (res.succeed){\r\n if (res.result.length === 0){\r\n this.message = \"No data found!\";\r\n }else{\r\n this.reportItems = res.result;\r\n let monthTotals = {};\r\n\r\n this.reportItems.forEach(i => {\r\n i.dateString = i.monthName + \", \" + i.year;\r\n i.dateValue = new Date(i.year, i.month, 1);\r\n if (monthTotals.hasOwnProperty(i.dateString)){\r\n monthTotals[i.dateString] += i.invoiceValue;\r\n }else{\r\n monthTotals[i.dateString] = i.invoiceValue;\r\n }\r\n });\r\n\r\n this.reportItems.forEach(i => i.monthTotal = monthTotals[i.dateString]);\r\n\r\n this.updateRowGroupMetaData();\r\n console.log(this.reportItems);\r\n }\r\n }\r\n }, \r\n error => {},\r\n ()=> {\r\n this.spinner.hide(this.spinnerName);\r\n });\r\n }\r\n\r\n exportToExcel(){\r\n this.spinner.show(this.spinnerName);\r\n this.exporting = true;\r\n this._reportService.generateMonthlyIncomeReport(\r\n () => {\r\n this.spinner.hide(this.spinnerName);\r\n this.exporting = false;\r\n });\r\n }\r\n rowGroupMetadata: any;\r\n\r\n onSort(){\r\n this.updateRowGroupMetaData();\r\n }\r\n\r\n updateRowGroupMetaData() {\r\n this.rowGroupMetadata = {};\r\n\r\n if (this.reportItems) {\r\n for (let i = 0; i < this.reportItems.length; i++) {\r\n let rowData = this.reportItems[i];\r\n let groupName = rowData.dateString;\r\n \r\n if (i == 0) {\r\n this.rowGroupMetadata[groupName] = { index: 0, size: 1 };\r\n }\r\n else {\r\n let previousRowData = this.reportItems[i - 1];\r\n let previousRowGroup = previousRowData.dateString;\r\n if (groupName === previousRowGroup)\r\n this.rowGroupMetadata[groupName].size++;\r\n else\r\n this.rowGroupMetadata[groupName] = { index: i, size: 1 };\r\n }\r\n }\r\n }\r\n } \r\n}","\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n

Generating monthly income report...

\r\n
\r\n\r\n \r\n \r\n \r\n Project No\r\n Project Description\r\n Invoice Value\r\n Invoices\r\n \r\n \r\n \r\n \r\n \r\n {{reportItem.dateString}}\r\n \r\n \r\n {{util.formatCurrency(reportItem.monthTotal)}}\r\n \r\n \r\n \r\n \r\n \r\n {{reportItem.projectNo}}\r\n \r\n \r\n {{reportItem.projectDescription}}\r\n \r\n \r\n {{util.formatCurrency(reportItem.invoiceValue)}}\r\n \r\n \r\n {{reportItem.invoices}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n","export class PoInvoiceDiscrepancyReportItem{\r\n poNo: string;\r\n poAmount: string;\r\n totalPoInvoiceValue: string;\r\n projectNo: string;\r\n projectDescription: string;\r\n installationProgress: string;\r\n totalProjectInvoiceValue: string;\r\n invoiceNo: string;\r\n invoiceDate: string;\r\n incomeMonth: string;\r\n invoiceValue: string;\r\n}","import { Component, OnDestroy, OnInit, ViewEncapsulation } from \"@angular/core\";\r\nimport { format } from \"date-fns\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { MenuItem } from \"primeng/api\";\r\nimport { SubSink } from \"subsink/dist/subsink\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { ReportService } from \"../services/report.service\";\r\nimport { PoInvoiceDiscrepancyReportData } from \"../shared/models/po-discrepancy-report-data\";\r\nimport { PoInvoiceDiscrepancyReportItem } from \"./po-discrepancy-report-item\";\r\n\r\n@Component({\r\n selector: \"pps-po-invoice-discrepancy-report\",\r\n templateUrl: \"./po-invoice-discrepancy-report.component.html\",\r\n styles: [\r\n `#po-invoice-discrepancy-table .p-datatable.p-datatable-hoverable-rows .p-datatable-tbody > tr:not(.p-highlight):hover td{\r\n background: rgba(0, 0, 0, 0.04);\r\n color: rgba(0, 0, 0, 0.87);\r\n }` \r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class PoInvoiceDiscrepancyReportComponent implements OnInit, OnDestroy{\r\n private subs = new SubSink();\r\n smallScreen = false;\r\n\r\n items: MenuItem[] = [{label: \"Report\", icon: \"pi-fw fas fa-table\"}, {label: \"PO/Invoice Discrepancy Report\", icon: \"pi-fw far fa-file-excel\"}];\r\n spinnerName: string = \"spinner\";\r\n exporting = false;\r\n\r\n reportItems: PoInvoiceDiscrepancyReportItem[] = [];\r\n message: string = \"\";\r\n\r\n constructor(private _reportService: ReportService,\r\n private spinner: NgxSpinnerService,\r\n public util: PpsUtilityService){}\r\n\r\n ngOnInit(): void {\r\n this.loadReportData();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n \r\n loadReportData(){\r\n this.spinner.show(this.spinnerName);\r\n this.reportItems = [];\r\n this.subs.sink = this._reportService.getPoDiscrepancyReportData()\r\n .subscribe(res => {\r\n if (res.succeed){\r\n let reportData: PoInvoiceDiscrepancyReportData = res.result;\r\n // for each PO number\r\n reportData.nonmatchPoList.forEach(po => {\r\n let poAmnount = reportData.poProjectsLookup[po].reduce((sum, cur) => sum + (cur.poAmount || 0), 0);\r\n let totalPoInvoiceValue = 0;\r\n reportData.poProjectsLookup[po].forEach(p=>{\r\n let poInvoiceValue = 0;\r\n if (p.invoices.length > 0){\r\n poInvoiceValue = p.invoices.reduce((sum,cur) => sum + cur.invoiceValue, 0);\r\n }\r\n\r\n totalPoInvoiceValue += poInvoiceValue;\r\n });\r\n\r\n reportData.poProjectsLookup[po].forEach((prj, prjIndex) =>{\r\n if (prj.invoices.length > 0){\r\n let invoiceTotal = prj.invoices.reduce((sum,cur) => sum + cur.invoiceValue, 0);\r\n prj.invoices.forEach((inv, invoiceIndex) => {\r\n let item = new PoInvoiceDiscrepancyReportItem ();\r\n if (invoiceIndex === 0){\r\n if (prjIndex === 0){\r\n item.poNo = po;\r\n item.poAmount = this.util.formatCurrency(poAmnount);\r\n item.totalPoInvoiceValue = this.util.formatCurrency(totalPoInvoiceValue);\r\n }\r\n item.projectNo = prj.projectNo;\r\n item.projectDescription = prj.description;\r\n item.installationProgress = prj.installationProgress?.name;\r\n item.totalProjectInvoiceValue = this.util.formatCurrency(invoiceTotal);\r\n }\r\n item.invoiceNo = inv.invoiceNo;\r\n item.invoiceDate = this.util.getDateString(new Date(inv.invoiceDate));\r\n item.incomeMonth = format(new Date(inv.invoiceDate), \"MMMM, yyyy\");\r\n item.invoiceValue = this.util.formatCurrency(inv.invoiceValue);\r\n this.reportItems.push(item);\r\n });\r\n }else{\r\n let item = new PoInvoiceDiscrepancyReportItem ();\r\n if (prjIndex === 0){\r\n item.poNo = po;\r\n item.poAmount = this.util.formatCurrency(poAmnount);\r\n item.totalPoInvoiceValue = this.util.formatCurrency(totalPoInvoiceValue);\r\n }\r\n item.projectNo = prj.projectNo;\r\n item.projectDescription = prj.description;\r\n item.installationProgress = prj.installationProgress?.name;\r\n item.totalProjectInvoiceValue = this.util.formatCurrency(0);\r\n this.reportItems.push(item);\r\n }\r\n });\r\n })\r\n }\r\n }, \r\n error => {},\r\n ()=> {\r\n this.spinner.hide(this.spinnerName);\r\n });\r\n }\r\n\r\n exportToExcel(){\r\n this.spinner.show(this.spinnerName);\r\n this.exporting = true;\r\n this._reportService.generatePoInvoiceDiscrepancyReport(\r\n () => {\r\n this.spinner.hide(this.spinnerName);\r\n this.exporting = false;\r\n });\r\n }\r\n rowGroupMetadata: any;\r\n\r\n onSort(){\r\n }\r\n}","\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n

Generating po/invoice discrepancy report...

\r\n
\r\n\r\n \r\n \r\n \r\n #\r\n PO No\r\n PO Amount\r\n Total Invoice Value\r\n Project No\r\n Project Description\r\n Installation Progress\r\n Total Project Invoice Value\r\n Invoice No\r\n Invoice Date\r\n Income Month\r\n Invoice Value\r\n \r\n \r\n \r\n \r\n {{rowIndex + 1}}\r\n {{reportItem.poNo}}\r\n {{reportItem.poAmount}}\r\n {{reportItem.totalPoInvoiceValue}}\r\n {{reportItem.projectNo}}\r\n {{reportItem.projectDescription}}\r\n {{reportItem.installationProgress}}\r\n {{reportItem.totalProjectInvoiceValue}}\r\n {{reportItem.invoiceNo}}\r\n {{reportItem.invoiceDate}}\r\n {{reportItem.incomeMonth}}\r\n {{reportItem.invoiceValue}}\r\n \r\n \r\n \r\n \r\n
\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AgGridModule} from 'ag-grid-angular';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BadgeModule } from 'primeng/badge';\r\nimport { BreadcrumbModule } from 'primeng/breadcrumb';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { DividerModule } from 'primeng/divider';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { ToolbarModule } from 'primeng/toolbar';\r\nimport { AuthGuardService } from '../services/auth-guard.service';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { NgxSpinnerModule } from 'ngx-spinner';\r\nimport { MonthlyIncomeReportComponent } from './monthly-income-report.component';\r\nimport { TableModule } from 'primeng/table';\r\nimport { PoInvoiceDiscrepancyReportItem } from './po-discrepancy-report-item';\r\nimport { PoInvoiceDiscrepancyReportComponent } from './po-invoice-discrepancy-report.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgxSpinnerModule,\r\n AgGridModule.withComponents([]),\r\n\r\n BadgeModule,\r\n BreadcrumbModule,\r\n ButtonModule,\r\n CalendarModule,\r\n DividerModule,\r\n DropdownModule,\r\n TableModule,\r\n ToastModule,\r\n ToolbarModule,\r\n TooltipModule,\r\n \r\n RouterModule.forChild([\r\n {path: 'monthly-income-report', component: MonthlyIncomeReportComponent, canActivate: [AuthGuardService] },\r\n {path: 'po-invoice-discrepancy-report', component: PoInvoiceDiscrepancyReportComponent, canActivate: [AuthGuardService] }\r\n ])\r\n ],\r\n declarations:[\r\n MonthlyIncomeReportComponent,\r\n PoInvoiceDiscrepancyReportComponent\r\n ]\r\n})\r\nexport class ReportModule{\r\n}","\r\n

{{errorMessage}}

\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {{option.lastName}}, {{option.firstName}}; \r\n \r\n \r\n
4\">{{value.length}} employees selected
\r\n
Select employees
\r\n
\r\n \r\n
\r\n
{{employee.lastName}}, {{employee.firstName}}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component } from \"@angular/core\";\r\nimport { IEmployeeSimpleModel } from \"../shared/models/roster/employee-simple-model\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { IRosterDataClearModel } from \"../shared/models/roster/roster-data-clear-model\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\n\r\n@Component({\r\n selector: \"delete-roster-data-form\" ,\r\n templateUrl: \"./delete-roster-data-form.component.html\"\r\n})\r\nexport class DeleteRosterDataFormComponent{\r\n fromDate: Date = new Date();\r\n employees: IEmployeeSimpleModel[] = [];\r\n selectedEmployees: IEmployeeSimpleModel[] = [];\r\n deletionNote: string = \"\";\r\n errorMessage: string = \"\";\r\n\r\n constructor( \r\n private _util: PpsUtilityService,\r\n private _dialogRef: DynamicDialogRef, \r\n private _dialogConfig: DynamicDialogConfig){\r\n this.employees = _dialogConfig.data.employees;\r\n }\r\n\r\n cancel(){\r\n this._dialogRef.close();\r\n }\r\n\r\n delete(){\r\n let rosterDataClearModel:IRosterDataClearModel = {\r\n startDate: this.fromDate,\r\n employees: this.selectedEmployees.map(e => e.id),\r\n note: this.deletionNote\r\n };\r\n\r\n if (rosterDataClearModel.employees.length === 0){\r\n this.errorMessage = \"Must select one or more employees to continue\";\r\n return;\r\n }\r\n\r\n let selectedEmps = this.selectedEmployees.map(e => this._util.getEmployeeName(e)).join(\"; \");\r\n this._dialogRef.close({deletionModel: rosterDataClearModel, selectedEmployees: selectedEmps});\r\n }\r\n}","import { Component } from \"@angular/core\";\r\nimport { IFilterAngularComp } from \"ag-grid-angular\";\r\nimport { IDoesFilterPassParams, IFilterParams } from \"ag-grid-community\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { ISelectOption } from \"../shared/models/option\";\r\nimport { TicketStatus } from \"../shared/models/roster/ticket-status\";\r\n\r\n@Component({\r\n selector: \"pps-employee-filter\",\r\n templateUrl: \"./employee-filter.component.html\"\r\n})\r\nexport class EmployeeFilterComponent implements IFilterAngularComp{\r\n params!: IFilterParams;\r\n employees: ISelectOption[] = [];\r\n selectedEmployees: ISelectOption[] = [];\r\n employeeName = null;\r\n\r\n constructor(private util: PpsUtilityService){}\r\n \r\n agInit(params: IFilterParams): void {\r\n this.params = params;\r\n this.employees = params[\"employees\"];\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams) {\r\n const { api, colDef, column, columnApi, context } = this.params;\r\n const { node } = params;\r\n\r\n let match = false;\r\n if (this.isSelectFilter()){\r\n this.selectedEmployees.forEach((emp) => {\r\n if (emp.text === this.util.getEmployeeName(node.data.employee)){\r\n match = true;\r\n }\r\n });\r\n }else{\r\n if (this.isTextFilter()){\r\n const valueFromGrid = this.util.getEmployeeName(node.data.employee)?.toLowerCase();\r\n if (valueFromGrid.indexOf(this.employeeName.toLowerCase()) !== -1){\r\n match = true;\r\n }\r\n }\r\n }\r\n\r\n return match;\r\n }\r\n\r\n isFilterActive(): boolean {\r\n return this.isSelectFilter() || this.isTextFilter();\r\n }\r\n\r\n private isSelectFilter(){\r\n return this.selectedEmployees && this.selectedEmployees.length > 0;\r\n }\r\n\r\n private isTextFilter(){\r\n return this.employeeName !== null;\r\n }\r\n\r\n getModel() {\r\n if (!this.isFilterActive()) {\r\n return null;\r\n }\r\n\r\n return { value: this.isSelectFilter() ? this.selectedEmployees : this.employeeName };\r\n }\r\n\r\n setModel(model: any) {\r\n if (this.isSelectFilter()){\r\n this.selectedEmployees = model == null ? null : model.value;\r\n }else{\r\n this.employeeName = model == null ? null : model.value;\r\n }\r\n }\r\n\r\n onChange(data) {\r\n //console.log(this.selectedEmployees);\r\n this.employeeName = null;\r\n this.params.filterChangedCallback();\r\n }\r\n\r\n onFloatingFilterChanged(employeeName){\r\n //console.log(\"floating filter changed: \" + employeeName);\r\n this.employeeName = employeeName;\r\n this.selectedEmployees = null;\r\n this.params.filterChangedCallback();\r\n }\r\n // onPanelShow(evt){\r\n // var elements = document.querySelectorAll('.p-component.p-multiselect-panel');\r\n // if (elements && elements.length === 1){\r\n // elements[0].classList.add(\"ag-custom-component-popup\");\r\n // }\r\n // }\r\n}","\r\n\r\n\r\n","import { Component, ViewEncapsulation } from \"@angular/core\";\r\nimport {IFloatingFilterAngularComp} from \"ag-grid-angular\";\r\nimport { FilterChangedEvent, IFloatingFilterParams } from \"ag-grid-community\";\r\nimport { ISelectOption } from \"../shared/models/option\";\r\n\r\n@Component({\r\n selector: \"pps-employee-floating-filter\",\r\n templateUrl: \"./employee-floating-filter.component.html\",\r\n styles: [`\r\n pps-employee-floating-filter{\r\n width:100%;\r\n }\r\n\r\n /*without this, the filter input field will be vertically aligned to top*/\r\n pps-employee-floating-filter .ag-floating-filter-input{\r\n height: 100%;\r\n }\r\n `],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class EmployeeFloatingFilterComponent implements IFloatingFilterAngularComp{\r\n params!: IFloatingFilterParams;\r\n employeeName: string = null;\r\n selectedEmployees: ISelectOption[] = [];\r\n\r\n\r\n onParentModelChanged(parentModel: any, filterChangedEvent?: FilterChangedEvent): void {\r\n this.employeeName = null;\r\n }\r\n\r\n agInit(params: IFloatingFilterParams): void {\r\n this.params = params;\r\n }\r\n\r\n onFilterChanged(evt){\r\n console.log(this.employeeName);\r\n \r\n if (!this.employeeName) {\r\n // Remove the filter\r\n this.params.parentFilterInstance((instance) => {\r\n instance.onFloatingFilterChanged(null);\r\n });\r\n return;\r\n }\r\n\r\n this.params.parentFilterInstance((instance: any) => {\r\n instance.onFloatingFilterChanged(this.employeeName);\r\n }); \r\n }\r\n}","\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\nimport { IEmployeeRoster } from '../shared/models/roster/employee-roster';\r\n\r\n@Component({\r\n selector: 'pps-employee-name-renderer',\r\n template: `\r\n \r\n {{employeeName}}\r\n `\r\n})\r\nexport class EmployeeNameRenderer implements ICellRendererAngularComp {\r\n employeeName!: string;\r\n params: any;\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.employeeName = this.params.context.componentParent.getDisplayName(params);\r\n }\r\n\r\n isBirthday(): boolean{\r\n return this.params.context.componentParent.isBirthday(this.params);\r\n }\r\n\r\n refresh(params: ICellRendererParams) {\r\n return false;\r\n }\r\n}","import { Component, OnInit } from '@angular/core';\r\nimport { IRosterCode } from '../shared/models/roster-code';\r\nimport { IRosterValue } from \"../shared/models/roster/roster-value\";\r\nimport { IEmployeeRosterUpdateModel } from \"../shared/models/roster/employee-roster-update-model\";\r\nimport { NgForm } from '@angular/forms';\r\nimport { RosterCodes } from '../shared/models/roster-codes';\r\nimport { RosterPatternParser } from '../services/roster-pattern-parser';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { RosterTypeService } from '../services/roster-type.service';\r\nimport { IRosterNote } from '../shared/models/roster/roster-note';\r\nimport { TicketStatus } from '../shared/models/roster/ticket-status';\r\nimport * as _ from 'lodash-es';\r\nimport { isSameDay } from 'date-fns';\r\nimport { PayrollRosterCodeRecommendor } from './payroll-roster-code-recommendor';\r\nimport { RosterCodeService } from '../services/roster-code.service';\r\nimport { ConfirmationService } from 'primeng/api';\r\n\r\n@Component({\r\n selector: 'pps-employee-roster-form',\r\n templateUrl: './employee-roster-form.component.html',\r\n styleUrls: ['./employee-roster-form.component.css']\r\n})\r\nexport class EmployeeRosterFormComponent implements OnInit{\r\n employeeName:string = \"\";\r\n errorMessage: string = \"\";\r\n\r\n rosterPattern: string = \"FIP DAY 1:13 FOP R&R 6 FIP NIGHT 2:13 FOA R&R 6\";\r\n showRosterNoteField: boolean = false;\r\n \r\n cycles: number = 1;\r\n\r\n rosterDate: Date;\r\n rosterCodes: IRosterCode[] = [];\r\n rosterCodesObject: {[id: number]:IRosterCode} = {};\r\n payrollRosterCodes: IRosterCode[] = [];\r\n selectedRosterValue: IRosterValue;\r\n previousRosterValue: IRosterValue; // introduced to help validate the payroll roster code\r\n nextRosterValue: IRosterValue; // introduced to help validate the payroll roster code\r\n selectedRosterCode: IRosterCode = null;\r\n selectedPayrollRosterCode: IRosterCode = null;\r\n rosterNote: IRosterNote = null;\r\n\r\n ticketStatuses: any = [\r\n {id: TicketStatus.Approved, name: \"Approved\"},\r\n {id: TicketStatus.PendingApproval, name: \"Pending approval\"},\r\n {id: TicketStatus.Planned, name: \"Planned\"}];\r\n\r\n fromDate: Date;\r\n toDate: Date;\r\n\r\n private oldRosterValue: IRosterValue;\r\n private employeeId: number;\r\n\r\n constructor(\r\n private _dialogRef: DynamicDialogRef,\r\n private _dialogConfig: DynamicDialogConfig,\r\n private _patternParser: RosterPatternParser,\r\n private _payrollRosterCodeRecommendor: PayrollRosterCodeRecommendor,\r\n private _rosterCodeService: RosterCodeService,\r\n private _confirmationService: ConfirmationService,\r\n private _util: PpsUtilityService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setData(this._dialogConfig.data);\r\n }\r\n\r\n setData(rosterData:any){\r\n this.fromDate = this.toDate = rosterData.date as Date;\r\n\r\n this.employeeName = rosterData.employeeName;\r\n this.employeeId = rosterData.employeeId;\r\n this.rosterCodes = _.cloneDeep(rosterData.rosterCodes);\r\n this.rosterCodes.forEach(rc => this.rosterCodesObject[rc.id] = rc);\r\n this.payrollRosterCodes = _.cloneDeep(this.rosterCodes.filter(rc=>rc.canBeUsedInTimesheetBreakdownRule));\r\n \r\n this.selectedRosterValue = _.cloneDeep(rosterData.selectedRosterValue);\r\n this.selectedRosterValue.rn = this.selectedRosterValue.rn || {employeeId: this.employeeId, day: this.fromDate, note: \"\"};\r\n\r\n this.previousRosterValue = rosterData.previousRosterValue;\r\n this.nextRosterValue = rosterData.nextRosterValue;\r\n\r\n this.oldRosterValue = _.cloneDeep(rosterData.selectedRosterValue);\r\n this.oldRosterValue.rn = this.oldRosterValue.rn || {employeeId: this.employeeId, day: this.fromDate, note: \"\"};\r\n\r\n this.showRosterNoteField = this.selectedRosterValue.rc.id !== 0;\r\n\r\n // add special clear roster codes\r\n this.rosterCodes.unshift({id: -1, code: \"Empty\"});\r\n\r\n this.checkPayrollRosterCode();\r\n }\r\n\r\n onRosterCodeChanged(evt){\r\n if (!evt.value){\r\n return;\r\n }\r\n\r\n let selectedRosterCode = evt.value;\r\n\r\n this.errorMessage = \"\";\r\n\r\n if (!this.showDayNo){\r\n this.selectedRosterValue.sn = null;\r\n }\r\n\r\n if (!this.selectedRosterValue.rc.hasTicketStatus){\r\n this.selectedRosterValue.ts.id = 0;\r\n }\r\n\r\n this.checkPayrollRosterCode();\r\n }\r\n\r\n\r\n get showDayNo(): boolean{\r\n return this.selectedRosterValue && \r\n this.selectedRosterValue.rc &&\r\n (this.selectedRosterValue.rc.id === RosterCodes.Day || \r\n this.selectedRosterValue.rc.id === RosterCodes.Night);\r\n }\r\n\r\n showPayrollRosterCode(){\r\n return this.selectedRosterValue && \r\n this.rosterCodesObject.hasOwnProperty(this.selectedRosterValue.rc.id) && \r\n !this.rosterCodesObject[this.selectedRosterValue.rc.id]?.canBeUsedInTimesheetBreakdownRule;\r\n }\r\n\r\n showTicketStatus(){\r\n return this.selectedRosterValue &&\r\n this.rosterCodesObject.hasOwnProperty(this.selectedRosterValue.rc.id) && \r\n this.rosterCodesObject[this.selectedRosterValue.rc.id]?.hasTicketStatus;\r\n }\r\n\r\n save(form: NgForm, section){\r\n this.errorMessage = \"\";\r\n \r\n if (form.invalid){\r\n return false;\r\n }\r\n\r\n if (section === 1){\r\n let result: IApiResult = this._patternParser.parse(0, new Date(), this.rosterPattern, this.rosterCodesObject);\r\n if (!result.succeed){\r\n this.errorMessage = result.errors.join(\".\");\r\n return;\r\n }\r\n\r\n if (isNaN(this.cycles) || +this.cycles < 1){\r\n this.errorMessage = \"There must be at least one cycle\";\r\n return;\r\n }\r\n }\r\n\r\n // Check sequence value\r\n if (this.showDayNo && \r\n (!this.selectedRosterValue.sn ||\r\n isNaN(this.selectedRosterValue.sn))){\r\n this.errorMessage = \"Please enter a day no.\"\r\n return false;\r\n }\r\n\r\n if (this.selectedRosterValue.rc?.canBeUsedInTimesheetBreakdownRule){\r\n this.selectedRosterValue.prc = this._util.deepCopy(this.selectedRosterValue.rc);\r\n }\r\n\r\n if (this.selectedRosterValue.rc?.id === 0){\r\n this.errorMessage = \"You must select a roster code.\"\r\n return false;\r\n }\r\n\r\n if (this.selectedRosterValue.rc?.hasTicketStatus && this.selectedRosterValue.ts?.id === 0){\r\n this.errorMessage = \"Please select a ticket status.\"\r\n return false;\r\n }\r\n\r\n // User selected Empty \r\n if (this.selectedRosterValue.rc?.id === -1){\r\n this.selectedRosterValue = {\r\n rc: {id: 0, code: null},\r\n prc: {id: 0, code: null},\r\n sn: null,\r\n ts: {id: 0, description: null},\r\n rn: {employeeId: this.employeeId, day: this.fromDate, note: \"\"}\r\n };\r\n }\r\n\r\n if (this.selectedRosterValue.rn){\r\n this.selectedRosterValue.rn.note = this.selectedRosterValue.rn.note?.trim();\r\n }\r\n\r\n let updateSection = this.checkChanges();\r\n console.log(\"Update section \" + updateSection);\r\n\r\n //return;\r\n\r\n let result = {\r\n employeeId: this.employeeId,\r\n section: updateSection,\r\n\r\n /* Following 2 fields are for secontion 1 only */\r\n pattern: this.rosterPattern,\r\n cycles: this.cycles,\r\n\r\n /* Following 4 fields are for secontion 2 only */\r\n oldRosterValue: this.oldRosterValue,\r\n rosterValue: this.selectedRosterValue,\r\n from: this.fromDate,\r\n to: this.toDate,\r\n\r\n /* Following 1 fields are for secontion 3 only */\r\n rosterNote: this.selectedRosterValue.rn\r\n };\r\n\r\n this._dialogRef.close(result);\r\n }\r\n\r\n private checkChanges(): number{\r\n let oldFromDate = this._dialogConfig.data.date as Date;\r\n let oldToDate = this._dialogConfig.data.date as Date;\r\n let updateSection = 0;\r\n \r\n\r\n if (this.selectedRosterValue.rc?.id !== this.oldRosterValue.rc?.id ||\r\n this.selectedRosterValue.sn !== this.oldRosterValue.sn ||\r\n this.selectedRosterValue.prc?.id !== this.oldRosterValue.prc?.id ||\r\n this.selectedRosterValue.ts?.id !== this.oldRosterValue.ts?.id ||\r\n !isSameDay(this.fromDate, oldFromDate) ||\r\n !isSameDay(this.toDate, oldToDate)){\r\n updateSection = 1;\r\n }\r\n\r\n if (this.selectedRosterValue.rn?.note !== this.oldRosterValue.rn?.note){\r\n updateSection = updateSection | 2;\r\n }\r\n\r\n return updateSection; \r\n }\r\n\r\n cancel(){\r\n this._dialogRef.close();\r\n }\r\n\r\n checkPayrollRosterCode(){\r\n // checking existing payroll roster code\r\n if (this.selectedRosterValue.rc.id === 0){\r\n return;\r\n }\r\n \r\n let recommentedPayrollRosterCode = \r\n this._rosterCodeService.getRosterCode(\r\n this._payrollRosterCodeRecommendor.recommend(this.selectedRosterValue, this.previousRosterValue, this.nextRosterValue)\r\n );\r\n\r\n if (recommentedPayrollRosterCode?.id !== this.selectedRosterValue.prc?.id){\r\n this._confirmationService.confirm({\r\n header: \"Incorrect Payroll Roster Code\",\r\n message: `The current payroll roster code is ${this.selectedRosterValue.prc?.code || \"not set\"}. We recommend changing to ${recommentedPayrollRosterCode?.code}`,\r\n icon: \"pi pi-ban text-danger\",\r\n key: \"invalidPayrollRosterCodePromptDialog\",\r\n acceptVisible: true,\r\n acceptLabel: \"Accept Change\",\r\n rejectLabel: \"Ignore Change\",\r\n accept: () => {\r\n this.selectedRosterValue.prc = recommentedPayrollRosterCode;\r\n }\r\n //rejectVisible: false\r\n });\r\n }\r\n }\r\n}\r\n","\r\n

{{errorMessage}}

\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {{rosterCode.code}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {{rosterCode.code}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n\r\n ","import { AfterViewInit, Component, EventEmitter, Input, OnChanges, OnInit, Output } from \"@angular/core\";\r\nimport { format } from \"date-fns\";\r\nimport { SubSink } from \"subsink\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { RosterService } from \"../services/roster.service\";\r\nimport { IInvalidEmployeeRoster } from \"../shared/models/roster/invalid-employee-roster\";\r\nimport { IPayrollRosterCodeUpdateModel } from \"../shared/models/roster/payroll-roster-code-update-mode\";\r\nimport { IRosterCode } from \"../shared/models/roster-code\";\r\nimport { ToastService } from \"../shared/toast/toast.service\";\r\n\r\ninterface InvalidEmployeeRosterViewModel{\r\n employeeId: number;\r\n day: Date,\r\n employeeName: string;\r\n dayStr: string;\r\n rosterCode: string;\r\n currentPayrollRosterCode: IRosterCode;\r\n suggestedPayrollRosterCode: IRosterCode;\r\n\r\n canUpdatePayrollRosterCode: boolean;\r\n payrollRosterCodeUpdateModel: IPayrollRosterCodeUpdateModel\r\n}\r\n\r\n@Component({\r\n selector: \"pps-invalid-employee-roster\",\r\n templateUrl: \"./invalid-employee-rosters.component.html\"\r\n})\r\nexport class InvalidEmployeeRostersComponent implements OnChanges{\r\n @Input() from: Date;\r\n @Input() to: Date;\r\n @Input() rosterProjectId: number;\r\n @Output() onSelect = new EventEmitter<{rowId: string, colId: string, autoOpenForm?: boolean}>();\r\n @Output() onPayrollRosterCodeUpdate = new EventEmitter<{rowId: string, colId: string, payrollRosterCode: IRosterCode}>();\r\n @Output() onReloadRoster = new EventEmitter();\r\n\r\n private subs = new SubSink();\r\n \r\n message = \"\";\r\n messageSeverity = \"success\";\r\n validating = false;\r\n shouldReloadRoster: boolean = false;\r\n totalNumberFixed: number = 0;\r\n totalInvalidNumber: number = 0;\r\n\r\n InvalidEmployeeRosters: InvalidEmployeeRosterViewModel[] = [];\r\n selectedRoster: InvalidEmployeeRosterViewModel = null;\r\n autoOpenEmployeeRosterForm = false;\r\n\r\n constructor(\r\n private _rosterService: RosterService,\r\n private _toast: ToastService,\r\n private _util: PpsUtilityService\r\n ){\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.loadData();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n } \r\n\r\n loadData(){\r\n this.InvalidEmployeeRosters = [];\r\n this.selectedRoster = null;\r\n this.validating = true;\r\n this.subs.sink = this._rosterService.getInvalidEmployeeRosters(this.rosterProjectId, this.from, this.to)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.InvalidEmployeeRosters = res.result.map(ier=>{\r\n return {\r\n employeeId: ier.employee.id,\r\n employeeName: this._util.getEmployeeName(ier.employee),\r\n day: ier.day,\r\n dayStr: format(ier.day, \"dd/MM/yyyy\"),\r\n rosterCode: ier.rosterCode.code,\r\n currentPayrollRosterCode: ier.currentPayrollRosterCode,\r\n suggestedPayrollRosterCode: ier.suggestedPayrollRosterCode,\r\n\r\n canUpdatePayrollRosterCode: ier.suggestedPayrollRosterCode?.id > 0,\r\n payrollRosterCodeUpdateModel: {\r\n employeeId: ier.employee.id,\r\n day: ier.day,\r\n oldValue: ier.currentPayrollRosterCode?.id,\r\n newValue: ier.suggestedPayrollRosterCode?.id\r\n }\r\n }\r\n });\r\n\r\n this.totalInvalidNumber = this.InvalidEmployeeRosters.length;\r\n if (this.totalInvalidNumber === 0){\r\n this.message = `\r\n All payroll roster codes between ${format(this.from, \"dd/MM/yyyy\")} and ${format(this.to, \"dd/MM/yyyy\")} are good. \r\n `;\r\n this.messageSeverity = \"success\";\r\n }\r\n }else{\r\n this.message = res.errors.join(\";\");\r\n this.messageSeverity = \"error\";\r\n }\r\n },\r\n err => {},\r\n () => {\r\n this.validating = false;\r\n });\r\n }\r\n\r\n onRowSelect(row){\r\n let colId = format(this.selectedRoster.day, \"yyyyMMdd\");\r\n let rowId = this.selectedRoster.employeeId;\r\n this.onSelect.emit({rowId: rowId + \"\", colId: colId, autoOpenForm: this.autoOpenEmployeeRosterForm});\r\n }\r\n\r\n fixPayrollRosterCode(invalidEmployeeRoster: InvalidEmployeeRosterViewModel){\r\n this.subs.sink = this._rosterService.updatePayrolLRosterCode(this.rosterProjectId, [invalidEmployeeRoster.payrollRosterCodeUpdateModel])\r\n .subscribe(res=>{\r\n if (res.succeed){\r\n let colId = format(invalidEmployeeRoster.day, \"yyyyMMdd\");\r\n let rowId = invalidEmployeeRoster.employeeId;\r\n this.onPayrollRosterCodeUpdate.emit({rowId: rowId + \"\", colId: colId, payrollRosterCode: invalidEmployeeRoster.suggestedPayrollRosterCode});\r\n this.shouldReloadRoster = true;\r\n this.totalNumberFixed ++;\r\n\r\n // remove the fixed roster code from invalid roster code list\r\n let index = this.InvalidEmployeeRosters.findIndex(r => r.employeeId === invalidEmployeeRoster.employeeId && r.day === invalidEmployeeRoster.day);\r\n if (index !== -1){\r\n this.InvalidEmployeeRosters.splice(index, 1);\r\n }\r\n\r\n this._toast.succeeded(\"Successfully updated the payroll roster code\");\r\n }else{\r\n this._toast.failed(\"Failed to update the payroll roster code\");\r\n } \r\n });\r\n }\r\n\r\n reloadRoster(){\r\n this.onReloadRoster.emit();\r\n }\r\n}","
\r\n
\r\n Validating payroll roster code ...\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {{message}}\r\n

\r\n To validate roster code for a different date range, please use Load Roster button.\r\n
\r\n
\r\n
\r\n
\r\n\r\n
0\">\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n \r\n
\r\n {{InvalidEmployeeRosters.length}} invalid payroll roster codes found! \r\n
\r\n
\r\n Click on the row below to auto focus the roster cell. Then double click on the roster cell to fix the payroll roster code.

\r\n Click on \r\n to auto fix the payroll roster code.
\r\n You must reload roster after auto fix\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n Day\r\n Employee\r\n Code\r\n Current Payroll Code\r\n Suggested Payroll Code\r\n Action\r\n \r\n \r\n \r\n \r\n {{employeeRoster.dayStr}}\r\n {{employeeRoster.employeeName}}\r\n {{employeeRoster.rosterCode}}\r\n {{employeeRoster.currentPayrollRosterCode?.code}}\r\n \r\n {{employeeRoster.suggestedPayrollRosterCode?.code}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
","import { Injectable } from \"@angular/core\";\r\nimport { IRosterValue } from \"../shared/models/roster/roster-value\";\r\nimport { IRosterCode } from \"../shared/models/roster-code\";\r\nimport { RosterCodes } from \"../shared/models/roster-codes\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class PayrollRosterCodeRecommendor{\r\n recommend(currentRosterValue: IRosterValue, \r\n previousRosterValue: IRosterValue, \r\n nextRosterValue: IRosterValue): number{\r\n \r\n if (currentRosterValue.rc?.id === RosterCodes.FIP || currentRosterValue.rc?.id === RosterCodes.DIP){\r\n if (nextRosterValue.rc?.id === RosterCodes.Night){\r\n return RosterCodes.Night;\r\n }else{\r\n return previousRosterValue.rc.id === 0 ? RosterCodes.RR : previousRosterValue.rc.id;\r\n }\r\n }\r\n\r\n if (currentRosterValue.rc?.id === RosterCodes.FOA || currentRosterValue.rc?.id === RosterCodes.DOA){\r\n return RosterCodes.RR;\r\n }\r\n\r\n if (currentRosterValue.rc?.id === RosterCodes.FIA || currentRosterValue.rc?.id === RosterCodes.DIA){\r\n return RosterCodes.Day;\r\n }\r\n\r\n if (currentRosterValue.rc?.id === RosterCodes.FOP || currentRosterValue.rc?.id === RosterCodes.DOP){\r\n return RosterCodes.Day;\r\n }\r\n\r\n return currentRosterValue.prc?.id;\r\n }\r\n}","import { Component, OnInit } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport * as _ from 'lodash-es';\r\nimport { IRosterEmployeeNote } from '../shared/models/roster/roster-employee-note';\r\nimport { format } from 'date-fns';\r\nimport { RosterService } from '../services/roster.service';\r\n\r\n@Component({\r\n selector: 'pps-roster-employee-note-form',\r\n templateUrl: './roster-employee-note-form.component.html'\r\n})\r\nexport class RosterEmployeeNoteFormComponent implements OnInit{\r\n employeeName:string = \"\";\r\n subtitle: string = \"\";\r\n updateInfo: string = \"\";\r\n rosterEmployeeNote: IRosterEmployeeNote = null;\r\n oldRosterEmployeeNote: IRosterEmployeeNote = null;\r\n\r\n constructor(\r\n private _dialogRef: DynamicDialogRef,\r\n private _dialogConfig: DynamicDialogConfig,\r\n private _rosterService: RosterService,\r\n private _util: PpsUtilityService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setData(this._dialogConfig.data);\r\n }\r\n\r\n setData(empNote:IRosterEmployeeNote){\r\n this.rosterEmployeeNote = _.cloneDeep(empNote);\r\n this.oldRosterEmployeeNote = _.cloneDeep(empNote);\r\n this.updateInfo = \"\";\r\n this.subtitle = \"Note on \" + this._rosterService.getColumnName(empNote.columnName);\r\n if (this.rosterEmployeeNote.updateBy){\r\n this.updateInfo = `Last updated by ${this.rosterEmployeeNote.updateBy} on ${format(this.rosterEmployeeNote.updateDate, \"dd/MM/yyyy HH:mm:ss\")}`;\r\n }\r\n }\r\n\r\n hasFormChanged(): boolean{\r\n if (this.oldRosterEmployeeNote.note?.trim() === this.rosterEmployeeNote.note?.trim()){\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n \r\n save(form: NgForm){\r\n if (form.invalid){\r\n return false;\r\n }\r\n\r\n this._dialogRef.close(this.rosterEmployeeNote);\r\n }\r\n\r\n cancel(){\r\n this._dialogRef.close(null);\r\n }\r\n}\r\n","
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {{updateInfo}}\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n ","import { Component, ViewEncapsulation } from \"@angular/core\";\r\nimport { ITooltipAngularComp } from \"ag-grid-angular\";\r\nimport { ITooltipParams } from \"ag-grid-community\";\r\nimport { format, parseISO } from \"date-fns\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { RosterService } from \"../services/roster.service\";\r\nimport { IEmployeeRoster } from \"../shared/models/roster/employee-roster\";\r\nimport { IRosterNote } from \"../shared/models/roster/roster-note\";\r\nimport * as _ from \"lodash\";\r\nimport { IRosterEmployeeNote } from \"../shared/models/roster/roster-employee-note\";\r\n\r\n@Component({\r\n selector: \"pps-roster-tooltip\",\r\n templateUrl: \"./roster-tooltip.component.html\",\r\n styles: [`\r\n :host {\r\n position: absolute;\r\n overflow: visible;\r\n pointer-events: none;\r\n transition: opacity 1s;\r\n }\r\n\r\n :host.ag-tooltip-hiding {\r\n opacity: 0;\r\n }\r\n \r\n .zoesen-tooltip-header .p-panel-content{\r\n display: none;\r\n }\r\n `],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class RosterTooltipComponent implements ITooltipAngularComp{\r\n private params: { type: string } & ITooltipParams;\r\n rosterNote: IRosterNote;\r\n header: boolean = false;\r\n content: string = \"\";\r\n footer: string = \"\";\r\n title: string = \"\";\r\n\r\n constructor(\r\n private _util: PpsUtilityService,\r\n private _rosterService: RosterService\r\n ) {\r\n }\r\n\r\n agInit(params: { type: string } & ITooltipParams): void {\r\n this.params = params;\r\n\r\n if (params.location === \"cell\"){\r\n this.header = false;\r\n if (params.value && params.value === \"roster-note\"){\r\n var day = format(params.colDef[\"rosterDay\"], \"yyyyMMdd\");\r\n\r\n var rosterNote = params.data.values[day].rn;\r\n this.title = format(params.colDef[\"rosterDay\"], \"dd/MM/yyyy\")\r\n this.content = this.toHTML(rosterNote?.note);\r\n\r\n var dateStr = \"\";\r\n try{\r\n if (_.isString(rosterNote?.updateDate)){\r\n dateStr = format(parseISO(rosterNote?.updateDate), 'dd/MM/yyyy HH:mm:ss')\r\n }else{\r\n dateStr = format(rosterNote?.updateDate, \"dd/MM/yyyy HH:mm:ss\");\r\n }\r\n }catch(e){}\r\n\r\n this.footer = `Last updated by ${rosterNote?.updateByLastName}, ${rosterNote?.updateByFirstName} on ${dateStr}`;\r\n }\r\n\r\n if (params.value && params.value === \"inactive-employee\"){\r\n var empRoster = params.data as IEmployeeRoster;\r\n this.title = \"Resigned Employee\";\r\n this.content = `To replace ${this._util.getEmployeeName(empRoster.employee)}.`;\r\n this.footer = `Terminated on ${format(empRoster.employee.terminateDate, \"dd/MM/yyyy\")} with note: ${empRoster.employee.terminateNote || \"\"}`;\r\n }\r\n\r\n if (params.value && params.value === \"employee-note\"){\r\n var empRoster = params.data as IEmployeeRoster;\r\n let colId = params.colDef[\"colId\"];\r\n let empId = empRoster.employee.id;\r\n let parent = params.context.componentParent\r\n if (parent.getRosterEmployeeNote){\r\n let rosterEmployeeNote: IRosterEmployeeNote = parent.getRosterEmployeeNote(empId, colId);\r\n if (rosterEmployeeNote){\r\n this.title = this._util.getEmployeeName(empRoster.employee) + \" - \" + this._rosterService.getColumnName(colId);\r\n this.content = this.toHTML(rosterEmployeeNote?.note);\r\n this.footer = `Last updated by ${rosterEmployeeNote.updateBy} on ${format(rosterEmployeeNote.updateDate, \"dd/MM/yyyy HH:mm:ss\")}`;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (params.location === \"header\"){\r\n this.header = true;\r\n this.title = params.value;\r\n }\r\n }\r\n\r\n private toHTML(data: string){\r\n return (data || \"\").replace(//g, \">\").replace(/\\n/g, \"
\");\r\n }\r\n}\r\n","\r\n \r\n Happy {{title}}! \r\n \r\n\r\n\r\n\r\n \r\n {{title}}\r\n \r\n
\r\n \r\n {{footer}}\r\n \r\n
","import { Component, HostListener, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { RosterService } from '../services/roster.service';\r\nimport { min, max, eachDayOfInterval, eachMonthOfInterval, eachYearOfInterval, format, addDays, lastDayOfMonth, isSameDay, differenceInDays, addMonths, parseISO, subDays } from 'date-fns';\r\nimport { EmployeeRosterFormComponent } from './employee-roster-form.component';\r\nimport { forkJoin } from 'rxjs';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { IEmployeeRoster } from '../shared/models/roster/employee-roster';\r\nimport { IRosterValue } from \"../shared/models/roster/roster-value\";\r\nimport { IRosterCode } from '../shared/models/roster-code';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\nimport * as _ from 'lodash-es';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { BusinessOperation } from '../shared/models/business-operation';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { ConfirmationService, MenuItem } from 'primeng/api';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { SubSink } from 'subsink';\r\nimport { RosterTooltipComponent } from './roster-tooltip.component';\r\nimport { IEmployeeRosterUpdateByRuleModel } from '../shared/models/roster/employee-roster-update-by-rule-model';\r\nimport { IRosterSummaryLineData } from '../shared/models/roster/roster-summary-line-data';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { DeleteActionComponent } from '../system-settings/delete-action.component';\r\nimport { EmployeeService } from '../services/employee.service';\r\nimport { RosterCodeSettingService } from '../services/roster-code-setting.service';\r\nimport { DateRangeFormComponent } from '../shared/date-range-form.component';\r\nimport { IDateRange } from '../shared/models/date-range';\r\nimport { CellClickedEvent, CellDoubleClickedEvent, CellKeyDownEvent, \r\n FilterChangedEvent, GridReadyEvent, HeaderClassParams, \r\n RowClickedEvent, RowDragMoveEvent, RowNode, SortChangedEvent } from 'ag-grid-community';\r\nimport { IEmployeeSortNoUpdateModel } from '../shared/models/roster/employee-sortno-update-model';\r\nimport { UpdateTravelStatusFormComponent } from './update-travel-status-form.component';\r\nimport { IUpdateTravelStatusModel } from '../shared/models/roster/update-travel-status-model';\r\nimport { EmployeeFilterComponent } from './employee-filter.component';\r\nimport { IEmployeeHighlight, IEmployeeHighlightUpdate, IRosterEmployeeHighlight } from '../shared/models/roster/employee-highlight';\r\nimport { ISelectOption } from '../shared/models/option';\r\nimport { EmployeeFloatingFilterComponent } from './employee-floating-filter.component';\r\nimport { Employee } from '../shared/models/employee';\r\nimport { EmployeeFormComponent } from '../employees/employee-form.component';\r\nimport { IEmployeeUpdateEntities } from '../shared/models/employee-update-entities';\r\nimport { IRosterEmployeeViewModel } from '../shared/models/roster/roster-employee-view-model';\r\nimport { GridActionComponent } from '../shared/grid-action.component';\r\nimport { EmployeeNameRenderer } from './employee-name-renderer.component';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { IRosterResult } from '../shared/models/roster/roster-result';\r\nimport { IRosterProject } from '../shared/models/roster/roster-project';\r\nimport { parseIsolatedEntityName } from 'typescript';\r\nimport { PayrollRosterCodeRecommendor } from './payroll-roster-code-recommendor';\r\nimport { RosterCodeService } from '../services/roster-code.service';\r\nimport { IEmployeeSimpleModel } from '../shared/models/roster/employee-simple-model';\r\nimport { DeleteRosterDataFormComponent } from './delete-roster-data-form.component';\r\nimport { IRosterDataClearModel } from '../shared/models/roster/roster-data-clear-model';\r\nimport { IRosterEmployeeNote } from '../shared/models/roster/roster-employee-note';\r\nimport { RosterEmployeeNoteFormComponent } from './roster-employee-note-form.component';\r\nimport { IEmployeeRosterUpdateModel } from '../shared/models/roster/employee-roster-update-model';\r\n\r\ninterface IEmployeeOrder{\r\n [id:number]: number;\r\n}\r\n\r\ninterface IColumn{\r\n colId: string,\r\n columnName: string\r\n}\r\n\r\n@Component({\r\n selector: 'pps-roster',\r\n templateUrl: './roster.component.html',\r\n styleUrls: ['./roster.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class RosterComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n smallScreen: boolean = false;\r\n\r\n rosterProject: IRosterProject = null;\r\n isActiveRoster: boolean = true;\r\n\r\n items: MenuItem[] = [];\r\n spinnerName: string = \"rosterSpinner\";\r\n defaultSpinnerText: string = \"Loading roster data ...\";\r\n spinnerText: string = \"Loading roster data ...\";\r\n\r\n // For show/hide employee columns multi-select component\r\n employeeColumns: IColumn[] = [\r\n {colId: \"company\", columnName: \"Company\"},\r\n {colId: \"position\", columnName: \"Position\"},\r\n {colId: \"supervisor\", columnName: \"Supervisor\"},\r\n {colId: \"workarea\", columnName: \"Work Area\"},\r\n {colId: \"phone\", columnName: \"Phone\"},\r\n {colId: \"email\", columnName: \"Email\"},\r\n {colId: \"dateOfBirth\", columnName: \"Date of Birth\"},\r\n {colId: \"accessId\", columnName: \"Access Id\"}\r\n ];\r\n defaultVisibleColumns: IColumn[] = [\r\n {colId: \"position\", columnName: \"Position\"},\r\n {colId: \"supervisor\", columnName: \"Supervisor\"},\r\n {colId: \"phone\", columnName: \"Phone\"},\r\n {colId: \"accessId\", columnName: \"Access Id\"}\r\n ];\r\n selectedEmployeeColumns: IColumn[] = [];\r\n private columnDisplaySettingsKey = \"column-display-settings\"; //this key should be the same as the value in index.html\r\n \r\n employeeUpdateEntities: IEmployeeUpdateEntities = null;\r\n\r\n // yearRange is used by p-calendar control yearRange attribute. It's always between 2018 and 3 years after this year.\r\n yearRange: string = `2018:${(new Date().getFullYear()) + 5}`;\r\n\r\n employeeRosters: IEmployeeRoster[] = [];\r\n employeeOrders: IEmployeeOrder = {};\r\n rosterEmployeeNotes: {\r\n [empId_colId: string]: IRosterEmployeeNote\r\n } = {};\r\n\r\n tooltipShowDelay: number = 0;\r\n frameworkComponents = { customTooltip: RosterTooltipComponent };\r\n\r\n selectedEmployee: IEmployeeRoster = null;\r\n\r\n gridHeaders;\r\n gridOptions: any = {\r\n context: {componentParent: this},\r\n onRowClicked: this.onRowClicked,\r\n onCellClicked: this.onCellClicked,\r\n getRowId: param => {\r\n let empRoster = param.data as IEmployeeRoster;\r\n let rowId = empRoster.employee.id === 0 ? \"_\" + empRoster.employee.workGroupId : empRoster.employee.id;\r\n return rowId;\r\n },\r\n defaultColDef: {\r\n filter: false, \r\n sortable: false,\r\n pinned: true,\r\n resizable: true,\r\n suppressMovable: true,\r\n enableCellChangeFlash: true,\r\n floatingFilter: false \r\n }\r\n };\r\n\r\n startDate: Date;\r\n endDate: Date;\r\n generateRosterDataEndDate: Date = addDays(new Date(), 60);\r\n\r\n private summaryLineDisplaySettingsKey = \"summary-line-display-settings\"; //this key should be the same as the value in index.html\r\n summaryLineData : IRosterSummaryLineData[] = [];\r\n pinnedSummaryLineData : IRosterSummaryLineData[] = [];\r\n storedSummaryLines: string[] = [];\r\n\r\n generatingSignOnSheet = false;\r\n updatingTravelStatus = false;\r\n exportingRoster = false;\r\n\r\n private gridApi;\r\n private gridColumnApi;\r\n private rosterCodes: IRosterCode[] = [];\r\n private clipboardData: IRosterValue = null;\r\n\r\n private sortActive = false;\r\n private filterActive = false;\r\n \r\n // Sample data:\r\n // {\r\n // 1_0: {foregroundColor:\"#ffffff\", backgroundColor:\"#000000\"},\r\n // 2_0: {foregroundColor:\"#ffffff\", backgroundColor:\"#000000\"}\r\n // }\r\n private rosterCodeSettingsObject: {\r\n [rosterCodeId_ticketStatusId: string]: {\r\n foregroundColor:string,\r\n backgroundColor:string\r\n }\r\n } = {};\r\n\r\n // Sample data:\r\n // {\r\n // \"20200101\": \"New years day\",\r\n // \"20201224\": \"Christmas Eve\"\r\n // }\r\n //\r\n private holidayObject: {[day: string] : string} = {};\r\n\r\n public dateRanges: {id:string, title: string}[] = [];\r\n public selectedDateRange: {id:string, title: string} = null;\r\n\r\n showEmptyPayrollRosterCode = false;\r\n\r\n constructor(private rosterService: RosterService,\r\n private _rosterCodeSettingService: RosterCodeSettingService,\r\n private _payrollRosterCodeRecommendor: PayrollRosterCodeRecommendor,\r\n private _rosterCodeService: RosterCodeService,\r\n private _empService: EmployeeService,\r\n private util: PpsUtilityService,\r\n private spinner: NgxSpinnerService,\r\n private toast: ToastService,\r\n private _activatedRoute: ActivatedRoute,\r\n private _dialog: DialogService,\r\n private _confirm: ConfirmationService,\r\n private authService: AuthenticationService,\r\n private breakpointObserver: BreakpointObserver) { \r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n });\r\n }\r\n\r\n /**\r\n * Cleanup actions before the component is destroyed:\r\n * 1. Make sure the re-ordered employee display order is persistant to the database\r\n * 2. Make sure all subscriptions are unsubscribed\r\n */\r\n ngOnDestroy(): void {\r\n this.updateEmployeeSortNo(() => this.subs.unsubscribe());\r\n }\r\n\r\n /**\r\n * This is to make sure same actions in ngOnDestroy are performed when user perform browser refresh.\r\n * When user click the refresh button in browser, the ngOnDestroy() will NOT be triggered. This method will be\r\n * triggered instead.\r\n * @param event \r\n */\r\n @HostListener('window:beforeunload', [ '$event' ])\r\n beforeUnloadHandler(event) {\r\n this.updateEmployeeSortNo(() => this.subs.unsubscribe());\r\n } \r\n \r\n /**\r\n * Initialize the roster component. \r\n * Querystring will be checked to determine which data should be loaded. When active-roster is true, it will display \r\n * active roster, otherwise it will display inactive roster.\r\n */\r\n ngOnInit(): void {\r\n this._activatedRoute.queryParams.subscribe(params => {\r\n this.isActiveRoster = params['active-roster'] === \"true\" ? true : false;\r\n var rosterProjectId = +params['roster-project'];\r\n this.rosterProject = this.authService.userContext.rosterProjects.find(rp => rp.id === rosterProjectId);\r\n\r\n let item: MenuItem = this.isActiveRoster ?\r\n {label: \"Active Roster\", icon: \"pi-fw fas fa-calendar-check\"} :\r\n {label: \"Inactive Roster\", icon: \"pi-fw far fa-calendar-times\"};\r\n \r\n this.items = [{label: \"Roster\", icon: \"pi-fw fas fa-calendar-alt\"}, item];\r\n \r\n var selectedItems = window.localStorage.getItem(this.columnDisplaySettingsKey);\r\n if (selectedItems){\r\n this.selectedEmployeeColumns = JSON.parse(selectedItems);\r\n }else{\r\n this.selectedEmployeeColumns = this.defaultVisibleColumns;\r\n }\r\n \r\n if (!this.canModifyRoster()){\r\n this.selectedEmployeeColumns = this.defaultVisibleColumns;\r\n }\r\n\r\n this.storedSummaryLines = [];\r\n var summaryLines = window.localStorage.getItem(this.getSummaryLineDisplaySettingsKey());\r\n if (summaryLines){\r\n this.storedSummaryLines = JSON.parse(summaryLines);\r\n }\r\n\r\n this.initialize();\r\n });\r\n }\r\n\r\n showHideEmployeeColumns(){\r\n var state = [];\r\n this.employeeColumns.forEach(c => {\r\n if (this.selectedEmployeeColumns.findIndex(sc => sc.colId === c.colId) === -1){\r\n state.push({colId: c.colId, hide: true});\r\n }else{\r\n state.push({colId: c.colId, hide: false})\r\n }\r\n });\r\n\r\n this.gridColumnApi.applyColumnState({\r\n state: state\r\n });\r\n\r\n window.localStorage.setItem(this.columnDisplaySettingsKey, JSON.stringify(this.selectedEmployeeColumns));\r\n }\r\n\r\n showHideSummaryLine(){\r\n var summaryLines = this.pinnedSummaryLineData.map(s=>s.title);\r\n window.localStorage.setItem(this.getSummaryLineDisplaySettingsKey(), JSON.stringify(summaryLines));\r\n }\r\n\r\n /**\r\n * Setup global gridApi and gridColumnApi and also suppress the row drag handle if user has no permission to rearrange\r\n * roster employee display order. This is callback function to \"gridReady\" event defined in .\r\n * @param gridReadyEvent GridReadyEvent defined in ag-grid.\r\n * https://www.ag-grid.com/angular-data-grid/grid-events/#reference-miscellaneous \r\n */\r\n onGridReady(gridReadyEvent: GridReadyEvent) {\r\n this.gridApi = gridReadyEvent.api;\r\n this.gridColumnApi = gridReadyEvent.columnApi;\r\n this.gridApi.setSuppressRowDrag(!this.canModifyEmployeeRosterSortNo());\r\n this.showHideEmployeeColumns();\r\n }\r\n\r\n /**\r\n * Capture currently selected employee. If user clicked on group line ot summary line, currently selected employee \r\n * will be reset to null.\r\n * @param evt RowClickedEvent defined in ag-grid\r\n * https://www.ag-grid.com/angular-data-grid/grid-events/#reference-miscellaneous \r\n */\r\n onRowClicked(evt: RowClickedEvent){\r\n let _this = evt.context.componentParent;\r\n _this.selectedEmployee = evt.data;\r\n if (_this.selectedEmployee.isGroupLine || _this.selectedEmployee.isSummaryLine){\r\n _this.selectedEmployee = null;\r\n }\r\n } \r\n\r\n /**\r\n * Highlight/unhighlight a cell when ctrl+click is detected\r\n * @param clickEvent CellClickedEvent defined in ag-grid\r\n * https://www.ag-grid.com/angular-data-grid/grid-events/#reference-miscellaneous \r\n */\r\n onCellClicked(clickEvent: CellClickedEvent){\r\n // Ctrl + Click to highlight a cell\r\n if (clickEvent.event[\"ctrlKey\"]){\r\n let _this = clickEvent.context.componentParent;\r\n var employeeRoster = clickEvent.data as IEmployeeRoster;\r\n var day = clickEvent.colDef[\"rosterDay\"];\r\n\r\n if (day){\r\n // highlight roster value cell\r\n var oldRosterValue: IRosterValue = employeeRoster.values[format(day,\"yyyyMMdd\")];\r\n var rosterValue: IRosterValue = _.cloneDeep(oldRosterValue);\r\n rosterValue.hl = !rosterValue.hl;\r\n\r\n let result = {\r\n employeeId: employeeRoster.employee.id,\r\n section: 2,\r\n oldRosterValue: oldRosterValue,\r\n rosterValue: rosterValue,\r\n from: day,\r\n to: day\r\n }; \r\n \r\n _this.updateEmployeeRoster(result);\r\n }else{\r\n // highlight roster employee section cell (employeeName, phone, email and dateOfBirth)\r\n if (_this.canColumnBeHighlighted(clickEvent.colDef.colId)){\r\n _this.highlightEmployee(clickEvent.node, employeeRoster, {employeeId: employeeRoster.employee.id, colId: clickEvent.colDef.colId});\r\n } \r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Callback actions when double click event detected on a roster cell:\r\n * 1. Do nothing if user has no permission to modify roster\r\n * 2. Do nothing if user clicked on work group line or summary line\r\n * 3. Open employee edit form if clicked on employee name and user has permission to modify employee data\r\n * 4. Show config roster code form if clicked on a roster code\r\n * @param event CellDoubleClickedEvent defined in ag-grid\r\n */\r\n onCellDoubleClicked(event: CellDoubleClickedEvent){\r\n let _this = event.context.componentParent;\r\n\r\n if (!_this.canModifyRoster()){\r\n return;\r\n }\r\n\r\n let employeeRoster = event.data as IEmployeeRoster;\r\n if (employeeRoster.isGroupLine || employeeRoster.isSummaryLine){\r\n return;\r\n }\r\n\r\n let selectedDate = event.colDef[\"rosterDay\"];\r\n if (selectedDate){\r\n _this.showEmployeeRosterForm(selectedDate, employeeRoster);\r\n }else{\r\n let empId = employeeRoster.employee.id;\r\n let colId = event.colDef.colId;\r\n if (colId === \"employeeName\"){\r\n this.editEmployee(event.data.employee)\r\n }\r\n\r\n if (colId === \"position\"){\r\n let empNote: IRosterEmployeeNote = this.getRosterEmployeeNote(empId, colId);\r\n if (!empNote){\r\n empNote = {\r\n rosterProjectId: this.rosterProject.id,\r\n employeeId: empId,\r\n columnName: colId,\r\n note: \"\"\r\n };\r\n }\r\n \r\n\r\n if (_this.shouldShowRosterEmployeeNoteForm(employeeRoster)){\r\n _this.showRosterEmployeeNoteForm(empNote, employeeRoster);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Should popup roster employee note form if \r\n * it's active employee in active roster or\r\n * it's inactive employee in inactive roster\r\n * @param employeeRoster IEmployeeRoster\r\n * @returns true if it's active employee in active roster or \r\n * inactive employee in inactive roster. false otherwise\r\n */\r\n private shouldShowRosterEmployeeNoteForm(employeeRoster: IEmployeeRoster): boolean{\r\n return (this.isActiveRoster && employeeRoster.employee.active) || \r\n (!this.isActiveRoster && !employeeRoster.employee.active);\r\n }\r\n\r\n private _employeeRosterForm = null;\r\n private showEmployeeRosterForm(selectedDate: Date, employeeRoster: IEmployeeRoster){\r\n let selectedDateStr = format(selectedDate, \"yyyyMMdd\");\r\n let prevDateStr = format(subDays(selectedDate, 1), \"yyyyMMdd\");\r\n let nextDateStr = format(addDays(selectedDate, 1), \"yyyyMMdd\");\r\n let empName = this.util.getEmployeeName(employeeRoster.employee);\r\n\r\n this.closeEmployeeRosterForm();\r\n\r\n let data = {\r\n date: selectedDate,\r\n minDate: new Date(this.startDate.getTime()),\r\n maxDate: new Date(this.endDate.getTime()),\r\n employeeName: empName,\r\n employeeId: employeeRoster.employee.id,\r\n rosterCodes: this.rosterCodes,\r\n selectedRosterValue: employeeRoster.values[selectedDateStr],\r\n previousRosterValue: employeeRoster.values[prevDateStr],\r\n nextRosterValue: employeeRoster.values[nextDateStr]\r\n };\r\n\r\n if (!data.nextRosterValue || !data.previousRosterValue){\r\n this._confirm.confirm({\r\n header: \"Load more roster data\",\r\n message: `Please load more roster data to continue. The system needs to know previous day and next day's roster data for validation`,\r\n icon: \"pi pi-ban text-danger\",\r\n key: \"invalidPayrollRosterCodePromptDialog1\",\r\n acceptVisible: true,\r\n rejectVisible: false,\r\n acceptLabel: \"OK\"\r\n });\r\n\r\n return;\r\n } \r\n\r\n this._employeeRosterForm = this._dialog.open(EmployeeRosterFormComponent, {\r\n header: `Config Roster Code for ${empName}`,\r\n styleClass: \"size-md\",\r\n data: data,\r\n draggable: true\r\n });\r\n\r\n let UpdateRosterValue = 1;\r\n let UpdateRosterNote = 2;\r\n let UpdateBoth = 3;\r\n this.subs.sink = this._employeeRosterForm.onClose.subscribe(result => {\r\n if (result){\r\n if (result.section === UpdateRosterValue){\r\n this.updateEmployeeRoster(result);\r\n }\r\n\r\n if (result.section === UpdateRosterNote){\r\n this.saveRosterNote(selectedDate, result);\r\n }\r\n\r\n if (result.section === UpdateBoth){\r\n this.updateEmployeeRoster(result, () => {\r\n var fromDate = parseISO(result.from);\r\n var toDate = parseISO(result.to);\r\n\r\n let selectedDays = eachDayOfInterval({start: fromDate, end: toDate});\r\n let counter = 0;\r\n selectedDays.forEach(day => {\r\n let resultTemp = _.cloneDeep(result);\r\n resultTemp.rosterNote.day = day;\r\n if (resultTemp.rosterValue.sn){\r\n resultTemp.rosterValue.sn += counter;\r\n }\r\n \r\n this.saveRosterNote(day, resultTemp);\r\n counter ++; \r\n });\r\n });\r\n }\r\n }},\r\n reason => {\r\n }\r\n );\r\n }\r\n\r\n private closeEmployeeRosterForm(){\r\n if (this._employeeRosterForm){\r\n this._employeeRosterForm.close();\r\n this._employeeRosterForm = null;\r\n }\r\n }\r\n\r\n private showRosterEmployeeNoteForm(empNote: IRosterEmployeeNote, employeeRoster: IEmployeeRoster){\r\n let empName = this.util.getEmployeeName(employeeRoster.employee);\r\n\r\n let dialog = this._dialog.open(RosterEmployeeNoteFormComponent, {\r\n header: `Note for ${empName}`,\r\n styleClass: \"size-md\",\r\n data: empNote,\r\n draggable: true\r\n });\r\n\r\n this.subs.sink = dialog.onClose.subscribe(\r\n (empNote: IRosterEmployeeNote) => {\r\n if (empNote){\r\n this.subs.sink = this.rosterService.updateRosterEmployeeNote(empNote)\r\n .subscribe(res =>{\r\n if (res.succeed){\r\n let updatedEmpNote:IRosterEmployeeNote = res.result;\r\n this.rosterEmployeeNotes[`${updatedEmpNote.employeeId}-${updatedEmpNote.columnName}`] = updatedEmpNote;\r\n\r\n // refresh grid row\r\n let rowNode = this.gridApi.getRowNode(employeeRoster.employee.id);\r\n rowNode.setData(employeeRoster);\r\n this.gridApi.redrawRows({rowNodes:[rowNode]});\r\n }\r\n });\r\n }\r\n },\r\n reason => {\r\n }\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Handle copy, paste and delete when ctrl+c, ctrl+v or Del key press event detected\r\n * @param cellKeyPressEvent CellKeyDownEvent defined in ag-grid \r\n * (https://www.ag-grid.com/angular-data-grid/grid-events/) \r\n */\r\n onCellKeyPress(event: CellKeyDownEvent){\r\n switch(event.event[\"code\"]){\r\n case \"KeyC\": // Ctrl C\r\n if (event.event[\"ctrlKey\"] && this.canModifyRoster()){\r\n this.clipboardData = this.getRosterValueFromSelectedCell(event);\r\n }\r\n break;\r\n case \"KeyV\": // Ctrl V\r\n if (event.event[\"ctrlKey\"] && this.canModifyRoster()){ \r\n this.pasteRosterData(event);\r\n }\r\n break;\r\n case \"Delete\": // Delete\r\n if (this.canModifyRoster()){\r\n this.deleteRosterData(event); \r\n }\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * suppress row drag while sorting is active. \r\n * The roster module use unmanaged dragging which by default allowed while sort is applied\r\n * https://www.ag-grid.com/angular-data-grid/row-dragging/#suppress-row-drag\r\n * @param event SortChangedEvent defined in ag-grid \r\n * (https://www.ag-grid.com/angular-data-grid/grid-events/#reference-sort)\r\n */\r\n onSortChanged(event: SortChangedEvent) {\r\n var colState = this.gridColumnApi.getColumnState() || [];\r\n this.sortActive = colState.some((c) => c.sort);\r\n\r\n // suppress row drag if either sort or filter is active\r\n var suppressRowDrag = this.sortActive || this.filterActive;\r\n\r\n this.gridApi.setSuppressRowDrag(suppressRowDrag);\r\n }\r\n\r\n /**\r\n * suppress row drag while filter is active. \r\n * The roster module use unmanaged dragging which by default allowed while filter is applied\r\n * https://www.ag-grid.com/angular-data-grid/row-dragging/#suppress-row-drag\r\n * @param event FilterChangedEvent defined in ag-grid \r\n * (https://www.ag-grid.com/angular-data-grid/grid-events/#reference-sort)\r\n */ \r\n onFilterChanged(event: FilterChangedEvent) {\r\n this.filterActive = this.gridApi.isAnyFilterPresent();\r\n // suppress row drag if either sort or filter is active\r\n var suppressRowDrag = this.sortActive || this.filterActive;\r\n this.gridApi.setSuppressRowDrag(suppressRowDrag);\r\n } \r\n\r\n /**\r\n * Dragging the row to different place. If row data can not be moved if the moving row and targnet row are not in the\r\n * same employee workgroup or target row is not an employee line.\r\n * @param event RowDragMoveEvent defined in ag-grid\r\n */\r\n onRowDragMove(event: RowDragMoveEvent) {\r\n var movingNode = event.node;\r\n var overNode = event.overNode;\r\n \r\n var rowNeedsToMove = movingNode !== overNode;\r\n if (rowNeedsToMove) {\r\n // the list of rows we have is data, not row nodes, so extract the data\r\n var movingData = movingNode.data as IEmployeeRoster;\r\n var overData = overNode!.data as IEmployeeRoster;\r\n if (overData.employee.id === 0 || movingData.employee.workGroupId !== overData.employee.workGroupId){\r\n return;\r\n }\r\n\r\n var fromIndex = this.employeeRosters.indexOf(movingData);\r\n var toIndex = this.employeeRosters.indexOf(overData);\r\n \r\n var newStore = this.employeeRosters.slice();\r\n\r\n moveInArray(newStore, fromIndex, toIndex);\r\n\r\n this.employeeRosters = newStore;\r\n \r\n this.gridApi.setRowData(this.employeeRosters);\r\n this.gridApi.clearFocusedCell();\r\n }\r\n \r\n function moveInArray(arr: any[], fromIndex: number, toIndex: number) {\r\n var element = arr[fromIndex];\r\n arr.splice(fromIndex, 1);\r\n arr.splice(toIndex, 0, element);\r\n }\r\n }\r\n\r\n focusOnInvalidPayrollRosterCodeCell(cellLocation){\r\n let rowId = cellLocation.rowId;\r\n let colId = cellLocation.colId;\r\n let autoOpenForm = cellLocation.autoOpenForm;\r\n let rowNode = this.gridApi.getRowNode(rowId);\r\n let column = this.gridColumnApi.getColumn(colId);\r\n\r\n if (rowNode){\r\n this.gridApi.ensureNodeVisible(rowNode, \"top\");\r\n this.gridApi.ensureColumnVisible(colId, \"start\");\r\n this.gridApi.setFocusedCell(rowNode.rowIndex, colId);\r\n if (column && autoOpenForm){\r\n let selectedDate = column.colDef.rosterDay;\r\n let employeeRoster = rowNode.data as IEmployeeRoster;\r\n this.showEmployeeRosterForm(selectedDate, employeeRoster);\r\n }else{\r\n this.closeEmployeeRosterForm();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Update travel status for selected employee within selected date range. For FIA, FOA, FIP, FOP, DIA, DOA, DIP and \r\n * DOP, they all have a travel status (Approved, Planning, Pending). The method allow to batch update the travel \r\n * status in selected range instead of update the travel status individually.\r\n * This method will be invoked when \"Update Travel Status\" button is clicked. This button will be disabled if no\r\n * employee is selected.\r\n */\r\n updateTravelStatus(){\r\n let dialog = this._dialog.open(UpdateTravelStatusFormComponent, {\r\n header: `Update Travel Status for ${this.util.getEmployeeName(this.selectedEmployee.employee)}`,\r\n styleClass: \"size-md\",\r\n data:{\r\n initialValues:{\r\n presetDateRange: null,\r\n fromDate: this.startDate,\r\n toDate: this.endDate\r\n }\r\n },\r\n draggable: true\r\n });\r\n \r\n this.subs.sink = dialog.onClose.subscribe(\r\n (updateTravelStatusModel: IUpdateTravelStatusModel) => {\r\n if (updateTravelStatusModel){\r\n updateTravelStatusModel.employeeId = this.selectedEmployee.employee.id;\r\n\r\n this.updatingTravelStatus = true;\r\n this.spinnerText = `Updating ${this.util.getEmployeeName(this.selectedEmployee.employee)}'s travel status...`;\r\n this.spinner.show(this.spinnerName);\r\n\r\n this.subs.sink = this.rosterService.updateTravelStatus(this.rosterProject.id, updateTravelStatusModel)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n var empRoster = res.result;\r\n this.searchEmployeeRoster(empRoster.employee?.id, (foundIndex)=>{\r\n let columns = [];\r\n\r\n for (var day in empRoster.values){\r\n this.employeeRosters[foundIndex].values[day] = empRoster.values[day];\r\n columns.push(`roster.${day}.rosterCode.code`);\r\n }\r\n\r\n let rowNode = this.gridApi.getRowNode(empRoster.employee?.id);\r\n rowNode.setData(this.employeeRosters[foundIndex]);\r\n this.gridApi.flashCells({rowNodes: [rowNode], columns: columns, flashDelay: 1000, fadeDelay: 500});\r\n\r\n this.toast.succeeded(`${columns.length} travel status have been updated.`);\r\n });\r\n }\r\n else{\r\n this.toast.failed(\"Update travel status failed: \" + res.errors.join(\";\"));\r\n }\r\n },\r\n error => {\r\n this.updatingTravelStatus = false;\r\n this.spinner.hide(this.spinnerName); \r\n this.spinnerText = this.defaultSpinnerText;\r\n },\r\n () => {\r\n this.updatingTravelStatus = false;\r\n this.spinner.hide(this.spinnerName); \r\n this.spinnerText = this.defaultSpinnerText;\r\n });\r\n }\r\n },\r\n reason => {\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Generate roster data based on selected target date and roster type configured for employees. \r\n * This method will be invoked when \"Generate Roster Data\" button is clicked.\r\n */\r\n generateRosterData(){\r\n let dialog = this._dialog.open(DateRangeFormComponent, {\r\n header: `Choose target date to generate roster data`,\r\n styleClass: \"size-sm\",\r\n data: {\r\n options:{\r\n showPresetDateRange: false,\r\n showFromDate: false,\r\n toDateLabel: \"Target date\",\r\n maxToDate: addDays(new Date(), 365),\r\n minToDate: new Date(),\r\n prompt: `The maximum target date is ${this.util.getDateString(addDays(new Date(), 365))}`,\r\n promptStyleClasses: \"text-bold\"\r\n },\r\n initialValues: {\r\n presetDateRange: null,\r\n toDate: this.generateRosterDataEndDate\r\n }\r\n },\r\n draggable: true\r\n });\r\n \r\n this.subs.sink = dialog.onClose.subscribe(\r\n (dateRange: IDateRange) => {\r\n if (dateRange){\r\n this.generateRosterDataEndDate = dateRange.range.to;\r\n this.generateRosterDataHelper();\r\n }\r\n },\r\n reason => {\r\n }\r\n );\r\n }\r\n\r\n deleteFutureRosterData(){\r\n let dialog = this._dialog.open(DeleteRosterDataFormComponent, {\r\n header: `Delete Future Roster Data`,\r\n styleClass: \"size-sm\",\r\n data: {\r\n employees: this.getRosterEmployees()\r\n },\r\n draggable: true\r\n });\r\n \r\n this.subs.sink = dialog.onClose.subscribe(\r\n (result: any) => {\r\n if (result){\r\n this.deleteFutureRosterDataHelper(result.deletionModel, result.selectedEmployees);\r\n }\r\n },\r\n reason => {\r\n }\r\n );\r\n }\r\n\r\n private deleteFutureRosterDataHelper(deletionModel: IRosterDataClearModel, emps: string){\r\n console.log(deletionModel);\r\n this._confirm.confirm({\r\n header: `Delete future roster data`,\r\n message: `WARNING: You must confirm again that you want to delete all roster data after\r\n ${this.util.getDateString(deletionModel.startDate)} for these employees: ${emps}.`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n key: \"danger-dialog\",\r\n defaultFocus: \"accept\",\r\n accept: () => {\r\n this.subs.sink = this.rosterService.deleteFutureRosterData(this.rosterProject.id, deletionModel)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.toast.succeeded(`${res.result} roster data have been deleted`);\r\n this.refresh(); \r\n }else{\r\n this.toast.failed(res.errors.join(\";\"));\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Export roster data to Excel file based on selected date range. \r\n * This method will be invoked when \"Export Roster\" button is clicked.\r\n */\r\n exportRoster(){\r\n let dialog = this._dialog.open(DateRangeFormComponent, {\r\n header: `Export roster to Excel file`,\r\n styleClass: \"size-sm\",\r\n data:{\r\n initialValues:{\r\n presetDateRange: null,\r\n fromDate: this.startDate,\r\n toDate: this.endDate\r\n }\r\n },\r\n draggable: true\r\n });\r\n \r\n this.subs.sink = dialog.onClose.subscribe(\r\n (dateRange: IDateRange) => {\r\n if (dateRange){\r\n this.exportingRoster = true;\r\n this.spinnerText = \"Preparing Excel file...\";\r\n this.spinner.show(this.spinnerName);\r\n this.subs.sink = this.rosterService.exportRoster(\r\n this.rosterProject.id, \r\n dateRange, \r\n this.isActiveRoster,\r\n () => {\r\n this.exportingRoster = false;\r\n this.spinnerText = this.defaultSpinnerText;\r\n this.spinner.hide(this.spinnerName);\r\n },\r\n (errorRes) => {\r\n this.exportingRoster = false;\r\n this.spinnerText = this.defaultSpinnerText;\r\n this.spinner.hide(this.spinnerName);\r\n this.toast.failed(`${errorRes.errors.join(\"; \")}`);\r\n }\r\n );\r\n }\r\n },\r\n reason => {\r\n }\r\n );\r\n } \r\n\r\n /**\r\n * Generate daily signon sheet for selected date range.\r\n * This method will be invoked when \"Generate Signon Sheet\" button is clicked.\r\n */\r\n generateDailySignonSheet(){\r\n let dialog = this._dialog.open(DateRangeFormComponent, {\r\n header: `Generate Signon Sheet`,\r\n styleClass: \"size-sm\",\r\n draggable: true\r\n });\r\n \r\n this.subs.sink = dialog.onClose.subscribe(\r\n (dateRange: IDateRange) => {\r\n if (dateRange){\r\n this.generatingSignOnSheet = true;\r\n\r\n this.spinnerText = `Generating signon sheet...`;\r\n this.spinner.show(this.spinnerName); \r\n this.subs.sink = this.rosterService.generateDailySignonSheet(\r\n this.rosterProject.id,\r\n dateRange, \r\n () => {\r\n this.generatingSignOnSheet = false;\r\n this.spinner.hide(this.spinnerName);\r\n this.spinnerText = this.defaultSpinnerText;\r\n },\r\n (errorRes) => {\r\n this.generatingSignOnSheet = false;\r\n this.spinner.hide(this.spinnerName);\r\n this.spinnerText = this.defaultSpinnerText;\r\n this.toast.failed(`${errorRes.errors.join(\"; \")}`);\r\n }\r\n );\r\n }\r\n });\r\n }\r\n /**\r\n * \r\n * @param empRoster \r\n * @returns \r\n */\r\n fixPayrollRosterCode(){\r\n this.showEmptyPayrollRosterCode = true;\r\n }\r\n\r\n /**\r\n * Callback function to delete an employee line from roster. \r\n * This method is invoked from DeleteActionComponent. \r\n * @param empRoster IEmployeeRoster of the selected row\r\n * @returns \r\n */\r\n delete(empRoster: IEmployeeRoster){\r\n if (empRoster === null){\r\n return;\r\n }\r\n\r\n this._confirm.confirm({\r\n header: `Remove employee from roster`,\r\n message: `Please confirm \"${this.util.getEmployeeName(empRoster.employee)}\" will be removed from roster.`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => this.deleteHelper(empRoster)\r\n });\r\n }\r\n\r\n /**\r\n * Check if current user has permission to modify roster data.\r\n * @returns true with permission, false without.\r\n */\r\n canModifyRoster(): boolean{\r\n return this.authService.canUserDoOperartion(BusinessOperation.ModifyRoster);\r\n }\r\n\r\n /**\r\n * Check if current user has permission to change employee's display order\r\n * @returns true with permission, false without.\r\n */\r\n canModifyEmployeeRosterSortNo(): boolean{\r\n return this.authService.canUserDoOperartion(BusinessOperation.UpdateEmployeeRosterSortNo);\r\n }\r\n\r\n /**\r\n * Check if current user has permission to edit employee's information\r\n * @returns true with permission, false without.\r\n */\r\n canModifyEmployee(): boolean{\r\n return this.authService.canUserDoOperartion(BusinessOperation.ModifyEmployee);\r\n }\r\n\r\n /**\r\n * Check if current user has permission to print signon sheet\r\n * @returns true with permission, false without.\r\n */\r\n canGenerateSignOnSheet(): boolean{\r\n return this.authService.canUserDoOperartion(BusinessOperation.PrintDailySignonSheet);\r\n }\r\n\r\n /**\r\n * Check if current user has permission to export roster to excel file\r\n * @returns true with permission, false without.\r\n */\r\n canExportRoster(): boolean{\r\n return this.authService.canUserDoOperartion(BusinessOperation.ExportRoster);\r\n }\r\n \r\n\r\n /**\r\n * Callback function to load roster data based on selected date range.\r\n * This method will be invoked when \"Load Roster\" button is clicked.\r\n */\r\n loadRosterData(){\r\n let dialog = this._dialog.open(DateRangeFormComponent, {\r\n header: `Choose Date Range`,\r\n styleClass: \"size-sm\",\r\n data: {\r\n initialValues: {\r\n presetDateRange: null,\r\n fromDate: this.startDate,\r\n toDate: this.endDate\r\n }\r\n },\r\n draggable: true\r\n });\r\n \r\n this.subs.sink = dialog.onClose.subscribe(\r\n (dateRange: IDateRange) => {\r\n if (dateRange){\r\n this.startDate = dateRange.range.from;\r\n this.endDate = dateRange.range.to;\r\n this.refresh();\r\n }\r\n },\r\n reason => {\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Reload roster data for currently selected date range. After this call, the selected employee will be reset to null.\r\n * This method will also be invoked when \"Refresh\" icon is clicked.\r\n */\r\n refresh(){\r\n if (this.gridApi){\r\n this.gridApi.setRowData([]);\r\n this.gridApi.setColumnDefs([]);\r\n }\r\n \r\n this.selectedEmployee = null;\r\n this._loadRosterData();\r\n }\r\n\r\n /**\r\n * Save roster note to database.\r\n * This method is invoked when user clicked Save button in Configure Roster Code dialog.\r\n * @param selectedDate Date\r\n * @param result update intruction to backend api. The fields in section 3 will be used to update the note.\r\n */\r\n private saveRosterNote(selectedDate: Date, result){\r\n this.spinnerText = \"Saving roster note...\";\r\n this.spinner.show(this.spinnerName);\r\n\r\n this.subs.sink = this.rosterService\r\n .updateRosterNote(result.rosterNote)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n result.rosterValue.rn = _.cloneDeep(res.result);\r\n this.updateEmployeeRosterValuesForSelectedDays(result.employeeId, [selectedDate], _.cloneDeep(result.rosterValue));\r\n }else{\r\n console.log(\"Update roster note failed: \" + res.errors.join(\";\"));\r\n }\r\n },\r\n error => {\r\n this.spinner.hide(this.spinnerName);\r\n this.spinnerText = this.defaultSpinnerText;\r\n },\r\n () => {\r\n this.spinner.hide(this.spinnerName);\r\n this.spinnerText = this.defaultSpinnerText;\r\n });\r\n }\r\n\r\n /**\r\n * Update roster data based on user entered roster type rule. \r\n * This method is invoked when user clicked Apply button in Configure Roster Code dialog.\r\n * This function is currently disabled from user interface.\r\n * @param event CellDoubleClickedEvent\r\n * @param batchUpdate IEmployeeRosterUpdateByRuleModel\r\n */\r\n private updateByRule(event: CellDoubleClickedEvent, batchUpdate: IEmployeeRosterUpdateByRuleModel){\r\n this.subs.sink = this.rosterService\r\n .batchUpdateRoster(batchUpdate)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.updateEmployeeRosterByValues(event, res.result.employeeRosters[0]);\r\n }else{\r\n console.log(\"Update roster failed \" + res.errors.join(\" | \"));\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Update employee roster data.\r\n * This method is invoked from [[updateByRule]] method which currently disabled.\r\n * This function is currently disabled.\r\n * @param rowData \r\n * @param employeeRoster \r\n */\r\n private updateEmployeeRosterByValues(event: CellDoubleClickedEvent, employeeRoster: IEmployeeRoster){\r\n let curEmployeeRoster = this.employeeRosters.find(r => r.employee.id === employeeRoster.employee.id);\r\n if (curEmployeeRoster){\r\n for (var day in employeeRoster.values){\r\n if (employeeRoster.values.hasOwnProperty(day)){\r\n curEmployeeRoster.values[day] = _.cloneDeep(employeeRoster.values[day]);\r\n }\r\n }\r\n\r\n event.node.setData(curEmployeeRoster);\r\n this.gridApi.redrawRows({rowNodes:[event.node]});\r\n }\r\n }\r\n\r\n /**\r\n * Update roster value based on instruction inside result.\r\n * @param result \r\n */\r\n private updateEmployeeRoster(result: IEmployeeRosterUpdateModel, chainedAction = null){\r\n this.spinnerText = \"Updating employee's roster data...\";\r\n this.spinner.show(this.spinnerName);\r\n\r\n let from = result.from;\r\n let to = result.to;\r\n this.subs.sink = this.rosterService.updateRoster(result)\r\n .subscribe(res =>{\r\n if (res.succeed){\r\n let selectedDays = eachDayOfInterval({start: from, end: to});\r\n this.updateEmployeeRosterValuesForSelectedDays(result.employeeId, selectedDays, _.cloneDeep(result.rosterValue));\r\n this.updateSummaryLineData(res.result.rosterSummaryLines);\r\n if (chainedAction){\r\n chainedAction();\r\n }\r\n }else{\r\n this.toast.failed(\"Update roster failed \" + res.errors.join(\" | \"));\r\n }\r\n },\r\n error => {\r\n this.spinner.hide(this.spinnerName);\r\n this.spinnerText = this.defaultSpinnerText;\r\n },\r\n () =>{\r\n this.spinner.hide(this.spinnerName);\r\n this.spinnerText = this.defaultSpinnerText;\r\n });\r\n }\r\n\r\n private updateSummaryLineData(summaryLinesDelta: IRosterSummaryLineData[]){\r\n this.summaryLineData.forEach(sl => {\r\n summaryLinesDelta.forEach(sld => {\r\n if (sld.title === sl.title){\r\n for(var day in sld.data){\r\n sl.data[day] += sl.data.hasOwnProperty(day) ? sld.data[day] : 0;\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.pinnedSummaryLineData.forEach(sl => {\r\n summaryLinesDelta.forEach(sld => {\r\n if (sld.title === sl.title){\r\n for(var day in sld.data){\r\n sl.data[day] += sl.data.hasOwnProperty(day) ? sld.data[day] : 0;\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.gridApi.setPinnedBottomRowData(this.pinnedSummaryLineData);\r\n }\r\n\r\n /**\r\n * Update roster value and sequence number for selected days. This only update the values loaded on client side. It \r\n * will also flash all affected cells using flashCells method from gridApi.\r\n * @param employeeId selected employee id\r\n * @param selectedDays selected days to update\r\n * @param rosterValue new roster value for all selected days for specified employee\r\n */\r\n private updateEmployeeRosterValuesForSelectedDays(employeeId: number, selectedDays: Date[], rosterValue: IRosterValue){\r\n let employeeRoster = this.employeeRosters.find(r => r.employee.id === employeeId);\r\n if (employeeRoster){\r\n selectedDays.forEach(day => {\r\n let dayKey = format(day, \"yyyyMMdd\");\r\n employeeRoster.values[dayKey] = _.cloneDeep(rosterValue);\r\n employeeRoster.values[dayKey].sn = \r\n this.util.isDayNightCode(rosterValue.rc.id) ? rosterValue.sn ++ : rosterValue.sn;\r\n });\r\n\r\n let rowNode = this.gridApi.getRowNode(employeeId);\r\n rowNode.setData(employeeRoster);\r\n\r\n let columns = [];\r\n selectedDays.forEach(day => columns.push(`roster.${format(day, \"yyyyMMdd\")}.rosterCode.code`));\r\n this.gridApi.flashCells({rowNodes: [rowNode], columns: columns, flashDelay: 1000, fadeDelay: 500});\r\n }\r\n }\r\n\r\n public getRosterEmployeeNote(empId: number, colId: string): IRosterEmployeeNote{\r\n return this.rosterEmployeeNotes[`${empId}-${colId}`];\r\n }\r\n\r\n private getCellStyle(params){\r\n var employeeRoster = params.data as IEmployeeRoster;\r\n let opacity = 0.9;\r\n\r\n if (employeeRoster.isGroupLine){\r\n return {backgroundColor: \"#2f75b5\", color: \"#ffffff\", fontWeight: \"bold\"};\r\n }\r\n\r\n // When the cell is summary line\r\n if (employeeRoster.isSummaryLine){\r\n return {backgroundColor: \"#e2edee\", color: \"#000000\", fontWeight: \"bold\"};\r\n }\r\n\r\n let _this = params.context.componentParent;\r\n let colId = params.colDef.colId;\r\n // When the cell is Employee Name - DOB\r\n if (!params.colDef.rosterDay){\r\n let style = null;\r\n \r\n if (_this.isActiveRoster && !employeeRoster.employee.active){\r\n if ( colId === \"employeeName\"){\r\n style = {\r\n background: \"yellow url(./assets/images/roster-note-indicator-red.png) no-repeat right top\", \r\n opacity: opacity\r\n };\r\n }else{\r\n style = {backgroundColor: \"yellow\", opacity: opacity};\r\n }\r\n }\r\n\r\n let empNote: IRosterEmployeeNote = _this.getRosterEmployeeNote(employeeRoster.employee.id, colId);\r\n if (empNote && empNote.note && _this.shouldShowRosterEmployeeNoteForm(employeeRoster)){\r\n style = {\r\n background: \"url(./assets/images/roster-note-indicator-red.png) no-repeat right top\", \r\n opacity: opacity\r\n };\r\n }\r\n\r\n style = style || {opacity: opacity};\r\n\r\n if (employeeRoster.hasOwnProperty(\"highlights\")){\r\n if (employeeRoster.highlights.hasOwnProperty(colId) && employeeRoster.highlights[colId] === true){\r\n let highlightStyle = _this.getHighlightStyle();\r\n style = Object.assign(style, highlightStyle)\r\n }\r\n }\r\n\r\n return style;\r\n }\r\n\r\n let dayStr = format(params.colDef.rosterDay, \"yyyyMMdd\"); \r\n let rosterValue = employeeRoster.values[dayStr];\r\n\r\n // When the cell has no roster code assigned\r\n if (!rosterValue.rc.code){\r\n if (rosterValue.hl === true){\r\n var style = _this.getHighlightStyle();\r\n style.opacity = opacity;\r\n return style;\r\n }else{\r\n return {background: \"white\", opacity: opacity};\r\n }\r\n }\r\n\r\n let rosterColorCodeKey = rosterValue.rc.id + \"_\" + rosterValue.ts.id;\r\n\r\n // When the roster code has no settings\r\n if (!_this.rosterCodeSettingsObject.hasOwnProperty(rosterColorCodeKey)){\r\n return {opacity: opacity};\r\n }\r\n\r\n let colorObject = _this.rosterCodeSettingsObject[rosterColorCodeKey];\r\n if (!colorObject){\r\n return {opacity: opacity};\r\n }\r\n\r\n colorObject = _.cloneDeep(colorObject);\r\n\r\n // highlight cell style\r\n let fontWeight = \"normal\";\r\n let fontSize = \"0.8rem\";\r\n if (rosterValue.hl === true){\r\n colorObject.backgroundColor = \"#FFFF00\";\r\n colorObject.foregroundColor = \"#FF0000\";\r\n fontWeight = \"bold\";\r\n fontSize = \"1rem\";\r\n }\r\n \r\n var rosterCellStyle = {\r\n background: colorObject.backgroundColor, \r\n color: colorObject.foregroundColor,\r\n fontSize: fontSize,\r\n fontWeight: fontWeight,\r\n opacity: opacity\r\n };\r\n\r\n if (rosterValue.rn && rosterValue.rn.note){\r\n if (_this.util.isReddish(colorObject.backgroundColor)){\r\n rosterCellStyle[\"background\"] = \r\n `${colorObject.backgroundColor} url(./assets/images/roster-note-indicator-yellow.png) no-repeat right top`;\r\n }else{\r\n rosterCellStyle[\"background\"] = \r\n `${colorObject.backgroundColor} url(./assets/images/roster-note-indicator-red.png) no-repeat right top`;\r\n }\r\n }\r\n\r\n return rosterCellStyle;\r\n }\r\n\r\n private getHighlightStyle(){\r\n return {\r\n backgroundColor: \"#FFFF00\",\r\n color: \"#FF0000\",\r\n fontSize: \"1rem\",\r\n fontWeight: \"bold\"\r\n };\r\n }\r\n\r\n private getDayHeaderClass(params: HeaderClassParams){\r\n let _this = params.context.componentParent as RosterComponent;\r\n let dateValue = params.colDef[\"rosterDay\"];\r\n\r\n if (_this.holidayObject.hasOwnProperty(format(dateValue, 'yyyyMMdd'))){\r\n return \"roster-day-holiday\";\r\n }\r\n\r\n if (_this.rosterService.isPayDay(dateValue)){\r\n return \"roster-day-payday\";\r\n }\r\n\r\n return \"roster-day\";\r\n }\r\n\r\n private isHoliday(dateValue): boolean{\r\n let dateStr = format(dateValue, 'yyyyMMdd');\r\n return (this.holidayObject.hasOwnProperty(dateStr));\r\n }\r\n\r\n private getRosterValue(params){\r\n let employeeRoster = params.data as IEmployeeRoster;\r\n\r\n if (employeeRoster.isGroupLine){\r\n return \"\";\r\n }\r\n\r\n let dayStr = format(params.colDef.rosterDay, \"yyyyMMdd\");\r\n if (employeeRoster.isSummaryLine){\r\n let summaryData = params.data as IRosterSummaryLineData\r\n return summaryData.data[dayStr];\r\n }\r\n\r\n if (employeeRoster.values[dayStr]){\r\n return employeeRoster.values[dayStr].sn || employeeRoster.values[dayStr].rc.code;\r\n }\r\n\r\n return \"error\";\r\n }\r\n\r\n private getEmployeeSpan(params){\r\n let employeeRoster = params.data as IEmployeeRoster;\r\n return (employeeRoster.isGroupLine || employeeRoster.isSummaryLine) ? 8 : 1;\r\n }\r\n\r\n private getDaySpan(params, count){\r\n let employeeRoster = params.data as IEmployeeRoster;\r\n return (employeeRoster.isGroupLine) ? count : 1;\r\n }\r\n\r\n private getRowNo(params){\r\n console.log(params)\r\n return params.data.rowNo;\r\n }\r\n\r\n private getDragText(params){\r\n let employeeRoster = params.rowNode.data as IEmployeeRoster;\r\n if (employeeRoster.isGroupLine || employeeRoster.isSummaryLine){\r\n return \"\";\r\n }\r\n\r\n return `${employeeRoster.employee?.lastName}, ${employeeRoster.employee?.firstName}`;\r\n }\r\n\r\n /**\r\n * Get display name for a roster line. It could be employee's fullname, workgroup name or summary line title\r\n * This method is called from EmployeeNameRenderer component.\r\n * @param params \r\n * @returns \r\n */\r\n private getDisplayName(params){\r\n let employeeRoster = params.data as IEmployeeRoster;\r\n\r\n if (employeeRoster.isGroupLine){\r\n return employeeRoster.employee.workGroup;\r\n }\r\n\r\n if (employeeRoster.isSummaryLine){\r\n let summaryData = params.data as IRosterSummaryLineData\r\n return summaryData.title;\r\n }\r\n\r\n let _this = params.context.componentParent;\r\n if (_this.isActiveRoster && !employeeRoster.employee.active){\r\n return \"\";\r\n }\r\n\r\n return _this.util.getEmployeeName(employeeRoster.employee);\r\n }\r\n\r\n /**\r\n * Check if today is the birthday of the employee.\r\n * This method is called from EmployeeNameRenderer to render a birthday cake before employee's name\r\n * @param params\r\n * @returns \r\n */\r\n private isBirthday(params){\r\n let employeeRoster = params.data as IEmployeeRoster;\r\n\r\n if (employeeRoster.isGroupLine || employeeRoster.isSummaryLine){\r\n return false;\r\n }\r\n\r\n if (params.context.componentParent.isActiveRoster && !employeeRoster.employee.active){\r\n return false;\r\n }\r\n\r\n var month = new Date().getMonth();\r\n var day = new Date().getDate();\r\n var dob = new Date(employeeRoster.employee.dateOfBirth);\r\n\r\n return dob.getMonth() === month && dob.getDate() === day;\r\n }\r\n\r\n private getEmployeePersonalInfo(params){\r\n let employeeRoster = params.data as IEmployeeRoster;\r\n let colId = params.colDef.colId;\r\n\r\n if (employeeRoster.isGroupLine || employeeRoster.isSummaryLine){\r\n return \"\";\r\n }\r\n\r\n let _this = params.context.componentParent;\r\n if (_this.isActiveRoster && !employeeRoster.employee.active){\r\n return \"\";\r\n }\r\n\r\n return employeeRoster.employee[colId];\r\n }\r\n\r\n // this method returns \"inactive-employee\" for params.value field\r\n // roster-tooltip component will use this value to provide related content for the tooltip.\r\n private tooltipForInactiveEmployeeValueGetter(params){\r\n let employeeRoster = params.data as IEmployeeRoster;\r\n\r\n if (employeeRoster.isGroupLine || employeeRoster.isSummaryLine ){\r\n return \"\";\r\n }\r\n\r\n let _this = params.context.componentParent;\r\n let colId = params.colDef.colId;\r\n let empId = employeeRoster.employee.id;\r\n\r\n \r\n let note = _this.getRosterEmployeeNote(empId, colId);\r\n if (note && note.note && _this.shouldShowRosterEmployeeNoteForm(employeeRoster)){\r\n return \"employee-note\";\r\n }else{\r\n if (_this.isActiveRoster && !employeeRoster.employee.active){\r\n return \"inactive-employee\";\r\n }\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n private tooltipValueGetter(params){\r\n if (params.location === \"header\"){\r\n return params.colDef.rosterDay;\r\n }\r\n\r\n if (params.location === \"cell\"){\r\n var day = format(params.colDef.rosterDay, \"yyyyMMdd\");\r\n var rosterNote = params.data.values ? params.data.values[day].rn : null;\r\n if (rosterNote && rosterNote.note){\r\n return \"roster-note\";\r\n }\r\n }\r\n \r\n return \"\";\r\n }\r\n\r\n private getDOB(params){\r\n let employeeRoster = params.data as IEmployeeRoster;\r\n\r\n if (employeeRoster.isGroupLine || employeeRoster.isSummaryLine){\r\n return \"\";\r\n }\r\n\r\n let _this = params.context.componentParent;\r\n if (_this.isActiveRoster && !employeeRoster.employee.active){\r\n return \"\";\r\n }\r\n\r\n return _this.util.getDateString(employeeRoster.employee.dateOfBirth);\r\n } \r\n\r\n private getAccessId(params){\r\n let employeeRoster = params.data as IEmployeeRoster;\r\n\r\n if (employeeRoster.isGroupLine || employeeRoster.isSummaryLine){\r\n return \"\";\r\n }\r\n\r\n let _this = params.context.componentParent;\r\n if (_this.isActiveRoster && !employeeRoster.employee.active){\r\n return \"\";\r\n }\r\n\r\n return employeeRoster.employee.accessId;\r\n } \r\n\r\n private draggableRow(params){\r\n let employeeRoster = params.data as IEmployeeRoster;\r\n if (employeeRoster.isGroupLine || employeeRoster.isSummaryLine){\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private showActionComponent(empRoster: IEmployeeRoster):boolean{\r\n if (!this.canModifyRoster()){\r\n return false;\r\n }\r\n\r\n if (empRoster.isGroupLine || empRoster.isSummaryLine){\r\n return false;\r\n }\r\n\r\n return this.isActiveRoster && !empRoster.employee.active;\r\n }\r\n\r\n private getActionComponentTooltip(empRoster: IEmployeeRoster):string{\r\n return \"Remove line from roster\";\r\n }\r\n\r\n private getActionComponentIcon(empRoster: IEmployeeRoster):string{\r\n return \"fas fa-times\"\r\n }\r\n\r\n private updateEmployeeSortNo(whenDone = null){\r\n if (!this.canModifyEmployeeRosterSortNo()){\r\n if (whenDone){\r\n whenDone();\r\n }\r\n\r\n return;\r\n }\r\n\r\n let grpsToReOrder = {};\r\n \r\n this.employeeRosters.forEach((er, index)=>{\r\n if (!er.isGroupLine && !er.isSummaryLine){\r\n if (index !== this.employeeOrders[er.employee.id] && !grpsToReOrder.hasOwnProperty(er.employee.workGroupId)){\r\n grpsToReOrder[er.employee.workGroupId] = 1;\r\n }\r\n }\r\n });\r\n\r\n let index = 0;\r\n let employeesToUpdate: IEmployeeSortNoUpdateModel[] = [];\r\n this.employeeRosters.forEach((er)=>{\r\n index = (er.isGroupLine && grpsToReOrder.hasOwnProperty(er.employee.workGroupId)) ? 0 : index + 1;\r\n\r\n if (!er.isGroupLine && \r\n !er.isSummaryLine && \r\n grpsToReOrder.hasOwnProperty(er.employee.workGroupId)){\r\n employeesToUpdate.push({employeeId: er.employee.id, rosterSortNo: index });\r\n }\r\n });\r\n\r\n if (employeesToUpdate.length > 0){\r\n this.subs.sink = this._empService.updateEmployeeRosterSortNo(employeesToUpdate)\r\n .subscribe(\r\n res => {},\r\n err => {},\r\n () => {\r\n if (whenDone){\r\n whenDone();\r\n }\r\n });\r\n }else{\r\n if (whenDone){\r\n whenDone();\r\n }\r\n }\r\n }\r\n\r\n private canColumnBeHighlighted(colId: string): boolean{\r\n return colId === \"employeeName\" || \r\n colId === \"phone\" || \r\n colId === \"email\" || \r\n colId === \"dateOfBirth\" ||\r\n colId === \"company\" ||\r\n colId === \"position\" ||\r\n colId === \"supervisor\" ||\r\n colId === \"workarea\" ||\r\n colId === \"accessId\";\r\n }\r\n\r\n /**\r\n * Load data required for ag-grid:\r\n * 1. System defined date range. (Defined in [[PpsUtilityService]])\r\n * 2. Set initial date range for the roster: one month data from today\r\n * 3. Load entities: roster codes, roster code settings, holidays\r\n */\r\n private initialize(){\r\n let dateRanges = this.util.getDateRanges();\r\n this.dateRanges = Object.keys(dateRanges).map(key => { return {id: key, title: dateRanges[key].title}; });\r\n\r\n // By default, display one month roster data from today\r\n let startDate = this.util.getDateOnly(new Date());\r\n this.setDateRange(startDate, addMonths(startDate, 1));\r\n this.loadEntitiesAndRosterData();\r\n }\r\n\r\n /**\r\n * Set date range of the roster module\r\n * @param from beginning date\r\n * @param to endding date\r\n */\r\n private setDateRange(from:Date, to:Date){\r\n this.startDate = from;\r\n this.endDate = to;\r\n }\r\n\r\n /**\r\n * Load roster data, highlight cell with the following entities: \r\n * roster codes, roster code settings, holidays, entities required for edit employee form:\r\n * supervisors, work groups, work areas, positions, roster types\r\n * Roster code settings are converted to a dictionary with key set to {rosterCodeId_ticketStatusId}, value set to \r\n * {foregroundColor, backgroundColor}.\r\n */\r\n private loadEntitiesAndRosterData(){\r\n this.spinner.show(this.spinnerName);\r\n this.employeeRosters = [];\r\n this.summaryLineData = [];\r\n this.pinnedSummaryLineData = [];\r\n var shouldLoadEntitiesForEditEmployee = this.canModifyEmployee();\r\n this.subs.sink = forkJoin([\r\n this.rosterService.getRostersWithEntities(\r\n this.rosterProject.id,\r\n this.startDate, \r\n this.endDate, \r\n true, // load with entities\r\n shouldLoadEntitiesForEditEmployee,\r\n this.isActiveRoster ? true : null, \r\n this.isActiveRoster ? null : false),\r\n ]).subscribe(([res]) => {\r\n if (res.succeed){\r\n this.rosterCodes = res.result.rosterCodes;\r\n\r\n res.result.rosterCodeSettings.forEach( rcs => {\r\n let travelStatus = rcs.ticketStatus || {id: 0, description: \"\"};\r\n this.rosterCodeSettingsObject[rcs.rosterCode.id + \"_\" + travelStatus.id] = {\r\n foregroundColor: rcs.foregroundColor, backgroundColor: rcs.backgroundColor\r\n }\r\n });\r\n\r\n res.result.holidays.forEach(hd => {\r\n this.holidayObject[format(hd.day, \"yyyyMMdd\")] = hd.holidayName;\r\n });\r\n\r\n this.employeeUpdateEntities = {\r\n supervisors: res.result.supervisors,\r\n workGroups: res.result.workGroups,\r\n positions: res.result.positions,\r\n rosterTypes: res.result.rosterTypes,\r\n workAreas: res.result.workAreas,\r\n employers: res.result.employers\r\n };\r\n \r\n res.result.rosterEmployeeNotes.forEach(n=>{\r\n this.rosterEmployeeNotes[`${n.employeeId}-${n.columnName}`] = n;\r\n });\r\n \r\n this.setupGridData(res.result.rosterData, res.result.employeeHighlights);\r\n\r\n }else{\r\n this.toast.failed(`Failed to load roster data: ${res.errors.join(\";\")}`);\r\n return;\r\n }\r\n \r\n \r\n },\r\n error => {\r\n this.toast.failed(`Failed to load roster data: ${error.statusText}. Please try again later.`);\r\n this.spinner.hide(this.spinnerName)\r\n },\r\n () => this.spinner.hide(this.spinnerName));\r\n }\r\n\r\n /**\r\n * Reload roster data via [[_loadRosterDataHelper]] method. \r\n * If the user can change roster employee display order, this method will make sure\r\n * all updated employees display order will be saved before the roster data are reloaded.\r\n */\r\n private _loadRosterData(){\r\n if (this.canModifyEmployeeRosterSortNo()){\r\n this.updateEmployeeSortNo(() => this._loadRosterDataHelper());\r\n }else{\r\n this._loadRosterDataHelper();\r\n }\r\n }\r\n\r\n /**\r\n * Load roster data based on current start date and end date. This methods will load roster data\r\n * and highlighted columns for roster employees. The highlighted columns will be merged to highlight\r\n * property defined in IEmployeeRoster.\r\n */\r\n private _loadRosterDataHelper(){\r\n this.spinner.show(this.spinnerName);\r\n this.spinnerText = \"Loading roster data ...\";\r\n this.employeeRosters = [];\r\n this.summaryLineData = [];\r\n this.pinnedSummaryLineData = [];\r\n\r\n this.subs.sink = forkJoin([\r\n this.rosterService.getRostersWithEntities(\r\n this.rosterProject.id,\r\n this.startDate, \r\n this.endDate, \r\n false,\r\n false,\r\n this.isActiveRoster ? true : null, \r\n this.isActiveRoster ? null : false),\r\n ]).subscribe(\r\n ([res]) => {\r\n res.result.rosterEmployeeNotes.forEach(n=>{\r\n this.rosterEmployeeNotes[`${n.employeeId}-${n.columnName}`] = n;\r\n });\r\n this.setupGridData(res.result.rosterData, res.result.employeeHighlights);\r\n },\r\n error => {\r\n this.toast.failed(`Failed to load roster data: ${error.statusText}. Please try again later.`);\r\n this.spinner.hide(this.spinnerName);\r\n },\r\n () => this.spinner.hide(this.spinnerName)\r\n );\r\n }\r\n\r\n /**\r\n * Setup roster grid data\r\n * @param rosterData IRosterResult\r\n * @param empHighlights IRosterEmployeeHighlight[]\r\n */\r\n private setupGridData(rosterData: IRosterResult, empHighlights: IRosterEmployeeHighlight[]){\r\n this.employeeRosters = rosterData.employeeRosters;\r\n this.employeeRosters.forEach((e, index) => this.employeeRosters[index].rowNo = index + 1);\r\n \r\n // transform employee highlight array to dictionary\r\n let employeeHighlights: IEmployeeHighlight = {};\r\n empHighlights.forEach(e => {\r\n if (!employeeHighlights.hasOwnProperty(e.employeeId)){\r\n employeeHighlights[e.employeeId] = {};\r\n }\r\n\r\n employeeHighlights[e.employeeId][e.columnName] = e.active;\r\n });\r\n\r\n this.employeeRosters.forEach((er, index)=>{\r\n // store the original employee's display order index\r\n if (!er.isGroupLine && !er.isSummaryLine){\r\n this.employeeOrders[er.employee.id] = index;\r\n }\r\n\r\n // merge roster employee highlight information to\r\n if (employeeHighlights.hasOwnProperty(er.employee.id)){\r\n er.highlights = employeeHighlights[er.employee.id];\r\n }\r\n });\r\n\r\n this.setDateRange(this.startDate, this.endDate);\r\n this.getColumnDefs();\r\n\r\n if (this.isActiveRoster){\r\n this.summaryLineData = rosterData.rosterSummaryLines;\r\n \r\n if (this.storedSummaryLines.length === 0){\r\n this.pinnedSummaryLineData = _.cloneDeep(this.summaryLineData);\r\n }\r\n\r\n this.summaryLineData.forEach(sl => {\r\n if (this.storedSummaryLines.includes(sl.title)){\r\n this.pinnedSummaryLineData.push(_.cloneDeep(sl));\r\n }\r\n });\r\n }else{\r\n this.pinnedSummaryLineData = [];\r\n }\r\n }\r\n\r\n /**\r\n * Get ag-grid column definitions. \r\n */\r\n private getColumnDefs(){\r\n this.gridHeaders = [\r\n {\r\n headerName: \"PPS Servicing Pty Ltd\",\r\n colId: \"employee\",\r\n suppressMovable: true,\r\n cellStyle: \"{'textAlign': 'left'}\",\r\n headerClass: \"roster-title\",\r\n children:[\r\n {\r\n headerName: `${this.rosterProject.title} Roster`,\r\n colId: \"employee\",\r\n suppressMovable: true,\r\n cellStyle: \"{'textAlign': 'left'}\",\r\n headerClass: \"roster-title-2\",\r\n children:[\r\n {\r\n headerName: 'Employee Name',\r\n colId: \"employeeName\",\r\n field:'displayName',\r\n rowDrag: this.draggableRow,\r\n rowDragText: this.getDragText,\r\n width: 200,\r\n filter: EmployeeFilterComponent,\r\n filterParams: {\r\n employees: this.getEmployees()\r\n },\r\n floatingFilter: true,\r\n floatingFilterComponent: EmployeeFloatingFilterComponent,\r\n cellRenderer: EmployeeNameRenderer,\r\n cellStyle: this.getCellStyle,\r\n colSpan: this.getEmployeeSpan,\r\n tooltipComponent: 'customTooltip',\r\n tooltipValueGetter: this.tooltipForInactiveEmployeeValueGetter\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ];\r\n\r\n if (this.isActiveRoster && this.canModifyRoster()){\r\n \r\n this.gridHeaders[0].children[0].children.splice(0, 0, {\r\n headerName: \"\",\r\n field: \"action\",\r\n cellRenderer: DeleteActionComponent,\r\n width: 24,\r\n resizable: false,\r\n cellStyle: {textAlign:\"center\"} \r\n });\r\n }\r\n\r\n if (!this.isActiveRoster && this.canModifyRoster()){\r\n \r\n this.gridHeaders[0].children[0].children.splice(0, 0, {\r\n headerName: \"\",\r\n field: \"action\",\r\n cellRenderer: GridActionComponent,\r\n width: 24,\r\n resizable: false,\r\n cellStyle: {textAlign:\"center\"} \r\n });\r\n }\r\n\r\n if (!this.smallScreen){\r\n this.gridHeaders[0].children[0].children = this.gridHeaders[0].children[0].children.concat([\r\n {\r\n headerName: 'Company',\r\n colId: \"company\",\r\n field:'employee.employer',\r\n width: 100,\r\n filter: true,\r\n floatingFilter: true,\r\n cellStyle: this.getCellStyle,\r\n tooltipComponent: 'customTooltip',\r\n tooltipValueGetter: this.tooltipForInactiveEmployeeValueGetter\r\n },\r\n {\r\n headerName: 'Position',\r\n colId: \"position\",\r\n field:'employee.position',\r\n width: 120,\r\n filter: true,\r\n floatingFilter: true,\r\n //valueGetter: this.getEmployeePosition,\r\n cellStyle: this.getCellStyle,\r\n tooltipComponent: 'customTooltip',\r\n tooltipValueGetter: this.tooltipForInactiveEmployeeValueGetter\r\n },\r\n {\r\n headerName: 'Supervisor',\r\n colId: \"supervisor\",\r\n field:'employee.supervisor',\r\n width: 120,\r\n filter: true,\r\n floatingFilter: true,\r\n //valueGetter: this.getEmployeeSupervisor,\r\n cellStyle: this.getCellStyle,\r\n tooltipComponent: 'customTooltip',\r\n tooltipValueGetter: this.tooltipForInactiveEmployeeValueGetter\r\n },\r\n {\r\n headerName: 'Work Area',\r\n colId: \"workarea\",\r\n field:'employee.workArea',\r\n width: 120,\r\n filter: true,\r\n floatingFilter: true,\r\n cellStyle: this.getCellStyle,\r\n tooltipComponent: 'customTooltip',\r\n tooltipValueGetter: this.tooltipForInactiveEmployeeValueGetter\r\n },\r\n {\r\n headerName: 'Contact',\r\n colId: \"phone\",\r\n field:'employee.phone',\r\n width: 90,\r\n cellStyle: this.getCellStyle,\r\n valueGetter: this.getEmployeePersonalInfo,\r\n tooltipComponent: 'customTooltip',\r\n tooltipValueGetter: this.tooltipForInactiveEmployeeValueGetter\r\n },\r\n {\r\n headerName: 'Email',\r\n colId: \"email\",\r\n field:'employee.email',\r\n width: 80,\r\n cellStyle: this.getCellStyle,\r\n valueGetter: this.getEmployeePersonalInfo,\r\n tooltipComponent: 'customTooltip',\r\n tooltipValueGetter: this.tooltipForInactiveEmployeeValueGetter\r\n },\r\n {\r\n headerName: 'DOB',\r\n colId: \"dateOfBirth\",\r\n field:'employee.dateOfBirth',\r\n width: 80,\r\n cellStyle: this.getCellStyle,\r\n comparator: (date1, date2) => this.util.dateComparator(date1, date2),\r\n valueGetter: this.getDOB,\r\n tooltipComponent: 'customTooltip',\r\n tooltipValueGetter: this.tooltipForInactiveEmployeeValueGetter\r\n },\r\n {\r\n headerName: 'Access Id',\r\n colId: \"accessId\",\r\n field:'employee.accessId',\r\n width: 80,\r\n cellStyle: this.getCellStyle,\r\n valueGetter: this.getAccessId,\r\n tooltipComponent: 'customTooltip',\r\n tooltipValueGetter: this.tooltipForInactiveEmployeeValueGetter\r\n }\r\n ]);\r\n }\r\n\r\n let years = eachYearOfInterval({start: this.startDate, end: this.endDate});\r\n let months = eachMonthOfInterval({start: this.startDate, end: this.endDate});\r\n\r\n // // // years.map(d => d.getFullYear()).forEach( year =>{\r\n // // // let yearHeader = {\r\n // // // headerName: year + \"\",\r\n // // // headerClass: \"roster-year\",\r\n // // // pinned: false,\r\n // // // resizable: false,\r\n // // // suppressMovable: true,\r\n // // // children:[]\r\n // // // }\r\n\r\n // // // this.gridHeaders.push(yearHeader);\r\n\r\n months.forEach( mon => {\r\n // // // if (mon.getFullYear() != year){\r\n // // // return;\r\n // // // }\r\n\r\n let monthHeader = {\r\n headerName: format(mon, 'MMMM/yyyy'),\r\n headerClass: \"roster-month\",\r\n pinned: false,\r\n resizable: false,\r\n suppressMovable: true,\r\n children: []\r\n };\r\n\r\n /////////////////yearHeader.children.push(monthHeader);\r\n \r\n this.gridHeaders.push(monthHeader);\r\n\r\n let start = max([mon, this.startDate]);\r\n let end = min([lastDayOfMonth(mon), this.endDate]);\r\n let days = eachDayOfInterval({start: start, end:end});\r\n\r\n days.forEach(day => {\r\n let payDay = this.rosterService.isPayDay(day);\r\n let holiday = this.isHoliday(day);\r\n\r\n let dayHeader = {\r\n headerName: format(day, \"EEE\"),\r\n headerClass: this.getDayHeaderClass,\r\n headerTooltip: format(day, 'dd/MM/yyyy'),\r\n pinned: false,\r\n resizable: false,\r\n suppressMovable: true,\r\n rosterDay: day,\r\n children:[{\r\n headerName: format(day, \"dd\"),\r\n headerComponentParams: {\r\n template:`\r\n
\r\n \r\n
\r\n \r\n ${payDay ? '' : ''}\r\n ${holiday ? '' : ''}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n `\r\n },\r\n headerClass: this.getDayHeaderClass,\r\n headerTooltip: holiday ? this.holidayObject[format(day, \"yyyyMMdd\")] : null,\r\n rosterDay: day,\r\n colId: format(day, \"yyyyMMdd\"),\r\n field: \"roster.\" + format(day, \"yyyyMMdd\") + \".rosterCode.code\",\r\n valueGetter: this.getRosterValue,\r\n cellClass: \"roster-day-value\",\r\n cellStyle: this.getCellStyle,\r\n tooltipComponent: 'customTooltip',\r\n tooltipValueGetter: this.tooltipValueGetter,\r\n pinned: false,\r\n resizable: false,\r\n suppressMovable: true,\r\n colSpan: null,\r\n width: 35\r\n }]\r\n };\r\n dayHeader.children[0].colSpan = (params) => this.getDaySpan(params, days.length);\r\n monthHeader.children.push(dayHeader);\r\n });\r\n });\r\n // // // })\r\n }\r\n\r\n /**\r\n * Highlight the selected column (colId) for given employee (empId)\r\n * @param rowNode The RowNode object defined in ag-grid\r\n * @param empId The employee Id\r\n * @param colId The colId used in grid column definition. See method [[getColumnDefs]]\r\n */\r\n private highlightEmployee(rowNode: RowNode, empRoster: IEmployeeRoster, update: IEmployeeHighlightUpdate){\r\n if (this.canModifyRoster()){\r\n this.subs.sink = this.rosterService.highlightEmployeeSection(update)\r\n .subscribe(res =>{\r\n if (res.succeed){\r\n res.result.forEach(eh => {\r\n empRoster.highlights = empRoster.highlights || {};\r\n empRoster.highlights[eh.columnName] = eh.active;\r\n });\r\n \r\n rowNode.setData(empRoster);\r\n this.gridApi.redrawRows({rowNodes:[rowNode]}); \r\n }else{\r\n this.toast.failed(`Failed to highlight ${update.colId}`);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Paste roster value stored in clipboard to target cell via [[updateEmployeeRoster]] method. \r\n * Roster note will NOT be pasted over. \r\n * This method is called when ctrl+v clicked event is detected\r\n * @param event CellKeyDownEvent defined in ag-grid\r\n */\r\n private pasteRosterData(event: CellKeyDownEvent){\r\n if (this.clipboardData){\r\n let result = {\r\n employeeId: event.data.employee.id,\r\n section: 2,\r\n oldRosterValue: this.getRosterValueFromSelectedCell(event),\r\n rosterValue: _.cloneDeep(this.clipboardData),\r\n from: event.colDef[\"rosterDay\"],\r\n to: event.colDef[\"rosterDay\"]\r\n };\r\n\r\n // do not copy over the note but keep the old roster note if any\r\n result.rosterValue.rn = result.oldRosterValue.rn; \r\n \r\n this.checkAndUpdatePayrollRosterCode(result.employeeId, result.to, result.rosterValue, result);\r\n }\r\n }\r\n\r\n private checkAndUpdatePayrollRosterCode(employeeId: number, day: Date, currentPayrollRosterValue: IRosterValue, result: any){\r\n let prevDateStr = format(subDays(day, 1), \"yyyyMMdd\");\r\n let nextDateStr = format(addDays(day, 1), \"yyyyMMdd\");\r\n\r\n let employeeRoster = this.employeeRosters.find(ep => ep.employee.id === employeeId);\r\n if (employeeRoster){\r\n let previousPayrollRosterValue = employeeRoster.values[prevDateStr];\r\n let nextRosterValue = employeeRoster.values[nextDateStr];\r\n\r\n if (!nextRosterValue || !previousPayrollRosterValue){\r\n this._confirm.confirm({\r\n header: \"Load more roster data\",\r\n message: `Please load more roster data to continue. The system needs to know previous day and next day's roster data for validation`,\r\n icon: \"pi pi-ban text-danger\",\r\n key: \"invalidPayrollRosterCodePromptDialog1\",\r\n acceptVisible: true,\r\n rejectVisible: false,\r\n acceptLabel: \"OK\"\r\n });\r\n\r\n return;\r\n }\r\n\r\n let recommentedPayrollRosterCode = \r\n this._rosterCodeService.getRosterCode(\r\n this._payrollRosterCodeRecommendor.recommend(currentPayrollRosterValue, previousPayrollRosterValue, nextRosterValue)\r\n );\r\n \r\n if (recommentedPayrollRosterCode?.id !== currentPayrollRosterValue.prc?.id){\r\n this._confirm.confirm({\r\n header: \"Incorrect Payroll Roster Code\",\r\n message: `The source payroll roster code is ${currentPayrollRosterValue.prc?.code || \"not set\"}. We recommend changing to ${recommentedPayrollRosterCode?.code}`,\r\n icon: \"pi pi-ban text-danger\",\r\n key: \"invalidPayrollRosterCodePromptDialog1\",\r\n acceptVisible: true,\r\n acceptLabel: \"Accept Change\",\r\n rejectLabel: \"Ignore Change\",\r\n accept: () => {\r\n result.rosterValue.prc = recommentedPayrollRosterCode;\r\n this.updateEmployeeRoster(result);\r\n },\r\n reject: () => {\r\n this.updateEmployeeRoster(result);\r\n }\r\n }); \r\n }else{\r\n this.updateEmployeeRoster(result);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Delete roster value from selected cell. \r\n * This method is called when Delete key is pressed\r\n * @param event CellKeyDownEvent defined in ag-grid\r\n */\r\n private deleteRosterData(event: CellKeyDownEvent){\r\n let rosterValue = this.getRosterValueFromSelectedCell(event);\r\n let employeeRoster = event.data as IEmployeeRoster;\r\n\r\n if (employeeRoster.isGroupLine || employeeRoster.isSummaryLine){\r\n return;\r\n }\r\n \r\n if (!rosterValue.rc?.id){\r\n return;\r\n }\r\n\r\n this._confirm.confirm({\r\n header: `Delete Roster Value`,\r\n message: `Please confirm to delete the roster value for \"${this.util.getEmployeeName(employeeRoster.employee)}\".`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => {\r\n let result: any = {\r\n employeeId: employeeRoster.employee.id,\r\n section: 2,\r\n \r\n oldRosterValue: rosterValue,\r\n rosterValue: {\r\n rc: {id: 0, code: null},\r\n prc: {id: 0, code: null},\r\n sn: null,\r\n ts: {id: 0, description: null}\r\n },\r\n from: event.colDef[\"rosterDay\"],\r\n to: event.colDef[\"rosterDay\"]\r\n };\r\n \r\n this.updateEmployeeRoster(result);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Get the clone of roster value from selected cell. If selected cell is not a roster code cell, it will return null.\r\n * @param event CellKeyDownEvent defined in ag-grid\r\n * @returns null or the clone of roster value from selected cell.\r\n */\r\n private getRosterValueFromSelectedCell(event: CellKeyDownEvent){\r\n let rosterValue: IRosterValue = null;\r\n let employeeRoster = event.data as IEmployeeRoster;\r\n\r\n if (employeeRoster.isGroupLine || employeeRoster.isSummaryLine){\r\n rosterValue = null;\r\n }else{\r\n let dayStr = format(event.colDef[\"rosterDay\"], \"yyyyMMdd\");\r\n rosterValue = employeeRoster.values[dayStr];\r\n }\r\n\r\n return _.cloneDeep(rosterValue);\r\n }\r\n\r\n /**\r\n * Generate roster data based on selected target date and roster type configured for employees. \r\n */\r\n private generateRosterDataHelper(){\r\n this.spinnerText = \"Generating employee's roster data...\";\r\n this.spinner.show(this.spinnerName);\r\n this.subs.sink = this.rosterService.generateRosterData(this.rosterProject.id, {\r\n endDate: this.generateRosterDataEndDate\r\n }).subscribe(\r\n (res) => {\r\n this.spinner.hide(this.spinnerName);\r\n this.spinnerText = this.defaultSpinnerText;\r\n\r\n if (res.succeed){\r\n window.setTimeout(() => {this.refresh()},0);\r\n }else{\r\n this.toast.failed(\"Generate roster data failed \" + res.errors.join(\";\"));\r\n }\r\n },\r\n error => {\r\n this.spinner.hide(this.spinnerName);\r\n this.spinnerText = this.defaultSpinnerText;\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Delete an employee line from roster. \r\n * @param empRoster IEmployeeRoster to be deleted\r\n */\r\n private deleteHelper(empRoster: IEmployeeRoster){\r\n this.spinnerText = \"Deleting employee's roster data...\";\r\n this.spinner.show(this.spinnerName);\r\n this.subs.sink = this._empService.removeEmployeeFromRoster(empRoster.employee)\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n this.searchEmployeeRoster(empRoster.employee?.id, (foundIndex)=>{\r\n this.employeeRosters.splice(foundIndex, 1);\r\n this.gridApi.setRowData(this.employeeRosters);\r\n });\r\n }\r\n },\r\n error => {\r\n this.spinner.hide(this.spinnerName);\r\n this.spinnerText = this.defaultSpinnerText;\r\n },\r\n () => {\r\n this.spinner.hide(this.spinnerName);\r\n this.spinnerText = this.defaultSpinnerText;\r\n });\r\n }\r\n\r\n /**\r\n * Lookup employee based on employee id and execute the callback method whenFound once it is found.\r\n * @param empoyeeId The employee to lookup\r\n * @param whenFound Callback function once a employee has been found. The callback function takes the index of the \r\n * employee as parameter\r\n */\r\n private searchEmployeeRoster(empoyeeId: number, whenFound){\r\n var foundIndex = this.employeeRosters.findIndex(er => er.employee?.id === empoyeeId);\r\n if (foundIndex !== -1 && whenFound){\r\n whenFound(foundIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Get employee list for employee filter. Sort the employee list by their full name\r\n * @returns ISelectOption[]\r\n */\r\n private getEmployees(): ISelectOption[]{\r\n var employees: ISelectOption[] = [];\r\n\r\n this.employeeRosters.forEach(e => {\r\n if (e.employee.id > 0){\r\n let fullname = this.util.getEmployeeName(e.employee);\r\n employees.push({\r\n value: fullname.toLowerCase(),\r\n text: fullname\r\n })\r\n }\r\n })\r\n\r\n employees = employees.sort((a, b) => {\r\n if ( a.value < b.value){\r\n return -1;\r\n }\r\n if ( a.value > b.value){\r\n return 1;\r\n }\r\n return 0; \r\n });\r\n\r\n return employees;\r\n }\r\n\r\n /**\r\n * Show employee form from employee module. Allow edit employee properties from roster module.\r\n * To edit employee, user 1) must have Modify Employee permission and 2) employee update entities must have been\r\n * loaded successfully.\r\n * @param employee IRosterEmployeeViewModel\r\n * @returns \r\n */\r\n public editEmployee(employee: IRosterEmployeeViewModel){\r\n if (this.canModifyEmployee()){\r\n if (this.employeeUpdateEntities === null){\r\n return;\r\n }\r\n\r\n this.spinnerText = `Loading ${this.util.getEmployeeName(employee)}'s employee data...`;\r\n this.spinner.show(this.spinnerName);\r\n this.subs.sink = this._empService.getEmployeeById(employee.id)\r\n .subscribe(\r\n empRes => {\r\n if (empRes.succeed){\r\n this.openEmployeeForm(empRes.result);\r\n }\r\n },\r\n error=>{\r\n this.spinner.hide(this.spinnerName); \r\n this.spinnerText = this.defaultSpinnerText;\r\n },\r\n () => {\r\n this.spinner.hide(this.spinnerName);\r\n this.spinnerText = this.defaultSpinnerText;\r\n }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Show employee edit form\r\n * @param employee Employee\r\n * @returns \r\n */\r\n private openEmployeeForm(employee: Employee){\r\n if (employee === null){\r\n return;\r\n }\r\n\r\n let dialog = this._dialog.open(EmployeeFormComponent, {\r\n header: \"Edit Employee\", \r\n styleClass: \"size-md\",\r\n data:{\r\n employee: employee,\r\n employees: this.employeeUpdateEntities.supervisors,\r\n workGroups: this.employeeUpdateEntities.workGroups,\r\n positions: this.employeeUpdateEntities.positions,\r\n rosterTypes: this.employeeUpdateEntities.rosterTypes,\r\n workAreas: this.employeeUpdateEntities.workAreas,\r\n employers: this.employeeUpdateEntities.employers\r\n },\r\n draggable: true\r\n });\r\n\r\n\r\n this.subs.sink = dialog.onClose.subscribe(employee => {\r\n if (employee){ \r\n // clicked Save button\r\n this.saveEmployee(employee);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Save employee to database and flash updated cells after the data successfully saved.\r\n * @param employee Employee\r\n */\r\n private saveEmployee(employee: Employee){\r\n this.subs.sink = this._empService\r\n .updateEmployee(employee)\r\n .subscribe(response => {\r\n if (response.succeed){\r\n this.searchEmployeeRoster(employee.id, (index)=>{\r\n let columns = [];\r\n var oldEmployee = this.employeeRosters[index].employee;\r\n\r\n if (oldEmployee.employer !== employee.employer?.employerName){\r\n oldEmployee.employer = employee.employer?.employerName;\r\n columns.push(\"company\");\r\n }\r\n\r\n if (oldEmployee.position !== employee.position.title){\r\n oldEmployee.position = employee.position.title;\r\n columns.push(\"position\");\r\n }\r\n\r\n if (oldEmployee.supervisor !== this.util.getEmployeeName(employee.supervisor, true)){\r\n oldEmployee.supervisor = this.util.getEmployeeName(employee.supervisor, true);\r\n columns.push(\"supervisor\");\r\n }\r\n\r\n if (oldEmployee?.workArea !== employee.workArea?.areaName){\r\n oldEmployee.workArea = employee.workArea?.areaName;\r\n columns.push(\"workarea\");\r\n }\r\n\r\n if (oldEmployee.phone !== employee.phone){\r\n oldEmployee.phone = employee.phone;\r\n columns.push(\"phone\");\r\n }\r\n\r\n if (oldEmployee.email !== employee.email){\r\n oldEmployee.email = employee.email;\r\n columns.push(\"email\");\r\n }\r\n\r\n let newDate = new Date(employee.dateOfBirth);\r\n let oldDateStr = format(oldEmployee.dateOfBirth, \"MM/dd/yyyy\");\r\n let newDateStr = format(newDate, \"MM/dd/yyyy\");\r\n\r\n if (oldDateStr !== newDateStr){\r\n oldEmployee.dateOfBirth = newDate;\r\n columns.push(\"dateOfBirth\");\r\n } \r\n\r\n let rowNode = this.gridApi.getRowNode(employee.id);\r\n rowNode.setData(this.employeeRosters[index]);\r\n this.gridApi.flashCells({rowNodes: [rowNode], columns: columns, flashDelay: 1000, fadeDelay: 500});\r\n });\r\n }else{\r\n this.toast.failed(\"Employee update failed: \" + response.errors.join(\";\"));\r\n }\r\n });\r\n }\r\n\r\n // -------------------------------------------------------------------------------------------------------------------\r\n // The following methods are provided for GridActionComponent\r\n // -------------------------------------------------------------------------------------------------------------------\r\n private getGridActionIcon(){\r\n return \"fas fa-plus\";\r\n }\r\n\r\n private getGridActionClass(){\r\n return \"text-success\";\r\n }\r\n\r\n private getGridActionTooltip(){\r\n //return \"Restore a replacement blank line to active roster.\";\r\n return \"Click to add this employee to active roster.\";\r\n }\r\n\r\n private showGridActionComponent(empRoster: IEmployeeRoster):boolean{\r\n if (!this.canModifyRoster()){\r\n return false;\r\n }\r\n\r\n if (empRoster.isGroupLine || empRoster.isSummaryLine){\r\n return false;\r\n }\r\n\r\n return !this.isActiveRoster && !empRoster.employee.showInRoster;\r\n }\r\n\r\n /**\r\n * Callback function to add an employee line to active roster. \r\n * This method is invoked from GridActionComponent. \r\n * @param empRoster IEmployeeRoster of the selected row\r\n * @returns \r\n */\r\n execGridAction(empRoster: IEmployeeRoster){\r\n if (empRoster === null){\r\n return;\r\n }\r\n\r\n this._confirm.confirm({\r\n header: `Add employee to active roster`,\r\n message: `${this.util.getEmployeeName(empRoster.employee)} will be added to active roster. Please confirm.`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => this.addEmplpoyeeToActiveRoster(empRoster)\r\n });\r\n } \r\n\r\n /**\r\n * Add an employee line to active roster. \r\n * @param empRoster IEmployeeRoster to be deleted\r\n */\r\n private addEmplpoyeeToActiveRoster(empRoster: IEmployeeRoster){\r\n this.subs.sink = this._empService.addEmployeeToActiveRoster(empRoster.employee)\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n this.searchEmployeeRoster(empRoster.employee?.id, (foundIndex)=>{\r\n //this.employeeRosters.splice(foundIndex, 1);\r\n empRoster.employee.showInRoster = true;\r\n this.gridApi.setRowData(this.employeeRosters);\r\n });\r\n }\r\n });\r\n }\r\n\r\n private getSummaryLineDisplaySettingsKey(): string{\r\n return `${this.summaryLineDisplaySettingsKey}_${this.rosterProject.id}`;\r\n }\r\n\r\n private getRosterEmployees(): IEmployeeSimpleModel[]{\r\n let emps: IEmployeeSimpleModel[] = [];\r\n this.employeeRosters.forEach(er => {\r\n if (er.employee.id !== 0){\r\n emps.push({\r\n id: er.employee.id, \r\n firstName: er.employee.firstName, \r\n lastName: er.employee.lastName\r\n });\r\n }\r\n });\r\n\r\n //emps.sort((a, b)=>a.lastName < b.lastName ? -1 : a.lastName > b.lastName ? 1 : a.firstName < b.firstName ? -1 : a.firstName > b.firstName ? 1 : 0);\r\n\r\n return emps;\r\n }\r\n}\r\n","

{{spinnerText}}

\r\n\r\n\r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
0\" class=\"m-1 pps-roster\" [style]=\"{height: 'calc(100% - 36px)'}\">\r\n \r\n \r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n

Fix Payroll Roster Code

\r\n
\r\n \r\n
\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule} from \"@angular/forms\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { AgGridModule } from \"ag-grid-angular\";\r\nimport { NgxSpinnerModule } from \"ngx-spinner\";\r\n\r\nimport {BadgeModule} from 'primeng/badge';\r\nimport {BreadcrumbModule} from 'primeng/breadcrumb';\r\nimport {ButtonModule} from 'primeng/button';\r\nimport {CalendarModule} from 'primeng/calendar';\r\nimport {DividerModule} from 'primeng/divider';\r\nimport {DialogModule} from 'primeng/dialog';\r\nimport {DropdownModule} from 'primeng/dropdown';\r\nimport {DynamicDialogModule} from 'primeng/dynamicdialog';\r\nimport {FieldsetModule} from 'primeng/fieldset';\r\nimport {InputNumberModule} from 'primeng/inputnumber';\r\nimport {InputTextModule} from 'primeng/inputtext';\r\nimport {ListboxModule} from 'primeng/listbox';\r\nimport {MultiSelectModule} from 'primeng/multiselect';\r\nimport {ToastModule} from 'primeng/toast';\r\nimport {ToolbarModule} from 'primeng/toolbar';\r\n\r\nimport { AuthGuardService } from \"../services/auth-guard.service\";\r\nimport { EmployeeRosterFormComponent } from \"./employee-roster-form.component\";\r\nimport { RosterComponent } from \"./roster.component\";\r\nimport { InputTextareaModule } from \"primeng/inputtextarea\";\r\nimport { RosterTooltipComponent } from \"./roster-tooltip.component\";\r\nimport { PanelModule } from \"primeng/panel\";\r\nimport { SharedModule } from \"../shared/shared.module\";\r\nimport { ConfirmDialogModule } from \"primeng/confirmdialog\";\r\nimport { UpdateTravelStatusFormComponent } from \"./update-travel-status-form.component\";\r\nimport { EmployeeFilterComponent } from \"./employee-filter.component\";\r\nimport { EmployeeFloatingFilterComponent } from \"./employee-floating-filter.component\";\r\nimport { EmployeeModule } from \"../employees/employee.module\";\r\nimport { EmployeeNameRenderer } from \"./employee-name-renderer.component\";\r\nimport { SidebarModule } from \"primeng/sidebar\";\r\nimport { InvalidEmployeeRostersComponent } from \"./invalid-employee-rosters.component\";\r\nimport { TableModule } from \"primeng/table\";\r\nimport { CheckboxModule } from \"primeng/checkbox\";\r\nimport { MessagesModule } from \"primeng/messages\";\r\nimport { DeleteRosterDataFormComponent } from \"./delete-roster-data-form.component\";\r\nimport { RosterEmployeeNoteFormComponent } from \"./roster-employee-note-form.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgxSpinnerModule,\r\n SharedModule,\r\n AgGridModule.withComponents([RosterTooltipComponent]),\r\n\r\n BadgeModule,\r\n BreadcrumbModule,\r\n ButtonModule,\r\n CalendarModule,\r\n CheckboxModule,\r\n ConfirmDialogModule,\r\n DialogModule,\r\n DividerModule,\r\n DropdownModule,\r\n DynamicDialogModule,\r\n FieldsetModule,\r\n InputNumberModule,\r\n InputTextModule,\r\n InputTextareaModule,\r\n ListboxModule,\r\n MessagesModule,\r\n MultiSelectModule,\r\n PanelModule,\r\n SidebarModule,\r\n TableModule,\r\n ToastModule,\r\n ToolbarModule,\r\n \r\n RouterModule.forChild([\r\n { path: 'roster', component: RosterComponent, canActivate: [AuthGuardService] }\r\n ]),\r\n\r\n EmployeeModule\r\n ],\r\n declarations: [\r\n EmployeeRosterFormComponent,\r\n RosterComponent,\r\n RosterTooltipComponent,\r\n UpdateTravelStatusFormComponent,\r\n EmployeeFilterComponent,\r\n EmployeeFloatingFilterComponent,\r\n EmployeeNameRenderer,\r\n InvalidEmployeeRostersComponent,\r\n DeleteRosterDataFormComponent,\r\n RosterEmployeeNoteFormComponent\r\n ]\r\n})\r\nexport class RosterModule{}","import { Component, OnInit } from \"@angular/core\";\r\nimport { NgForm } from \"@angular/forms\";\r\nimport { addYears } from \"date-fns\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { TicketStatus } from \"../shared/models/roster/ticket-status\";\r\nimport { IUpdateTravelStatusModel } from \"../shared/models/roster/update-travel-status-model\";\r\n\r\n@Component({\r\n selector: \"pps-update-travel-status-form\",\r\n templateUrl: \"./update-travel-status-form.component.html\"\r\n})\r\nexport class UpdateTravelStatusFormComponent implements OnInit{\r\n private initialValues = {\r\n presetDateRange: \"today\",\r\n fromDate: this._util.getDateOnly(new Date()),\r\n toDate: this._util.getDateOnly(new Date())\r\n };\r\n\r\n travelStatuses: any = [\r\n {id: TicketStatus.Approved, name: \"Approved\"},\r\n {id: TicketStatus.PendingApproval, name: \"Pending approval\"},\r\n {id: TicketStatus.Planned, name: \"Planned\"}]; \r\n\r\n updateTravelStatusModel: IUpdateTravelStatusModel = {\r\n travelStatus: null,\r\n dateRange: {}\r\n };\r\n\r\n message = \"\";\r\n yearRange: string = \"\";\r\n\r\n public dateRanges: {id:string, title: string}[] = [];\r\n public selectedDateRange: {id:string, title: string} = null;\r\n\r\n constructor(\r\n private _dialogRef: DynamicDialogRef,\r\n private _dlgConfig: DynamicDialogConfig,\r\n private _util: PpsUtilityService) {\r\n this.setData(this._dlgConfig.data);\r\n }\r\n\r\n ngOnInit(): void {\r\n let dateRanges = this._util.getDateRanges();\r\n this.dateRanges = Object.keys(dateRanges).map(key => { return {id: key, title: dateRanges[key].title}; });\r\n this.yearRange = `2018:${addYears(new Date(), 5).getFullYear()}`;\r\n\r\n this.initialize();\r\n }\r\n\r\n onDateRangeChanged(event){\r\n this.setDateRange();\r\n }\r\n\r\n private setData(data: any){\r\n if (!data){\r\n return;\r\n }\r\n \r\n this.initialValues = Object.assign(this.initialValues, data.initialValues);\r\n }\r\n\r\n private initialize(){\r\n if (this.initialValues.presetDateRange){\r\n let ranges = this.dateRanges.filter(dt => dt.title.toLowerCase() === this.initialValues.presetDateRange?.toLowerCase());\r\n if (ranges.length > 0){\r\n this.selectedDateRange = ranges.length > 0 ? ranges[0] : null; \r\n }\r\n }\r\n\r\n this.setDateRange();\r\n }\r\n\r\n private setDateRange(){\r\n if (this.selectedDateRange){\r\n let range = this._util.getDateRange(this.selectedDateRange.id);\r\n if (range){\r\n this.updateTravelStatusModel.dateRange.from = range.from;\r\n this.updateTravelStatusModel.dateRange.to = range.to;\r\n }\r\n }else{\r\n this.updateTravelStatusModel.dateRange.from = this.initialValues.fromDate;\r\n this.updateTravelStatusModel.dateRange.to = this.initialValues.toDate;\r\n }\r\n }\r\n\r\n save(form: NgForm){\r\n if (form.invalid){\r\n return false;\r\n }\r\n\r\n if (this.updateTravelStatusModel.dateRange.from > this.updateTravelStatusModel.dateRange.to){\r\n this.message = \"From date must be earlier than To date\";\r\n return;\r\n }\r\n\r\n if (this.updateTravelStatusModel.travelStatus === null){\r\n this.message = \"Please pick a travel status to updated to\";\r\n return;\r\n }\r\n\r\n this._dialogRef.close(this.updateTravelStatusModel);\r\n }\r\n\r\n cancel(){\r\n this._dialogRef.close();\r\n } \r\n}","
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n From date is required!\r\n {{message}}\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n To date is required!\r\n {{message}}\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n Travel status is required!\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n The travel status for FIA, FOA, FIP, FOP, DIA, DOA, DIP, DOP within the selected date range will all be updated.\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { Position} from '../shared/models/position';\r\nimport { User } from '../shared/models/user';\r\nimport { AccountViewModel, AddAccountViewModel, ResetPasswordViewModel, UpdateAccountViewModel, UpdatePasswordViewModel } from '../shared/models/update-account-view-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AccountService {\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/account`);\r\n }\r\n\r\n add(account: AddAccountViewModel): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/account`, account);\r\n }\r\n\r\n update(user: UpdateAccountViewModel): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/account/${user.userName}`, user);\r\n }\r\n\r\n updatePassword(user: UpdatePasswordViewModel): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/account/${user.userName}/credential`, user);\r\n }\r\n\r\n delete(username: string): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/account/${username}/delete`, null);\r\n }\r\n\r\n resetPassword(user: ResetPasswordViewModel): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/account/${user.userName}/reset`, user);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiUrlProvider {\r\n private _url: string = `${environment.apiRoot}/api`;\r\n\r\n constructor() { }\r\n\r\n get url(): string{\r\n return this._url;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { CanActivate } from \"@angular/router\";\r\nimport { AuthenticationService } from \"./authentication.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class AuthGuardService implements CanActivate{\r\n constructor(private _authService: AuthenticationService){\r\n\r\n }\r\n canActivate(): Promise{\r\n return new Promise((resolve) => {\r\n this._authService.isLoggedInPromise().then(loggedIn => {\r\n if (loggedIn){\r\n resolve(true);\r\n }\r\n else{\r\n this._authService.login();\r\n resolve(false);\r\n }\r\n })\r\n });\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { UserManager, User, UserManagerSettings, Log } from 'oidc-client';\r\nimport { Subject, forkJoin } from 'rxjs';\r\n\r\nimport { environment } from 'src/environments/environment';\r\nimport { UserRoleService } from './user-role.service';\r\nimport { UserContext } from '../shared/models/user-context';\r\nimport { Operation } from '../shared/models/operation';\r\nimport { BusinessOperation } from '../shared/models/business-operation';\r\nimport { PpsUtilityService } from './pps-utility.service';\r\nimport { LoginChangeModel, LogoutReason } from '../shared/models/login-change-model';\r\nimport { LoggingService } from './logging.service';\r\nimport { Router } from '@angular/router';\r\nimport { SessionService } from './session.service';\r\nimport { format } from 'date-fns';\r\nimport { AppStatus } from '../shared/models/app-status';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationService {\r\n private _userManager: UserManager;\r\n private _user: User = null;\r\n _userContext: UserContext = null;\r\n\r\n private _loginChangeSubject = new Subject();\r\n loginChanged = this._loginChangeSubject.asObservable();\r\n\r\n private _appLoadingSubject = new Subject();\r\n appLoaded = this._appLoadingSubject.asObservable();\r\n\r\n currentAppStatus = AppStatus.Initialized;\r\n\r\n constructor(\r\n private _userRoleService: UserRoleService,\r\n private _router: Router,\r\n private _util: PpsUtilityService,\r\n private _sessionService: SessionService,\r\n private _logger: LoggingService\r\n ) {\r\n let stsSettings: UserManagerSettings = {\r\n authority: environment.stsAuthority,\r\n client_id: environment.clientId,\r\n redirect_uri: `${environment.clientRoot}signin-callback`,\r\n scope: \"openid profile pps.api\",\r\n response_type: \"code\",\r\n post_logout_redirect_uri: `${environment.clientRoot}signout-callback`,\r\n accessTokenExpiringNotificationTime: 360, //seconds\r\n automaticSilentRenew: false,\r\n silent_redirect_uri: `${environment.clientRoot}assets/silent-callback.html`,\r\n includeIdTokenInSilentRenew: false\r\n };\r\n\r\n //oidc-connect logger\r\n Log.logger = console;\r\n //Log.level = Log.DEBUG;\r\n\r\n this._userManager = new UserManager(stsSettings);\r\n this._userManager.events.addAccessTokenExpiring(_ => {\r\n this.silentLogin(1, 5);\r\n });\r\n\r\n this._appLoadingSubject.next(this.currentAppStatus);\r\n }\r\n\r\n private silentLogin(counter, tryOutTimes){\r\n this._userManager.signinSilent()\r\n .then((user) =>{\r\n this._user = user;\r\n let expiresAt = new Date(user.expires_at * 1000);\r\n console.log(this._logger.log(\"signInSilent succeeded. Next expires at: \" + format(expiresAt, \"MM/dd/yyyy hh:mm:ss\"), \"\", this.constructor.name, \"constructor\"));\r\n })\r\n .catch((error: Error) =>{\r\n console.log(error);\r\n console.log(this._logger.log(\"signInSilent failed:\", error, this.constructor.name, \"constructor\"));\r\n\r\n if (counter < tryOutTimes){\r\n console.log(\"Silent login failed, try again... (Total tryout times: \" + (counter + 1) + \")\");\r\n window.setTimeout(() => this.silentLogin(counter + 1, tryOutTimes), 2000);\r\n }else{\r\n console.log(\"Now should log user out after \" + counter + \" times try out\");\r\n //this.logout();\r\n }\r\n });\r\n }\r\n\r\n isLoggedInPromise(){\r\n return this._userManager.getUser().then(user => {\r\n this._user = user;\r\n let userLoggedIn = this._user !== null && !this._user.expired;\r\n \r\n if (userLoggedIn){\r\n if (this.currentAppStatus !== AppStatus.Ready){\r\n this.currentAppStatus = AppStatus.Ready;\r\n this._appLoadingSubject.next(this.currentAppStatus);\r\n console.log(\"isLoggedInPromise\");\r\n }\r\n }\r\n\r\n return userLoggedIn;\r\n })\r\n .catch((error: Error) =>{\r\n return false;\r\n });\r\n }\r\n\r\n login(){\r\n this.currentAppStatus = AppStatus.LoginStarted;\r\n this._appLoadingSubject.next(this.currentAppStatus);\r\n return this._userManager.signinRedirect();\r\n }\r\n\r\n completeLogin(){\r\n return this._userManager.signinRedirectCallback()\r\n .then(user => {\r\n this._user = user;\r\n this.currentAppStatus = AppStatus.LoginCompleted;\r\n this._appLoadingSubject.next(this.currentAppStatus);\r\n console.log(this._logger.log(\"Login completed\", user, this.constructor.name, \"completeLogin\"));\r\n return true;\r\n })\r\n .then(() => {\r\n this.currentAppStatus = AppStatus.UserContextLoading;\r\n this._appLoadingSubject.next(this.currentAppStatus);\r\n return this.loadUserContext(1, 5);\r\n })\r\n .then(userContextLoaded => {\r\n this.currentAppStatus = AppStatus.Ready;\r\n this._appLoadingSubject.next(this.currentAppStatus);\r\n this._loginChangeSubject.next(userContextLoaded);\r\n return userContextLoaded;\r\n })\r\n .catch(error => {\r\n this._loginChangeSubject.next(false);\r\n console.log(error);\r\n console.log(this._logger.log(\"completeLogin error:\", error, this.constructor.name, \"completeLogin\"));\r\n return false;\r\n });\r\n }\r\n\r\n logout(){\r\n this.currentAppStatus = AppStatus.LogoutStarted;\r\n this._appLoadingSubject.next(this.currentAppStatus);\r\n return this._userManager.signoutRedirect();\r\n }\r\n \r\n completeLogout(){\r\n this._user = null;\r\n this._userContext = null;\r\n this._loginChangeSubject.next(false);\r\n return this._userManager.signoutRedirectCallback()\r\n .then(res => {\r\n this._sessionService.clearUserContext();\r\n\r\n this.currentAppStatus = AppStatus.LogoutCompleted;\r\n this._appLoadingSubject.next(this.currentAppStatus);\r\n \r\n console.log(this._logger.log(\"User logged out\", res, this.constructor.name, \"completeLogout\"));\r\n });\r\n }\r\n\r\n userLoggedIn(){\r\n return this._userManager.getUser().then(user => {\r\n const userCurrent = !!user && !user.expired;\r\n\r\n this._user = user;\r\n if (userCurrent){\r\n if (this._sessionService.shouldRefreshUserContext()){\r\n return this.loadUserContext(1, 5);\r\n }else{\r\n this._userContext = this._sessionService.getUserContext();\r\n }\r\n }\r\n\r\n return userCurrent;\r\n });\r\n }\r\n\r\n loadUserContextFromSession(){\r\n return this._sessionService.getUserContext();\r\n }\r\n \r\n getAccessToken(){\r\n return this._userManager.getUser()\r\n .then(user => {\r\n if (!!user && !user.expired){\r\n return user.access_token;\r\n }else{\r\n return null;\r\n }\r\n });\r\n }\r\n\r\n loadUserContext(counter, tryOutTimes){\r\n return this._userRoleService.getUserContext()\r\n .toPromise()\r\n .then((res) => {\r\n if (res.succeed){\r\n this._userContext = res.result;\r\n this._sessionService.setUserContext(res.result);\r\n console.log(this._logger.log(\"UserContext loaded:\", this._userContext, this.constructor.name, \"loadUserContext\"));\r\n return true;\r\n }else{\r\n if (counter <= tryOutTimes){\r\n console.log(this._logger.log(\"Load UserContext Failed: try again ... (Total tryout times: (\" + counter + \"))\", res, this.constructor.name, \"loadUserContext\"));\r\n return this.loadUserContext(counter + 1, tryOutTimes);\r\n }\r\n return false;\r\n }\r\n })\r\n .catch( (error) => {\r\n if (counter < tryOutTimes){\r\n console.log(this._logger.log(\"Load UserContext Exception: try again ... (Total tryout times: (\" + counter + \"))\", error, this.constructor.name, \"loadUserContext\"));\r\n return this.loadUserContext(counter + 1, tryOutTimes);\r\n }\r\n return false;\r\n });\r\n }\r\n\r\n canUserDoAllOfTheOperartions(operations: BusinessOperation[]):boolean{\r\n var userOperations = this._userContext && this._userContext.userOperations ? \r\n this._userContext.userOperations.map(uo => uo.id as BusinessOperation) : [];\r\n\r\n for(var i = 0; i < operations.length; i ++ ){\r\n if (!userOperations.includes(operations[i])){\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n canUserDoAnyOfTheOperartions(operations: BusinessOperation[]):boolean{\r\n var userOperations = this._userContext && this._userContext.userOperations ? \r\n this._userContext.userOperations.map(uo => uo.id as BusinessOperation) : [];\r\n\r\n for(var i = 0; i < operations.length; i ++ ){\r\n if (userOperations.includes(operations[i])){\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n canUserDoOperartion(operation: BusinessOperation):boolean{\r\n var userOperations = this._userContext && this._userContext.userOperations ? \r\n this._userContext.userOperations.map(uo => uo.id as BusinessOperation) : [];\r\n return userOperations.includes(operation);\r\n }\r\n\r\n get isUserAdmin(): boolean{\r\n return this._userContext && this._userContext.isAdmin;\r\n }\r\n \r\n get isUserSysAdmin(): boolean{\r\n return this._userContext && this._userContext.isSysAdmin;\r\n }\r\n\r\n get userContext(): UserContext{\r\n if (this._userContext && this._userContext.zoesenUser){\r\n return this._userContext;\r\n }\r\n\r\n var userCtx = new UserContext();\r\n userCtx.zoesenUser = {\r\n id: 0,\r\n zoesenUserId: \"\",\r\n zoesenUsername: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n phoneNumber: \"\",\r\n email: \"\",\r\n avatar: \"\"\r\n };\r\n\r\n return userCtx;\r\n }\r\n\r\n // get isLoggedIn(): boolean{\r\n // const userCurrent = !!this._user && !this._user.expired;\r\n // return userCurrent && this._userContext !== null;\r\n // }\r\n\r\n get userFullname(){\r\n if (this._userContext && this._userContext.zoesenUser){\r\n return this._util.getEmployeeName(this._userContext.zoesenUser);\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n setUserProfile(profile){\r\n if (this._userContext && this._userContext.zoesenUser){\r\n this.userContext.zoesenUser.firstName = profile.firstName;\r\n this.userContext.zoesenUser.lastName = profile.lastName;\r\n this.userContext.zoesenUser.email = profile.email;\r\n }\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { Company, CompanyRepresentative } from '../shared/models/company';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CompanyService {\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/Company`);\r\n }\r\n\r\n add(entity: Company): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/Company`, entity);\r\n }\r\n\r\n update(entity: Company): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/Company/${entity.id}`, entity);\r\n }\r\n\r\n delete(entityId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/Company/${entityId}/delete`, null);\r\n }\r\n\r\n getCompanyRepresentatives(companyId?: number): Observable>{\r\n let url = companyId ? `${this.apiUrlProvider.url}/CompanyRepresentative/${companyId}`\r\n : `${this.apiUrlProvider.url}/CompanyRepresentative`;\r\n \r\n return this.http.get>(url);\r\n }\r\n\r\n addCompanyRepresentative(companyId: number, entity: CompanyRepresentative): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/CompanyRepresentative/${companyId}`, entity);\r\n }\r\n\r\n updateCompanyRepresentative(companyId: number, entity: CompanyRepresentative): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/CompanyRepresentative/${companyId}/${entity.id}`, entity);\r\n }\r\n\r\n deleteCompanyRepresentative(entityId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/CompanyRepresentative/${entityId}/delete`, null);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { Invoice } from '../shared/models/invoice';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DocumentService {\r\n constructor(\r\n private http: HttpClient,\r\n private apiUrlProvider: ApiUrlProvider) { \r\n }\r\n\r\n download(docUrl: string, docType: number, filename: string, whenDone){\r\n let imageUrl = `${this.apiUrlProvider.url}/documents/${docUrl}?documentType=${docType}`;\r\n this.http\r\n .get(imageUrl, {responseType: 'blob'})\r\n .subscribe(res => {\r\n let objectUrl = window.URL.createObjectURL(res);\r\n let imageAnchor: HTMLAnchorElement = document.createElement(\"a\");\r\n imageAnchor.href = objectUrl;\r\n imageAnchor.target = \"_blank\";\r\n imageAnchor.download = filename;\r\n imageAnchor.click();\r\n window.URL.revokeObjectURL(objectUrl);\r\n }, _ => {})\r\n .add(()=>{\r\n if (whenDone){\r\n whenDone();\r\n }\r\n });\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiUrlProvider } from \"./api-url.provider\";\r\nimport { IEmployeeTrainingRecord } from \"../shared/models/employee-training-record\";\r\nimport { IApiResult } from \"../shared/models/api-result\";\r\nimport { Observable } from \"rxjs\";\r\nimport { IEmployeeTrainingRecordEntity } from \"../shared/models/employee-training-record-entity\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class EmployeeTrainingRecordService{\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/EmployeeTrainingRecord`);\r\n }\r\n\r\n getEmployeeTrainingRecords(employeeId: number): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/EmployeeTrainingRecord/${employeeId}`);\r\n }\r\n\r\n getTrainingRecordInPast6Month(employeeId: number): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/EmployeeTrainingRecord/${employeeId}/past6month`);\r\n }\r\n\r\n getEmployeeTrainingRecordEntities(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/EmployeeTrainingRecord/entities`);\r\n } \r\n\r\n add(entity: IEmployeeTrainingRecord): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/EmployeeTrainingRecord`, entity);\r\n }\r\n\r\n update(entity: IEmployeeTrainingRecord): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/EmployeeTrainingRecord/${entity.id}/update`, entity);\r\n }\r\n\r\n delete(entityId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/EmployeeTrainingRecord/${entityId}/delete`, null);\r\n } \r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { Employee} from '../shared/models/employee';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { EmployeeActivityModel } from '../shared/models/employee-activity-model';\r\nimport { IRosterEmployeeViewModel } from '../shared/models/roster/roster-employee-view-model';\r\nimport { EmployeeBase } from '../shared/models/employee-base';\r\nimport { IEmployeeSortNoUpdateModel } from '../shared/models/roster/employee-sortno-update-model';\r\nimport { IEmployeeUpdateEntities } from '../shared/models/employee-update-entities';\r\nimport { IEmployeeHistory } from '../shared/models/EmployeeHistory';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EmployeeService {\r\n constructor(\r\n private http: HttpClient,\r\n private apiUrlProvider: ApiUrlProvider) { }\r\n\r\n getEmployees(activeOnly: boolean): Observable>{\r\n const params = new HttpParams().set('activeOnly', activeOnly ? \"true\" : \"false\");\r\n\r\n return this.http.get>(`${this.apiUrlProvider.url}/employee`, {params});\r\n }\r\n\r\n getSimpleEmployees(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/employee/simple`);\r\n }\r\n\r\n // getEmployeesByGroup(groupId: number, activeOnly: boolean): Observable>{\r\n // const params = new HttpParams().set('activeOnly', activeOnly ? \"true\" : \"false\");\r\n // return this.http.get>(`${this.apiUrlProvider.url}/employee/${groupId}`, {params});\r\n // }\r\n\r\n getEmployeeById(employeeId: number): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/employee/${employeeId}`);\r\n }\r\n\r\n getEntitiesForEmployeeUpdateForm(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/employee/UpdateFormEntities`);\r\n }\r\n\r\n getProjectResponsibleEngineers(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/employee/ProjectResponsibleEngineers`);\r\n }\r\n\r\n getEmployeeHistory(employeeId: number): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/employee/${employeeId}/EmployeeHistory`);\r\n }\r\n\r\n updateEmployee(employee: Employee): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/employee/${employee.id}/update`, employee);\r\n }\r\n\r\n addEmployee(employee: Employee): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/employee`, employee);\r\n }\r\n\r\n removeEmployeeFromRoster(employee: IRosterEmployeeViewModel): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/employee/${employee.id}/remove-from-roster`, employee);\r\n }\r\n \r\n addEmployeeToActiveRoster(employee: IRosterEmployeeViewModel): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/employee/${employee.id}/add-to-roster`, employee);\r\n }\r\n \r\n activateEmployee(empActivityModel: EmployeeActivityModel, active: boolean): Observable>{\r\n let url = `${this.apiUrlProvider.url}/employee/${empActivityModel.employeeId}/${active ? \"activate\" : \"delete\"}`\r\n\r\n return this.http.post>(url, empActivityModel);\r\n }\r\n\r\n updateEmployeeWithPut(employee: Employee): Observable>{\r\n return this.http.put>(`${this.apiUrlProvider.url}/employee`, employee);\r\n }\r\n\r\n deleteEmployeeWithDelete(employeeId: number): Observable>{\r\n return this.http.delete>(`${this.apiUrlProvider.url}/employee/${employeeId}`);\r\n }\r\n\r\n updateEmployeeRosterSortNo(empsToUpdate: IEmployeeSortNoUpdateModel[]): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/employee/update-roster-sort-no`, empsToUpdate);\r\n }\r\n\r\n downloadEmployees(whenDone){\r\n let url = `${this.apiUrlProvider.url}/Employee/download`;\r\n \r\n return this.http.get(url, {responseType: 'blob'})\r\n .subscribe(res => {\r\n let objectUrl = window.URL.createObjectURL(res);\r\n let imageAnchor: HTMLAnchorElement = document.createElement(\"a\");\r\n imageAnchor.href = objectUrl;\r\n imageAnchor.target = \"_blank\";\r\n imageAnchor.download = `employees.xlsx`;\r\n imageAnchor.click();\r\n window.URL.revokeObjectURL(objectUrl);\r\n }, _ => {}, () => { \r\n if (whenDone){\r\n whenDone();\r\n }\r\n });\r\n }\r\n}\r\n\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { IEmployer, IEmployerViewModel } from '../shared/models/employer';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EmployerService {\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/employer`);\r\n }\r\n\r\n add(entity: IEmployer): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/employer`, entity);\r\n }\r\n\r\n update(entity: IEmployer): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/employer/${entity.id}`, entity);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { IEntity } from '../shared/models/entity';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { EntityCategory } from '../shared/models/entity-category';\r\nimport { Position } from '../shared/models/position';\r\nimport { IRosterSummaryLine } from '../shared/models/roster/roster-summary-line';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EntityService {\r\n constructor(\r\n private apiUrlProvider: ApiUrlProvider,\r\n private http: HttpClient\r\n ) { }\r\n\r\n getEntities(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/entity`);\r\n }\r\n\r\n getEntitiesByCategory(categoryId: EntityCategory): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/entity/${categoryId}`);\r\n }\r\n\r\n /**\r\n * @returns This API only returns active workgroup\r\n */\r\n getGroups(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/entity/${EntityCategory.WorkGroup}`);\r\n }\r\n\r\n /**\r\n * @returns This API only returns all(active/inactive) workgroup\r\n */\r\n getAllGroups(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/entity/all/${EntityCategory.WorkGroup}`);\r\n }\r\n\r\n getShifts(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/entity/${EntityCategory.WorkShift}`);\r\n }\r\n\r\n getPositions(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/entity/positions`);\r\n }\r\n\r\n addEntity(entity: IEntity): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/entity`, entity);\r\n }\r\n\r\n updateEntity(entity: IEntity): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/entity/${entity.id}`, entity);\r\n }\r\n\r\n deleteEntity(entityId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/entity/${entityId}/delete`, null);\r\n }\r\n\r\n //////////////////////////////////////////////////\r\n // getJobTypes(): Observable{\r\n // return this._getEntities(\"jobTypes\");\r\n // }\r\n\r\n // getProjectStatuses(): Observable{\r\n // return this._getEntities(\"projectStatuses\");\r\n // }\r\n\r\n // getAreas(): Observable{\r\n // return this._getEntities(\"areas\");\r\n // }\r\n\r\n // getClientEngineers(): Observable{\r\n // return this._getEntities(\"clientEngineers\");\r\n // }\r\n\r\n // getResponsibleEngineers(): Observable{\r\n // return this._getEntities(\"responsibleEngineers\");\r\n // }\r\n\r\n // getInstallationProgresses(): Observable{\r\n // return this._getEntities(\"installationProgress\");\r\n // }\r\n\r\n // private _getEntities(entityName): Observable{\r\n // return this.http.get(`http://localhost:3000/${entityName}`);\r\n // }\r\n\r\n // getGroups(): Observable{\r\n // return this.http.get(`http://localhost:3000/groups`);\r\n // }\r\n\r\n getTicketStatuses(): Observable{\r\n return this.http.get(`http://localhost:3000/ticketstatuses`);\r\n }\r\n\r\n\r\n\r\n\r\n getRosterSummaryLines(): Observable{\r\n return this.http.get(`http://localhost:3000/rostersummarylines`);\r\n }\r\n}\r\n\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HealthCheckService {\r\n constructor(\r\n private http: HttpClient,\r\n private apiUrlProvider: ApiUrlProvider) { }\r\n\r\n healthCheck(): Observable>{\r\n const ts = new Date().getTime();\r\n return this.http.get>(`${this.apiUrlProvider.url}/HealthCheck?${ts}`);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { Resource } from '../shared/models/resource';\r\nimport { IRosterCode } from '../shared/models/roster-code';\r\nimport { IHoliday } from '../shared/models/holiday';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HolidayService {\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/holiday`);\r\n }\r\n\r\n add(entity: IHoliday): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/holiday`, entity);\r\n }\r\n\r\n update(entity: IHoliday): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/holiday/${entity.id}`, entity);\r\n }\r\n\r\n delete(entityId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/holiday/${entityId}/delete`, null);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { Invoice } from '../shared/models/invoice';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ImageService {\r\n constructor(\r\n private http: HttpClient,\r\n private apiUrlProvider: ApiUrlProvider) { \r\n }\r\n\r\n showInvoiceImage(invoice: Invoice, whenDone){\r\n let imageUrl = `${this.apiUrlProvider.url}/Images/Invoice/${invoice.invoiceImageUrl}`;\r\n this.http\r\n .get(imageUrl, {responseType: 'blob'})\r\n .subscribe(res => {\r\n let objectUrl = window.URL.createObjectURL(res);\r\n let imageAnchor: HTMLAnchorElement = document.createElement(\"a\");\r\n imageAnchor.href = objectUrl;\r\n imageAnchor.target = \"_blank\";\r\n imageAnchor.download = invoice.originalInvoiceFilename;\r\n imageAnchor.click();\r\n window.URL.revokeObjectURL(objectUrl);\r\n }, _ => {})\r\n .add(()=>{\r\n if (whenDone){\r\n whenDone();\r\n }\r\n });\r\n // .subscribe(res => {\r\n // let objectUrl = window.URL.createObjectURL(res);\r\n // window.open(objectUrl, \"project_invoice\");\r\n // window.URL.revokeObjectURL(objectUrl);\r\n // });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, from } from 'rxjs';\r\n\r\nimport { AuthenticationService } from '../authentication.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HttpHeaderInterceptor implements HttpInterceptor{\r\n\r\n constructor(\r\n private _authService: AuthenticationService\r\n ) { }\r\n\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n if (req.url.startsWith(environment.apiRoot)){\r\n return from(this._authService.getAccessToken()\r\n .then(token => {\r\n const headers = new HttpHeaders().set(\"Authorization\", `Bearer ${token}`);\r\n const requestWithAuthHeader = req.clone({headers});\r\n return next.handle(requestWithAuthHeader).toPromise();\r\n }));\r\n }else{\r\n return next.handle(req);\r\n }\r\n }\r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { format } from \"date-fns\";\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UpdateRequestDateHttpInterceptor implements HttpInterceptor {\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n if (req.method === 'POST' || req.method === 'PUT') {\r\n this.localDate2IsoString(req.body);\r\n }\r\n return next.handle(req);\r\n }\r\n\r\n localDate2IsoString(body) {\r\n if (body === null || body === undefined) {\r\n return body;\r\n }\r\n\r\n if (typeof body !== 'object') {\r\n return body;\r\n }\r\n\r\n for (const key of Object.keys(body)) {\r\n const value = body[key];\r\n if (value instanceof Date) {\r\n body[key] = format(value, \"yyyy-MM-dd'T'HH:mm:ss\");\r\n } else if (typeof value === 'object') {\r\n this.localDate2IsoString(value);\r\n }\r\n }\r\n }\r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { format } from \"date-fns\";\r\nimport { Observable } from \"rxjs\";\r\nimport { map } from \"rxjs/operators\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UpdateResponseDateHttpInterceptor implements HttpInterceptor {\r\n private _isoDateFormat = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d*)?Z?$/;\r\n\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n return next.handle(req).pipe(map((val: HttpEvent) => {\r\n if (val instanceof HttpResponse){\r\n const body = val.body;\r\n this.isoString2LocalDate(body);\r\n }\r\n return val;\r\n })); \r\n }\r\n\r\n isIsoDateString(value: any): boolean {\r\n if (value === null || value === undefined) {\r\n return false;\r\n }\r\n if (typeof value === 'string'){\r\n return this._isoDateFormat.test(value);\r\n } return false;\r\n }\r\n\r\n isoString2LocalDate(body: any){\r\n if (body === null || body === undefined ) {\r\n return body;\r\n }\r\n if (typeof body !== 'object' ){\r\n return body;\r\n }\r\n for (const key of Object.keys(body)) {\r\n const value = body[key];\r\n if (this.isIsoDateString(value)) {\r\n body[key] = new Date(value);\r\n } else if (typeof value === 'object') {\r\n this.isoString2LocalDate(value);\r\n }\r\n }\r\n } \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { Employee } from '../shared/models/employee';\r\nimport { Invoice } from '../shared/models/invoice';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InvoiceService {\r\n constructor(\r\n private http: HttpClient,\r\n private apiUrlProvider: ApiUrlProvider) { }\r\n\r\n getInvoices(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/invoice`);\r\n }\r\n\r\n createInvoice(projectId: number, formData: FormData): Observable>{\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n };\r\n\r\n return this.http.post>(`${this.apiUrlProvider.url}/invoice?projectId=${projectId}`, formData);\r\n }\r\n\r\n updateInvoice(invoice: Invoice): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/invoice/${invoice.id}`, invoice);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport format from \"date-fns/format\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class LoggingService{\r\n log(...args){\r\n let text = \"\";\r\n\r\n try{\r\n let message = \"\";\r\n let clsName = \"\";\r\n let methodName = \"\";\r\n let msgCount = args.length;\r\n\r\n if (args.length >= 3){\r\n clsName = args[args.length - 2];\r\n methodName = args[args.length - 1];\r\n msgCount = args.length - 2;\r\n }\r\n\r\n text = `${format(new Date(), \"MM/dd/yyyy HH:mm:ss\")} ${clsName}.${methodName}()`;\r\n\r\n for (var i = 0; i < msgCount; i ++){\r\n if (args[i] instanceof String){\r\n message += args[i] + \" \";\r\n }\r\n else{\r\n message += JSON.stringify(args[i]) + \" \";\r\n }\r\n }\r\n\r\n if (message.length > 100){\r\n message = message.substr(0, 100);\r\n }\r\n \r\n text = `${text} ${message}`;\r\n }\r\n catch(e){}\r\n\r\n return text;\r\n }\r\n\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { PayCategory } from '../shared/models/pay-category';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PayCategoryService {\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/PayCategory`);\r\n }\r\n\r\n add(entity: PayCategory): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/PayCategory`, entity);\r\n }\r\n\r\n update(entity: PayCategory): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/PayCategory/${entity.id}`, entity);\r\n }\r\n\r\n delete(entityId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/PayCategory/${entityId}/delete`, null);\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { Position} from '../shared/models/position';\r\nimport { PayrollTimesheet } from '../shared/models/payroll-timesheet';\r\nimport { IDateRange } from '../shared/models/date-range';\r\nimport { addDays, differenceInDays, format } from 'date-fns';\r\nimport { TimesheetSearchModel } from '../shared/models/timesheet-search-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PayrollService {\r\n private firstPayDay: Date = new Date(2020, 6, 6); // July 6, 2020, Monday\r\n \r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getPayrollTimesheet(dateRange: IDateRange): Observable>{\r\n const params = new HttpParams()\r\n .set('fromDate', format(dateRange.range.from, \"yyyy-MM-dd\"))\r\n .set('toDate', format(dateRange.range.to, \"yyyy-MM-dd\"));\r\n\r\n return this.http.get>(`${this.apiUrlProvider.url}/Payroll`, {params}); \r\n }\r\n\r\n downloadPayrollTimesheets(searchModel: TimesheetSearchModel, whenDone){\r\n let url = `${this.apiUrlProvider.url}/Payroll/Timesheet/download`;\r\n const params = new HttpParams()\r\n .set('fromDate', format(searchModel.fromDate, \"yyyy-MM-dd\"))\r\n .set('toDate', format(searchModel.toDate, \"yyyy-MM-dd\"));\r\n\r\n return this.http.get(url, {params, responseType: 'blob'})\r\n .subscribe(res => {\r\n let objectUrl = window.URL.createObjectURL(res);\r\n let imageAnchor: HTMLAnchorElement = document.createElement(\"a\");\r\n imageAnchor.href = objectUrl;\r\n imageAnchor.target = \"_blank\";\r\n imageAnchor.download = `payroll_timesheets_${format(searchModel.fromDate, \"yyyyMMdd\")}_${format(searchModel.toDate, \"yyyyMMdd\")}.xlsx`;\r\n imageAnchor.click();\r\n window.URL.revokeObjectURL(objectUrl);\r\n }, _ => {}, () => { \r\n if (whenDone){\r\n whenDone();\r\n }\r\n });\r\n }\r\n\r\n getPayPeriods(count: number): IDateRange[]{\r\n let today = new Date();\r\n let currentPeriod: IDateRange = {\r\n title: null,\r\n range: {\r\n to: addDays(today, 13 - (differenceInDays(today, this.firstPayDay) % 14)),\r\n from: null\r\n }\r\n };\r\n\r\n currentPeriod.range.from = addDays(currentPeriod.range.to, -13);\r\n\r\n let result: IDateRange[] = [];\r\n for (let i = 0; i < count; i ++ ){\r\n let range = {\r\n from: addDays(currentPeriod.range.from, -14 * i),\r\n to: addDays(currentPeriod.range.to, -14 * i)\r\n };\r\n\r\n result.push({\r\n title: `${format(range.from, 'dd/MM/yyyy')} - ${format(range.to, 'dd/MM/yyyy')}`,\r\n range: range\r\n });\r\n }\r\n\r\n return result;\r\n }\r\n\r\n getCurrentPayPeriod(): IDateRange{\r\n let today = new Date();\r\n let currentPeriod: IDateRange = {\r\n title: null,\r\n range: {\r\n to: addDays(today, 13 - (differenceInDays(today, this.firstPayDay) % 14)),\r\n from: null\r\n }\r\n };\r\n\r\n currentPeriod.range.from = addDays(currentPeriod.range.to, -13);\r\n\r\n return {\r\n title: `${format(currentPeriod.range.from, 'dd/MM/yyyy')} - ${format(currentPeriod.range.to, 'dd/MM/yyyy')}`,\r\n range: currentPeriod.range\r\n };;\r\n }\r\n\r\n getLastPayPeriod(): IDateRange{\r\n let currentPeriod = this.getCurrentPayPeriod();\r\n\r\n let range = {\r\n from: addDays(currentPeriod.range.from, -14),\r\n to: addDays(currentPeriod.range.to, -14)\r\n };\r\n\r\n return {\r\n title: `${format(range.from, 'dd/MM/yyyy')} - ${format(range.to, 'dd/MM/yyyy')}`,\r\n range: range\r\n };\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { Position} from '../shared/models/position';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PositionService {\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/position`);\r\n }\r\n\r\n add(entity: Position): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/position`, entity);\r\n }\r\n\r\n update(entity: Position): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/position/${entity.id}`, entity);\r\n }\r\n\r\n delete(entityId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/position/${entityId}/delete`, null);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Employee } from '../shared/models/employee';\r\nimport { startOfWeek, lastDayOfWeek, sub, startOfMonth, lastDayOfMonth, startOfQuarter, lastDayOfQuarter, format, isValid, parse, add, isBefore, isSameDay, isAfter, differenceInHours } from 'date-fns';\r\nimport { EmployeeBase } from '../shared/models/employee-base';\r\nimport { environment } from 'src/environments/environment';\r\nimport { EntityCategory } from '../shared/models/entity-category';\r\nimport { RosterCodes } from '../shared/models/roster-codes';\r\nimport { drop } from 'lodash';\r\nimport { IRosterEmployeeViewModel } from '../shared/models/roster/roster-employee-view-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PpsUtilityService {\r\n\r\n constructor() { }\r\n\r\n // toJsDate(date: NgbDate): Date{\r\n // if (date === null){\r\n // return null;\r\n // }\r\n\r\n // return new Date(date.year, date.month - 1, date.day);\r\n // }\r\n\r\n // toNgbDate(date: Date): NgbDate{\r\n // if (date === null){\r\n // return null;\r\n // }\r\n\r\n // let ngbDate = NgbDate.from({\r\n // year: date.getFullYear(),\r\n // month: date.getMonth() + 1,\r\n // day: date.getDate()\r\n // });\r\n\r\n // return ngbDate;\r\n // }\r\n\r\n sortByDate(data: any[], dateField: string): any[]{\r\n return data.sort((a: any, b: any) => {\r\n return this.getTime(a[dateField]) - this.getTime(b[dateField]);\r\n });\r\n }\r\n\r\n getEmployeeName(employee: EmployeeBase|IRosterEmployeeViewModel, compact: boolean = false): string{\r\n if (!employee){\r\n return \"\";\r\n }\r\n\r\n let temp = [], temp2 = [];\r\n\r\n if (employee.firstName){\r\n temp2.push(employee.firstName);\r\n }\r\n\r\n if (employee.middleName){\r\n temp2.push(employee.middleName)\r\n }\r\n\r\n if (employee.lastName){\r\n temp.push(employee.lastName);\r\n }\r\n\r\n if (temp2.length > 0){\r\n temp.push(temp2.join(\" \"));\r\n }\r\n\r\n return compact ? temp.join(\",\") : temp.join(\", \");\r\n }\r\n\r\n getDateRange(key: string): {from:Date, to:Date}{\r\n return this.getDateRanges()[key];\r\n }\r\n\r\n getDateRanges(){\r\n let today = new Date();\r\n let option: any = {weekStartsOn: 1};\r\n\r\n let dateRange = {\r\n \"today\": {title:\"Today\", from: today, to: today},\r\n \"tomorrow\": {title:\"Tomorrow\", from: add(today, {days: 1}), to: add(today, {days: 1})},\r\n \"yesterday\": {title:\"Yesterday\", from: sub(today, {days: 1}), to: sub(today, {days: 1})},\r\n \"this-week\": {title:\"This Week\", from: startOfWeek(today, option), to: lastDayOfWeek(today, option)},\r\n \"last-week\": {title:\"Last Week\", from: sub(startOfWeek(today, option), {weeks: 1}), to: lastDayOfWeek(sub(today, {weeks: 1}), option)},\r\n \"this-month\": {title:\"This Month\", from: startOfMonth(today), to: lastDayOfMonth(today)},\r\n \"last-month\": {title:\"Last Month\", from: sub(startOfMonth(today), {months: 1}), to: lastDayOfMonth(sub(today, {months: 1}))},\r\n \"this-quarter\": {title:\"This Quarter\", from: startOfQuarter(today), to: lastDayOfQuarter(today)},\r\n \"last-quarter\": {title:\"Last Quarter\", from: sub(startOfQuarter(today), {months: 3}), to: lastDayOfQuarter(sub(today, {months: 3}))},\r\n \"last-30-days\":{title:\"Last 30 Days\", from: sub(today, {days:30}), to: today},\r\n \"last-60-days\":{title:\"Last 60 Days\", from: sub(today, {days:60}), to: today},\r\n \"last-90-days\":{title:\"Last 90 Days\", from: sub(today, {days:90}), to: today},\r\n \"last-120-days\":{title:\"Last 120 Days\", from: sub(today, {days:120}), to: today},\r\n\r\n \"next-week\": {title:\"Next Week\", from: add(startOfWeek(today, option), {weeks:1}), to: lastDayOfWeek(add(today, {weeks:1}), option)},\r\n \"next-month\": {title:\"Next Month\", from: add(startOfMonth(today), {months: 1}), to: lastDayOfMonth(add(today, {months: 1}))},\r\n \"next-quarter\": {title:\"Next Quarter\", from: add(startOfQuarter(today), {months: 3}), to: lastDayOfQuarter(add(today, {months: 3}))},\r\n \"next-30-days\":{title:\"Next 30 Days\", to: add(today, {days:30}), from: today},\r\n \"next-60-days\":{title:\"Next 60 Days\", to: add(today, {days:60}), from: today},\r\n \"next-90-days\":{title:\"Next 90 Days\", to: add(today, {days:90}), from: today},\r\n \"next-120-days\":{title:\"Next 120 Days\", to: add(today, {days:120}), from: today}\r\n };\r\n\r\n return dateRange;\r\n }\r\n\r\n formatPercentage(val: number): string{\r\n if (val === null){\r\n return \"\";\r\n }\r\n\r\n let str = (val || 0).toFixed(0);\r\n return str + \"%\";\r\n }\r\n\r\n formatCurrency(val: number): string{\r\n let str = (val || 0).toFixed(2);\r\n return \"$\" + str.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n\r\n formatNumber(val: number, numberOfDecimal?:number ): string{\r\n numberOfDecimal = numberOfDecimal | 0;\r\n let str = (val || 0).toFixed(numberOfDecimal);\r\n return str.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n }\r\n\r\n formatBytes(bytes, decimals = 2) {\r\n if (bytes === 0) return '0 Bytes';\r\n\r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n }\r\n\r\n getNumericCellStyle(style){\r\n style = style || {textAlign: 'right'};\r\n if (!style.hasOwnProperty(\"textAlign\")){\r\n style.textAlign = \"right\";\r\n }\r\n\r\n return style;\r\n }\r\n\r\n getComputedCellStyle(style){\r\n style = style || {fontStyle: 'italic'};\r\n if (!style.hasOwnProperty(\"fontStyle\")){\r\n style.fontStyle = \"italic\";\r\n }\r\n\r\n return style;\r\n }\r\n\r\n padNumber(num: number, size: number, pad: string) {\r\n var s = String(num);\r\n while (s.length < (size || 2)) {s = pad + s;}\r\n return s;\r\n }\r\n\r\n getStates(){\r\n return [\r\n {\"code\": \"ACT\", \"name\": \"Australian Capital Territory\t\"},\r\n {\"code\": \"NSW\", \"name\": \"New South Wales\"},\r\n {\"code\": \"NT\", \"name\": \"Northern Territory\"},\r\n {\"code\": \"QLD\", \"name\": \"Queensland\"},\r\n {\"code\": \"SA\", \"name\": \"South Australia\t\"},\r\n {\"code\": \"TAS\", \"name\": \"Tasmania\"},\r\n {\"code\": \"VIC\", \"name\": \"Victoria\"},\r\n {\"code\": \"WA\", \"name\": \"Western Australia\t\"}\r\n ];\r\n }\r\n\r\n getGstRate(): number{\r\n return 1.1;\r\n }\r\n\r\n getDate(date: string): Date{\r\n return parse(date, \"dd/MM/yyyy\", new Date());\r\n }\r\n\r\n getDateString(date:Date): string{\r\n if (!date){\r\n return \"\";\r\n }\r\n \r\n return format(date, \"dd/MM/yyyy\");\r\n }\r\n\r\n getDateTimeString(date:Date): string{\r\n if (!date){\r\n return \"\";\r\n }\r\n \r\n return format(date, \"dd/MM/yyyy HH:mm:ss\");\r\n }\r\n \r\n getEntityCategoryName(categoryId: EntityCategory){\r\n switch(categoryId){\r\n case EntityCategory.Area: \r\n return \"Area\";\r\n case EntityCategory.ClientEngineer:\r\n return \"Client Engineer\";\r\n case EntityCategory.InstallationProgress:\r\n return \"Installation Progress\";\r\n case EntityCategory.JobType:\r\n return \"Job Type\";\r\n case EntityCategory.ProjectStatus:\r\n return \"Project Status\";\r\n case EntityCategory.WorkGroup:\r\n return \"Work Group\";\r\n case EntityCategory.WorkShift:\r\n return \"Work Shift\";\r\n }\r\n return \"Unknown\";\r\n }\r\n\r\n getEntityCategory(category: string): EntityCategory{\r\n category = category ? category.toLowerCase().replace(\" \", \"\") : \"\";\r\n switch(category){\r\n case \"area\": \r\n return EntityCategory.Area;\r\n case \"clientengineer\":\r\n return EntityCategory.ClientEngineer;\r\n case \"installationprogress\":\r\n return EntityCategory.InstallationProgress;\r\n case \"jobtype\":\r\n return EntityCategory.JobType;\r\n case \"projectstatus\":\r\n return EntityCategory.ProjectStatus;\r\n case \"workgroup\":\r\n return EntityCategory.WorkGroup; \r\n case \"workshift\":\r\n return EntityCategory.WorkShift;\r\n }\r\n\r\n return EntityCategory.Unknown;\r\n }\r\n\r\n\r\n isSupervisorGroup(name: string): boolean{\r\n //return name === \"Project Management\" || name === \"Supervisors\";\r\n return true;\r\n }\r\n\r\n get isLocalOrDevelopment(): boolean{\r\n return environment.name === \"local\" || environment.name === \"development\";\r\n }\r\n\r\n get isTest(): boolean{\r\n return environment.name === \"test\";\r\n }\r\n\r\n get isProduction(): boolean{\r\n return environment.name === \"production\";\r\n }\r\n\r\n filterDateComparator(d1: Date, date2: string){\r\n let dateFormat: string = \"dd/MM/yyyy\"\r\n let today = new Date(1900,1,1);\r\n date2 = date2 || \"1/1/1900\";\r\n let dateParts = date2.split(\" \");\r\n if (dateParts.length >= 1){\r\n date2 = dateParts[0];\r\n }\r\n\r\n let d2 = parse(date2, dateFormat, today);\r\n \r\n if ( isBefore(d1, d2) ){\r\n return 1;\r\n }\r\n\r\n if ( isAfter(d1, d2)){\r\n return -1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n dateComparator(date1: string, date2: string, dateFormat: string = \"dd/MM/yyyy\"){\r\n let today = new Date(1900,1,1);\r\n date1 = date1 || \"1/1/1900\";\r\n date2 = date2 || \"1/1/1900\";\r\n\r\n let d1 = parse(date1, dateFormat, today);\r\n let d2 = parse(date2, dateFormat, today);\r\n \r\n if ( isBefore(d1, d2) ){\r\n return -1;\r\n }\r\n\r\n if ( isAfter(d1, d2)){\r\n return 1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n dateTimeComparator(date1: string, date2: string, dateFormat: string = \"dd/MM/yyyy hh:mm a\"){\r\n let today = new Date(1900,1,1,0,0,0);\r\n date1 = date1 || \"1/1/1900 12:00 AM\";\r\n date2 = date2 || \"1/1/1900 12:00 AM\";\r\n\r\n let d1 = parse(date1, dateFormat, today);\r\n let d2 = parse(date2, dateFormat, today);\r\n \r\n if ( isBefore(d1, d2) ){\r\n return -1;\r\n }\r\n\r\n if ( isAfter(d1, d2)){\r\n return 1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n getNewName(prefix: string, suffix: number, entities: any[], predict){\r\n let name = prefix + (suffix === 0 ? \"\" : \" \" + suffix);\r\n let index = entities.findIndex(c => predict(c, name));\r\n if (index !== -1){\r\n return this.getNewName(prefix, suffix + 1, entities, predict);\r\n }\r\n\r\n return name;\r\n }\r\n\r\n private getTime(date?: Date) {\r\n return date ? date.getTime() : 0;\r\n }\r\n\r\n daysDiff(from: Date, to: Date): number{\r\n // Due to day time saving, when calculate hours difference in March, one hour will be lost. \r\n // To avoid that, adding 23 hours to the hours diff\r\n var hoursDiff = differenceInHours(to, from) + 23;\r\n return Math.floor(hoursDiff/24);\r\n }\r\n\r\n deepCopy(obj) {\r\n var copy;\r\n\r\n // Handle the 3 simple types, and null or undefined\r\n if (null == obj || \"object\" != typeof obj) return obj;\r\n\r\n // Handle Date\r\n if (obj instanceof Date) {\r\n copy = new Date();\r\n copy.setTime(obj.getTime());\r\n return copy;\r\n }\r\n\r\n // Handle Array\r\n if (obj instanceof Array) {\r\n copy = [];\r\n for (var i = 0, len = obj.length; i < len; i++) {\r\n copy[i] = this.deepCopy(obj[i]);\r\n }\r\n return copy;\r\n }\r\n\r\n // Handle Object\r\n if (obj instanceof Object) {\r\n copy = {};\r\n for (var attr in obj) {\r\n if (obj.hasOwnProperty(attr)) copy[attr] = this.deepCopy(obj[attr]);\r\n }\r\n return copy;\r\n }\r\n\r\n throw new Error(\"Unable to copy obj! Its type isn't supported.\");\r\n } \r\n\r\n isNumeric(n): boolean{\r\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\r\n }\r\n\r\n isDayNightCode(rosterCode: number|string): boolean{\r\n if (this.isNumeric(rosterCode)){\r\n return rosterCode === RosterCodes.Day || rosterCode === RosterCodes.Night;\r\n }\r\n\r\n rosterCode = (rosterCode + \"\").toLowerCase();\r\n return rosterCode === \"day\" || rosterCode === \"night\"; \r\n }\r\n\r\n isReddish(colorStr){\r\n var rgb = this.hexToRgb(colorStr);\r\n if (rgb.r > 100 && rgb.r > rgb.g * 2 && rgb.r > rgb.b * 2 ){\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private hexToRgb(hex) {\r\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16)\r\n } : null;\r\n } \r\n\r\n public getDateOnly(dt:Date): Date{\r\n return new Date(dt.getFullYear(), dt.getMonth(), dt.getDate());\r\n }\r\n\r\n sortAsc(obj1: any, obj2: any, propName: string){\r\n return this.sortHelper(obj1, obj2, propName, true);\r\n }\r\n\r\n sortDesc(obj1: any, obj2: any, propName: string){\r\n return this.sortHelper(obj1, obj2, propName, false);\r\n }\r\n\r\n private sortHelper(obj1: any, obj2: any, propName: string, asc: boolean){\r\n if (obj1[propName] === obj2[propName]){\r\n return 0;\r\n }\r\n\r\n if (obj1[propName] > obj2[propName]){\r\n return asc ? 1 : -1;\r\n }\r\n\r\n return asc ? -1 : 1;\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { Resource } from '../shared/models/resource';\r\nimport { IProjectColumn } from '../shared/models/project-column';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProjectColumnService {\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/ProjectColumn`);\r\n }\r\n\r\n update(entity: Resource): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/ProjectColumn/${entity.id}`, entity);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { Project } from '../shared/models/project';\r\nimport { Observable } from 'rxjs';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { IJobCode } from '../shared/models/job-code';\r\nimport { PpsUtilityService } from './pps-utility.service';\r\nimport { ProjectSearchModel } from '../shared/models/ProjectSearchModel';\r\nimport { ProjectEntities } from '../shared/models/project-entities';\r\nimport { IProjectComment } from '../shared/models/project-comment';\r\nimport { IDocument } from '../shared/models/document';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProjectService {\r\n constructor(\r\n private http: HttpClient,\r\n private util: PpsUtilityService,\r\n private apiUrlProvider: ApiUrlProvider) { }\r\n\r\n getJobCodes(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/jobcode`);\r\n }\r\n\r\n getProjects(projectSearchModel: ProjectSearchModel): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/project`, {\r\n params: projectSearchModel as any\r\n });\r\n }\r\n\r\n getProjectEntities(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/project/Entities`);\r\n }\r\n\r\n downloadProjects(searchModel: ProjectSearchModel, whenDone){\r\n let url = `${this.apiUrlProvider.url}/project/download`;\r\n\r\n return this.http\r\n .get(url, {params: searchModel as any, responseType: 'blob'})\r\n .subscribe(res => {\r\n let objectUrl = window.URL.createObjectURL(res);\r\n let imageAnchor: HTMLAnchorElement = document.createElement(\"a\");\r\n imageAnchor.href = objectUrl;\r\n imageAnchor.target = \"_blank\";\r\n imageAnchor.download = `projects.xlsx`;\r\n imageAnchor.click();\r\n window.URL.revokeObjectURL(objectUrl);\r\n }, _ => {})\r\n .add(()=>{\r\n if (whenDone){\r\n whenDone();\r\n }\r\n });\r\n }\r\n\r\n getProjectColumnAccessPermission(userId: string){\r\n return this.http.get>(`${this.apiUrlProvider.url}/project/ColumnAccessPermission`);\r\n }\r\n\r\n //ionos.com seems not support HttpPut verb. So add support to use HttpPost to update project\r\n updateProject(project: Project): Observable>{\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n };\r\n\r\n return this.http.post>(`${this.apiUrlProvider.url}/project/${project.id}/update`, project, httpOptions);\r\n }\r\n\r\n //ionos.com seems not support HttpPut verb. So add support to use HttpPost to update project\r\n updateProjectWithPut(project: Project): Observable>{\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n };\r\n\r\n return this.http.put>(`${this.apiUrlProvider.url}/project`, project, httpOptions);\r\n }\r\n\r\n addProject(project: Project): Observable>{\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n };\r\n\r\n return this.http.post>(`${this.apiUrlProvider.url}/project`, project, httpOptions);\r\n }\r\n\r\n deleteProject(projectId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/project/${projectId}/delete`, null);\r\n }\r\n\r\n deleteProjectInvoice(projectId: number, invoiceId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/project/${projectId}/invoice/${invoiceId}/delete`, null);\r\n }\r\n\r\n deleteProjectWithHttpDelete(projectId: number): Observable>{\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n };\r\n\r\n return this.http.delete>(`${this.apiUrlProvider.url}/project/${projectId}`);\r\n }\r\n\r\n getNextProjectNo(projects: Project[]): string{\r\n let numberArray = projects.map(p => {\r\n if (p.projectNo.indexOf(\"PID-\") !== 0){\r\n return 0;\r\n }else{\r\n return parseInt(p.projectNo.split(\"-\")[1]);\r\n }\r\n });\r\n\r\n return `PID-${this.util.padNumber(Math.max.apply(Math, numberArray) + 1, 4, \"0\")}`;\r\n }\r\n\r\n addProjectComment(projectId: number, comment: IProjectComment){\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n };\r\n\r\n return this.http.post>(`${this.apiUrlProvider.url}/project/${projectId}/comment`, comment, httpOptions);\r\n }\r\n\r\n getProjectComments(projectId: number): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/project/${projectId}/comment`);\r\n }\r\n\r\n getProjectAttachments(projectId: number): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/project/${projectId}/attachment`);\r\n }\r\n\r\n getAttachmentUploadUrl(projectId: number){\r\n return `${this.apiUrlProvider.url}/project/${projectId}/attachment`;\r\n }\r\n\r\n deleteProjectAttachment(projectId: number, filename: string): Observable>{\r\n var url = `${this.apiUrlProvider.url}/project/${projectId}/attachment/delete/${filename}`;\r\n return this.http.post>(url, {});\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { MonthlyIncomeReportItem } from '../shared/models/monthly-income-report-item';\r\nimport { PoInvoiceDiscrepancyReportData } from '../shared/models/po-discrepancy-report-data';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { PpsUtilityService } from './pps-utility.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReportService {\r\n constructor(\r\n private http: HttpClient,\r\n private util: PpsUtilityService,\r\n private apiUrlProvider: ApiUrlProvider) { }\r\n\r\n generatePoInvoiceDiscrepancyReport(whenDone){\r\n let url = `${this.apiUrlProvider.url}/report/PoInvoiceDiscrepancyReport`;\r\n \r\n this.http\r\n .get(url, {responseType: 'blob'})\r\n .subscribe(res => {\r\n let objectUrl = window.URL.createObjectURL(res);\r\n let imageAnchor: HTMLAnchorElement = document.createElement(\"a\");\r\n imageAnchor.href = objectUrl;\r\n imageAnchor.target = \"_blank\";\r\n imageAnchor.download = `project-po-invoice-discrepancy-report.xlsx`;\r\n imageAnchor.click();\r\n window.URL.revokeObjectURL(objectUrl);\r\n }, _ => {})\r\n .add(()=>{\r\n if (whenDone){\r\n whenDone();\r\n }\r\n });\r\n } \r\n\r\n generateMonthlyIncomeReport(whenDone){\r\n let url = `${this.apiUrlProvider.url}/report/MonthlyIncomeReport`;\r\n \r\n this.http\r\n .get(url, {responseType: 'blob'})\r\n .subscribe(res => {\r\n let objectUrl = window.URL.createObjectURL(res);\r\n let imageAnchor: HTMLAnchorElement = document.createElement(\"a\");\r\n imageAnchor.href = objectUrl;\r\n imageAnchor.target = \"_blank\";\r\n imageAnchor.download = `monthly-income-report.xlsx`;\r\n imageAnchor.click();\r\n window.URL.revokeObjectURL(objectUrl);\r\n }, _ => {})\r\n .add(()=>{\r\n if (whenDone){\r\n whenDone();\r\n }\r\n });\r\n }\r\n\r\n getMonthlyIncomeReportData(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/Report/MonthlyIncomeReportData`);\r\n }\r\n \r\n getPoDiscrepancyReportData(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/Report/PoInvoiceDiscrepancyReportData`);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { Resource } from '../shared/models/resource';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ResourceService {\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/resource`);\r\n }\r\n\r\n add(entity: Resource): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/resource`, entity);\r\n }\r\n\r\n update(entity: Resource): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/resource/${entity.id}`, entity);\r\n }\r\n\r\n delete(entityId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/resource/${entityId}/delete`, null);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { Operation } from '../shared/models/operation';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RoleOperationService {\r\n constructor(\r\n private http: HttpClient,\r\n private apiUrlProvider: ApiUrlProvider) { }\r\n\r\n getOperations(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/Operations`);\r\n }\r\n\r\n getOperationsByRole(roleId: number): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/Roles/${roleId}/Operations`);\r\n }\r\n\r\n addOperationToRole(roleId: number, operationId: number): Observable>{\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n };\r\n\r\n return this.http.post>(`${this.apiUrlProvider.url}/Roles/${roleId}/Operations/${operationId}`, null, httpOptions);\r\n }\r\n\r\n deleteOperationFromRole(roleId: number, operationId: number): Observable>{\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n };\r\n\r\n return this.http.post>(`${this.apiUrlProvider.url}/Roles/${roleId}/Operations/${operationId}/Delete`, null, httpOptions);\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { IApiResult } from \"../shared/models/api-result\";\r\nimport { IRosterType } from \"../shared/models/roster/roster-type\";\r\nimport { IRosterCodeSetting } from \"../shared/models/roster-code-setting\";\r\nimport { ApiUrlProvider } from \"./api-url.provider\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class RosterCodeSettingService {\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/RosterCodeSetting`);\r\n }\r\n\r\n add(entity: IRosterCodeSetting): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/RosterCodeSetting`, entity);\r\n }\r\n\r\n update(entity: IRosterCodeSetting[]): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/RosterCodeSetting`, entity);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { Resource } from '../shared/models/resource';\r\nimport { IRosterCode } from '../shared/models/roster-code';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RosterCodeService {\r\n rosterCodes: {[id: number]: IRosterCode} = {\r\n 1: { id: 1, code: \"TOIL\" },\r\n 2: { id: 2, code: \"PO\" },\r\n 3: { id: 3, code: \"BL\" },\r\n 4: { id: 4, code: \"DAY\" },\r\n 5: { id: 5, code: \"NIGHT\" },\r\n 6: { id: 6, code: \"RDO\" },\r\n 7: { id: 7, code: \"R&R\" },\r\n 8: { id: 8, code: \"INDUCT\" },\r\n 9: { id: 9, code: \"AL\" },\r\n 10: { id: 10, code: \"PL\" },\r\n 11: { id: 11, code: \"CL\" },\r\n 12: { id: 12, code: \"LWOP\" },\r\n 13: { id: 13, code: \"WC\" },\r\n 14: { id: 14, code: \"SD\" },\r\n 15: { id: 15, code: \"FIA\" },\r\n 16: { id: 16, code: \"FIP\" },\r\n 17: { id: 17, code: \"FOA\" },\r\n 18: { id: 18, code: \"FOP\" },\r\n 19: { id: 19, code: \"DIA\" },\r\n 20: { id: 20, code: \"DIP\" },\r\n 21: { id: 21, code: \"DOA\" },\r\n 22: { id: 22, code: \"DOP\" },\r\n 23: { id: 23, code: \"SICK\" },\r\n 24: { id: 24, code: \"PH\" },\r\n 25: { id: 25, code: \"DS-Supervisor-DW\" },\r\n 26: { id: 26, code: \"NS-Supervisor-DW\" },\r\n 27: { id: 27, code: \"INDUCT\" } \r\n };\r\n\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/rostercode`);\r\n }\r\n\r\n add(entity: IRosterCode): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/rostercode`, entity);\r\n }\r\n\r\n update(entity: IRosterCode): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/rostercode/${entity.id}`, entity);\r\n }\r\n\r\n delete(entityId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/rostercode/${entityId}/delete`, null);\r\n }\r\n\r\n getRosterCode(rosterCodeId: number): IRosterCode{\r\n return this.rosterCodes[rosterCodeId];\r\n }\r\n\r\n isOnSite(rosterCodeId: number): boolean{\r\n return rosterCodeId === 4 || rosterCodeId === 5;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IRosterValue } from \"../shared/models/roster/roster-value\";\r\nimport { IEmployeeRosterUpdateModel } from \"../shared/models/roster/employee-roster-update-model\";\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { addDays, differenceInDays, differenceInHours, format } from 'date-fns';\r\nimport { PpsUtilityService } from './pps-utility.service';\r\nimport { TicketStatus } from '../shared/models/roster/ticket-status';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RosterPatternParser {\r\n private _seperator = \" \";\r\n constructor(private _util: PpsUtilityService) { }\r\n\r\n getTokens(pattern: string): string[]{\r\n pattern = pattern || \"\";\r\n\r\n return pattern.toUpperCase()\r\n .split(this._seperator)\r\n .filter(e=>e)\r\n .map(s => {\r\n if (s === \"DS\"){\r\n s = \"DAY\";\r\n }else if (s === \"NS\"){\r\n s = \"NIGHT\";\r\n }\r\n\r\n return s;\r\n });\r\n }\r\n\r\n parse(employeeId: number, from: Date, pattern: string, rosterCodes): IApiResult{\r\n let parsingResult: IApiResult = {succeed: false, result:[], errors: []};\r\n let tokenList = this.getTokens(pattern);\r\n\r\n let dayCounter = 0;\r\n for (let i = 0; i < tokenList.length; i ++){\r\n let token = tokenList[i];\r\n let rosterValue: IRosterValue = {\r\n rc:{\r\n id: 0,\r\n code: token\r\n }, \r\n sn: null, \r\n ts:{\r\n id: 0, \r\n description: null\r\n }\r\n };\r\n \r\n if (!rosterCodes.hasOwnProperty(token)){\r\n parsingResult.errors = [`Invalid roster code: ${token}`];\r\n return parsingResult; \r\n }\r\n\r\n rosterValue.rc.id = rosterCodes[token];\r\n \r\n // Set default ticket status to 3: Plane ticket planned\r\n if (this.shouldSetTicketStatus(token)){\r\n rosterValue.ts.id = TicketStatus.Planned;\r\n }\r\n\r\n // Check the last token and push the data into result\r\n if (i === tokenList.length - 1){\r\n if (this.isDayOrNightShift(token)){\r\n rosterValue.sn = 1;\r\n }\r\n\r\n parsingResult.result.push({\r\n employeeId: employeeId,\r\n from: addDays(from, dayCounter),\r\n to: addDays(from, dayCounter),\r\n rosterValue: rosterValue\r\n });\r\n\r\n parsingResult.succeed = true;\r\n return parsingResult;\r\n }\r\n\r\n let nextToken = tokenList[i+1];\r\n\r\n if (this.isDayOrNightShift(token)){\r\n let subtokens = nextToken.split(\":\");\r\n if (subtokens.length !== 2){\r\n parsingResult.errors = [`\r\n For day/night shift, provide start day# followed by total work days in the format of [DAY#:DAYS]. \r\n For example: 2:6 will generate sequence 2, 3, 4, 5, 6, 7. \r\n Error value: ${token}${this._seperator}${nextToken}\r\n `];\r\n return parsingResult; \r\n }\r\n\r\n let seqStart = subtokens[0];\r\n let countOfDays = subtokens[1];\r\n\r\n if (!this.isNumeric(seqStart)){\r\n parsingResult.errors = [`\r\n For day/night shift, provide start day# followed by total work days in the format of [DAY#:DAYS].\r\n The DAY# must be a numeric value. Error value: ${seqStart} in ${token}${this._seperator}${nextToken}\r\n `];\r\n return parsingResult; \r\n }\r\n\r\n if (!this.isNumeric(countOfDays)){\r\n parsingResult.errors = [`\r\n For day/night shift, provide start day# followed by total work days in the format of [DAY#:DAYS].\r\n The DAYS must be a numeric value. Error value: ${countOfDays} in ${token}${this._seperator}${nextToken}\r\n `]\r\n return parsingResult; \r\n }\r\n\r\n let copyOfRosterValue = Object.assign({}, rosterValue);\r\n copyOfRosterValue.sn = +seqStart;\r\n parsingResult.result.push({\r\n employeeId: employeeId,\r\n from: addDays(from, dayCounter),\r\n to: addDays(from, dayCounter + (+countOfDays) - 1),\r\n rosterValue: copyOfRosterValue\r\n });\r\n\r\n dayCounter += (+countOfDays);\r\n\r\n i ++;\r\n }else{\r\n // Check if next token is a number or another roster code\r\n if (this.isNumeric(nextToken) || rosterCodes.hasOwnProperty(nextToken)){\r\n let n = this.isNumeric(nextToken) ? +nextToken : 1;\r\n\r\n let rv = Object.assign({}, rosterValue);\r\n parsingResult.result.push({\r\n employeeId: employeeId,\r\n from: addDays(from, dayCounter),\r\n to: addDays(from, dayCounter + n - 1),\r\n rosterValue: rv\r\n });\r\n dayCounter += n;\r\n\r\n if (this.isNumeric(nextToken)){\r\n i ++;\r\n }\r\n }\r\n }\r\n }\r\n\r\n parsingResult.succeed = true;\r\n return parsingResult;\r\n }\r\n\r\n getRosterValues(empRosterList: IEmployeeRosterUpdateModel[]): IRosterValue[]{\r\n let result: IRosterValue[] = [];\r\n\r\n empRosterList.forEach(empRoster => {\r\n var numberOfDays = this._util.daysDiff(empRoster.from, empRoster.to) + 1;\r\n\r\n var assignSequence = empRoster.rosterValue.rc.code === \"DAY\" ||\r\n empRoster.rosterValue.rc.code === \"NIGHT\";\r\n var startSeq = empRoster.rosterValue.sn;\r\n\r\n for (let i = 0; i < numberOfDays; i ++){\r\n var rosterValue = Object.assign({}, empRoster.rosterValue);\r\n rosterValue.sn = assignSequence ? i + startSeq : null;\r\n result.push(rosterValue);\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n setPayRollRosterCode(rosterValues: IRosterValue[], rosterCodes){\r\n for (let i = 0; i < rosterValues.length; i ++){\r\n let prev = i === 0 ? rosterValues[rosterValues.length - 1] : rosterValues[i - 1];\r\n let current = rosterValues[i];\r\n let next = i < rosterValues.length - 1 ? rosterValues[i + 1] : null;\r\n\r\n if(current.rc.code === \"FIP\" || current.rc.code === \"DIP\"){\r\n // FipNightStrategy\r\n if (next && next.rc.code === \"NIGHT\"){\r\n current.prc = {id: rosterCodes[next.rc.code], code: next.rc.code};\r\n }\r\n // FipDayStrategy\r\n if (next && next.rc.code === \"DAY\"){\r\n current.prc = Object.assign({}, prev ? prev.rc : current.rc);\r\n }\r\n }\r\n else if(current.rc.code === \"FOP\" || current.rc.code === \"DOP\"){\r\n // SdFopStrategy\r\n if (prev && prev.rc.code === \"SD\"){\r\n current.prc = {id: rosterCodes[\"DAY\"], code: \"DAY\"};\r\n }\r\n\r\n // DayFopStrategy\r\n if (prev && prev.rc.code === \"DAY\"){\r\n current.prc = {id: rosterCodes[prev.rc.code], code: prev.rc.code};\r\n }\r\n \r\n // NightFopStrategy\r\n if (prev && prev.rc.code === \"NIGHT\"){\r\n current.prc = {id: rosterCodes[next?.rc.code], code: next?.rc.code};\r\n }\r\n }\r\n else if(current.rc.code === \"FIA\" || current.rc.code === \"DIA\"){\r\n // FiaDayStrategy\r\n if (next && next.rc.code === \"DAY\"){\r\n current.prc = {id: rosterCodes[next.rc.code], code: next.rc.code};\r\n }\r\n\r\n // FiaNightStrategy\r\n if (next && next.rc.code === \"NIGHT\"){\r\n current.prc = {id: rosterCodes[next.rc.code], code: next.rc.code};\r\n }\r\n }\r\n else if(current.rc.code === \"FOA\" || current.rc.code === \"DOA\"){\r\n // SdFoaStrategy\r\n if (prev && prev.rc.code === \"SD\"){\r\n current.prc = {id: rosterCodes[next?.rc.code], code: next?.rc.code};\r\n }\r\n\r\n // DayFoaStrategy\r\n if (prev && prev.rc.code === \"DAY\"){\r\n current.prc = {id: rosterCodes[next?.rc.code], code: next?.rc.code};\r\n }\r\n\r\n // NightFoaStrategy\r\n if (prev && prev.rc.code === \"NIGHT\"){\r\n current.prc = {id: rosterCodes[next?.rc.code], code: next?.rc.code};\r\n }\r\n }\r\n else if(this.isDayOrNightShift(current.rc.code)){\r\n // DayNightShiftStrategy\r\n current.prc = Object.assign({}, current.rc);\r\n }\r\n else{\r\n // DefaultRosterCodeStrategy\r\n current.prc = Object.assign({}, current.rc);\r\n }\r\n }\r\n\r\n return rosterValues;\r\n }\r\n\r\n private shouldSetTicketStatus(rosterCode: string){\r\n return rosterCode === \"FIA\" || \r\n rosterCode === \"FIP\" || \r\n rosterCode === \"FOA\" || \r\n rosterCode === \"FOP\" ||\r\n rosterCode === \"DIA\" || \r\n rosterCode === \"DIP\" || \r\n rosterCode === \"DOA\" || \r\n rosterCode === \"DOP\";\r\n }\r\n\r\n private isDayOrNightShift(rosterCode: string){\r\n return rosterCode === \"DAY\" || rosterCode === \"NIGHT\";\r\n }\r\n\r\n private isNumeric(str): boolean{\r\n return !isNaN(Number(str));\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { IApiResult } from \"../shared/models/api-result\";\r\nimport { IRosterProject } from \"../shared/models/roster/roster-project\";\r\nimport { IRosterSummaryLine } from \"../shared/models/roster/roster-summary-line\";\r\nimport { ApiUrlProvider } from \"./api-url.provider\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class RosterProjectService {\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/RosterProject`);\r\n }\r\n\r\n add(entity: IRosterProject): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/RosterProject`, entity);\r\n }\r\n\r\n update(entity: IRosterProject): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/RosterProject/${entity.id}`, entity);\r\n }\r\n\r\n delete(entityId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/RosterProject/${entityId}/delete`, null);\r\n }\r\n\r\n deleteGroup(entity: IRosterProject): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/RosterProject/${entity.id}/DeleteGroup`, entity);\r\n }\r\n \r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { IRosterSettings } from '../shared/models/roster/roster-settings';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RosterSettingsService {\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/RosterSettings`);\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { IApiResult } from \"../shared/models/api-result\";\r\nimport { IRosterSummaryLine } from \"../shared/models/roster/roster-summary-line\";\r\nimport { ApiUrlProvider } from \"./api-url.provider\";\r\nimport { IEmployer } from \"../shared/models/employer\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class RosterSummaryLineService {\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/RosterSummaryLine`);\r\n }\r\n\r\n add(entity: IRosterSummaryLine): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/RosterSummaryLine`, entity);\r\n }\r\n\r\n update(entity: IRosterSummaryLine): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/RosterSummaryLine/${entity.id}`, entity);\r\n }\r\n\r\n delete(entityId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/RosterSummaryLine/${entityId}/delete`, null);\r\n }\r\n\r\n deleteGroup(entity: IRosterSummaryLine): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/RosterSummaryLine/${entity.id}/DeleteGroup`, entity);\r\n }\r\n\r\n getEmployersByCommaSeperatedIds(employerIds: string, employers: IEmployer[]): IEmployer[]{\r\n let result: IEmployer[] = [];\r\n\r\n if (!employerIds){\r\n return result;\r\n }\r\n\r\n result = employerIds.split(\",\").map(eid => employers.find(er => er.id === parseInt(eid)));\r\n return result;\r\n }\r\n\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { IApiResult } from \"../shared/models/api-result\";\r\nimport { IRosterType } from \"../shared/models/roster/roster-type\";\r\nimport { ApiUrlProvider } from \"./api-url.provider\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class RosterTypeService {\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/RosterType`);\r\n }\r\n\r\n add(entity: IRosterType): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/RosterType`, entity);\r\n }\r\n\r\n update(entity: IRosterType): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/RosterType/${entity.id}`, entity);\r\n }\r\n\r\n delete(entityId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/RosterType/${entityId}/delete`, null);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { Observable } from 'rxjs';\r\nimport { eachDayOfInterval, format, differenceInDays } from 'date-fns';\r\nimport { IRosterCode } from '../shared/models/roster-code';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { IHoliday } from '../shared/models/holiday';\r\nimport { IEmployeeRosterUpdateByRuleModel } from '../shared/models/roster/employee-roster-update-by-rule-model';\r\nimport { IRosterResult, IRosterResultWithEntities } from \"../shared/models/roster/roster-result\";\r\nimport { IRosterNote } from '../shared/models/roster/roster-note';\r\nimport { IRosterSummaryLine } from '../shared/models/roster/roster-summary-line';\r\nimport { RosterDataGenerationModel } from '../shared/models/roster/roster-data-generation-model';\r\nimport { IEmployeeRosterUpdateModel } from \"../shared/models/roster/employee-roster-update-model\";\r\nimport { IDateRange } from '../shared/models/date-range';\r\nimport { IDummyRequest } from '../shared/models/dummy-request';\r\nimport { IEmployeeRoster } from '../shared/models/roster/employee-roster';\r\nimport { IEmployeeHighlightUpdate, IRosterEmployeeHighlight } from '../shared/models/roster/employee-highlight';\r\nimport { IInvalidEmployeeRoster } from '../shared/models/roster/invalid-employee-roster';\r\nimport { IPayrollRosterCodeUpdateModel } from '../shared/models/roster/payroll-roster-code-update-mode';\r\nimport { IRosterDataClearModel } from '../shared/models/roster/roster-data-clear-model';\r\nimport { IRosterEmployeeNote } from '../shared/models/roster/roster-employee-note';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RosterService {\r\n private firstPayDay: Date = new Date(2020, 6, 8);\r\n \r\n constructor(\r\n private http: HttpClient,\r\n private apiUrlProvider: ApiUrlProvider) { }\r\n\r\n getRosterCodes(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/RosterCode`);\r\n }\r\n\r\n getHolidays(year: number): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/Holiday`);\r\n }\r\n\r\n getRosterSummaryLines(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/RosterSummaryLine`);\r\n }\r\n\r\n updateRoster(employeeRosterUpdateModel: IEmployeeRosterUpdateModel): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/EmployeeRoster`, employeeRosterUpdateModel);\r\n }\r\n\r\n highlightEmployeeSection(update: IEmployeeHighlightUpdate): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/EmployeeRoster/HighlightEmployee`, update);\r\n }\r\n\r\n getHighlighedRosterEmployee(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/EmployeeRoster/HighlightEmployee`)\r\n }\r\n\r\n updateRosterNote(rosterNote: IRosterNote): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/RosterNote`, rosterNote);\r\n }\r\n\r\n batchUpdateRoster(updateByRuleModel: IEmployeeRosterUpdateByRuleModel): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/EmployeeRoster/BatchUpdate`, updateByRuleModel);\r\n }\r\n\r\n batchUpdateRoster1(updateByRuleModel: IEmployeeRosterUpdateByRuleModel): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/EmployeeRoster/BatchUpdate`, updateByRuleModel);\r\n }\r\n\r\n generateRosterData(rosterProjectId: number, rosterDataGenerationModel: RosterDataGenerationModel): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/EmployeeRoster/${rosterProjectId}/GenerateRosterData`, rosterDataGenerationModel);\r\n }\r\n\r\n deleteFutureRosterData(rosterProjectId: number, rosterDataClearModel: IRosterDataClearModel): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/EmployeeRoster/${rosterProjectId}/ClearRosterData`, rosterDataClearModel);\r\n }\r\n\r\n getInvalidEmployeeRosters(rosterProjectId: number, from:Date, to:Date): Observable>{\r\n let params = new HttpParams()\r\n .set('from', format(from, \"yyyy-MM-dd\"))\r\n .set('to', format(to, \"yyyy-MM-dd\"));\r\n\r\n return this.http.get>(`${this.apiUrlProvider.url}/EmployeeRoster/${rosterProjectId}/InvalidRosters`, {params});\r\n }\r\n\r\n getEmployeeRosterByEmployees(day: Date, employeeList: number[]): Observable>{\r\n let params = new HttpParams()\r\n .set('day', format(day, \"yyyy-MM-dd\"))\r\n .set('ids', employeeList.join(\",\"));\r\n\r\n return this.http.get>(`${this.apiUrlProvider.url}/EmployeeRoster/Employees`, {params});\r\n }\r\n\r\n /*\r\n getRosters(from: Date, to: Date, showInRoster?: boolean, activeEmployee?: boolean):Observable>{\r\n let params = new HttpParams()\r\n .set('from', format(from, \"yyyy-MM-dd\"))\r\n .set('to', format(to, \"yyyy-MM-dd\"));\r\n \r\n if (showInRoster !== null){\r\n params = params.set(\"showInRoster\", showInRoster + \"\");\r\n }\r\n\r\n if (activeEmployee !== null){\r\n params = params.set(\"activeEmployee\", activeEmployee + \"\");\r\n }\r\n\r\n return this.http.get>(`${this.apiUrlProvider.url}/EmployeeRoster`, {params});\r\n }\r\n */\r\n\r\n getRostersWithEntities(rosterProjectId: number, from: Date, to: Date, withEntities: boolean, widhtEmployeeEntities: boolean, showInRoster?: boolean, activeEmployee?: boolean):Observable>{\r\n if (!withEntities){\r\n widhtEmployeeEntities = false;\r\n }\r\n\r\n let params = new HttpParams()\r\n .set('from', format(from, \"yyyy-MM-dd\"))\r\n .set('to', format(to, \"yyyy-MM-dd\"))\r\n .set(\"withEntities\", withEntities + \"\")\r\n .set(\"withEmployeeEntities\", widhtEmployeeEntities + \"\");\r\n\r\n if (showInRoster !== null){\r\n params = params.set(\"showInRoster\", showInRoster + \"\");\r\n }\r\n\r\n if (activeEmployee !== null){\r\n params = params.set(\"activeEmployee\", activeEmployee + \"\");\r\n }\r\n\r\n return this.http.get>(`${this.apiUrlProvider.url}/EmployeeRosterWithEntities/${rosterProjectId}`, {params});\r\n }\r\n\r\n getRoster(startDate: Date, endDate: Date){\r\n let allYearDays = eachDayOfInterval({\r\n start: startDate, end: endDate\r\n });\r\n\r\n return allYearDays.map( _day => {\r\n return {\r\n name: format(_day, 'yyyyMMdd'),\r\n year: _day.getFullYear(),\r\n month: _day.getMonth() + 1,\r\n day: _day.getDate(),\r\n rosterCode: '',\r\n ticketStatusId: 0,\r\n colorCode:\"#ffffff\"\r\n }\r\n });\r\n }\r\n\r\n updateTravelStatus(rosterProjectId: number, updateTravelStatusModel):Observable>{\r\n let url = `${this.apiUrlProvider.url}/EmployeeRoster/${rosterProjectId}/UpdateTravelStatus`;\r\n return this.http.post>(url, updateTravelStatusModel);\r\n }\r\n\r\n updatePayrolLRosterCode(rosterProjectId: number, payrollRosterCodeUpdateModelList: IPayrollRosterCodeUpdateModel[]):Observable>{\r\n let url = `${this.apiUrlProvider.url}/EmployeeRoster/${rosterProjectId}/UpdatePayrollRosterCode`;\r\n return this.http.post>(url, payrollRosterCodeUpdateModelList);\r\n }\r\n\r\n generateDailySignonSheet(rosterProjectId: number, dr: IDateRange, whenDone, whenError){\r\n let url = `${this.apiUrlProvider.url}/SignOnSheet?from=${format(dr.range.from, \"MM/dd/yyyy\")}&to=${format(dr.range.to, \"MM/dd/yyyy\")}&rosterProjectId=${rosterProjectId}`;\r\n let suffix = (dr.range.from === dr.range.to) ? format(dr.range.from, \"ddMMyyyy\") : `${format(dr.range.from, \"ddMMyyyy\")}_${format(dr.range.to, \"ddMMyyyy\")}`;\r\n let filename = `DailySignonSheet_${suffix}.pdf`;\r\n\r\n return this.http\r\n .get(url, {responseType: 'blob'})\r\n .subscribe(res => {\r\n if (res.type === \"application/json\"){\r\n let fr = new FileReader();\r\n fr.readAsText(res);\r\n fr.onload = (evt) => {\r\n if (whenError){\r\n whenError(JSON.parse(evt.target.result as string));\r\n }\r\n }\r\n }else{\r\n let objectUrl = window.URL.createObjectURL(res);\r\n let imageAnchor: HTMLAnchorElement = document.createElement(\"a\");\r\n imageAnchor.href = objectUrl;\r\n imageAnchor.target = \"_blank\";\r\n imageAnchor.download = filename;\r\n imageAnchor.click();\r\n window.URL.revokeObjectURL(objectUrl);\r\n }\r\n }, _ => {})\r\n .add(()=>{\r\n if (whenDone){\r\n whenDone();\r\n }\r\n }); \r\n }\r\n\r\n exportRoster(rosterProjectId: number, dr: IDateRange, activeRoster:boolean, whenDone, whenError){\r\n let url = `${this.apiUrlProvider.url}/ExportRosterData/${rosterProjectId}?from=${format(dr.range.from, \"MM/dd/yyyy\")}&to=${format(dr.range.to, \"MM/dd/yyyy\")}&activeRoster=${activeRoster}`;\r\n let suffix = (dr.range.from === dr.range.to) ? format(dr.range.from, \"ddMMyyyy\") : `${format(dr.range.from, \"ddMMyyyy\")}_${format(dr.range.to, \"ddMMyyyy\")}`;\r\n let filename = `Roster_${suffix}.xlsx`;\r\n\r\n return this.http\r\n .get(url, {responseType: 'blob'})\r\n .subscribe(res => {\r\n if (res.type === \"application/json\"){\r\n let fr = new FileReader();\r\n fr.readAsText(res);\r\n fr.onload = (evt) => {\r\n if (whenError){\r\n whenError(JSON.parse(evt.target.result as string));\r\n }\r\n }\r\n }else{\r\n let objectUrl = window.URL.createObjectURL(res);\r\n let imageAnchor: HTMLAnchorElement = document.createElement(\"a\");\r\n imageAnchor.href = objectUrl;\r\n imageAnchor.target = \"_blank\";\r\n imageAnchor.download = filename;\r\n imageAnchor.click();\r\n window.URL.revokeObjectURL(objectUrl);\r\n }\r\n }, _ => {})\r\n .add(()=>{\r\n if (whenDone){\r\n whenDone();\r\n }\r\n }); \r\n }\r\n\r\n resetRosterData(){\r\n var dummyData: IDummyRequest = {\r\n dummyData: \"\"\r\n }\r\n return this.http.post>(`${this.apiUrlProvider.url}/ResetRosterData`, dummyData);\r\n }\r\n\r\n importRoster(whenDone = null, whenError = null){\r\n let url = `${this.apiUrlProvider.url}/RosterImport`;\r\n\r\n this.http\r\n .get(url, {responseType: 'blob'})\r\n .subscribe(res => {\r\n if (res.type === \"application/json\"){\r\n let fr = new FileReader();\r\n fr.readAsText(res);\r\n fr.onload = (evt) => {\r\n if (whenError){\r\n whenError(JSON.parse(evt.target.result as string));\r\n }\r\n }\r\n }else{\r\n let objectUrl = window.URL.createObjectURL(res);\r\n let imageAnchor: HTMLAnchorElement = document.createElement(\"a\");\r\n imageAnchor.href = objectUrl;\r\n imageAnchor.target = \"_blank\";\r\n imageAnchor.download = `roster-import-issue-report.xlsx`;\r\n imageAnchor.click();\r\n window.URL.revokeObjectURL(objectUrl);\r\n }\r\n }, _ => {})\r\n .add(()=>{\r\n if (whenDone){\r\n whenDone();\r\n }\r\n });\r\n }\r\n\r\n importRosterFromCsv(){\r\n var dummyData: IDummyRequest = {\r\n dummyData: \"\"\r\n }\r\n return this.http.post>(`${this.apiUrlProvider.url}/ImportRosterFromCsv`, dummyData);\r\n }\r\n\r\n isPayDay(day: Date): boolean{\r\n let daysDiff = differenceInDays(day, this.firstPayDay);\r\n\r\n if (daysDiff % 14 === 0){\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n hasTicketStatus(rosterCode: string){\r\n return rosterCode === \"FIA\" || \r\n rosterCode === \"FIP\" || \r\n rosterCode === \"FOA\" || \r\n rosterCode === \"FOP\";\r\n }\r\n\r\n updateRosterEmployeeNote(rosterEmployeeNote: IRosterEmployeeNote):Observable>{\r\n let url = `${this.apiUrlProvider.url}/EmployeeRoster/UpdateRosterEmployeeNote`;\r\n return this.http.post>(url, rosterEmployeeNote);\r\n }\r\n\r\n getColumnName(colId: string): string{\r\n return {\r\n \"employeeName\": \"Employee Name\",\r\n \"company\": \"Company\",\r\n \"position\": \"Position\",\r\n \"supervisor\": \"Supervisor\",\r\n \"phone\": \"Contact\",\r\n \"accessId\": \"Access ID\",\r\n \"workarea\": \"Work Area\",\r\n \"email\": \"Email\",\r\n \"dateOfBirth\": \"DOB\"\r\n }[colId];\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { UserContext } from \"../shared/models/user-context\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class SessionService{\r\n private _userContextKey = \"user.context\";\r\n private _userContextRefreshFlag = \"user.refresh\";\r\n\r\n getUserContext(){\r\n let ctx = window.sessionStorage.getItem(this._userContextKey);\r\n return ctx ? JSON.parse(ctx) : null;\r\n }\r\n\r\n setUserContext(userContext: UserContext){\r\n window.sessionStorage.setItem(this._userContextKey, JSON.stringify(userContext));\r\n window.sessionStorage.setItem(this._userContextRefreshFlag, \"0\");\r\n }\r\n\r\n clearUserContext(){\r\n window.sessionStorage.removeItem(this._userContextKey);\r\n window.sessionStorage.removeItem(this._userContextRefreshFlag);\r\n }\r\n\r\n refreshUserContext(){\r\n window.sessionStorage.setItem(this._userContextRefreshFlag, \"1\");\r\n }\r\n\r\n shouldRefreshUserContext(){\r\n let flag = window.sessionStorage.getItem(this._userContextRefreshFlag);\r\n return flag ? flag === \"1\" : false;\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { TimesheetBreakdownRule } from '../shared/models/timesheet-breakdown-rule';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TimesheetBreakdownRuleService {\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/TimesheetRule`);\r\n }\r\n\r\n add(entity: TimesheetBreakdownRule): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/TimesheetRule`, entity);\r\n }\r\n\r\n update(entity: TimesheetBreakdownRule): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/TimesheetRule/${entity.id}`, entity);\r\n }\r\n\r\n delete(entityId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/TimesheetRule/${entityId}/delete`, null);\r\n }\r\n\r\n clone(entityId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/TimesheetRule/${entityId}/clone`, null);\r\n }\r\n\r\n getBreakdownRules(){\r\n return [\r\n \"If input_hour >= 7.6 then [7.6 hours] else [input_hour]\",\r\n \"If input_hour < 7.6 then [0 hour] else [input_hour - 7.6]\",\r\n \"[7.6 hours]\",\r\n \"[Input hours]\"\r\n ];\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { TimesheetSearchModel } from '../shared/models/timesheet-search-model';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { Observable } from 'rxjs';\r\nimport { Timesheet } from '../shared/models/timesheet';\r\nimport { format } from 'date-fns';\r\nimport { TimesheetEntity } from '../shared/models/timesheet-entity';\r\nimport { PpsUtilityService } from './pps-utility.service';\r\nimport { IRosterCode } from '../shared/models/roster-code';\r\nimport { TimesheetGenerationModel } from '../shared/models/timesheet-generation-model';\r\nimport { IEmployeePayrollRosterModel } from '../shared/models/employee-payroll-roster-model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TimesheetService {\r\n constructor(\r\n private http: HttpClient,\r\n private util: PpsUtilityService,\r\n private apiUrlProvider: ApiUrlProvider) { }\r\n\r\n getTimesheets(searchModel: TimesheetSearchModel): Observable>{\r\n const params = new HttpParams()\r\n .set('from', format(searchModel.fromDate, \"yyyy-MM-dd\"))\r\n .set('to', format(searchModel.toDate, \"yyyy-MM-dd\"))\r\n .set('groupId', searchModel.groupId.toString())\r\n .set('employeeId', searchModel.employeeId.toString())\r\n .set('jobCodeId', searchModel.jobCodeId.toString())\r\n .set('employerId', searchModel.employerId);\r\n return this.http.get>(`${this.apiUrlProvider.url}/timesheet`, {params});\r\n }\r\n \r\n getTimesheetEntities(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/timesheet/entities`);\r\n } \r\n \r\n addTimesheet(timesheet: Timesheet): Observable>\r\n {\r\n return this.http.post>(`${this.apiUrlProvider.url}/timesheet`, timesheet);\r\n }\r\n \r\n updateTimesheet(timesheet: Timesheet): Observable>\r\n {\r\n return this.http.post>(`${this.apiUrlProvider.url}/timesheet/${timesheet.id}/update`, timesheet);\r\n }\r\n \r\n deleteTimesheet(timesheetId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/timesheet/${timesheetId}/delete`, null);\r\n }\r\n \r\n updateTimesheetWithPut(timesheet: Timesheet): Observable>\r\n {\r\n return this.http.put>(`${this.apiUrlProvider.url}/timesheet`, timesheet);\r\n }\r\n \r\n generateTimesheet(timesheetGenerationModel: TimesheetGenerationModel): Observable>\r\n {\r\n var body: any = {\r\n employeeIds: timesheetGenerationModel.employees.map(e => e.id).join(\",\"),\r\n from: timesheetGenerationModel.from,\r\n to: timesheetGenerationModel.to,\r\n jobCodeId: timesheetGenerationModel.jobCode.id,\r\n hours: timesheetGenerationModel.hours,\r\n dsHours: timesheetGenerationModel.dsHours,\r\n nsHours: timesheetGenerationModel.nsHours\r\n };\r\n\r\n return this.http.post>(`${this.apiUrlProvider.url}/timesheet/generate`, body);\r\n }\r\n \r\n generateTimesheetPreview(timesheetGenerationModel: TimesheetGenerationModel): Observable>\r\n {\r\n var body: any = {\r\n employeeIds: timesheetGenerationModel.employees.map(e => e.id).join(\",\"),\r\n from: timesheetGenerationModel.from,\r\n to: timesheetGenerationModel.to\r\n };\r\n\r\n return this.http.post>(`${this.apiUrlProvider.url}/timesheet/generate/preview`, body);\r\n }\r\n\r\n deleteTimesheetWithDelete(timesheetId: number): Observable>{\r\n return this.http.delete>(`${this.apiUrlProvider.url}/timesheet/${timesheetId}`);\r\n }\r\n \r\n downloadTimesheets(searchModel: TimesheetSearchModel, validationReport: boolean, whenDone){\r\n let url = `${this.apiUrlProvider.url}/timesheet/download`;\r\n const params = new HttpParams()\r\n .set('from', format(searchModel.fromDate, \"yyyy-MM-dd\"))\r\n .set('to', format(searchModel.toDate, \"yyyy-MM-dd\"))\r\n .set('groupId', searchModel.groupId.toString())\r\n .set('employeeId', searchModel.employeeId.toString())\r\n .set('jobCodeId', searchModel.jobCodeId.toString())\r\n .set('employerId', searchModel.employerId)\r\n .set('validationReport', validationReport);\r\n\r\n return this.http\r\n .get(url, {params, responseType: 'blob'})\r\n .subscribe(res => {\r\n let objectUrl = window.URL.createObjectURL(res);\r\n let imageAnchor: HTMLAnchorElement = document.createElement(\"a\");\r\n imageAnchor.href = objectUrl;\r\n imageAnchor.target = \"_blank\";\r\n imageAnchor.download = `${validationReport ? \"invalid_\" : \"\"}timesheets_${format(searchModel.fromDate, \"yyyyMMdd\")}_${format(searchModel.toDate, \"yyyyMMdd\")}.xlsx`;\r\n imageAnchor.click();\r\n window.URL.revokeObjectURL(objectUrl);\r\n }, _ => {}, () => { \r\n if (whenDone){\r\n whenDone();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * \r\n * @param timesheet \r\n * @param newTotalHours \r\n * @param single \r\n * @returns {Message, type} \r\n * type = 0, no warning message\r\n * type = 1, no sub warning message needed\r\n * type = 2, no sub warning message needed\r\n * type = 3, has sub warning\r\n */\r\n getWarningMessage(timesheet: Timesheet, newTotalHours: number, single: boolean){\r\n let rosterCode:IRosterCode = timesheet.shift;\r\n let payrollRosterCode = timesheet.payrollRosterCode;\r\n var result = {\r\n message: \"\",\r\n type: 0\r\n };\r\n /*\r\n if (rosterCode.code !== payrollRosterCode){\r\n result = {\r\n message: single ? `\r\n ${this.util.getEmployeeName(timesheet.employee)}: \r\n Work shift doesn't match roster code \r\n [\r\n ${rosterCode.code} : ${payrollRosterCode ? payrollRosterCode: \"NOT SET\"}\r\n ]

\r\n Click [ Yes ] to continue to enter hours, \r\n [ No ] to cancel.`:\r\n `${this.util.getEmployeeName(timesheet.employee)}: \r\n Work shift doesn't match roster code \r\n [${rosterCode.code} : ${payrollRosterCode ? payrollRosterCode: \"NOT SET\"}]`,\r\n type: 1\r\n };\r\n return result;\r\n }\r\n\r\n if (payrollRosterCode === \"DAY\" && newTotalHours < 11.5)\r\n {\r\n result = {\r\n message: single ? \r\n `${this.util.getEmployeeName(timesheet.employee)} will be entered less than \r\n 11.5 hours\r\n (total ${newTotalHours} hours) after this change.

\r\n Click [ Yes ] to continue to enter hours, \r\n [ No ] to cancel.`:\r\n `The following employees will be entered less than \r\n 11.5 hours\r\n after this action.`,\r\n type: single ? 2 : 3\r\n }\r\n return result;\r\n }\r\n\r\n if (payrollRosterCode === \"NIGHT\" && newTotalHours < 12)\r\n {\r\n result = {\r\n message: single ? \r\n `${this.util.getEmployeeName(timesheet.employee)} will be entered less than \r\n 12 hours\r\n (total ${newTotalHours} hours) after this change.

\r\n Click [ Yes ] to continue to enter hours, \r\n [ No ] to cancel.`:\r\n `The following employees will be entered less than \r\n 12 hours\r\n after this action.`,\r\n type: single ? 2 : 3\r\n };\r\n return result;\r\n }\r\n\r\n if ((payrollRosterCode === \"AL\" ||\r\n payrollRosterCode === \"PL\" ||\r\n payrollRosterCode === \"CL\" ||\r\n payrollRosterCode === \"LWOP\" ||\r\n payrollRosterCode === \"PO\" ||\r\n payrollRosterCode === \"RDO\") &&\r\n newTotalHours < 7.6)\r\n {\r\n result = {\r\n message: single ? \r\n `${this.util.getEmployeeName(timesheet.employee)} will be entered less than \r\n 7.6 hours\r\n (total ${newTotalHours} hours) after this change.

\r\n Click [ Yes ] to continue to enter hours, \r\n [ No ] to cancel.`:\r\n `The following employees will be entered less than \r\n 7.6 hours \r\n after this action.`,\r\n type: single ? 2 : 3\r\n };\r\n return result;\r\n }\r\n */\r\n if (newTotalHours > 12){\r\n result = {\r\n message: single ?\r\n `${this.util.getEmployeeName(timesheet.employee)} will be entered more than \r\n 12 hours\r\n (total ${newTotalHours} hours) after this change.

\r\n Click [ Yes ] to continue to enter hours, \r\n [ No ] to cancel.`:\r\n `The following employees will be entered more than \r\n 12 hours after this action.`,\r\n type: single ? 2 : 3\r\n }\r\n return result;\r\n }\r\n\r\n return result;\r\n } \r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ApiUrlProvider } from \"./api-url.provider\";\r\nimport { IApiResult } from \"../shared/models/api-result\";\r\nimport { ITrainingCourse } from \"../shared/models/training-course\";\r\nimport { Observable } from \"rxjs\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class TrainingCourseService{\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/TrainingCourse`);\r\n }\r\n\r\n add(entity: ITrainingCourse): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/TrainingCourse`, entity);\r\n }\r\n\r\n update(entity: ITrainingCourse): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/TrainingCourse/${entity.id}`, entity);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { ApiUrlProvider } from './api-url.provider';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { IApiResult } from '../shared/models/api-result';\r\nimport { Role } from '../shared/models/role';\r\nimport { User } from '../shared/models/user';\r\nimport { ProjectColumnAccessModel } from '../shared/models/project-column-access-model';\r\nimport { Operation } from '../shared/models/operation';\r\nimport { UserContext } from '../shared/models/user-context';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserRoleService {\r\n constructor(\r\n private http: HttpClient,\r\n private apiUrlProvider: ApiUrlProvider) { }\r\n\r\n getUserContext(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/UserContext`);\r\n }\r\n \r\n getUsers(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/Users`);\r\n }\r\n\r\n getRoles(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/Roles`);\r\n }\r\n\r\n getRolesByUser(userId: string): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/Users/${userId}/Roles`);\r\n }\r\n\r\n isUserAdmin(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/Users/IsAdmin`);\r\n }\r\n\r\n getUsersByRole(roleId: number): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/Roles/${roleId}/Users`);\r\n }\r\n\r\n addRole(role: Role): Observable>{\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n };\r\n\r\n return this.http.post>(`${this.apiUrlProvider.url}/Roles`, role, httpOptions);\r\n }\r\n\r\n updateRole(role: Role): Observable>{\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n };\r\n\r\n return this.http.post>(`${this.apiUrlProvider.url}/Roles/${role.id}/Update`, role, httpOptions);\r\n }\r\n\r\n addUserToRole(roleId: number, user:User): Observable>{\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n };\r\n\r\n return this.http.post>(`${this.apiUrlProvider.url}/Roles/${roleId}/Users`, user, httpOptions);\r\n }\r\n\r\n deleteUserFromRole(roleId: number, userId: number): Observable>{\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n };\r\n\r\n return this.http.post>(`${this.apiUrlProvider.url}/Roles/${roleId}/Users/${userId}/Delete`, null, httpOptions);\r\n }\r\n\r\n getProjectColumnsAccessModelByRole(roleId: number): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/Project/RoleColumnAccessSetting/${roleId}`);\r\n }\r\n\r\n updateProjectColumnAccessSetting(roleId: number, projectColumnAccessSetting: ProjectColumnAccessModel)\r\n : Observable>{\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json'\r\n })\r\n };\r\n\r\n return this.http.post>(`${this.apiUrlProvider.url}/Project/RoleColumnAccessSetting/${roleId}`, [projectColumnAccessSetting], httpOptions);\r\n }\r\n\r\n getOperationsByUser(userId: string): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/Users/${userId}/Operations`);\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { IApiResult } from \"../shared/models/api-result\";\r\nimport { IWorkArea } from \"../shared/models/workarea\";\r\nimport { ApiUrlProvider } from \"./api-url.provider\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class WorkAreaService {\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/WorkArea`);\r\n }\r\n\r\n add(entity: IWorkArea): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/WorkArea`, entity);\r\n }\r\n\r\n update(entity: IWorkArea): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/WorkArea/${entity.id}`, entity);\r\n }\r\n\r\n delete(entityId: number): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/WorkArea/${entityId}/delete`, null);\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { IApiResult } from \"../shared/models/api-result\";\r\nimport { IWorkGroupPositionRosterType } from \"../shared/models/roster/workgroup-position-rostertype\";\r\nimport { ApiUrlProvider } from \"./api-url.provider\";\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class WorkGroupPositionRosterTypeService{\r\n constructor(private http: HttpClient, private apiUrlProvider: ApiUrlProvider) { }\r\n \r\n getAll(): Observable>{\r\n return this.http.get>(`${this.apiUrlProvider.url}/WorkGroupPositionRosterType`);\r\n }\r\n\r\n add(entities: IWorkGroupPositionRosterType[]): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/WorkGroupPositionRosterType`, entities);\r\n }\r\n\r\n delete(entity: IWorkGroupPositionRosterType): Observable>{\r\n return this.http.post>(`${this.apiUrlProvider.url}/WorkGroupPositionRosterType/delete`, entity);\r\n }\r\n}","import { Component, OnInit } from \"@angular/core\";\r\nimport { NgForm } from \"@angular/forms\";\r\nimport { addYears } from \"date-fns\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { IDateRange } from \"./models/date-range\";\r\n\r\n@Component({\r\n selector: \"pps-data-range-form\",\r\n templateUrl: \"./date-range-form.component.html\"\r\n})\r\nexport class DateRangeFormComponent implements OnInit{\r\n options = {\r\n showFromDate: true,\r\n showToDate: true,\r\n showPresetDateRange: true,\r\n fromDateLabel: \"From\",\r\n toDateLabel: \"To\",\r\n presetDateRangeLabel: \"Select Date Range\",\r\n minToDate: addYears(new Date(), -100),\r\n maxToDate: addYears(new Date(), 100),\r\n prompt: null,\r\n promptStyleClasses: \"\"\r\n };\r\n\r\n private initialValues = {\r\n presetDateRange: \"today\",\r\n fromDate: this._util.getDateOnly(new Date()),\r\n toDate: this._util.getDateOnly(new Date())\r\n };\r\n\r\n mdClasses = {\r\n presetDateRange: \"p-md-6\",\r\n fromDate: \"p-md-3\",\r\n toDate: \"p-md-3\"\r\n };\r\n\r\n message = \"\";\r\n dateRange: IDateRange = {\r\n range: {\r\n from: this._util.getDateOnly(new Date()),\r\n to: this._util.getDateOnly(new Date())\r\n } \r\n };\r\n yearRange: string = \"\";\r\n\r\n public dateRanges: {id:string, title: string}[] = [];\r\n public selectedDateRange: {id:string, title: string} = null;\r\n\r\n constructor(\r\n private _dialogRef: DynamicDialogRef,\r\n private _dlgConfig: DynamicDialogConfig,\r\n private _util: PpsUtilityService) {\r\n this.setData(this._dlgConfig.data);\r\n }\r\n\r\n ngOnInit(): void {\r\n let dateRanges = this._util.getDateRanges();\r\n this.dateRanges = Object.keys(dateRanges).map(key => { return {id: key, title: dateRanges[key].title}; });\r\n this.yearRange = `2018:${addYears(new Date(), 5).getFullYear()}`;\r\n\r\n // this.selectedDateRange = this.dateRanges.filter(dt => dt.title === \"Today\")[0];\r\n // this.setDateRange();\r\n this.initialize();\r\n }\r\n\r\n onDateRangeChanged(event){\r\n this.setDateRange();\r\n }\r\n\r\n private setData(data: any){\r\n if (!data){\r\n return;\r\n }\r\n\r\n this.options = Object.assign(this.options, data.options);\r\n this.initialValues = Object.assign(this.initialValues, data.initialValues);\r\n\r\n if (this.options.showPresetDateRange){\r\n this.options.showFromDate = this.options.showToDate = true;\r\n }else{\r\n if (this.options.showFromDate && this.options.showToDate){\r\n this.mdClasses.fromDate = this.mdClasses.toDate = \"p-md-6\";\r\n }else{\r\n this.mdClasses.fromDate = this.mdClasses.toDate = \"p-md-12\";\r\n }\r\n }\r\n }\r\n\r\n private initialize(){\r\n if (this.initialValues.presetDateRange){\r\n let ranges = this.dateRanges.filter(dt => dt.title.toLowerCase() === this.initialValues.presetDateRange?.toLowerCase());\r\n if (ranges.length > 0){\r\n this.selectedDateRange = ranges.length > 0 ? ranges[0] : null; \r\n }\r\n }\r\n\r\n this.setDateRange();\r\n }\r\n\r\n private setDateRange(){\r\n if (this.selectedDateRange){\r\n let range = this._util.getDateRange(this.selectedDateRange.id);\r\n if (range){\r\n this.dateRange.range.from = range.from;\r\n this.dateRange.range.to = range.to;\r\n }\r\n }else{\r\n this.dateRange.range.from = this.initialValues.fromDate;\r\n this.dateRange.range.to = this.initialValues.toDate;\r\n }\r\n }\r\n\r\n save(form: NgForm){\r\n if (form.invalid){\r\n return false;\r\n }\r\n\r\n if (this.options.showFromDate && this.options.showToDate && this.dateRange.range.from > this.dateRange.range.to){\r\n this.message = \"From date must be earlier than To date\";\r\n return;\r\n }\r\n\r\n this._dialogRef.close(this.dateRange);\r\n }\r\n\r\n cancel(){\r\n this._dialogRef.close();\r\n } \r\n}","
\r\n
\r\n
\r\n {{options.prompt}}\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n {{options.fromDateLabel}} date is required!\r\n {{message}}\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n {{options.toDateLabel}} date is required!\r\n {{message}}\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\n\r\n@Component({\r\n selector: 'pps-error',\r\n templateUrl: \"./error.component.html\",\r\n styles: []\r\n})\r\nexport class ErrorComponent implements OnInit {\r\n errorMessage = \"\";\r\n\r\n constructor(\r\n private _authService: AuthenticationService,\r\n private activedRoute: ActivatedRoute) { }\r\n\r\n ngOnInit(): void {\r\n this.activedRoute.queryParams.subscribe(params => {\r\n this.errorMessage = params.message;\r\n });\r\n }\r\n\r\n logout(){\r\n this._authService.logout();\r\n }\r\n}\r\n","

Error No: {{errorMessage}}

\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AgRendererComponent } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\n\r\n/**\r\n * To use this component, the following callback method should be provided:\r\n * showGridActionComponent(): boolean, default: true\r\n * getGridActionClass(): css class, default: text-danger\r\n * execGridAction(): what to do after user clicked on the icon\r\n * getGridActionIcon(): get grid action icon, default: fas fa-trash-alt fa-lg\r\n * getGridActionTooltip(): tooltip when mouse hover over the icon\r\n */\r\n@Component({\r\n selector: 'pps-grid-action',\r\n template: `\r\n \r\n \r\n \r\n `\r\n})\r\nexport class GridActionComponent implements AgRendererComponent {\r\n params: ICellRendererParams;\r\n\r\n refresh(params: any): boolean {\r\n return false;\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n }\r\n\r\n afterGuiAttached?(params?: import(\"ag-grid-community\").IAfterGuiAttachedParams): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n execGridAction(evt){\r\n evt.preventDefault();\r\n if (this.params.context.componentParent.execGridAction){\r\n this.params.context.componentParent.execGridAction(this.params.data);\r\n }\r\n }\r\n\r\n getGridActionTooltip(){\r\n if (this.params.context.componentParent.getGridActionTooltip){\r\n return this.params.context.componentParent.getGridActionTooltip(this.params.data);\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n getGridActionIcon(){\r\n if (this.params.context.componentParent.getGridActionIcon){\r\n return this.params.context.componentParent.getGridActionIcon(this.params.data);\r\n }\r\n\r\n return \"fas fa-trash-alt fa-lg\";\r\n }\r\n\r\n showGridActionComponent(){\r\n if (this.params.context.componentParent.showGridActionComponent){\r\n return this.params.context.componentParent.showGridActionComponent(this.params.data);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n getGridActionClass(){\r\n if (this.params.context.componentParent.getGridActionClass){\r\n return this.params.context.componentParent.getGridActionClass(this.params.data);\r\n }\r\n\r\n return \"text-danger\";\r\n }\r\n}\r\n","export enum AccessPermission{\r\n NoAccess = 0,\r\n ReadAccess = 1,\r\n WriteAccess = 2,\r\n ExecuteAccess = 3\r\n};\r\n","export enum AppStatus {\r\n Initialized = 0,\r\n LoginStarted = 1, \r\n LoginCompleted = 2,\r\n LogoutStarted = 3,\r\n LogoutCompleted = 4, \r\n UserContextLoading = 5,\r\n Ready = 10 \r\n}","// This enum must match the same enum in api and DB\r\nexport enum BusinessOperation{\r\n ViewProject = 1,\r\n CreateProject = 2,\r\n ModifyProject = 3,\r\n DeleteProject = 4,\r\n ExportProject = 5,\r\n\r\n ViewProjectInvoice = 11,\r\n CreateProjectInvoice = 12,\r\n DeleteProjectInvoice = 13,\r\n\r\n ViewTimeSheet = 21,\r\n EnterTimeSheet = 22,\r\n ModifyTimeSheet = 23,\r\n UpdatePastTimeSheet = 24,\r\n ExportTimeSheet = 25,\r\n GenerateTimeSheet = 26,\r\n\r\n ViewRoster = 31,\r\n ModifyRoster = 32,\r\n PrintDailySignonSheet = 33,\r\n ManageRosterSetting = 35,\r\n ExportRoster = 36,\r\n\r\n ViewEmployee = 41,\r\n AddEmployee = 42,\r\n ModifyEmployee = 43,\r\n ExportEmployee = 44,\r\n UpdateEmployeeRosterSortNo = 45,\r\n ManageEmployeeTrainingRecord = 46,\r\n\r\n ViewPayrollTimesheet = 51,\r\n ModifyPayrollTimesheet = 52,\r\n DeletePayrollTimesheet = 53,\r\n ExportPayrollTimesheet = 54,\r\n\r\n ExportPoInvoiceDiscrepancyReport = 100,\r\n GenerateMonthlyIncomeReport = 101,\r\n\r\n ManageArea = 110,\r\n ManageClientEngineer = 111,\r\n ManageWorkGroup = 112,\r\n ManageJobPosition = 113,\r\n ManagePayCategory = 114,\r\n ManageTimesheetBreakDownRule = 115,\r\n ManageRosterCode = 116,\r\n ManageHoliday = 117,\r\n ManageRosterProject = 118,\r\n ManageRosterProjectPermission = 119,\r\n ManageProjectColumn = 120,\r\n ManageTrainingCourse = 121,\r\n ManageEmployer = 122,\r\n \r\n ViewLinks = 130,\r\n ManageLinks = 131,\r\n\r\n ManageAllAccount = 140,\r\n ManageOwnProfile = 141,\r\n ManageOwnPassword = 142,\r\n ImportRoster = 143\r\n}\r\n","export class Company{\r\n id: number;\r\n name: string;\r\n active: boolean;\r\n}\r\n\r\nexport class CompanyRepresentative{\r\n id: number;\r\n name: string;\r\n active: boolean;\r\n company?: Company;\r\n}\r\n\r\n","import { User } from './user';\r\n\r\nexport class EmployeeActivityModel{\r\n employeeId: number;\r\n activity: string;\r\n note: string;\r\n activityUser?: User;\r\n activityDate?: Date;\r\n}","import { IEntity } from './entity';\r\nimport { IRosterType } from './roster/roster-type';\r\nimport { Position } from './position';\r\nimport { IWorkArea } from './workarea';\r\nimport { IEmployer } from './employer';\r\n\r\nexport class Employee {\r\n id: number;\r\n employeeNo: string;\r\n accessId: string;\r\n firstName: string;\r\n middleName: string;\r\n lastName: string;\r\n nickname: string;\r\n address: string;\r\n city: string;\r\n state: any;\r\n postcode: string;\r\n email: string;\r\n phone: string;\r\n position: Position;\r\n positionStartDate: Date;\r\n hireDate: Date;\r\n dateOfBirth: Date;\r\n workGroup: IEntity;\r\n employer: IEmployer;\r\n supervisor: Employee;\r\n contractExpireDate: Date;\r\n workArea: IWorkArea;\r\n active: boolean;\r\n terminateDate: Date;\r\n terminateNote: string;\r\n rosterType?: IRosterType;\r\n rosterTypeStartDate?: Date;\r\n showInRoster?: boolean;\r\n}\r\n\r\n","export enum EntityCategory{\r\n Unknown = 0,\r\n JobType = 1,\r\n ProjectStatus = 2,\r\n Area = 3,\r\n ClientEngineer = 4,\r\n InstallationProgress = 5,\r\n WorkGroup = 6,\r\n WorkShift = 7,\r\n MaterialProcurementStatus = 8 \r\n};\r\n","import { IEntity } from './entity';\r\nimport { Employee } from './employee';\r\nimport { MaterialProcurementStatus } from './material-procurement-status';\r\n\r\nexport class EntityCollection{\r\n constructor(){\r\n this.jobTypes = [];\r\n this.projectStatuses = [];\r\n this.areas = [];\r\n this.clientEngineers = [];\r\n this.installationProgresses = [];\r\n this.responsibleEngineers = [];\r\n this.materialProcurementStatuses = [];\r\n }\r\n\r\n jobTypes: IEntity[];\r\n projectStatuses: IEntity[];\r\n areas: IEntity[];\r\n clientEngineers: IEntity[];\r\n installationProgresses: IEntity[];\r\n responsibleEngineers: Employee[];\r\n materialProcurementStatuses: MaterialProcurementStatus[];\r\n}","export class Invoice{\r\n id: number;\r\n invoiceNo: string;\r\n invoiceValue: number;\r\n invoiceDate: string; //date\r\n incomeMonth: string; //date\r\n invoiceImageUrl: string;\r\n originalInvoiceFilename: string;\r\n memo: string;\r\n}\r\n","export enum ProgressStatuses{\r\n Ongoing = 19,\r\n Pending = 20,\r\n IRCSigned = 21, \r\n Invoiced = 22,\r\n Completed = 23, \r\n Paid = 24,\r\n InPrep = 58\r\n}","export enum ProjectStatuses{\r\n Quoted = 1,\r\n Approved = 3,\r\n POReceived = 5, \r\n JobLost = 29,\r\n RFQ = 44, \r\n JobCancelled = 90,\r\n PRFRaised = 91\r\n}","import { IJobType } from './job-type';\r\nimport { ProjectStatus } from './project-status';\r\nimport { Employee} from './employee';\r\nimport { IClientEngineer } from './client-engineer';\r\nimport { IInstallationProgress } from './installation-progress';\r\nimport { Invoice } from './invoice';\r\nimport { MaterialProcurementStatus } from './material-procurement-status';\r\nimport { Company } from './company';\r\nimport { EmployeeBase } from './employee-base';\r\n\r\nexport class Project{\r\n id: number = 0;\r\n projectNo: string;\r\n description: string;\r\n jobType: IJobType;\r\n projectStatus: ProjectStatus;\r\n responsibleEngineer: Employee;\r\n client?: Company;\r\n clientEngineers?: IClientEngineer[];\r\n quotingDeadline?: Date;\r\n \r\n materialProcurementStatus?: MaterialProcurementStatus;\r\n materialEstimateDeliveryDate?: Date\r\n materialActualArrivalDate?: Date\r\n materialStatusMemo?: string;\r\n \r\n installationProgress?: IInstallationProgress;\r\n invoices?: Invoice[]; //should be dropdown\r\n totalInvoiceValue?: number; // calculated from invoices\r\n completionPercentage?: number;\r\n targetStartDate?: Date\r\n targetCompletionDate?: Date\r\n budgetHour?: number;\r\n plannedHour?: number;\r\n actualHour?: number;\r\n\r\n earnedManHours?: number;\r\n\r\n workOrder?: string;\r\n contractNumber?: string;\r\n bankGuaranteeAmount?: number;\r\n bankGuaranteeExpirationDate?: Date\r\n\r\n poNumber?: string;\r\n poAmount?: number;\r\n estimatedCompletionValue?: number;\r\n\r\n commentBy?: EmployeeBase;\r\n commentDate?: Date;\r\n comment?: string;\r\n\r\n hasAttachment?: boolean;\r\n\r\n directLabor?: number;\r\n plantAndEquipment?: number;\r\n materialsAndConsumbles?: number;\r\n management?: number;\r\n thirdParty?: number;\r\n}\r\n\r\n","export class Role{\r\n id: number;\r\n roleName: string;\r\n roleDescription: string;\r\n}\r\n","export enum RosterCodes{\r\n Day = 4,\r\n Night = 5,\r\n FIA = 15,\r\n FIP = 16,\r\n FOA = 17,\r\n FOP = 18,\r\n DIA = 19,\r\n DIP = 20,\r\n DOA = 21,\r\n DOP = 22,\r\n SD = 14,\r\n RR = 7,\r\n AL = 9,\r\n PH = 24,\r\n TOIL = 1,\r\n PO = 2\r\n}","export enum SummaryFormular{\r\n OnSite = 1,\r\n OffSite = 2,\r\n RosterCode = 3 \r\n}","export interface ITicketStatus{\r\n id: number;\r\n description: string;\r\n}\r\n\r\nexport enum TicketStatus{\r\n Approved = 1,\r\n PendingApproval = 2,\r\n Planned = 3\r\n}","import { PayCategory } from './pay-category';\r\nimport { Position } from './position';\r\nimport { IRosterCode } from './roster-code';\r\n\r\nexport class TimesheetBreakdownRule{\r\n id: number;\r\n position?: Position;\r\n rosterCode?: IRosterCode;\r\n payCategory?: PayCategory;\r\n breakdownRule?: number;\r\n weekend?: boolean;\r\n lock?: boolean;\r\n active: boolean;\r\n}\r\n\r\n","import { ProjectBase } from './project-base';\r\nimport { IEntity } from './entity';\r\nimport { IJobCode } from './job-code';\r\nimport { Employee } from './employee';\r\nimport { WarningType } from './warning-type';\r\nexport class Timesheet{\r\n id: number;\r\n day: Date;\r\n jobCode: IJobCode;\r\n employee: Employee;\r\n hours: number;\r\n shift: IEntity;\r\n note:string;\r\n payrollRosterCodeId?: number;\r\n payrollRosterCode?: string;\r\n totalHours?: number;\r\n warningMessage?: string;\r\n warningType?: WarningType;\r\n}\r\n","export class AccountViewModel{\r\n userId: string;\r\n userName: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n addDate: Date\r\n}\r\n\r\nexport class AddAccountViewModel{\r\n userName: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n newPassword?: string;\r\n confirmPassword?: string;\r\n}\r\n\r\nexport class ResetPasswordViewModel{\r\n zoesenUserId: string;\r\n userName: string;\r\n firstName: string;\r\n lastName: string;\r\n newPassword?: string;\r\n confirmPassword?: string;\r\n}\r\n\r\nexport class UpdateAccountViewModel{\r\n clientUserId: number;\r\n zoesenUserId: string;\r\n userName: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n phoneNumber?: string;\r\n avatar: string;\r\n}\r\n\r\n\r\nexport class UpdatePasswordViewModel{\r\n clientUserId: number;\r\n zoesenUserId: string;\r\n userName: string;\r\n currentPassword?: string;\r\n newPassword?: string;\r\n confirmPassword?: string;\r\n}","import { Operation } from './operation';\r\nimport { User } from './user';\r\nimport { ProjectColumnAccessModel } from './project-column-access-model';\r\nimport { Resource } from './resource';\r\nimport { Role } from './role';\r\nimport { IRosterProject } from './roster/roster-project';\r\n\r\nexport class UserContext\r\n{\r\n zoesenUser: User;\r\n userOperations: Operation[];\r\n externalLinks: Resource[];\r\n roles: Role[];\r\n isAdmin: boolean;\r\n isSysAdmin: boolean;\r\n projectColumnAccessSettings: {\r\n [para: string]: ProjectColumnAccessModel\r\n };\r\n rosterProjects: IRosterProject[]\r\n}\r\n","export enum WarningType{\r\n NoWarning = 0,\r\n DayShiftTotalHour = 1,\r\n NightShiftTotalHour = 2,\r\n OffTotalHour = 3,\r\n ShiftCodeNotMatchRosterCode = 4,\r\n IncorrectRosterCode = 5,\r\n MissingTimesheet = 6,\r\n MoreThan12Hours = 7\r\n}","import { Component, Input } from \"@angular/core\";\r\nimport { forkJoin } from \"rxjs\";\r\nimport { SubSink } from \"subsink\";\r\nimport { RosterCodeSettingService } from \"../services/roster-code-setting.service\";\r\nimport { RosterPatternParser } from \"../services/roster-pattern-parser\";\r\nimport { RosterService } from \"../services/roster.service\";\r\nimport { IRosterCodeSetting } from \"../shared/models/roster-code-setting\";\r\nimport { IRosterCode } from \"./models/roster-code\";\r\nimport { IRosterValue } from \"./models/roster/roster-value\";\r\n\r\n@Component({\r\n selector: \"pps-roster-type-preview\",\r\n templateUrl: \"./roster-type-preview.component.html\"\r\n})\r\nexport class RosterTypePreviewComponent{\r\n private subs = new SubSink();\r\n @Input() rule: string;\r\n @Input() rosterCodes: IRosterCode[];\r\n @Input() rosterCodeSettings: IRosterCodeSetting[];\r\n\r\n private rosterCodesDict:{\r\n [code:string]: number;\r\n } = null;\r\n\r\n rosterValues: any[] = [];\r\n\r\n // Sample data:\r\n // {\r\n // 1_0: {foregroundColor:\"#ffffff\", backgroundColor:\"#000000\"},\r\n // 2_0: {foregroundColor:\"#ffffff\", backgroundColor:\"#000000\"}\r\n // }\r\n private rosterCodeSettingsObject: {\r\n [rosterCodeId_ticketStatusId: string]: {\r\n foregroundColor:string,\r\n backgroundColor:string\r\n }\r\n } = {};\r\n\r\n gridHeaders;\r\n gridOptions: any = {\r\n getRowId: param => {\r\n return param.data.column;\r\n },\r\n defaultColDef: {\r\n resizable: false,\r\n suppressMovable: true,\r\n floatingFilter: false\r\n },\r\n suppressPropertyNamesCheck: true \r\n };\r\n\r\n constructor(\r\n private rosterService: RosterService,\r\n private _rosterCodeSettingService: RosterCodeSettingService,\r\n private parser: RosterPatternParser){}\r\n\r\n ngOnInit(){\r\n this.gridOptions.context = {componentParent: this};\r\n if (this.rosterCodeSettings){\r\n this.processData();\r\n }else{\r\n this.loadRosterCodes();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n processData(){\r\n this.rosterCodeSettings.forEach( rcs => {\r\n rcs.ticketStatus = rcs.ticketStatus || {id: 0, description: \"\"};\r\n this.rosterCodeSettingsObject[rcs.rosterCode.id + \"_\" + rcs.ticketStatus.id] = {\r\n foregroundColor: rcs.foregroundColor, backgroundColor: rcs.backgroundColor\r\n }\r\n });\r\n\r\n this.rosterCodesDict = {};\r\n this.rosterCodes.forEach(rc => this.rosterCodesDict[rc.code] = rc.id);\r\n this.parsePattern();\r\n }\r\n loadRosterCodes(){\r\n this.subs.sink = forkJoin([\r\n this.rosterService.getRosterCodes(),\r\n this._rosterCodeSettingService.getAll()\r\n ]).subscribe(\r\n ([rosterCodeResponse, rosterCodeSettingsResponse]) => {\r\n if (rosterCodeResponse.succeed){\r\n this.rosterCodesDict = {};\r\n rosterCodeResponse.result.forEach(rc => this.rosterCodesDict[rc.code] = rc.id);\r\n this.parsePattern();\r\n }else{\r\n console.error(\"failed to load roster codes: \" + rosterCodeResponse.errors.join(\"|\"));\r\n }\r\n if (rosterCodeSettingsResponse.succeed){\r\n this.rosterCodeSettings = rosterCodeSettingsResponse.result;\r\n \r\n this.rosterCodeSettings.forEach( rcs => {\r\n rcs.ticketStatus = rcs.ticketStatus || {id: 0, description: \"\"};\r\n this.rosterCodeSettingsObject[rcs.rosterCode.id + \"_\" + rcs.ticketStatus.id] = {\r\n foregroundColor: rcs.foregroundColor, backgroundColor: rcs.backgroundColor\r\n }\r\n });\r\n }else{\r\n console.error(\"failed to load roster settings: \" + rosterCodeSettingsResponse.errors.join(\"|\"));\r\n }\r\n },\r\n (error) => {\r\n },\r\n ()=>{\r\n console.log(\"Roster codes loaded\");\r\n }\r\n );\r\n }\r\n\r\n parsePattern(){\r\n if (!this.rosterCodesDict){\r\n return;\r\n }\r\n\r\n let parseResult = this.parser.parse(0, new Date(), this.rule, this.rosterCodesDict);\r\n let rosterData = this.parser.getRosterValues(parseResult.result);\r\n rosterData = this.parser.setPayRollRosterCode(rosterData, this.rosterCodesDict);\r\n\r\n let rosterValue = {\"column\": \"For Roster\"};\r\n let payrollRosterCode = {\"column\": \"For Payroll\"};\r\n\r\n rosterData.forEach((rv, index) => {\r\n rosterValue[\"column_\" + index] = rv;\r\n payrollRosterCode[\"column_\" + index] = rv.prc ? (rv.prc.code === \"NIGHT\" ? \"NS\" : (rv.prc.code === \"DAY\" ? \"DS\" : rv.prc.code)) : \"\";\r\n });\r\n\r\n this.getColumnDefs(rosterData);\r\n\r\n this.rosterValues = [rosterValue, payrollRosterCode];\r\n }\r\n\r\n getColumnDefs(rosterData: IRosterValue[]){\r\n this.gridHeaders = [];\r\n\r\n this.gridHeaders.push({\r\n headerName: \"Days\",\r\n headerClass: this.getHeaderClass,\r\n field: \"column\",\r\n columnName: \"column\",\r\n cellStyle: () => { return {fontWeight: 'bold', textAlign: \"center\"}; },\r\n width: 80\r\n });\r\n\r\n rosterData.forEach((rv, index) => {\r\n this.gridHeaders.push({\r\n headerName: index + 1, //format(addDays(date, index), \"d/M\"),\r\n headerClass: this.getHeaderClass,\r\n rosterDay: rv,\r\n columnName: \"column_\" + index,\r\n field: \"column_\" + index + \".rosterCode.code\",\r\n valueGetter: this.getCellValue,\r\n cellClass: \"roster-day-value\",\r\n cellStyle: this.getCellStyle,\r\n width: 35\r\n });\r\n });\r\n }\r\n\r\n private getCellStyle(params){\r\n let rosterValue: IRosterValue = params.colDef.rosterDay;\r\n\r\n // When the cell is the Group or EmployeeName\r\n let _this = params.context.componentParent;\r\n let rosterColorCodeKey = rosterValue.rc.id + \"_\" + rosterValue.ts.id;\r\n\r\n let rowIndex = params.node.rowIndex;\r\n if (rowIndex === 1){\r\n if (rosterValue.prc){\r\n rosterColorCodeKey = rosterValue.prc.id + \"_\" + \r\n (_this.rosterService.hasTicketStatus(rosterValue.prc.code) ? rosterValue.ts.id : 0);\r\n }else{\r\n return {};\r\n }\r\n }\r\n\r\n // When the roster code has no settings\r\n if (!_this.rosterCodeSettingsObject.hasOwnProperty(rosterColorCodeKey)){\r\n return {};\r\n }\r\n\r\n let color = _this.rosterCodeSettingsObject[rosterColorCodeKey];\r\n if (!color){\r\n return {};\r\n }\r\n\r\n return {\r\n backgroundColor: color.backgroundColor, \r\n color: color.foregroundColor\r\n };\r\n }\r\n\r\n private getHeaderClass(params){\r\n return \"roster-day\";\r\n }\r\n\r\n private getCellValue(params){\r\n var rowIndex = params.node.rowIndex;\r\n let _this = params.context.componentParent;\r\n if (rowIndex === 1){\r\n return _this.rosterValues[rowIndex][params.colDef.columnName];\r\n }\r\n\r\n var rosterValue: IRosterValue = params.colDef.rosterDay;\r\n if (rosterValue.sn){\r\n return rosterValue.sn;\r\n }\r\n\r\n return rosterValue.rc.code;\r\n }\r\n}","\r\n
\r\n","import { Pipe } from \"@angular/core\";\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\n\r\n@Pipe({name: 'safeHtml'})\r\nexport class SafeHtmlPipe {\r\n constructor(private sanitizer:DomSanitizer){}\r\n\r\n transform(value: any, args?: any): any {\r\n return this.sanitizer.bypassSecurityTrustHtml(value);\r\n }\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { AgGridModule } from \"ag-grid-angular\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { CalendarModule } from \"primeng/calendar\";\r\nimport { DropdownModule } from \"primeng/dropdown\";\r\nimport { DateRangeFormComponent } from \"./date-range-form.component\";\r\nimport { GridActionComponent } from \"./grid-action.component\";\r\nimport { RosterTypePreviewComponent } from \"./roster-type-preview.component\";\r\nimport { SafeHtmlPipe } from \"./safe-html.pipe\";\r\n\r\n@NgModule({\r\n declarations:[\r\n RosterTypePreviewComponent,\r\n DateRangeFormComponent,\r\n SafeHtmlPipe,\r\n GridActionComponent\r\n ],\r\n imports:[\r\n CommonModule,\r\n FormsModule,\r\n\r\n ButtonModule,\r\n CalendarModule,\r\n DropdownModule,\r\n AgGridModule.withComponents([]),\r\n ],\r\n exports:[\r\n RosterTypePreviewComponent,\r\n DateRangeFormComponent,\r\n SafeHtmlPipe,\r\n GridActionComponent\r\n ]\r\n})\r\nexport class SharedModule{}","import { Injectable, TemplateRef } from '@angular/core';\r\nimport { MessageService } from 'primeng/api';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ToastService {\r\n toasts: any[] = [];\r\n\r\n constructor(private _messageService: MessageService){}\r\n\r\n message(toastMessage: any){\r\n this._messageService.add(toastMessage);\r\n }\r\n\r\n succeeded(textOrTpl: string, delay = 2000, key: string = \"\"){\r\n //this.show(textOrTpl,{ classname: 'bg-success text-light', delay: 2000 });\r\n let opt = {severity:'success', detail: textOrTpl, life: delay};\r\n if (key){\r\n opt[\"key\"] = key;\r\n }\r\n\r\n this._messageService.add(opt);\r\n }\r\n\r\n failed(textOrTpl: string, delay = 60000, key: string = \"\"){\r\n //this.show(textOrTpl,{ classname: 'bg-danger text-light', delay: delay });\r\n let opt = {severity:'error', summary: 'Error', detail: textOrTpl, life: delay};\r\n if (key){\r\n opt[\"key\"] = key;\r\n }\r\n\r\n this._messageService.add(opt);\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AgRendererComponent } from 'ag-grid-angular';\r\nimport { IAfterGuiAttachedParams, ICellRendererParams } from 'ag-grid-community';\r\nimport * as _ from 'lodash-es';\r\nimport { TimesheetBreakdownRuleService } from '../services/timesheet-breakdown-rule.service';\r\nimport { PayCategory } from '../shared/models/pay-category';\r\nimport { Position } from '../shared/models/position';\r\nimport { IRosterCode } from '../shared/models/roster-code';\r\nimport { TimesheetBreakdownRule } from '../shared/models/timesheet-breakdown-rule';\r\n\r\n\r\n@Component({\r\n selector: 'pps-position-dropdown',\r\n template: `\r\n \r\n \r\n `,\r\n styles: [\r\n ],\r\n})\r\nexport class BreakdownRuleDropdownComponent implements AgRendererComponent {\r\n private params: any;\r\n updating: boolean = false;\r\n positions: Position[] = [];\r\n selectedBreakdownRule: string;\r\n\r\n constructor() { }\r\n\r\n refresh(params: any): boolean {\r\n return false;\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n\r\n let parent = params.context.componentParent;\r\n this.selectedBreakdownRule = params.data.breakdownRule?.toString();\r\n }\r\n\r\n afterGuiAttached?(params?: IAfterGuiAttachedParams): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n onChange(evt, selectedBreakdownRule){\r\n let parent = this.params.context.componentParent;\r\n let ruleId = this.params.data.id;\r\n let foundIndex = parent.rules.findIndex(x => x.id === ruleId);\r\n if (foundIndex === -1){\r\n console.log(\"Something wrong\");\r\n return;\r\n }\r\n \r\n let selectedRule = parent.rules[foundIndex];\r\n let oldRule = this.params.data.breakdownRule;\r\n if (selectedBreakdownRule !== oldRule){\r\n let rule = _.cloneDeep(selectedRule);\r\n rule.breakdownRule = selectedBreakdownRule * 1;\r\n this.updating = true;\r\n parent.updateRule(rule, \"break-down-rule\", null, null, null, () => this.updating = false);\r\n } \r\n }\r\n}","import { Component } from '@angular/core';\r\nimport { AgRendererComponent } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { TimesheetBreakdownRule } from '../shared/models/timesheet-breakdown-rule';\r\n\r\n@Component({\r\n selector: 'pps-breakdown-rule-lock',\r\n template: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `,\r\n styles: [\r\n ],\r\n})\r\nexport class BreakdownRuleLockComponent implements AgRendererComponent {\r\n params: ICellRendererParams;\r\n lock: boolean = true;\r\n\r\n constructor(private _confirmationService: ConfirmationService){}\r\n \r\n refresh(params: any): boolean {\r\n return false;\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.lock = params.data.lock;\r\n }\r\n\r\n afterGuiAttached?(params?: import(\"ag-grid-community\").IAfterGuiAttachedParams): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n toggleLock(evt){\r\n evt.preventDefault();\r\n let currentRuleId = this.params.data.id;\r\n var foundIndex = this.params.context.componentParent.rules.findIndex(x => x.id == currentRuleId);\r\n if (foundIndex === -1){\r\n console.log(\"Weird\");\r\n return;\r\n }\r\n\r\n let oldRule = this.params.context.componentParent.rules[foundIndex];\r\n \r\n let errorMessages = [];\r\n if (oldRule.position === null){\r\n errorMessages.push(\"You must select a job position.\");\r\n }\r\n if (oldRule.rosterCode === null){\r\n errorMessages.push(\"You must select a roster code.\");\r\n }\r\n if (oldRule.payCategory === null){\r\n errorMessages.push(\"You must select a pay categoy.\");\r\n }\r\n if (oldRule.breakdownRule === null){\r\n errorMessages.push(\"You must select a hour calculation rule.\");\r\n }\r\n if (errorMessages.length > 0){\r\n this._confirmationService.confirm({\r\n header: \"You cannot lock the rule\",\r\n message: `Please fix the following errors before you lock the rule:
${errorMessages.join(\"
\")}`,\r\n icon: \"pi pi-ban text-danger\",\r\n key: \"dlg2\",\r\n acceptVisible: true,\r\n acceptLabel: \"Ok\",\r\n rejectVisible: false\r\n });\r\n return;\r\n }\r\n\r\n this.lock = !this.lock;\r\n let rule = new TimesheetBreakdownRule();\r\n rule.id = currentRuleId;\r\n rule.lock = this.lock;\r\n\r\n this.params.context.componentParent.updateRule(rule, \"lock\", null, null, null, null);\r\n }\r\n}\r\n\r\n","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { NgxSpinner } from 'ngx-spinner/lib/ngx-spinner.enum';\r\nimport { ConfirmationService, MenuItem } from 'primeng/api';\r\nimport { SubSink } from 'subsink';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { CompanyService } from '../services/company.service';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { Company, CompanyRepresentative } from '../shared/models/company';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\n\r\n@Component({\r\n selector: 'pps-client-management',\r\n templateUrl: './client-management.component.html',\r\n styles: [\r\n ],\r\n})\r\nexport class ClientManagementComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n\r\n smallScreen: boolean = false;\r\n \r\n items: MenuItem[] = [\r\n {label: \"Settings\", icon: \"pi-fw fas fa-tools\"},\r\n {label: \"Manage Client\", icon: \"pi-fw fas fa-user-cog\"},\r\n ];\r\n\r\n companies: any[] = [];\r\n companyGridHeaders: any[];\r\n selectedCompany: any = null;\r\n companyContext:any = {};\r\n private companyGridApi;\r\n companyOptions = {\r\n getRowId: param => param.data.id,\r\n defaultColDef: {\r\n enableCellChangeFlash: true\r\n }\r\n };\r\n\r\n companyReps: any[] = [];\r\n repGridHeaders: any[];\r\n selectedRep: any = null;\r\n repContext:any = {};\r\n private repGridApi;\r\n repOptions = {\r\n getRowId: param => param.data.id,\r\n defaultColDef: {\r\n enableCellChangeFlash: true\r\n }\r\n };\r\n\r\n entityLoading: boolean = false;\r\n\r\n constructor(private _companyService: CompanyService,\r\n private _confirm: ConfirmationService,\r\n private _toast: ToastService,\r\n private _spinner: NgxSpinnerService,\r\n private _util: PpsUtilityService,\r\n private breakpointObserver: BreakpointObserver) { \r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n console.log(\"smallScreen? \" + this.smallScreen);\r\n }); \r\n }\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initialize();\r\n }\r\n\r\n private initialize(){\r\n this.companyContext = { componentParent: this };\r\n this.companyGridHeaders = this.getGridHeader(\"Client Name\", this.companyNameChanged);\r\n this.loadCompanies();\r\n\r\n this.repContext = { componentParent: this };\r\n this.repGridHeaders = this.getGridHeader(\"Client Representatives\", this.companyRepChanged);\r\n }\r\n\r\n onCompanyGridReady(params) {\r\n this.companyGridApi = params.api;\r\n this.autoSelectCompany();\r\n }\r\n\r\n onRepGridReady(params){\r\n this.repGridApi = params.api;\r\n }\r\n\r\n onCompanyRowClicked(evt){\r\n let _this = evt.context.componentParent;\r\n let selectedRows = _this.companyGridApi.getSelectedRows();\r\n let selected = selectedRows.length === 1 ? selectedRows[0] : null;\r\n if (_this.selectedCompany?.id !== selected?.id){\r\n _this.selectedCompany = selected;\r\n _this.loadCompanyReps(_this.selectedCompany.id);\r\n }\r\n }\r\n\r\n onRepRowClicked(evt){\r\n let _this = evt.context.componentParent;\r\n var selectedRows = _this.repGridApi.getSelectedRows();\r\n _this.selectedRep = selectedRows.length === 1 ? selectedRows[0] : null;\r\n }\r\n\r\n onCompanyCellKeyDown(evt){\r\n this.onDelete(evt, (_this) => {\r\n _this.companyGridApi.stopEditing(true);\r\n _this.deleteCompany();\r\n });\r\n }\r\n\r\n onRepCellKeyDown(evt){\r\n this.onDelete(evt, (_this) => {\r\n _this.repGridApi.stopEditing(true);\r\n _this.deleteCompanyRep();\r\n })\r\n }\r\n\r\n loadCompanies(){\r\n this._spinner.show(\"companySpinner\");\r\n this.entityLoading = true;\r\n this.companies.length = 0;\r\n this.subs.sink = this._companyService.getAll()\r\n .subscribe(\r\n apiResponse => {\r\n if (apiResponse.succeed){\r\n this.companies = apiResponse.result;\r\n this.companyReps = [];\r\n this._toast.succeeded(`${this.companies.length} client companies loaded`);\r\n }else{\r\n this._toast.failed(`Failed to load positions: ${apiResponse.errors.join(\";\")}`);\r\n }\r\n }, \r\n _error => {\r\n console.log(_error);\r\n })\r\n .add(()=>{\r\n this._spinner.hide(\"companySpinner\");\r\n this.entityLoading = false;\r\n });\r\n }\r\n\r\n loadCompanyReps(companyId?: number){\r\n if (companyId === null){\r\n this.companyReps = [];\r\n return;\r\n }\r\n\r\n this.entityLoading = true;\r\n this.companyReps.length = 0;\r\n this.subs.sink = this._companyService.getCompanyRepresentatives(companyId)\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n this.companyReps = apiResponse.result;\r\n this.selectedRep = null;\r\n this._toast.succeeded(`${this.companyReps.length} client representatives loaded`);\r\n }else{\r\n this._toast.failed(`Failed to load representative: ${apiResponse.errors.join(\";\")}`);\r\n }\r\n }, _error => {\r\n console.log(_error);\r\n })\r\n .add(()=>{\r\n this.entityLoading = false;\r\n });\r\n }\r\n\r\n addCompany(){\r\n this._spinner.show(\"companySpinner\");\r\n\r\n let newCompany = new Company();\r\n newCompany.name = this._util.getNewName(\"New Owner\", 0, this.companies, (c, name) => c.name === name);\r\n this.subs.sink = this._companyService.add(newCompany)\r\n .subscribe(res => {\r\n this.companies.unshift(res.result);\r\n this.companyGridApi.setRowData(this.companies);\r\n let rowNode = this.companyGridApi.getRowNode(res.result.id);\r\n if (rowNode){\r\n rowNode.setSelected(true);\r\n this.selectedRep = null;\r\n this.selectedCompany = res.result;\r\n this.loadCompanyReps(res.result.id);\r\n this.companyGridApi.flashCells({rowNodes: [rowNode]});\r\n window.setTimeout( () =>{\r\n this.companyGridApi.startEditingCell({rowIndex: rowNode.rowIndex, colKey: \"name\"});\r\n }, 1000);\r\n }\r\n })\r\n .add(() => this._spinner.hide(\"companySpinner\"));\r\n }\r\n\r\n addCompanyRep(){\r\n if (this.selectedCompany === null){\r\n return;\r\n }\r\n\r\n this._spinner.show(\"companySpinner\");\r\n let newCompanyRep = new CompanyRepresentative();\r\n newCompanyRep.name = this._util.getNewName(\"New Representative\", 0, this.companyReps, (c, name) => c.name === name);\r\n this.subs.sink = this._companyService.addCompanyRepresentative(this.selectedCompany.id, newCompanyRep)\r\n .subscribe(res => {\r\n this.companyReps.unshift(res.result);\r\n this.repGridApi.setRowData(this.companyReps);\r\n let rowNode = this.repGridApi.getRowNode(res.result.id);\r\n if (rowNode){\r\n rowNode.setSelected(true);\r\n this.selectedRep = res.result;\r\n this.repGridApi.flashCells({rowNodes: [rowNode]});\r\n window.setTimeout( () =>{\r\n this.repGridApi.startEditingCell({rowIndex: rowNode.rowIndex, colKey: \"name\"});\r\n }, 1000);\r\n }\r\n })\r\n .add(() => this._spinner.hide(\"companySpinner\"));\r\n }\r\n\r\n deleteCompany(){\r\n if (this.selectedCompany === null){\r\n return;\r\n }\r\n\r\n this._confirm.confirm({\r\n header: `Delete Client`,\r\n message: `Are you sure that you want to delete client [${this.selectedCompany.name}]?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => this._deleteCompany()\r\n });\r\n }\r\n\r\n _deleteCompany(){\r\n this._spinner.show(\"companySpinner\");\r\n this.subs.sink = this._companyService.delete(this.selectedCompany.id)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n var foundIndex = this.companies.findIndex(x => x.id == this.selectedCompany.id);\r\n if (foundIndex !== -1 ){\r\n this.companies.splice(foundIndex, 1);\r\n this.companyGridApi.setRowData(this.companies);\r\n this._toast.succeeded(`[${this.selectedCompany.name}] deleted!`);\r\n this.selectedCompany = null;\r\n this.selectedRep = null;\r\n this.loadCompanyReps(null);\r\n }else{\r\n this._toast.failed(`Delete [${this.selectedCompany.name}] failed!`);\r\n }\r\n }else{\r\n this._toast.failed(`Failed to delete [${this.selectedCompany.name}]: ${res.errors.join(\"|\")}`);\r\n }\r\n })\r\n .add(() => this._spinner.hide(\"companySpinner\"));\r\n }\r\n\r\n deleteCompanyRep(){\r\n if (this.selectedRep === null){\r\n return;\r\n }\r\n\r\n this._confirm.confirm({\r\n header: `Delete Representative`,\r\n message: `Are you sure that you want to delete representative [${this.selectedRep.name}]?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => this._deleteCompanyRep()\r\n });\r\n }\r\n\r\n _deleteCompanyRep(){\r\n this._spinner.show(\"companySpinner\");\r\n this.subs.sink = this._companyService.deleteCompanyRepresentative(this.selectedRep.id)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n var foundIndex = this.companyReps.findIndex(x => x.id == this.selectedRep.id);\r\n if (foundIndex !== -1 ){\r\n this.companyReps.splice(foundIndex, 1);\r\n this.repGridApi.setRowData(this.companyReps);\r\n this._toast.succeeded(`[${this.selectedRep.name}] deleted!`);\r\n this.selectedRep = null;\r\n }else{\r\n this._toast.failed(`Delete [${this.selectedRep.name}] failed!`);\r\n }\r\n }else{\r\n this._toast.failed(`Failed to delete [${this.selectedRep.name}]: ${res.errors.join(\"|\")}`);\r\n }\r\n })\r\n .add(() => this._spinner.hide(\"companySpinner\"));\r\n }\r\n \r\n private getGridHeader(headerName, onCellValueChange){\r\n let cols = [\r\n {\r\n headerName: headerName,\r\n field:'name',\r\n filter: true,\r\n sortable: true,\r\n flex: 1,\r\n editable: true,\r\n floatingFilter: true,\r\n onCellValueChanged: onCellValueChange\r\n }\r\n ];\r\n\r\n return cols;\r\n }\r\n\r\n private companyNameChanged(params){\r\n let _this = params.context.componentParent;\r\n let company = {id: params.data.id, name: params.data.name, active: true};\r\n\r\n _this._spinner.show(\"companySpinner\");\r\n _this.subs.sink = _this._companyService.update(company)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n _this._toast.succeeded(`Client name updated`);\r\n }else{\r\n _this._toast.failed(`Client name update failed: ${res.errors.join(\"|\")}`);\r\n }\r\n })\r\n .add(() => _this._spinner.hide(\"companySpinner\"));\r\n } \r\n\r\n private companyRepChanged(params){\r\n let _this = params.context.componentParent;\r\n let companyRep = {id: params.data.id, name: params.data.name, active: true};\r\n let companyId = _this.selectedCompany.Id;\r\n\r\n _this._spinner.show(\"companySpinner\");\r\n _this.subs.sink = _this._companyService.updateCompanyRepresentative(companyId, companyRep)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n _this._toast.succeeded(`Representative name updated`);\r\n }else{\r\n _this._toast.failed(`Representative name update failed: ${res.errors.join(\"|\")}`);\r\n }\r\n })\r\n .add(() => _this._spinner.hide(\"companySpinner\"));\r\n } \r\n\r\n // select the previous selected or the first company\r\n private autoSelectCompany(){\r\n if (this.companies.length > 0 && this.companyGridApi){\r\n this.selectedCompany = this.selectedCompany || this.companies[0];\r\n let rowNode = this.companyGridApi.getRowNode(this.selectedCompany.id);\r\n if (rowNode){\r\n rowNode.setSelected(true, true);\r\n this.loadCompanyReps(this.selectedCompany.id);\r\n }\r\n }\r\n }\r\n\r\n private onDelete(evt, action){\r\n if ( evt.event.key === \"Delete\"){\r\n if (evt.event.path[0].nodeName === \"DIV\"){\r\n action(this);\r\n }\r\n }\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n \r\n
\r\n 0\"\r\n style=\"width: 100%; height:100%;\"\r\n class=\"ag-theme-alpine\"\r\n rowSelection=\"single\"\r\n [gridOptions]=\"companyOptions\"\r\n [context]=\"companyContext\"\r\n [rowData]=\"companies\"\r\n [columnDefs]=\"companyGridHeaders\"\r\n [enterMovesDown]=\"true\"\r\n [enterMovesDownAfterEdit]=\"true\"\r\n (gridReady)=\"onCompanyGridReady($event)\"\r\n (rowClicked)=\"onCompanyRowClicked($event)\"\r\n (cellKeyDown)=\"onCompanyCellKeyDown($event)\"\r\n >\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AgRendererComponent } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\n\r\n@Component({\r\n selector: 'pps-delete-action',\r\n template: `\r\n \r\n `,\r\n styles: [\r\n ],\r\n})\r\nexport class DeleteActionComponent implements AgRendererComponent {\r\n params: ICellRendererParams;\r\n\r\n refresh(params: any): boolean {\r\n return false;\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n }\r\n\r\n afterGuiAttached?(params?: import(\"ag-grid-community\").IAfterGuiAttachedParams): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n delete(evt){\r\n evt.preventDefault();\r\n if (this.params.context.componentParent.delete){\r\n this.params.context.componentParent.delete(this.params.data);\r\n }\r\n }\r\n\r\n getTooltip(){\r\n if (this.params.context.componentParent.getActionComponentTooltip){\r\n return this.params.context.componentParent.getActionComponentTooltip(this.params.data);\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n getIcon(){\r\n if (this.params.context.componentParent.getActionComponentIcon){\r\n return this.params.context.componentParent.getActionComponentIcon(this.params.data);\r\n }\r\n\r\n return \"fas fa-trash-alt fa-lg\";\r\n }\r\n\r\n showActionComponent(){\r\n if (this.params.context.componentParent.showActionComponent){\r\n return this.params.context.componentParent.showActionComponent(this.params.data);\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AgRendererComponent } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\n\r\n@Component({\r\n selector: 'pps-entity-action',\r\n template: `\r\n \r\n `,\r\n styles: [\r\n ]\r\n})\r\nexport class EntityActionComponent implements AgRendererComponent {\r\n params: ICellRendererParams;\r\n\r\n refresh(params: any): boolean {\r\n return false;\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n }\r\n\r\n afterGuiAttached?(params?: import(\"ag-grid-community\").IAfterGuiAttachedParams): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n deleteEntity(evt){\r\n evt.preventDefault();\r\n this.params.context.componentParent.deleteEntity(this.params.data);\r\n }\r\n\r\n isPayCategory(): boolean{\r\n return this.params.context.componentParent.isPayCategory();\r\n }\r\n}\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\nimport * as _ from 'lodash-es';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { IEntity } from '../shared/models/entity';\r\n\r\n@Component({\r\n selector: 'pps-entity-form',\r\n templateUrl: './entity-form.component.html',\r\n styles: []\r\n})\r\nexport class EntityFormComponent implements OnInit {\r\n entity: IEntity = null;\r\n categoryName: string = \"\";\r\n\r\n constructor(\r\n private _dialogRef: DynamicDialogRef,\r\n private _dialogConfig: DynamicDialogConfig) { }\r\n\r\n ngOnInit(): void {\r\n this.setData(this._dialogConfig.data.entity, this._dialogConfig.data.categoryName);\r\n }\r\n\r\n setData(entity: IEntity, categoryName: string){\r\n this.entity = _.cloneDeep(entity);\r\n this.categoryName = categoryName;\r\n } \r\n\r\n save(form: NgForm){\r\n console.log(form);\r\n if (form.invalid){\r\n return false;\r\n }\r\n\r\n this._dialogRef.close(this.entity);\r\n }\r\n\r\n cancel(){\r\n this._dialogRef.close();\r\n }\r\n}\r\n","
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {{categoryName}} name is required!\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AgRendererComponent } from 'ag-grid-angular';\r\nimport { IAfterGuiAttachedParams, ICellRendererParams } from 'ag-grid-community';\r\nimport * as _ from 'lodash-es';\r\n\r\n@Component({\r\n selector: 'pps-grid-checkbox',\r\n template: `\r\n \r\n `,\r\n styles: [\r\n ],\r\n})\r\nexport class GridCheckboxComponent implements AgRendererComponent {\r\n params: any;\r\n checked: boolean;\r\n checkValue: string;\r\n constructor() { }\r\n\r\n refresh(params: any): boolean {\r\n return false;\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n \r\n if (this.params.column.colId === this.params[\"checkboxValueColId\"]){\r\n this.checked = this.params.data[this.params[\"checkboxValueColId\"]];\r\n }\r\n }\r\n\r\n afterGuiAttached?(params?: IAfterGuiAttachedParams): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n checkedHandler(event) {\r\n let checked = event.target.checked;\r\n if (this.params.column.colId === this.params[\"checkboxValueColId\"]){\r\n this.params.data[this.params[\"checkboxValueColId\"]] = checked;\r\n }\r\n\r\n if (this.params.context.componentParent.updateData){\r\n this.params.context.componentParent.updateData(this.params.data);\r\n }\r\n } \r\n}","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { isValid} from 'date-fns';\r\nimport * as _ from 'lodash-es';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ConfirmationService, MenuItem } from 'primeng/api';\r\nimport { SubSink } from 'subsink';\r\nimport { HolidayService } from '../services/holiday.service';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { IHoliday } from '../shared/models/holiday';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\nimport { DeleteActionComponent } from './delete-action.component';\r\nimport { IEmployer, IEmployerViewModel } from '../shared/models/employer';\r\nimport { EmployerService } from '../services/employer.service';\r\nimport { GridCheckboxComponent } from './grid-checkbox.component';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { EntityFormComponent } from './entity-form.component';\r\n\r\n@Component({\r\n selector: 'pps-manage-employer',\r\n templateUrl: './manage-employer.component.html',\r\n styles: [\r\n ],\r\n})\r\nexport class ManageEmployerComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n\r\n smallScreen: boolean = false;\r\n spinnerName: string = \"dataSpinner\";\r\n\r\n items: MenuItem[] = [\r\n {label: \"Settings\", icon: \"pi-fw fas fa-tools\"}, \r\n {label: \"Manage Company\", icon: \"pi-fw fas fa-city\"},\r\n ];\r\n\r\n oldEmployers: IEmployerViewModel[] = [];\r\n employers: IEmployerViewModel[] = [];\r\n gridHeaders: any[];\r\n context:any = {};\r\n entityLoading: boolean = false;\r\n gridOptions: any = {\r\n getRowId: param => param.data.id,\r\n defaultColDef:{\r\n enableCellChangeFlash: true,\r\n resizable: true\r\n }\r\n };\r\n\r\n private gridApi;\r\n\r\n constructor(private _employerService: EmployerService,\r\n private _spinner: NgxSpinnerService,\r\n private _toast: ToastService,\r\n private _dialog: DialogService,\r\n private _util: PpsUtilityService,\r\n private breakpointObserver: BreakpointObserver,) { \r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n }\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initialize();\r\n }\r\n\r\n private initialize(){\r\n this.context = { componentParent: this };\r\n this.gridHeaders = this.getColumnDefs();\r\n this.loadData();\r\n }\r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n }\r\n\r\n addEmployer(){\r\n let employer: IEmployer = {\r\n id: 0,\r\n employerName: \"\",\r\n active: true\r\n };\r\n\r\n let dialogOption: any = {\r\n backdrop: 'static',\r\n size: \"550\"\r\n };\r\n\r\n let dialog = this._dialog.open(EntityFormComponent, {\r\n header: `Add Company`,\r\n styleClass: \"size-sm\",\r\n data: {\r\n entity: employer,\r\n categoryName: \"Company\"\r\n },\r\n draggable: true\r\n });\r\n\r\n this.subs.sink = dialog.onClose.subscribe(entity => {\r\n if (entity)\r\n {\r\n entity.employerName = entity.name;\r\n this.addEmployerHelper(entity);\r\n }},\r\n reason => {\r\n console.log(reason);\r\n }\r\n );\r\n }\r\n\r\n private addEmployerHelper(employer: IEmployer){\r\n this._spinner.show(this.spinnerName);\r\n\r\n this.subs.sink = this._employerService.add(employer)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.employers.unshift(res.result);\r\n this.oldEmployers = _.cloneDeep(this.employers);\r\n this.gridApi.setRowData(this.employers);\r\n let rowNode = this.gridApi.getRowNode(res.result.id);\r\n if (rowNode){\r\n this.gridApi.flashCells({rowNodes: [rowNode]});\r\n rowNode.setSelected(true);\r\n }\r\n }\r\n }, _error => {\r\n console.log(_error);\r\n })\r\n .add(()=>{\r\n this._spinner.hide(this.spinnerName);\r\n this.entityLoading = false;\r\n });\r\n }\r\n\r\n loadData(){\r\n this._spinner.show(this.spinnerName);\r\n this.entityLoading = true;\r\n this.employers.length = 0;\r\n this.subs.sink = this._employerService.getAll()\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n this.employers = apiResponse.result;\r\n this.oldEmployers = _.cloneDeep(this.employers);\r\n this._toast.succeeded(`${this.employers.length} records loaded`);\r\n }else{\r\n this._toast.failed(`Failed to load employer data: ${apiResponse.errors.join(\";\")}`);\r\n }\r\n }, _error => {\r\n console.log(_error);\r\n })\r\n .add(()=>{\r\n this._spinner.hide(this.spinnerName);\r\n this.entityLoading = false;\r\n });\r\n }\r\n\r\n updateData(employer: IEmployerViewModel){\r\n console.log(employer);\r\n this._spinner.show(this.spinnerName);\r\n this.subs.sink = this._employerService.update(employer)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this._toast.succeeded(`Company updated`);\r\n employer = res.result;\r\n \r\n let empIndex = this.employers.findIndex(e=>e.id === employer.id);\r\n if (empIndex !== -1){\r\n this.employers[empIndex] = employer;\r\n }\r\n\r\n this.gridApi.setRowData(this.employers);\r\n this.oldEmployers = _.cloneDeep(this.employers);\r\n }else{\r\n this._toast.failed(`Company update failed: ${res.errors.join(\"|\")}`);\r\n }\r\n })\r\n .add(() => this._spinner.hide(this.spinnerName));\r\n }\r\n\r\n private getColumnDefs(){\r\n let cols = [\r\n {\r\n colId: \"employerName\",\r\n headerName: 'Company Name',\r\n field:'employerName',\r\n filter: true,\r\n floatingFilter: true,\r\n width: 500,\r\n editable: true,\r\n sortable: true,\r\n onCellValueChanged: this.dataChanged,\r\n headerClass: \"ag-ext-header-align-left\"\r\n },\r\n {\r\n colId: \"active\",\r\n headerName: \"Active\",\r\n field: \"active\",\r\n sortable: true,\r\n width: 200,\r\n cellRenderer: GridCheckboxComponent,\r\n cellRendererParams: {\r\n checkboxValueColId: \"active\"\r\n },\r\n cellStyle: {textAlign:\"center\"}\r\n },\r\n {\r\n colId: \"addBy\",\r\n headerName: 'Added By',\r\n field:'addBy',\r\n filter: true,\r\n floatingFilter: true,\r\n width: 150,\r\n editable: false,\r\n sortable: true,\r\n onCellValueChanged: this.dataChanged,\r\n headerClass: \"ag-ext-header-align-left\"\r\n },\r\n {\r\n headerName: 'Date Added',\r\n field:'addDate',\r\n filter: true,\r\n floatingFilter: true,\r\n width: 150,\r\n editable: false,\r\n sortable: true,\r\n comparator: (date1, date2) => this._util.dateComparator(date1, date2),\r\n cellRenderer: this.getDateValue\r\n },\r\n ];\r\n\r\n return cols;\r\n }\r\n\r\n private getDateValue(params){\r\n if (params.data[params.colDef.field]){\r\n let value = params.context.componentParent._util.getDateTimeString(params.data[params.colDef.field]);\r\n return value;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n private dataChanged(params){\r\n let _this = params.context.componentParent;\r\n let employer: IEmployer = params.data;\r\n\r\n _this.updateData(employer);\r\n }\r\n}\r\n","\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n

Loading company data ...

\r\n
\r\n\r\n 0\"\r\n style=\"width: 100%; height:100%;\"\r\n class=\"ag-theme-alpine\"\r\n rowSelection=\"single\"\r\n [gridOptions]=\"gridOptions\"\r\n [context]=\"context\"\r\n [rowData]=\"employers\"\r\n [columnDefs]=\"gridHeaders\"\r\n [enterMovesDown]=\"true\"\r\n [enterMovesDownAfterEdit]=\"true\"\r\n (gridReady)=\"onGridReady($event)\">\r\n
\r\n
\r\n","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { isValid} from 'date-fns';\r\nimport * as _ from 'lodash-es';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ConfirmationService, MenuItem } from 'primeng/api';\r\nimport { SubSink } from 'subsink';\r\nimport { HolidayService } from '../services/holiday.service';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { IHoliday } from '../shared/models/holiday';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\nimport { DeleteActionComponent } from './delete-action.component';\r\n\r\n@Component({\r\n selector: 'pps-manage-holiday',\r\n templateUrl: './manage-holiday.component.html',\r\n styles: [\r\n ],\r\n})\r\nexport class ManageHolidayComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n\r\n smallScreen: boolean = false;\r\n spinnerName: string = \"dataSpinner\";\r\n\r\n items: MenuItem[] = [\r\n {label: \"Settings\", icon: \"pi-fw fas fa-tools\"}, \r\n {label: \"Manage Holiday\", icon: \"pi-fw fas fa-umbrella-beach\"},\r\n ];\r\n\r\n oldHolidays : IHoliday[] = [];\r\n holidays: IHoliday[] = [];\r\n gridHeaders: any[];\r\n context:any = {};\r\n entityLoading: boolean = false;\r\n gridOptions: any = {\r\n getRowId: param => param.data.id,\r\n defaultColDef:{\r\n enableCellChangeFlash: true,\r\n resizable: true\r\n }\r\n };\r\n\r\n private gridApi;\r\n\r\n constructor(private _holidayService: HolidayService,\r\n private _spinner: NgxSpinnerService,\r\n private _toast: ToastService,\r\n private _confirm: ConfirmationService,\r\n private _util: PpsUtilityService,\r\n private breakpointObserver: BreakpointObserver,) { \r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n }\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initialize();\r\n }\r\n\r\n private initialize(){\r\n this.context = { componentParent: this };\r\n this.gridHeaders = this.getColumnDefs();\r\n this.loadData();\r\n }\r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n } \r\n\r\n addHoliday(){\r\n let holiday: IHoliday = {\r\n id: 0,\r\n day: new Date(),\r\n holidayName: \"Holiday name\"\r\n };\r\n\r\n this._spinner.show(this.spinnerName);\r\n\r\n this.subs.sink = this._holidayService.add(holiday)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.holidays.unshift(res.result);\r\n this.oldHolidays = _.cloneDeep(this.holidays);\r\n this.gridApi.setRowData(this.holidays);\r\n let rowNode = this.gridApi.getRowNode(res.result.id);\r\n if (rowNode){\r\n this.gridApi.flashCells({rowNodes: [rowNode]});\r\n rowNode.setSelected(true);\r\n window.setTimeout( () =>{\r\n this.gridApi.startEditingCell({rowIndex: rowNode.rowIndex, colKey: \"day\"});\r\n }, 500);\r\n }\r\n }\r\n }, _error => {\r\n console.log(_error);\r\n })\r\n .add(()=>{\r\n this._spinner.hide(this.spinnerName);\r\n this.entityLoading = false;\r\n });\r\n }\r\n\r\n loadData(){\r\n this._spinner.show(this.spinnerName);\r\n this.entityLoading = true;\r\n this.holidays.length = 0;\r\n this.subs.sink = this._holidayService.getAll()\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n this.holidays = apiResponse.result;\r\n this.oldHolidays = _.cloneDeep(this.holidays);\r\n this._toast.succeeded(`${this.holidays.length} records loaded`);\r\n }else{\r\n this._toast.failed(`Failed to load holiday data: ${apiResponse.errors.join(\";\")}`);\r\n }\r\n }, _error => {\r\n console.log(_error);\r\n })\r\n .add(()=>{\r\n this._spinner.hide(this.spinnerName);\r\n this.entityLoading = false;\r\n });\r\n }\r\n\r\n delete(holiday: IHoliday){\r\n if (holiday === null){\r\n return;\r\n }\r\n\r\n this._confirm.confirm({\r\n header: `Delete Holiday`,\r\n message: `Are you sure that you want to delete [${holiday.holidayName}]?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => this.deleteHelper(holiday)\r\n });\r\n }\r\n\r\n deleteHelper(holiday: IHoliday){\r\n this.subs.sink = this._holidayService.delete(holiday.id)\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n var foundIndex = this.holidays.findIndex(x => x.id == holiday.id);\r\n if (foundIndex !== -1 ){\r\n this.holidays.splice(foundIndex, 1);\r\n this.oldHolidays = _.cloneDeep(this.holidays);\r\n this.gridApi.setRowData(this.holidays);\r\n this._toast.succeeded(`[${holiday.holidayName}] deleted!`);\r\n }else{\r\n this._toast.failed(`Delete [${holiday.holidayName}] failed!`);\r\n }\r\n }else{\r\n this._toast.failed(`Failed to delete [${holiday.holidayName}]: ${apiResponse.errors.join(\"|\")}`);\r\n }\r\n });\r\n }\r\n\r\n private getActionComponentTooltip(holiday: IHoliday):string{\r\n return \"Click to delete holiday: \" + holiday.holidayName;\r\n } \r\n\r\n update(holiday: IHoliday){\r\n this._spinner.show(this.spinnerName);\r\n this.subs.sink = this._holidayService.update(holiday)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this._toast.succeeded(`Holiday updated`);\r\n holiday.day = res.result.day;\r\n holiday.holidayName = res.result.holidayName;\r\n this.oldHolidays = _.cloneDeep(this.holidays);\r\n }else{\r\n this._toast.failed(`Holiday update failed: ${res.errors.join(\"|\")}`);\r\n }\r\n })\r\n .add(() => this._spinner.hide(this.spinnerName));\r\n }\r\n\r\n private getColumnDefs(){\r\n let cols = [\r\n {\r\n headerName: \"\",\r\n field: \"action\",\r\n cellRenderer: DeleteActionComponent,\r\n resizable: false,\r\n width: 50,\r\n hide: false,\r\n filter: false, \r\n suppressMovable: true,\r\n cellStyle: {textAlign:\"center\"}\r\n },\r\n {\r\n headerName: 'Day',\r\n field:'day',\r\n filter: true,\r\n floatingFilter: true,\r\n width: 150,\r\n editable: true,\r\n sortable: true,\r\n comparator: (date1, date2) => this._util.dateComparator(date1, date2),\r\n valueGetter: this.getDateValue,\r\n onCellValueChanged: this.dataChanged\r\n },\r\n {\r\n colId: \"holidayName\",\r\n headerName: 'HolidayName',\r\n field:'holidayName',\r\n filter: true,\r\n floatingFilter: true,\r\n width: 500,\r\n editable: true,\r\n sortable: true,\r\n onCellValueChanged: this.dataChanged,\r\n headerClass: \"ag-ext-header-align-left\"\r\n }\r\n ];\r\n\r\n return cols;\r\n }\r\n\r\n private getDateValue(params){\r\n let currentHoliday = params.data;\r\n let util = params.context.componentParent._util;\r\n let dayValue = currentHoliday[params.colDef.field];\r\n\r\n if (typeof dayValue === \"string\"){\r\n dayValue = util.getDate(dayValue);\r\n if (!isValid(dayValue)){\r\n dayValue = params.context.componentParent.getHoliday(currentHoliday.id)?.day;\r\n }\r\n }\r\n\r\n let dateValue = util.getDateString(dayValue);\r\n return dateValue;\r\n }\r\n\r\n private dataChanged(params){\r\n let _this = params.context.componentParent;\r\n let data = params.data;\r\n let util = _this._util;\r\n let dayValue = data[params.colDef.field];\r\n\r\n if (params.colDef.field === \"day\" && typeof dayValue === \"string\"){\r\n dayValue = util.getDate(dayValue);\r\n if (!isValid(dayValue)){\r\n _this._toast.failed(`The value (${data[params.colDef.field]}) is not a valid date format. Valid date format: dd/mm/yyyy`, 10000);\r\n\r\n let rowNode = _this.gridApi.getRowNode(data.id);\r\n if (rowNode){\r\n _this.gridApi.flashCells({rowNodes: [rowNode]});\r\n window.setTimeout( () =>{\r\n rowNode.setSelected(true);\r\n _this.gridApi.startEditingCell({rowIndex: rowNode.rowIndex, colKey: \"day\"});\r\n }, 500);\r\n }\r\n return;\r\n }else{\r\n data.day = dayValue;\r\n }\r\n }\r\n\r\n _this.update(data);\r\n }\r\n\r\n private getHoliday(id: number){\r\n let result = this.oldHolidays.filter(h => h.id === id);\r\n \r\n if (result.length >= 0){\r\n return result[0];\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n

Loading holidays...

\r\n
\r\n\r\n 0\"\r\n style=\"width: 100%; height:100%;\"\r\n class=\"ag-theme-alpine\"\r\n rowSelection=\"single\"\r\n [gridOptions]=\"gridOptions\"\r\n [context]=\"context\"\r\n [rowData]=\"holidays\"\r\n [columnDefs]=\"gridHeaders\"\r\n [enterMovesDown]=\"true\"\r\n [enterMovesDownAfterEdit]=\"true\"\r\n (gridReady)=\"onGridReady($event)\">\r\n
\r\n
\r\n","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ConfirmationService, MenuItem } from 'primeng/api';\r\nimport { SubSink } from 'subsink';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { ProjectColumnService } from '../services/project-column.service';\r\nimport { ResourceService } from '../services/resource.service';\r\nimport { IProjectColumn } from '../shared/models/project-column';\r\nimport { Resource } from '../shared/models/resource';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\nimport { DeleteActionComponent } from './delete-action.component';\r\n\r\n@Component({\r\n selector: 'pps-manage-project-columns',\r\n templateUrl: './manage-project-columns.component.html',\r\n styles: [\r\n ],\r\n})\r\nexport class ManageProjectColumnsComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n\r\n smallScreen: boolean = false;\r\n spinnerName: string = \"dataSpinner\";\r\n\r\n items: MenuItem[] = [\r\n {label: \"Settings\", icon: \"pi-fw fas fa-tools\"}, \r\n {label: \"Manage Project Columns\", icon: \"pi-fw fas fa-columns\"},\r\n ];\r\n \r\n projectColumns: IProjectColumn[] = [];\r\n gridHeaders: any[];\r\n context:any = {};\r\n entityLoading: boolean = false;\r\n gridOptions: any = {\r\n getRowId: param => param.data.id,\r\n defaultColDef:{\r\n enableCellChangeFlash: true\r\n }\r\n };\r\n\r\n private gridApi;\r\n private gridColumnApi;\r\n\r\n constructor(private _projectColumnService: ProjectColumnService,\r\n private _confirm: ConfirmationService,\r\n private _spinner: NgxSpinnerService,\r\n private _toast: ToastService,\r\n private breakpointObserver: BreakpointObserver) { \r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n }\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initialize();\r\n }\r\n\r\n private initialize(){\r\n this.context = { componentParent: this };\r\n this.gridHeaders = this.getColumnDefs();\r\n this.loadData();\r\n }\r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n } \r\n\r\n loadData(){\r\n this._spinner.show(this.spinnerName);\r\n this.entityLoading = true;\r\n this.projectColumns.length = 0;\r\n this.subs.sink = this._projectColumnService.getAll()\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n this.projectColumns = apiResponse.result;\r\n this._toast.succeeded(`${this.projectColumns.length} columns loaded`);\r\n }else{\r\n this._toast.failed(`Failed to load project columns: ${apiResponse.errors.join(\";\")}`);\r\n }\r\n }, _error => {\r\n console.log(_error);\r\n })\r\n .add(()=>{\r\n this._spinner.hide(this.spinnerName);\r\n this.entityLoading = false;\r\n });\r\n }\r\n\r\n private getColumnDefs(){\r\n let cols = [\r\n {\r\n headerName: 'Display Order',\r\n field:'sortNo',\r\n colId: 'sortNo',\r\n width: 120,\r\n editable: true,\r\n sortable: true,\r\n onCellValueChanged: this.projectColumnChanged,\r\n cellStyle: {textAlign:\"center\"}\r\n },\r\n {\r\n headerName: 'Project Column',\r\n field:'columnName',\r\n filter: false,\r\n width: 300,\r\n editable: false\r\n },\r\n {\r\n headerName: 'Description',\r\n field:'description',\r\n filter: false,\r\n flex: 1,\r\n editable: false\r\n }\r\n ];\r\n\r\n if (this.smallScreen){\r\n cols[cols.length-1].flex = 0;\r\n cols[cols.length-1].width = 500;\r\n }\r\n\r\n return cols;\r\n }\r\n\r\n private projectColumnChanged(params){\r\n let _this = params.context.componentParent;\r\n let projectColumn = params.data;\r\n let shouldReload = params.colDef.field === \"sortNo\" && +params.newValue !== +params.oldValue;\r\n\r\n if (params.colDef.field === \"orderNo\" && isNaN(projectColumn.orderNo)){\r\n projectColumn.orderNo = 0;\r\n }\r\n\r\n _this._spinner.show(_this.spinnerName);\r\n projectColumn.orderNo = +projectColumn.orderNo;\r\n _this.subs.sink = _this._projectColumnService.update(projectColumn)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n _this._toast.succeeded(`Sort No updated successfully`);\r\n if (shouldReload){\r\n _this.loadData();\r\n }\r\n }else{\r\n _this._toast.failed(`Update project column failed: ${res.errors.join(\"|\")}`);\r\n }\r\n })\r\n .add(() => _this._spinner.hide(_this.spinnerName));\r\n }\r\n\r\n private sortBySortNo(){\r\n this.gridColumnApi.applyColumnState({\r\n state: [{\r\n colId: \"sortNo\",\r\n sort: \"desc\",\r\n }]\r\n });\r\n\r\n this.gridColumnApi.applyColumnState({\r\n state: [{\r\n colId: \"sortNo\",\r\n sort: \"asc\",\r\n }]\r\n });\r\n }\r\n}\r\n","\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n

Loading project columns...

\r\n
\r\n\r\n
\r\n \r\n Please double click on the number of Display Order column to change project column display order. The column with lower number will be displayed first.\r\n
\r\n\r\n 0\"\r\n style=\"width: 100%; height:100%;\"\r\n class=\"ag-theme-alpine\"\r\n rowSelection=\"single\"\r\n [gridOptions]=\"gridOptions\"\r\n [context]=\"context\"\r\n [rowData]=\"projectColumns\"\r\n [columnDefs]=\"gridHeaders\"\r\n [enterMovesDown]=\"true\"\r\n [enterMovesDownAfterEdit]=\"true\"\r\n (gridReady)=\"onGridReady($event)\">\r\n
\r\n
\r\n","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ConfirmationService, MenuItem } from 'primeng/api';\r\nimport { SubSink } from 'subsink';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { ResourceService } from '../services/resource.service';\r\nimport { Resource } from '../shared/models/resource';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\nimport { DeleteActionComponent } from './delete-action.component';\r\n\r\n@Component({\r\n selector: 'pps-manage-resource',\r\n templateUrl: './manage-resource.component.html',\r\n styles: [\r\n ],\r\n})\r\nexport class ManageResourceComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n\r\n smallScreen: boolean = false;\r\n spinnerName: string = \"dataSpinner\";\r\n\r\n items: MenuItem[] = [\r\n {label: \"Settings\", icon: \"pi-fw fas fa-tools\"}, \r\n {label: \"Manage Links\", icon: \"pi pi-fw pi-link\"},\r\n ];\r\n \r\n resources: Resource[] = [];\r\n gridHeaders: any[];\r\n context:any = {};\r\n entityLoading: boolean = false;\r\n gridOptions: any = {\r\n getRowId: param => param.data.id,\r\n defaultColDef:{\r\n enableCellChangeFlash: true\r\n }\r\n };\r\n\r\n private gridApi;\r\n\r\n constructor(private _resourceService: ResourceService,\r\n private _confirm: ConfirmationService,\r\n private _spinner: NgxSpinnerService,\r\n private _toast: ToastService,\r\n private breakpointObserver: BreakpointObserver) { \r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n }\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initialize();\r\n }\r\n\r\n private initialize(){\r\n this.context = { componentParent: this };\r\n this.gridHeaders = this.getColumnDefs();\r\n this.loadData();\r\n }\r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n } \r\n\r\n addNewLink(){\r\n let maxOrder = this.resources.reduce((a,b) => a.orderNo > b.orderNo ? a : b).orderNo;\r\n let newLink: Resource = {\r\n name: \"New link\",\r\n url: \"https://\",\r\n active:true,\r\n orderNo: maxOrder + 1\r\n };\r\n\r\n this._spinner.show(this.spinnerName);\r\n\r\n this.subs.sink = this._resourceService.add(newLink)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.resources.push(res.result);\r\n this.gridApi.setRowData(this.resources);\r\n let rowNode = this.gridApi.getRowNode(res.result.id);\r\n if (rowNode){\r\n this.gridApi.flashCells({rowNodes: [rowNode]});\r\n rowNode.setSelected(true);\r\n }\r\n }\r\n }, _error => {\r\n console.log(_error);\r\n })\r\n .add(()=>{\r\n this._spinner.hide(this.spinnerName);\r\n this.entityLoading = false;\r\n });\r\n }\r\n\r\n loadData(){\r\n this._spinner.show(this.spinnerName);\r\n this.entityLoading = true;\r\n this.resources.length = 0;\r\n this.subs.sink = this._resourceService.getAll()\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n this.resources = apiResponse.result;\r\n this._toast.succeeded(`${this.resources.length} links loaded`);\r\n }else{\r\n this._toast.failed(`Failed to load links: ${apiResponse.errors.join(\";\")}`);\r\n }\r\n }, _error => {\r\n console.log(_error);\r\n })\r\n .add(()=>{\r\n this._spinner.hide(this.spinnerName);\r\n this.entityLoading = false;\r\n });\r\n }\r\n delete(resource: Resource){\r\n if (resource === null){\r\n return;\r\n }\r\n\r\n this._confirm.confirm({\r\n header: `Delete Roster Code`,\r\n message: `Are you sure that you want to delete [${resource.name}]?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => this.deleteHelper(resource)\r\n });\r\n }\r\n\r\n\r\n deleteHelper(resource: Resource){\r\n this.subs.sink = this._resourceService.delete(resource.id)\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n var foundIndex = this.resources.findIndex(x => x.id == resource.id);\r\n if (foundIndex !== -1 ){\r\n this.resources.splice(foundIndex, 1);\r\n this.gridApi.setRowData(this.resources);\r\n this._toast.succeeded(`[${resource.name}] deleted!`);\r\n }else{\r\n this._toast.failed(`Delete [${resource.name}] failed!`);\r\n }\r\n }else{\r\n this._toast.failed(`Failed to delete [${resource.name}]: ${apiResponse.errors.join(\"|\")}`);\r\n }\r\n });\r\n }\r\n\r\n private getActionComponentTooltip(resource: Resource):string{\r\n return \"Click to delete link: \" + resource.name;\r\n } \r\n\r\n private getColumnDefs(){\r\n let cols = [\r\n {\r\n headerName: \"\",\r\n field: \"action\",\r\n cellRenderer: DeleteActionComponent,\r\n width: 50,\r\n hide: false,\r\n filter: false, \r\n suppressMovable: true,\r\n cellStyle: {textAlign:\"center\"}\r\n },\r\n {\r\n headerName: 'Order No',\r\n field:'orderNo',\r\n width: 60,\r\n editable: true,\r\n onCellValueChanged: this.resourceChanged,\r\n cellStyle: {textAlign:\"center\"}\r\n },\r\n {\r\n headerName: 'Name',\r\n field:'name',\r\n filter: false,\r\n width: 300,\r\n editable: true,\r\n onCellValueChanged: this.resourceChanged\r\n },\r\n {\r\n headerName: 'Link Address',\r\n field:'url',\r\n filter: false,\r\n flex: 1,\r\n editable: true,\r\n onCellValueChanged: this.resourceChanged\r\n }\r\n ];\r\n\r\n if (this.smallScreen){\r\n cols[cols.length-1].flex = 0;\r\n cols[cols.length-1].width = 500;\r\n }\r\n\r\n return cols;\r\n }\r\n\r\n private resourceChanged(params){\r\n let _this = params.context.componentParent;\r\n let resource = params.data;\r\n let shouldReload = params.colDef.field === \"orderNo\" && +params.newValue !== +params.oldValue;\r\n\r\n if (params.colDef.field === \"orderNo\" && isNaN(resource.orderNo)){\r\n resource.orderNo = 0;\r\n }\r\n\r\n _this._spinner.show(_this.spinnerName);\r\n resource.orderNo = +resource.orderNo;\r\n _this.subs.sink = _this._resourceService.update(resource)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n _this._toast.succeeded(`Link updated`);\r\n if (shouldReload){\r\n _this.loadData();\r\n }\r\n }else{\r\n _this._toast.failed(`Link update failed: ${res.errors.join(\"|\")}`);\r\n }\r\n })\r\n .add(() => _this._spinner.hide(_this.spinnerName));\r\n }\r\n}\r\n","\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n

Loading links...

\r\n
\r\n\r\n 0\"\r\n style=\"width: 100%; height:100%;\"\r\n class=\"ag-theme-alpine\"\r\n rowSelection=\"single\"\r\n [gridOptions]=\"gridOptions\"\r\n [context]=\"context\"\r\n [rowData]=\"resources\"\r\n [columnDefs]=\"gridHeaders\"\r\n [enterMovesDown]=\"true\"\r\n [enterMovesDownAfterEdit]=\"true\"\r\n (gridReady)=\"onGridReady($event)\">\r\n
\r\n
\r\n","import { Component, Input, ViewEncapsulation } from \"@angular/core\";\r\nimport * as _ from \"lodash-es\";\r\nimport { SubSink } from \"subsink\";\r\nimport { RosterCodeSettingService } from \"../services/roster-code-setting.service\";\r\nimport { IRosterCode } from \"../shared/models/roster-code\";\r\nimport { IRosterCodeSetting } from \"../shared/models/roster-code-setting\";\r\nimport { ToastService } from \"../shared/toast/toast.service\";\r\n\r\n@Component({\r\n selector: \"pps-manage-roster-code-settings\",\r\n templateUrl: \"./manage-roster-code-settings.component.html\",\r\n styles:[`\r\n .roster-code-setting{\r\n }\r\n\r\n .roster-code-setting .roster-code-setting-preview{\r\n border: 1px solid #cccccc;\r\n }\r\n\r\n .roster-code-setting .p-colorpicker-preview{\r\n min-width: 50px;\r\n }\r\n `],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ManageRosterCodeSettingsComponent{\r\n private subs = new SubSink();\r\n\r\n @Input() rosterCodeSettings: IRosterCodeSetting[] = [];\r\n\r\n presetColors = [\r\n \"#5B9BD5\", \"#CCCCFF\", \"FF9900\", \"#0066FF\", \"#9933FF\",\r\n \"#FF0066\", \"#00FFFF\", \"#617099\", \"#28F0A0\", \"#FEC2F1\", \r\n \"#DC4264\", \"#FF66FF\", \"#FFFF00\", \"#92D050\"\r\n ];\r\n changeTracking: {\r\n [id: string]:{\r\n rosterCodeId: number,\r\n rosterCodeSettingId: number,\r\n index: number,\r\n subIndex: number,\r\n oldValue: {\r\n foregroundColor: string,\r\n backgroundColor: string\r\n },\r\n newValue: {\r\n foregroundColor: string,\r\n backgroundColor: string\r\n }\r\n }\r\n } = {};\r\n\r\n rosterCodes: [{\r\n rosterCodeSettingId: number,\r\n rosterCode: IRosterCode,\r\n description: string,\r\n foregroundColor: string,\r\n backgroundColor: string\r\n }[]] = [[]];\r\n\r\n constructor(\r\n private _rosterCodeSettingService: RosterCodeSettingService,\r\n private _toast: ToastService\r\n ){\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadData();\r\n } \r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n loadData(){\r\n this.rosterCodes = [[]];\r\n this.changeTracking = {};\r\n let rcsObject = {};\r\n \r\n this.rosterCodeSettings.forEach( rcs => {\r\n let rcsItem = {\r\n rosterCodeSettingId: rcs.id,\r\n rosterCode: rcs.rosterCode,\r\n description: rcs.ticketStatus.description,\r\n foregroundColor: rcs.foregroundColor,\r\n backgroundColor: rcs.backgroundColor\r\n };\r\n \r\n if (rcsObject.hasOwnProperty(rcs.rosterCode.code)){\r\n rcsObject[rcs.rosterCode.code].push(rcsItem);\r\n }else{\r\n rcsObject[rcs.rosterCode.code] = [rcsItem];\r\n }\r\n });\r\n \r\n Object\r\n .keys(rcsObject)\r\n .sort()\r\n .forEach(code => this.rosterCodes.push(rcsObject[code]));\r\n\r\n this.rosterCodes.forEach((rc, index) => {\r\n rc.forEach((rcs, subIndex) => {\r\n this.changeTracking[rcs.rosterCode.id + \"_\" + rcs.rosterCodeSettingId] = {\r\n rosterCodeId: rcs.rosterCode.id,\r\n rosterCodeSettingId: rcs.rosterCodeSettingId,\r\n index: index,\r\n subIndex: subIndex,\r\n oldValue: {\r\n foregroundColor: rcs.foregroundColor,\r\n backgroundColor: rcs.backgroundColor\r\n },\r\n newValue:{\r\n foregroundColor: null,\r\n backgroundColor: null\r\n }\r\n };\r\n });\r\n });\r\n }\r\n\r\n changeForeColor(rcs){\r\n this.changeTracking[`${rcs.rosterCode.id}_${rcs.rosterCodeSettingId}`][\"newValue\"][\"foregroundColor\"] = rcs.foregroundColor;\r\n }\r\n\r\n changeBackColor(rcs){\r\n this.changeTracking[`${rcs.rosterCode.id}_${rcs.rosterCodeSettingId}`][\"newValue\"][\"backgroundColor\"] = rcs.backgroundColor;\r\n }\r\n\r\n saveChanges(){\r\n let changedSettings: IRosterCodeSetting[] = this.getChangedSettings();\r\n \r\n if (changedSettings.length > 0){\r\n this.subs.sink = this._rosterCodeSettingService.update(changedSettings)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this._toast.succeeded(\"Changes has been saved\");\r\n this.loadData(); \r\n } else{\r\n this._toast.failed(\"Saving changes failed\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n private getChangedSettings():IRosterCodeSetting[]{\r\n let changedSettings: IRosterCodeSetting[] = [];\r\n for(var rcsId in this.changeTracking){\r\n let ctObj = this.changeTracking[rcsId];\r\n \r\n if (ctObj.newValue.foregroundColor || ctObj.newValue.backgroundColor){\r\n changedSettings.push({\r\n id: ctObj.rosterCodeSettingId,\r\n rosterCode: {\r\n id: ctObj.rosterCodeId\r\n },\r\n foregroundColor: ctObj.newValue.foregroundColor,\r\n backgroundColor: ctObj.newValue.backgroundColor\r\n });\r\n }\r\n }\r\n \r\n return changedSettings;\r\n }\r\n\r\n discardChanges(){\r\n let changedSettings: IRosterCodeSetting[] = this.getChangedSettings();\r\n\r\n for(var rcsId in this.changeTracking){\r\n let ctObj = this.changeTracking[rcsId];\r\n this.rosterCodes[ctObj.index][ctObj.subIndex].foregroundColor = ctObj.oldValue.foregroundColor;\r\n this.rosterCodes[ctObj.index][ctObj.subIndex].backgroundColor = ctObj.oldValue.backgroundColor;\r\n }\r\n\r\n this.resetChangeTracking(changedSettings);\r\n }\r\n\r\n private resetChangeTracking(changedSettings:IRosterCodeSetting[]){\r\n changedSettings.forEach(cs => {\r\n let ctObj = this.changeTracking[`${cs.rosterCode.id}_${cs.id}`];\r\n if (ctObj){\r\n ctObj.oldValue.foregroundColor = cs.foregroundColor || ctObj.oldValue.foregroundColor;\r\n ctObj.oldValue.backgroundColor = cs.backgroundColor || ctObj.oldValue.backgroundColor;\r\n\r\n ctObj.newValue.foregroundColor = ctObj.newValue.backgroundColor = null; \r\n }\r\n });\r\n }\r\n\r\n shouldEnableSave(){\r\n let changedSettings: IRosterCodeSetting[] = this.getChangedSettings();\r\n return changedSettings.length > 0;\r\n }\r\n}","\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n Roster Code\r\n \r\n Text Color\r\n Background Color\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{rcs.rosterCode.code}}\r\n \r\n \r\n \r\n {{rcs.description === null ? rcs.rosterCode.description : rcs.rosterCode.description + \" - \" + rcs.description }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { ConfirmationService, MenuItem } from 'primeng/api';\r\nimport { SubSink } from 'subsink';\r\nimport { RosterCodeService } from '../services/roster-code.service';\r\nimport { IRosterCode } from '../shared/models/roster-code';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\nimport { DeleteActionComponent } from './delete-action.component';\r\nimport { RosterCodeCheckboxComponent } from './roster-code-checkbox.component';\r\n\r\n@Component({\r\n selector: 'pps-manage-roster-code',\r\n templateUrl: './manage-roster-code.component.html',\r\n styles: [\r\n ],\r\n})\r\nexport class ManageRosterCodeComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n smallScreen: boolean = false;\r\n spinnerName: string = \"dataSpinner\";\r\n\r\n items: MenuItem[] = [\r\n {label: \"Settings\", icon: \"pi-fw fas fa-tools\"}, \r\n {label: \"Manage Roster Code\", icon: \"pi-fw far fa-keyboard\"},\r\n ];\r\n \r\n rosterCodes: IRosterCode[] = [];\r\n gridHeaders: any[];\r\n context:any = {};\r\n entityLoading: boolean = false;\r\n gridOptions: any = {\r\n getRowId: param => param.data.id,\r\n defaultColDef:{\r\n enableCellChangeFlash: true,\r\n resizable: true\r\n }\r\n };\r\n\r\n private gridApi;\r\n\r\n constructor(private _rosterCodeService: RosterCodeService,\r\n private _spinner: NgxSpinnerService,\r\n private _toast: ToastService,\r\n private _confirm: ConfirmationService,\r\n private breakpointObserver: BreakpointObserver) { \r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n }\r\n \r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initialize();\r\n }\r\n\r\n private initialize(){\r\n this.context = { componentParent: this };\r\n this.gridHeaders = this.getColumnDefs();\r\n this.loadData();\r\n }\r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n } \r\n\r\n addRosterCode(){\r\n let rosterCode: IRosterCode = {\r\n id: 0,\r\n code: \"\",\r\n description: \"\",\r\n canBeUsedInTimesheet: false,\r\n canBeUsedInTimesheetBreakdownRule: false,\r\n active:true\r\n };\r\n\r\n this._spinner.show(this.spinnerName);\r\n\r\n this.subs.sink = this._rosterCodeService.add(rosterCode)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.rosterCodes.unshift(res.result);\r\n this.gridApi.setRowData(this.rosterCodes);\r\n let rowNode = this.gridApi.getRowNode(res.result.id);\r\n if (rowNode){\r\n this.gridApi.flashCells({rowNodes: [rowNode]});\r\n rowNode.setSelected(true);\r\n window.setTimeout( () =>{\r\n this.gridApi.startEditingCell({rowIndex: rowNode.rowIndex, colKey: \"code\"});\r\n }, 1000);\r\n }\r\n }\r\n }, _error => {\r\n console.log(_error);\r\n })\r\n .add(()=>{\r\n this._spinner.hide(this.spinnerName);\r\n this.entityLoading = false;\r\n });\r\n }\r\n\r\n loadData(){\r\n this._spinner.show(this.spinnerName);\r\n this.entityLoading = true;\r\n this.rosterCodes.length = 0;\r\n this.subs.sink = this._rosterCodeService.getAll()\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n this.rosterCodes = apiResponse.result;\r\n this._toast.succeeded(`${this.rosterCodes.length} roster codes loaded`);\r\n }else{\r\n this._toast.failed(`Failed to load links: ${apiResponse.errors.join(\";\")}`);\r\n }\r\n }, _error => {\r\n console.log(_error);\r\n })\r\n .add(()=>{\r\n this._spinner.hide(this.spinnerName);\r\n this.entityLoading = false;\r\n });\r\n }\r\n\r\n delete(rosterCode: IRosterCode){\r\n if (rosterCode === null){\r\n return;\r\n }\r\n\r\n this._confirm.confirm({\r\n header: `Delete Roster Code`,\r\n message: `Are you sure that you want to delete [${rosterCode.code}]?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => this.deleteRosterCodeHelper(rosterCode)\r\n });\r\n }\r\n\r\n deleteRosterCodeHelper(rosterCode: IRosterCode){\r\n this.subs.sink = this._rosterCodeService.delete(rosterCode.id)\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n var foundIndex = this.rosterCodes.findIndex(x => x.id == rosterCode.id);\r\n if (foundIndex !== -1 ){\r\n this.rosterCodes.splice(foundIndex, 1);\r\n this.gridApi.setRowData(this.rosterCodes);\r\n this._toast.succeeded(`[${rosterCode.code}] deleted!`);\r\n }else{\r\n this._toast.failed(`Delete [${rosterCode.code}] failed!`);\r\n }\r\n }else{\r\n this._toast.failed(`Failed to delete [${rosterCode.code}]: ${apiResponse.errors.join(\"|\")}`);\r\n }\r\n });\r\n }\r\n\r\n updateRosterCode(rosterCode: IRosterCode){\r\n this._spinner.show(this.spinnerName);\r\n this.subs.sink = this._rosterCodeService.update(rosterCode)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this._toast.succeeded(`Roster code updated`);\r\n }else{\r\n this._toast.failed(`Roster code update failed: ${res.errors.join(\"|\")}`);\r\n }\r\n })\r\n .add(() => this._spinner.hide(this.spinnerName));\r\n }\r\n\r\n private getActionComponentTooltip(rosterCode: IRosterCode):string{\r\n return \"Click to delete roster code: \" + rosterCode.code;\r\n }\r\n\r\n private getColumnDefs(){\r\n let cols = [\r\n {\r\n headerName: \"\",\r\n field: \"action\",\r\n cellRenderer: DeleteActionComponent,\r\n resizable: false,\r\n width: 50,\r\n hide: false,\r\n filter: false, \r\n suppressMovable: true,\r\n cellStyle: {textAlign:\"center\"}\r\n },\r\n {\r\n headerName: 'Code',\r\n field:'code',\r\n filter: false,\r\n width: 100,\r\n editable: true,\r\n onCellValueChanged: this.rosterCodeChanged\r\n },\r\n {\r\n headerName: 'Description',\r\n field:'description',\r\n filter: false,\r\n flex: 1,\r\n editable: true,\r\n onCellValueChanged: this.rosterCodeChanged\r\n },\r\n {\r\n colId: \"can-be-used-in-timesheet\",\r\n headerName: \"Can be used in timesheet\",\r\n field: \"canBeUsedInTimesheet\",\r\n sortable: true,\r\n width: 200,\r\n cellRenderer: RosterCodeCheckboxComponent,\r\n cellStyle: {textAlign:\"center\"}\r\n },\r\n {\r\n colId: \"can-be-used-in-timesheet-breakdown-rule\",\r\n headerName: \"Can be used in payroll breakdown rule\",\r\n field: \"canBeUsedInTimesheetBreakdownRule\",\r\n sortable: true,\r\n width: 260,\r\n cellRenderer: RosterCodeCheckboxComponent,\r\n cellStyle: {textAlign:\"center\"}\r\n }\r\n ];\r\n\r\n if (this.smallScreen){\r\n cols[cols.length-1].flex = 0;\r\n cols[cols.length-1].width = 500;\r\n }\r\n\r\n return cols;\r\n }\r\n\r\n private rosterCodeChanged(params){\r\n let _this = params.context.componentParent;\r\n let rosterCode = params.data;\r\n _this.updateRosterCode(rosterCode);\r\n }\r\n}\r\n","\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n\r\n

Loading roster code...

\r\n
\r\n\r\n 0\"\r\n style=\"width: 100%; height:100%;\"\r\n class=\"ag-theme-alpine\"\r\n rowSelection=\"single\"\r\n [gridOptions]=\"gridOptions\"\r\n [context]=\"context\"\r\n [rowData]=\"rosterCodes\"\r\n [columnDefs]=\"gridHeaders\"\r\n [enterMovesDown]=\"true\"\r\n [enterMovesDownAfterEdit]=\"true\"\r\n (gridReady)=\"onGridReady($event)\">\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n

\r\n \r\n Roster codes with this checked will be displayed in Timesheet -> Enter Timesheet -> Work Shift dropdown list.\r\n

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

\r\n \r\n Roster codes with this checked will be displayed in Settings -> Manage Payroll Timesheet Rules -> Roster Code dropdown list.\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { BreakpointObserver, BreakpointState } from \"@angular/cdk/layout\";\r\nimport { Component, Input, OnInit, ViewEncapsulation } from \"@angular/core\";\r\nimport * as _ from \"lodash-es\";\r\nimport { ConfirmationService } from \"primeng/api\";\r\nimport { DialogService } from \"primeng/dynamicdialog\";\r\nimport { SubSink } from \"subsink\";\r\nimport { ToastService } from \"../shared/toast/toast.service\";\r\nimport { IEntity } from \"../shared/models/entity\";\r\nimport { RosterProjectService } from \"../services/roster-project.service\";\r\nimport { IRosterProject } from \"../shared/models/roster/roster-project\";\r\nimport { RosterProjectFormComponent } from \"./roster-project-form.component\";\r\nimport { Role } from \"../shared/models/role\";\r\nimport { AuthenticationService } from \"../services/authentication.service\";\r\nimport { BusinessOperation } from \"../shared/models/business-operation\";\r\n\r\n\r\n@Component({\r\n selector: \"pps-manage-roster-project\",\r\n templateUrl: \"./manage-roster-project.component.html\",\r\n styles: [`\r\n .roster-project .p-fieldset{\r\n border: 1px solid #aaaaaa !important;\r\n -webkit-box-shadow: 4px 4px 10px 0px rgba(64,64,64,0.3) !important;\r\n -moz-box-shadow: 4px 4px 10px 0px rgba(64,64,64,0.3) !important;\r\n box-shadow: 4px 4px 10px 0px rgba(64,64,64,0.3) !important; \r\n }\r\n\r\n .roster-project .p-fieldset.inactive .p-fieldset-legend-text{\r\n color: #ffaaaa;\r\n }\r\n\r\n .roster-project .p-fieldset.active .p-fieldset-legend-text{\r\n font-weight: bold;\r\n }\r\n `],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ManageRosterProjectComponent implements OnInit{\r\n @Input() workGroups: IEntity[] = [];\r\n @Input() roles: Role[] = [];\r\n @Input() rosterProjects: IRosterProject[] = [];\r\n\r\n private subs = new SubSink();\r\n smallScreen: boolean = false;\r\n\r\n collapseAll: boolean = true;\r\n workGroupsDict: {[id: number]: IEntity} = {};\r\n rolesDict: {[id: number]: Role} = {};\r\n \r\n\r\n constructor(\r\n private _confirm: ConfirmationService,\r\n private _toast: ToastService,\r\n private _dialog: DialogService,\r\n private _rosterProjectService: RosterProjectService,\r\n private _authService: AuthenticationService,\r\n private breakpointObserver: BreakpointObserver){\r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadData();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n } \r\n\r\n loadData(){\r\n this.workGroupsDict = {};\r\n this.rolesDict = {};\r\n\r\n var workGroups = _.cloneDeep(this.workGroups);\r\n workGroups.forEach(wg => {\r\n wg.name = wg.active ? wg.name : `* ${wg.name} (Inactive)`;\r\n });\r\n\r\n workGroups.forEach(rg => this.workGroupsDict[rg.id] = rg);\r\n this.workGroups = workGroups.sort((a: IEntity,b: IEntity) => a.sortNo - b.sortNo);\r\n \r\n this.roles.forEach(r => this.rolesDict[r.id] = r);\r\n }\r\n\r\n deleteRosterProject(rosterProject: IRosterProject){\r\n this._confirm.confirm({\r\n key: \"rsl-dialog\",\r\n header: `Delete Roster Project`,\r\n message: `Please confirm that you want to delete [${rosterProject.title}]?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => this.deleteRosterProjectHelper(rosterProject)\r\n });\r\n }\r\n\r\n deleteRosterProjectHelper(rosterProject: IRosterProject){\r\n this.subs.sink = this._rosterProjectService.delete(rosterProject.id)\r\n .subscribe(res=>{\r\n if (res.succeed){\r\n this._toast.succeeded(`${rosterProject.title} has been removed.`);\r\n let index = this.rosterProjects.findIndex(rsl => rsl.id === rosterProject.id);\r\n if (index >= 0){\r\n this.rosterProjects.splice(index, 1);\r\n }\r\n }else{\r\n this._toast.failed(`Failed to remove ${rosterProject.title}`);\r\n }\r\n }); \r\n }\r\n\r\n deleteGroup(rslIndex:number, rslId: number, workGroupId: number){\r\n let groupName = this.workGroupsDict[workGroupId].name;\r\n\r\n this._confirm.confirm({\r\n key: \"rsl-dialog\",\r\n header: `Detach Work Group`,\r\n message: `Please confirm that you want to detach [${groupName}] from [${this.rosterProjects[rslIndex].title}]?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => this.deleteGroupHelper(rslIndex, rslId, workGroupId)\r\n });\r\n }\r\n\r\n private deleteGroupHelper(rslIndex:number, rslId: number, groupId: number){\r\n let rsl = {\r\n id: rslId,\r\n groupIds: [groupId]\r\n };\r\n let groupName = this.workGroupsDict[groupId].name;\r\n \r\n this.subs.sink = this._rosterProjectService.deleteGroup(rsl)\r\n .subscribe(res=>{\r\n if (res.succeed){\r\n this._toast.succeeded(`Work group ${groupName} detached.`);\r\n let index = this.rosterProjects[rslIndex].groupIds.findIndex(id => id === groupId);\r\n if (index >= 0){\r\n this.rosterProjects[rslIndex].groupIds.splice(index, 1);\r\n }\r\n }else{\r\n this._toast.failed(`Failed to detach ${groupName}`);\r\n }\r\n });\r\n }\r\n\r\n addOrUpdateRosterProject(rosterProject: IRosterProject){\r\n let create = rosterProject === null;\r\n\r\n let dialog = this._dialog.open(RosterProjectFormComponent, {\r\n header: `Define Roster Project`,\r\n styleClass: \"size-md\",\r\n data:{\r\n rosterProject: rosterProject || {id: 0, title: \"\", active: true, groupIds: []},\r\n workGroups: this.workGroups,\r\n roles: this.roles\r\n },\r\n draggable: true\r\n });\r\n \r\n this.subs.sink = dialog.onClose.subscribe(\r\n result => {\r\n if (result){\r\n if (!create){\r\n this.subs.sink = this._rosterProjectService.update(result)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n var index = this.rosterProjects.findIndex(rt=>rt.id === res.result.id);\r\n if (index !== -1){\r\n this.rosterProjects[index] = _.cloneDeep(res.result);\r\n }\r\n\r\n this._toast.succeeded(`${rosterProject.title} updated.`);\r\n }else{\r\n this._toast.failed(`Add new roster summary line failed: ${res.errors.join(\";\")}`);\r\n }\r\n });\r\n }else{\r\n this.subs.sink = this._rosterProjectService.add(result)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.rosterProjects.unshift(_.cloneDeep(res.result));\r\n this._toast.succeeded(`Roster type ${res.result.title} created.`);\r\n }else{\r\n this._toast.failed(`Update failed: ${res.errors.join(\";\")}`);\r\n }\r\n });\r\n }\r\n }\r\n },\r\n reason => {\r\n }\r\n );\r\n } \r\n\r\n /**\r\n * Check if current user has permission to config roster project permission.\r\n * @returns true with permission, false without.\r\n */\r\n canSetPermission(): boolean{\r\n return this._authService.canUserDoOperartion(BusinessOperation.ManageRosterProjectPermission);\r\n }\r\n}\r\n","\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n\r\n
\r\n Roles with permission:\r\n Not Set \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n 0\">Employees in these work groups will be counted\r\n Click Edit button to add work groups\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{workGroupsDict[groupId].name}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n","import { Component, OnInit, ViewEncapsulation } from \"@angular/core\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { MenuItem } from \"primeng/api\";\r\nimport { SubSink } from \"subsink\";\r\nimport { AuthenticationService } from \"../services/authentication.service\";\r\nimport { RosterSettingsService } from \"../services/roster-settings.service\";\r\nimport { BusinessOperation } from \"../shared/models/business-operation\";\r\nimport { IRosterSettings } from \"../shared/models/roster/roster-settings\";\r\n\r\n@Component({\r\n selector: \"pps-manage-roster-settings\",\r\n templateUrl: \"./manage-roster-settings.component.html\",\r\n styles: [`\r\n .roster-setting .p-tabview{\r\n height:calc(100% - 68px);\r\n }\r\n .roster-setting .p-tabview-panel, \r\n .roster-setting .p-tabview-panels{\r\n height:100%;\r\n }\r\n `],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ManageRosterSettingsComponent implements OnInit{\r\n private subs = new SubSink();\r\n \r\n items: MenuItem[] = [\r\n {label: \"Settings\", icon: \"pi-fw fas fa-tools\"}, \r\n {label: \"Manage Roster Settings\", icon: \"pi-fw fas fa-cog\"},\r\n ];\r\n\r\n spinnerName: string = \"rosterSettingSpinner\";\r\n spinnerText: string = \"Loading roster settings ...\";\r\n \r\n rosterSettings: IRosterSettings = {\r\n rosterProjects: [],\r\n roles: [],\r\n workGroups: [],\r\n employers: []\r\n };\r\n dataIsReady = false;\r\n\r\n private tabIndexKey = \"RosterSettingActiveIndexKey\";\r\n activeTabIndex = 0;\r\n\r\n constructor(\r\n private _rosterSettingsService: RosterSettingsService,\r\n private _spinner: NgxSpinnerService,\r\n private _authService: AuthenticationService){\r\n }\r\n\r\n ngOnInit(){\r\n this.activeTabIndex = +window.localStorage.getItem(this.tabIndexKey);\r\n this.loadRosterSettings();\r\n }\r\n \r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n loadRosterSettings(){\r\n this.dataIsReady = false;\r\n this._spinner.show(this.spinnerName);\r\n this.subs.sink = this._rosterSettingsService.getAll()\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.rosterSettings = res.result;\r\n this.dataIsReady = true;\r\n }\r\n })\r\n .add(\r\n () => {\r\n this._spinner.hide(this.spinnerName);\r\n }\r\n );\r\n }\r\n\r\n tabSwitched(event){\r\n this.activeTabIndex = event.index;\r\n window.localStorage.setItem(this.tabIndexKey, this.activeTabIndex + \"\");\r\n }\r\n\r\n /**\r\n * Check if current user has permission to config roster project permission.\r\n * @returns true with permission, false without.\r\n */\r\n canManageRosterProject(): boolean{\r\n return this._authService.canUserDoOperartion(BusinessOperation.ManageRosterProject);\r\n }\r\n}","

{{spinnerText}}

\r\n\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
","import { BreakpointObserver, BreakpointState } from \"@angular/cdk/layout\";\r\nimport { Component, Input, OnInit, ViewEncapsulation } from \"@angular/core\";\r\nimport * as _ from \"lodash-es\";\r\nimport { ConfirmationService } from \"primeng/api\";\r\nimport { DialogService } from \"primeng/dynamicdialog\";\r\nimport { SubSink } from \"subsink\";\r\n\r\nimport { RosterSummaryLineService } from \"../services/roster-summery-line.service\";\r\nimport { IRosterCode } from \"../shared/models/roster-code\";\r\nimport { IRosterSummaryLine } from \"../shared/models/roster/roster-summary-line\";\r\nimport { ToastService } from \"../shared/toast/toast.service\";\r\nimport { RosterSummaryLineFormComponent } from \"./roster-summary-line-form.component\";\r\nimport { IEntity } from \"../shared/models/entity\";\r\nimport { IRosterProject } from \"../shared/models/roster/roster-project\";\r\nimport { IEmployer } from \"../shared/models/employer\";\r\n\r\n@Component({\r\n selector: \"pps-manage-roster-summary-line\",\r\n templateUrl: \"./manage-roster-summary-line.component.html\",\r\n styles: [`\r\n .roster-summary-line .p-fieldset{\r\n border: 1px solid #aaaaaa !important;\r\n -webkit-box-shadow: 4px 4px 10px 0px rgba(64,64,64,0.3) !important;\r\n -moz-box-shadow: 4px 4px 10px 0px rgba(64,64,64,0.3) !important;\r\n box-shadow: 4px 4px 10px 0px rgba(64,64,64,0.3) !important; \r\n }\r\n\r\n .roster-summary-line .p-fieldset.inactive .p-fieldset-legend-text{\r\n color: #ffaaaa;\r\n }\r\n\r\n .roster-summary-line .p-fieldset.active .p-fieldset-legend-text{\r\n font-weight: bold;\r\n }\r\n `],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ManageRosterSummaryLineComponent implements OnInit{\r\n private subs = new SubSink();\r\n smallScreen: boolean = false;\r\n \r\n collapseAll: boolean = true;\r\n workGroupsDict: {[id: number]: IEntity} = {};\r\n\r\n @Input() rosterCodes: IRosterCode[] = [];\r\n @Input() workGroups: IEntity[] = [];\r\n @Input() employers: IEmployer[] = [];\r\n @Input() rosterSummaryLines: IRosterSummaryLine[] = [];\r\n @Input() rosterProjects: IRosterProject[] = [];\r\n\r\n constructor(\r\n private _confirm: ConfirmationService,\r\n private _toast: ToastService,\r\n private _dialog: DialogService,\r\n private _rosterSummaryLineService: RosterSummaryLineService,\r\n private breakpointObserver: BreakpointObserver){\r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadData();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n } \r\n\r\n loadData(){\r\n this.workGroupsDict = {};\r\n\r\n this.workGroups = this.workGroups.filter(wg => wg.active);\r\n this.workGroups.forEach(rg => this.workGroupsDict[rg.id] = rg);\r\n this.workGroups = _.cloneDeep(this.workGroups).sort((a: IEntity,b: IEntity) => a.sortNo - b.sortNo);\r\n\r\n // sort by RosterProject first, then by active status, then by summary line title\r\n this.rosterSummaryLines = _.cloneDeep(this.rosterSummaryLines)\r\n .sort((a: IRosterSummaryLine,b: IRosterSummaryLine) => {\r\n if (a.rosterProjectId !== b.rosterProjectId){\r\n return a.rosterProjectId - b.rosterProjectId;\r\n }\r\n\r\n if (a.active !== b.active){\r\n return (b.active ? 1 : 0) - (a.active ? 1 : 0);\r\n }\r\n\r\n return a.sortNo - b.sortNo;\r\n });\r\n this.rosterCodes = this.rosterCodes.filter(rc => rc.canBeUsedInTimesheetBreakdownRule);\r\n }\r\n\r\n deleteRosterSummaryLine(line: IRosterSummaryLine){\r\n this._confirm.confirm({\r\n key: \"rsl-dialog\",\r\n header: `Delete Roster Summary Line`,\r\n message: `Please confirm that you want to delete [${line.title}]?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => this.deleteRosterSummaryLineHelper(line)\r\n });\r\n }\r\n\r\n deleteRosterSummaryLineHelper(line: IRosterSummaryLine){\r\n this.subs.sink = this._rosterSummaryLineService.delete(line.id)\r\n .subscribe(res=>{\r\n if (res.succeed){\r\n this._toast.succeeded(`${line.title} has been removed from roster.`);\r\n let index = this.rosterSummaryLines.findIndex(rsl => rsl.id === line.id);\r\n if (index >= 0){\r\n this.rosterSummaryLines.splice(index, 1);\r\n }\r\n }else{\r\n this._toast.failed(`Failed to remove ${line.title}`);\r\n }\r\n }); \r\n }\r\n\r\n deleteGroup(rslIndex:number, rslId: number, workGroupId: number){\r\n let groupName = this.workGroupsDict[workGroupId].name;\r\n\r\n this._confirm.confirm({\r\n key: \"rsl-dialog\",\r\n header: `Detach Work Group`,\r\n message: `Please confirm that you want to detach [${groupName}] from [${this.rosterSummaryLines[rslIndex].title}]?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => this.deleteGroupHelper(rslIndex, rslId, workGroupId)\r\n });\r\n }\r\n\r\n private deleteGroupHelper(rslIndex:number, rslId: number, groupId: number){\r\n let rsl = {\r\n id: rslId,\r\n groupIds: [groupId]\r\n };\r\n let groupName = this.workGroupsDict[groupId].name;\r\n \r\n this.subs.sink = this._rosterSummaryLineService.deleteGroup(rsl)\r\n .subscribe(res=>{\r\n if (res.succeed){\r\n this._toast.succeeded(`Work group ${groupName} detached.`);\r\n let index = this.rosterSummaryLines[rslIndex].groupIds.findIndex(id => id === groupId);\r\n if (index >= 0){\r\n this.rosterSummaryLines[rslIndex].groupIds.splice(index, 1);\r\n }\r\n }else{\r\n this._toast.failed(`Failed to detach ${groupName}`);\r\n }\r\n });\r\n }\r\n\r\n addOrUpdateRosterSummaryLine(rosterSummaryLine: IRosterSummaryLine){\r\n let create = rosterSummaryLine === null;\r\n\r\n let dialog = this._dialog.open(RosterSummaryLineFormComponent, {\r\n header: `Define Roster Summary`,\r\n styleClass: \"size-md\",\r\n data:{\r\n rosterSummaryLine: rosterSummaryLine || {id: 0, title: \"\", active: true, groupIds: [], rosterSummaryFormular: null, companyCode: \"\"},\r\n workGroups: this.workGroups,\r\n rosterCodes: this.rosterCodes,\r\n rosterProjects: this.rosterProjects,\r\n employers: this.employers\r\n },\r\n draggable: true\r\n //baseZIndex: -200,\r\n //autoZIndex: false\r\n });\r\n \r\n this.subs.sink = dialog.onClose.subscribe(\r\n result => {\r\n if (result){\r\n if (!create){\r\n this.subs.sink = this._rosterSummaryLineService.update(result)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n var index = this.rosterSummaryLines.findIndex(rt=>rt.id === res.result.id);\r\n if (index !== -1){\r\n this.rosterSummaryLines[index] = _.cloneDeep(res.result);\r\n }\r\n\r\n this._toast.succeeded(`${rosterSummaryLine.title} updated.`);\r\n }else{\r\n this._toast.failed(`Add new roster summary line failed: ${res.errors.join(\";\")}`);\r\n }\r\n });\r\n }else{\r\n this.subs.sink = this._rosterSummaryLineService.add(result)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.rosterSummaryLines.unshift(_.cloneDeep(res.result));\r\n this._toast.succeeded(`Roster type ${res.result.title} created.`);\r\n }else{\r\n this._toast.failed(`Update failed: ${res.errors.join(\";\")}`);\r\n }\r\n });\r\n }\r\n }\r\n },\r\n reason => {\r\n }\r\n );\r\n }\r\n\r\n public getRosterProject(rosterProjectId: number): IRosterProject{\r\n return this.rosterProjects.find(rp => rp.id === rosterProjectId);\r\n }\r\n\r\n public getEmployersInCommaSeperatedString(employerIds: string){\r\n return this._rosterSummaryLineService\r\n .getEmployersByCommaSeperatedIds(employerIds, this.employers)\r\n .map(e=>e.employerName)\r\n .join(\",\");\r\n }\r\n}","\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n\r\n
= 5\">\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n 0\">\r\n Only employees within company codes [{{getEmployersInCommaSeperatedString(rsl.companyCode)}}] and in the work groups listed below will be counted.\r\n \r\n Click Edit button to add work groups\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{workGroupsDict[groupId].name}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n","import { BreakpointObserver, BreakpointState } from \"@angular/cdk/layout\";\r\nimport { AfterViewInit, Component, Input, ViewEncapsulation } from \"@angular/core\";\r\nimport { ConfirmationService, MenuItem } from \"primeng/api\";\r\nimport { DialogService } from \"primeng/dynamicdialog\";\r\nimport { SubSink } from \"subsink\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { RosterTypeService } from \"../services/roster-type.service\";\r\nimport { IRosterType } from \"../shared/models/roster/roster-type\";\r\nimport { IRosterCode } from \"../shared/models/roster-code\";\r\nimport { ToastService } from \"../shared/toast/toast.service\";\r\nimport { RosterTypeFormComponent } from \"./roster-type-form.component\";\r\nimport { IRosterCodeSetting } from \"../shared/models/roster-code-setting\";\r\n\r\n@Component({\r\n selector: \"pps-manage-roster-type\",\r\n templateUrl: \"./manage-roster-type.component.html\",\r\n styles: [`\r\n .roster-type .p-message-custom {\r\n background-color: #e1cfe7;\r\n border: solid #8a427a;\r\n border-width: 0 0 0 6px;\r\n color: #2c1e30;\r\n }\r\n\r\n .roster-type .p-fieldset{\r\n border: 1px solid #aaaaaa !important;\r\n -webkit-box-shadow: 4px 4px 10px 0px rgba(64,64,64,0.3) !important;\r\n -moz-box-shadow: 4px 4px 10px 0px rgba(64,64,64,0.3) !important;\r\n box-shadow: 4px 4px 10px 0px rgba(64,64,64,0.3) !important; \r\n }\r\n\r\n .roster-type .p-fieldset .p-fieldset-legend{\r\n /*\r\n font-size: 1.2rem;\r\n background: var(--indigo-600) !important;\r\n background: linear-gradient(135deg, var(--indigo-600) 0%, var(--indigo-300) 50%, var(--indigo-200) 75%, var(--indigo-300) 100%) !important;\r\n */\r\n }\r\n /*\r\n .roster-type .p-fieldset-legend-text,\r\n .roster-type .p-fieldset-toggler{\r\n color: white !important;\r\n }\r\n */\r\n `],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ManageRosterTypeComponent{\r\n private subs = new SubSink();\r\n smallScreen: boolean = false;\r\n \r\n collapseAll: boolean = true;\r\n\r\n @Input() rosterTypes: IRosterType[] = [];\r\n @Input() rosterCodes: IRosterCode[] = [];\r\n @Input() rosterCodeSettings: IRosterCodeSetting[] = [];\r\n\r\n constructor(\r\n private _rosterTypeService: RosterTypeService,\r\n private _dialog: DialogService,\r\n private _toast: ToastService,\r\n private _util: PpsUtilityService,\r\n private _confirm: ConfirmationService,\r\n private breakpointObserver: BreakpointObserver){\r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n });\r\n\r\n }\r\n\r\n ngOnInit(){\r\n }\r\n \r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n } \r\n\r\n getDescription(desc){\r\n return (desc || \"\").replace(//g, \">\").replace(/\\n/g, \"
\");\r\n }\r\n\r\n deleteRosterType(rosterType: IRosterType){\r\n this._confirm.confirm({\r\n key: \"rt-dialog\",\r\n header: `Delete Roster Type`,\r\n message: `Please confirm that you want to delete this roster type [${rosterType.title}]?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => this.deleteRosterTypeHelper(rosterType)\r\n });\r\n }\r\n\r\n private deleteRosterTypeHelper(rosterType: IRosterType){\r\n this.subs.sink = this._rosterTypeService.delete(rosterType.id)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n var index = this.rosterTypes.findIndex(rt=>rt.id === rosterType.id);\r\n if (index !== -1){\r\n this.rosterTypes.splice(index, 1);\r\n this._toast.succeeded(`Roster type ${rosterType.title} deleted.`);\r\n }\r\n }else{\r\n this._toast.failed(`Delete roster type failed: ${res.errors.join(\";\")}`);\r\n }\r\n });\r\n }\r\n\r\n addOrUpdateRosterType(rosterType: IRosterType){\r\n let create = rosterType === null;\r\n\r\n let dialog = this._dialog.open(RosterTypeFormComponent, {\r\n header: `Edit Roster Type`,\r\n styleClass: \"size-sm\",\r\n data:{\r\n rosterType: rosterType,\r\n rosterCodes: this.rosterCodes\r\n },\r\n draggable: true\r\n });\r\n \r\n this.subs.sink = dialog.onClose.subscribe(\r\n result => {\r\n if (result){\r\n if (!create){\r\n this.subs.sink = this._rosterTypeService.update(result)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n var index = this.rosterTypes.findIndex(rt=>rt.id === res.result.id);\r\n if (index !== -1){\r\n this.rosterTypes[index] = this._util.deepCopy(res.result);\r\n }\r\n\r\n this._toast.succeeded(`Roster type ${rosterType.title} updated.`);\r\n }else{\r\n this._toast.failed(`Delete roster type failed: ${res.errors.join(\";\")}`);\r\n }\r\n });\r\n }else{\r\n this.subs.sink = this._rosterTypeService.add(result)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.rosterTypes.unshift(this._util.deepCopy(res.result));\r\n this._toast.succeeded(`Roster type ${res.result.title} created.`);\r\n }else{\r\n this._toast.failed(`Delete roster type failed: ${res.errors.join(\";\")}`);\r\n }\r\n });\r\n }\r\n }\r\n },\r\n reason => {\r\n }\r\n );\r\n }\r\n}","\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n\r\n \r\n

Description

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

Rule preview:

\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n","import { Component, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { ConfirmationService, MenuItem } from \"primeng/api\";\r\nimport { SubSink } from \"subsink\";\r\nimport { ITrainingCourse } from \"../shared/models/training-course\";\r\nimport { TrainingCourseService } from \"../services/training-course.service\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { ToastService } from \"../shared/toast/toast.service\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { BreakpointObserver, BreakpointState } from \"@angular/cdk/layout\";\r\nimport { DeleteActionComponent } from \"./delete-action.component\";\r\nimport * as _ from \"lodash\";\r\n\r\n@Component({\r\n selector: \"pps-manage-training-course\",\r\n templateUrl: \"./manage-training-course.component.html\"\r\n})\r\nexport class ManageTrainingCourseComponent implements OnInit, OnDestroy{\r\n private subs = new SubSink();\r\n\r\n smallScreen: boolean = false;\r\n spinnerName: string = \"dataSpinner\";\r\n\r\n menuItems: MenuItem[] = [\r\n {label: \"Settings\", icon: \"pi-fw fas fa-tools\"}, \r\n {label: \"Manage Courses\", icon: \"pi-fw fas fa-graduation-cap\"},\r\n ];\r\n\r\n oldItems : ITrainingCourse[] = [];\r\n items: ITrainingCourse[] = [];\r\n\r\n gridHeaders: any[];\r\n context:any = {};\r\n entityLoading: boolean = false;\r\n gridOptions: any = {\r\n getRowId: param => param.data.id,\r\n defaultColDef:{\r\n enableCellChangeFlash: true,\r\n resizable: true\r\n }\r\n };\r\n\r\n private gridApi;\r\n\r\n constructor(private _trainingCourseService: TrainingCourseService,\r\n private _spinner: NgxSpinnerService,\r\n private _toast: ToastService,\r\n private _confirm: ConfirmationService,\r\n private _util: PpsUtilityService,\r\n private breakpointObserver: BreakpointObserver,) { \r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n }\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initialize();\r\n }\r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n } \r\n\r\n loadData(){\r\n this._spinner.show(this.spinnerName);\r\n this.entityLoading = true;\r\n this.items.length = 0;\r\n this.subs.sink = this._trainingCourseService.getAll()\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n this.items = apiResponse.result;\r\n this.oldItems = _.cloneDeep(this.items);\r\n this._toast.succeeded(`${this.items.length} records loaded`);\r\n }else{\r\n this._toast.failed(`Failed to load course data: ${apiResponse.errors.join(\";\")}`);\r\n }\r\n }, _error => {\r\n console.log(_error);\r\n })\r\n .add(()=>{\r\n this._spinner.hide(this.spinnerName);\r\n this.entityLoading = false;\r\n });\r\n }\r\n\r\n addTrainingCourse(){\r\n let item: ITrainingCourse = {\r\n id: 0,\r\n title: \"Course title\",\r\n description: \"Course description\",\r\n active: true\r\n };\r\n\r\n this._spinner.show(this.spinnerName);\r\n\r\n this.subs.sink = this._trainingCourseService.add(item)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.items.unshift(res.result);\r\n this.oldItems = _.cloneDeep(this.items);\r\n this.gridApi.setRowData(this.items);\r\n let rowNode = this.gridApi.getRowNode(res.result.id);\r\n if (rowNode){\r\n this.gridApi.flashCells({rowNodes: [rowNode]});\r\n rowNode.setSelected(true);\r\n window.setTimeout( () =>{\r\n this.gridApi.startEditingCell({rowIndex: rowNode.rowIndex, colKey: \"title\"});\r\n }, 500);\r\n }\r\n }\r\n }, _error => {\r\n console.log(_error);\r\n })\r\n .add(()=>{\r\n this._spinner.hide(this.spinnerName);\r\n this.entityLoading = false;\r\n });\r\n }\r\n\r\n delete(item: ITrainingCourse){\r\n if (item === null){\r\n return;\r\n }\r\n\r\n this._confirm.confirm({\r\n header: `Delete Course`,\r\n message: `Are you sure that you want to delete [${item.title}]?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => this.deleteHelper(item)\r\n });\r\n }\r\n\r\n deleteHelper(item: ITrainingCourse){\r\n item.active = false;\r\n this.subs.sink = this._trainingCourseService.update(item)\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n var foundIndex = this.items.findIndex(x => x.id == item.id);\r\n if (foundIndex !== -1 ){\r\n this.items.splice(foundIndex, 1);\r\n this.oldItems = _.cloneDeep(this.items);\r\n this.gridApi.setRowData(this.items);\r\n this._toast.succeeded(`[${item.title}] deleted!`);\r\n }else{\r\n this._toast.failed(`Delete [${item.title}] failed!`);\r\n }\r\n }else{\r\n this._toast.failed(`Failed to delete [${item.title}]: ${apiResponse.errors.join(\"|\")}`);\r\n }\r\n });\r\n }\r\n\r\n private getActionComponentTooltip(trainingCourse: ITrainingCourse):string{\r\n return \"Click to delete training course: \" + trainingCourse.title;\r\n }\r\n\r\n private initialize(){\r\n this.context = { componentParent: this };\r\n this.gridHeaders = this.getColumnDefs();\r\n this.loadData();\r\n }\r\n\r\n private getColumnDefs(){\r\n let cols = [\r\n {\r\n headerName: \"\",\r\n field: \"action\",\r\n cellRenderer: DeleteActionComponent,\r\n resizable: false,\r\n width: 50,\r\n hide: false,\r\n filter: false, \r\n suppressMovable: true,\r\n cellStyle: {textAlign: \"center\"}\r\n },\r\n {\r\n headerName: 'Course Title',\r\n field:'title',\r\n filter: true,\r\n floatingFilter: true,\r\n width: 500,\r\n editable: true,\r\n sortable: true,\r\n //comparator: (date1, date2) => this._util.dateComparator(date1, date2),\r\n onCellValueChanged: this.dataChanged,\r\n cellStyle: {textAlign: \"left\"}\r\n },\r\n {\r\n headerName: 'Course Description',\r\n field:'description',\r\n filter: true,\r\n floatingFilter: true,\r\n flex: 1,\r\n editable: true,\r\n sortable: true,\r\n onCellValueChanged: this.dataChanged,\r\n headerClass: \"ag-ext-header-align-left\"\r\n }\r\n ];\r\n\r\n return cols;\r\n }\r\n\r\n private dataChanged(params){\r\n let _this = params.context.componentParent;\r\n let course = params.data;\r\n\r\n _this.update(course);\r\n }\r\n\r\n private update(course: ITrainingCourse){\r\n this._spinner.show(this.spinnerName);\r\n \r\n this.subs.sink = this._trainingCourseService.update(course)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this._toast.succeeded(`Course updated`);\r\n course.title = res.result.title;\r\n course.description = res.result.description;\r\n //this.oldHolidays = _.cloneDeep(this.holidays);\r\n }else{\r\n this._toast.failed(`Courseupdate failed: ${res.errors.join(\"|\")}`);\r\n }\r\n })\r\n .add(() => this._spinner.hide(this.spinnerName));\r\n }\r\n} \r\n","\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n

Loading courses...

\r\n
\r\n\r\n 0\"\r\n style=\"width: 100%; height:100%;\"\r\n class=\"ag-theme-alpine\"\r\n rowSelection=\"single\"\r\n [gridOptions]=\"gridOptions\"\r\n [context]=\"context\"\r\n [rowData]=\"items\"\r\n [columnDefs]=\"gridHeaders\"\r\n [enterMovesDown]=\"true\"\r\n [enterMovesDownAfterEdit]=\"true\"\r\n (gridReady)=\"onGridReady($event)\">\r\n
\r\n
\r\n","import { BreakpointObserver, BreakpointState } from \"@angular/cdk/layout\";\r\nimport { Component, Input } from \"@angular/core\";\r\nimport { ConfirmationService } from \"primeng/api\";\r\nimport { DialogService } from \"primeng/dynamicdialog\";\r\nimport { SubSink } from \"subsink\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { WorkAreaService } from \"../services/work-area.service\";\r\nimport { EmployeeBase } from \"../shared/models/employee-base\";\r\nimport { IWorkArea } from \"../shared/models/workarea\";\r\nimport { ToastService } from \"../shared/toast/toast.service\";\r\nimport { DeleteActionComponent } from \"./delete-action.component\";\r\nimport { WorkareaFormComponent } from \"./workarea-form.component\";\r\n\r\n@Component({\r\n selector: \"pps-manage-work-area\",\r\n templateUrl: \"./manage-work-area.component.html\"\r\n})\r\nexport class ManageWorkAreaComponent{\r\n private subs = new SubSink();\r\n smallScreen: boolean = false;\r\n\r\n @Input() workAreas: IWorkArea[] = [];\r\n @Input() employees: EmployeeBase[] = [];\r\n\r\n private gridApi;\r\n private gridColumnApi;\r\n gridHeaders: any[];\r\n context:any = {};\r\n gridOptions: any = {\r\n getRowId: param => {\r\n let workarea = param.data as IWorkArea;\r\n return workarea.id;\r\n },\r\n defaultColDef:{\r\n resizable: true\r\n }\r\n }; \r\n\r\n constructor(\r\n private _workAreaService: WorkAreaService,\r\n private _toast: ToastService,\r\n private _confirm: ConfirmationService,\r\n private _util: PpsUtilityService,\r\n private _dialog: DialogService,\r\n private breakpointObserver: BreakpointObserver){\r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n }\r\n\r\n ngOnInit(){\r\n this.context = { componentParent: this };\r\n this.gridHeaders = this.getColumnDefs();\r\n }\r\n \r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n }\r\n\r\n onRowDblClicked(params){\r\n let workarea = params.data as IWorkArea;\r\n this.addOrUpdateWorkArea(workarea);\r\n }\r\n\r\n removable(workArea: IWorkArea){\r\n return workArea.usage === 0;\r\n }\r\n\r\n addOrUpdateWorkArea(workArea: IWorkArea){\r\n workArea = workArea || {\r\n id: 0,\r\n areaName: \"\",\r\n sortNo: 0,\r\n teamLeaders: []\r\n };\r\n\r\n let dialog = this._dialog.open(WorkareaFormComponent, {\r\n header: workArea.id === 0 ? \"Add work area\" : \"Update work area\",\r\n styleClass: \"size-md\",\r\n data:{\r\n workArea: workArea,\r\n employees: this.employees\r\n },\r\n draggable: true\r\n });\r\n\r\n this.subs.sink = dialog.onClose.subscribe(\r\n workArea => {\r\n if (workArea){\r\n this.save(workArea);\r\n }\r\n }\r\n ); \r\n }\r\n\r\n save(workArea: IWorkArea){\r\n let isAdd = workArea.id === 0;\r\n workArea.color = workArea.color || \"#ffffff\";\r\n workArea.signOnSheet = workArea.signOnSheet == null ? false : workArea.signOnSheet;\r\n this.subs.sink = this._workAreaService.add(workArea)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n if (isAdd){\r\n this.workAreas.unshift(res.result);\r\n }else{\r\n var foundIndex = this.workAreas.findIndex(x => x.id === res.result.id);\r\n this.workAreas[foundIndex] = res.result;\r\n }\r\n\r\n this.gridApi.setRowData(this.workAreas);\r\n let rowNode = this.gridApi.getRowNode(res.result.id);\r\n if (rowNode){\r\n //this.gridApi.refreshCells({force: true, rowNodes: [rowNode]});\r\n this.gridApi.flashCells({rowNodes: [rowNode]});\r\n rowNode.setSelected(true);\r\n }\r\n }\r\n }, _error => {\r\n console.log(_error);\r\n })\r\n .add(()=>{\r\n });\r\n }\r\n\r\n delete(workArea: IWorkArea){\r\n if (workArea === null){\r\n return;\r\n }\r\n\r\n this._confirm.confirm({\r\n key: \"rg-dialog\",\r\n header: `Delete work area`,\r\n message: `Please confirm that you want to delete [${workArea.areaName}]?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => this.deleteHelper(workArea)\r\n });\r\n }\r\n\r\n deleteHelper(workArea: IWorkArea){\r\n this.subs.sink = this._workAreaService.delete(workArea.id)\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n var foundIndex = this.workAreas.findIndex(x => x.id == workArea.id);\r\n if (foundIndex !== -1 ){\r\n this.workAreas.splice(foundIndex, 1);\r\n this.gridApi.setRowData(this.workAreas);\r\n this._toast.succeeded(`[${workArea.areaName}] deleted!`);\r\n }else{\r\n this._toast.failed(`Delete [${workArea.areaName}] failed!`);\r\n }\r\n }else{\r\n this._toast.failed(`Failed to delete [${workArea.areaName}]: ${apiResponse.errors.join(\"|\")}`);\r\n }\r\n });\r\n }\r\n\r\n private getColumnDefs(){\r\n let cols = [\r\n {\r\n headerName: \"\",\r\n field: \"action\",\r\n cellRenderer: DeleteActionComponent,\r\n width: 50,\r\n hide: false,\r\n filter: false, \r\n suppressMovable: true,\r\n cellStyle: {textAlign:\"center\"}\r\n },\r\n {\r\n colId: \"areaName\",\r\n headerName: 'Work Area',\r\n field:'areaName',\r\n filter: true,\r\n floatingFilter: true,\r\n width: 300,\r\n sortable: true,\r\n headerClass: \"ag-ext-header-align-left\"\r\n },\r\n {\r\n colId: \"teamLeaders\",\r\n headerName: 'Responsible Team Leaders',\r\n field:'teamLeaders',\r\n filter: true,\r\n floatingFilter: true,\r\n flex: 1,\r\n editable: false,\r\n sortable: true,\r\n valueGetter: this.getTeamLeaders,\r\n headerClass: \"ag-ext-header-align-left\"\r\n },\r\n {\r\n colId: \"color\",\r\n headerName: 'Heading Color',\r\n field:'color',\r\n filter: false,\r\n floatingFilter: false,\r\n width: 150,\r\n sortable: true,\r\n cellStyle: (param) => {\r\n return {\r\n backgroundColor: (param.data as IWorkArea).color,\r\n color:(param.data as IWorkArea).color\r\n };\r\n },\r\n headerClass: \"ag-ext-header-align-left\"\r\n },\r\n {\r\n colId: \"signOnSheet\",\r\n headerName: 'Should Print Signon Sheet',\r\n field:'signOnSheet',\r\n filter: false,\r\n floatingFilter: false,\r\n width: 150,\r\n sortable: true,\r\n valueGetter: this.shouldPrintSignOnSheet,\r\n headerClass: \"ag-ext-header-align-left\"\r\n },\r\n {\r\n colId: \"usage\",\r\n headerName: 'Employee Count',\r\n field:'usage',\r\n filter: true,\r\n floatingFilter: true,\r\n width: 200,\r\n editable: false,\r\n sortable: true,\r\n headerClass: \"ag-ext-header-align-left\"\r\n }\r\n ];\r\n\r\n return cols;\r\n }\r\n\r\n private getTeamLeaders(params){\r\n let _this = params.context.componentParent;\r\n let workArea = params.data as IWorkArea;\r\n return workArea.teamLeaders.map(t => _this._util.getEmployeeName(t)).join(\"; \");\r\n }\r\n\r\n private shouldPrintSignOnSheet(params){\r\n let _this = params.context.componentParent;\r\n let workArea = params.data as IWorkArea;\r\n return workArea.signOnSheet ? \"Yes\" : \"No\";\r\n }\r\n}","\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n \r\n \r\n Double click to edit work area.\r\n To delete a work area, you must make sure no employee was assigned to that work area, i.e., the employee count for the work area must be 0. \r\n \r\n
\r\n\r\n
\r\n 0\"\r\n style=\"width: 100%; height:100%;\"\r\n class=\"ag-theme-alpine\"\r\n rowSelection=\"single\"\r\n [gridOptions]=\"gridOptions\"\r\n [context]=\"context\"\r\n [rowData]=\"workAreas\"\r\n [columnDefs]=\"gridHeaders\"\r\n (rowDoubleClicked)='onRowDblClicked($event)' \r\n (gridReady)=\"onGridReady($event)\">\r\n
","import { BreakpointObserver, BreakpointState } from \"@angular/cdk/layout\";\r\nimport { Component, Input } from \"@angular/core\";\r\nimport * as _ from \"lodash\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { ConfirmationService } from \"primeng/api\";\r\nimport { DialogService } from \"primeng/dynamicdialog\";\r\nimport { forkJoin } from \"rxjs\";\r\nimport { SubSink } from \"subsink\";\r\nimport { EntityService } from \"../services/entity.service\";\r\nimport { PositionService } from \"../services/position.service\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { RosterTypeService } from \"../services/roster-type.service\";\r\nimport { WorkGroupPositionRosterTypeService } from \"../services/workgroup-position-roster.service\";\r\nimport { IEntity } from \"../shared/models/entity\";\r\nimport { Position } from \"../shared/models/position\";\r\nimport { IRosterType } from \"../shared/models/roster/roster-type\";\r\nimport { IWorkGroupPositionRosterType } from \"../shared/models/roster/workgroup-position-rostertype\";\r\nimport { ToastService } from \"../shared/toast/toast.service\";\r\nimport { DeleteActionComponent } from \"./delete-action.component\";\r\nimport { WorkGroupPositionRosterTypeFormComponent } from \"./workgroup-position-rostertype-form.component\";\r\n\r\n@Component({\r\n selector: \"pps-manage-workgroup-position-rostertype\",\r\n templateUrl: \"./manage-workgroup-position-rostertype.component.html\"\r\n})\r\nexport class ManageWorkGroupPositionRosterType{\r\n private subs = new SubSink();\r\n smallScreen: boolean = false;\r\n spinnerName: string = \"dataSpinner\";\r\n\r\n @Input() data: IWorkGroupPositionRosterType[] = [];\r\n @Input() workGroups: IEntity[] = [];\r\n @Input() positions: Position[] = [];\r\n @Input() rosterTypes: IRosterType[] = [];\r\n\r\n private gridApi;\r\n private gridColumnApi;\r\n gridHeaders: any[];\r\n context:any = {};\r\n gridOptions: any = {\r\n getRowId: param => `${param.data.workGroup.id}-${param.data.position.id}`,\r\n defaultColDef:{\r\n resizable: true\r\n }\r\n }; \r\n\r\n constructor(\r\n private _workGroupPositionRosterTypeService: WorkGroupPositionRosterTypeService,\r\n private _entityService: EntityService,\r\n private _positionService: PositionService,\r\n private _rosterTypeService: RosterTypeService,\r\n private _spinner: NgxSpinnerService,\r\n private _toast: ToastService,\r\n private _dialog: DialogService,\r\n private _confirm: ConfirmationService,\r\n private _util: PpsUtilityService,\r\n private breakpointObserver: BreakpointObserver){\r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n }\r\n\r\n ngOnInit(){\r\n this.context = { componentParent: this };\r\n this.gridHeaders = this.getColumnDefs();\r\n this.loadAllData();\r\n }\r\n \r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n }\r\n\r\n removable(item: IWorkGroupPositionRosterType){\r\n return true;\r\n }\r\n\r\n loadData(){\r\n this._spinner.show(this.spinnerName);\r\n this.data.length = 0;\r\n this.subs.sink = forkJoin([\r\n this._workGroupPositionRosterTypeService.getAll()\r\n ]).subscribe(([res]) => {\r\n if (res.succeed){\r\n this.data = res.result;\r\n }\r\n })\r\n .add(()=>{\r\n this._spinner.hide(this.spinnerName);\r\n });\r\n }\r\n\r\n loadAllData(){\r\n this.workGroups = this.workGroups.filter( wg => wg.active);\r\n this.workGroups = this.workGroups.sort((a: IEntity, b: IEntity) => (a.name < b.name) ? -1 : (a.name > b.name ? 1 : 0));\r\n this.positions = _.cloneDeep(this.positions).sort((a: Position, b: Position) => (a.title < b.title) ? -1 : (a.title > b.title ? 1 : 0));\r\n this.rosterTypes = _.cloneDeep(this.rosterTypes).sort((a: IRosterType, b: IRosterType) => (a.title < b.title) ? -1 : (a.title > b.title ? 1 : 0));\r\n } \r\n\r\n addItem(){\r\n let dialog = this._dialog.open(WorkGroupPositionRosterTypeFormComponent, {\r\n header: `Configure Roster Type by Work Group and Position`,\r\n styleClass: \"size-md\",\r\n data:{\r\n workGroups: this.workGroups,\r\n positions: this.positions,\r\n rosterTypes: this.rosterTypes\r\n },\r\n draggable: true\r\n });\r\n \r\n this.subs.sink = dialog.onClose.subscribe(\r\n items => {\r\n if (items){\r\n this.subs.sink = this._workGroupPositionRosterTypeService.add(items)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.loadData();\r\n }\r\n }, _error => {\r\n console.log(_error);\r\n })\r\n .add(()=>{\r\n this._spinner.hide(this.spinnerName);\r\n });\r\n }\r\n },\r\n reason => {\r\n }\r\n );\r\n }\r\n\r\n delete(item: IWorkGroupPositionRosterType){\r\n if (item === null){\r\n return;\r\n }\r\n\r\n this._confirm.confirm({\r\n key: \"wg-p-rt-dialog\",\r\n header: `Delete Data`,\r\n message: `Please confirm that you want to delete this item [${item.workGroup.name}, ${item.position.title}, ${item.rosterType.title}]?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => this.deleteHelper(item)\r\n });\r\n }\r\n\r\n deleteHelper(item: IWorkGroupPositionRosterType){\r\n this.subs.sink = this._workGroupPositionRosterTypeService.delete(item)\r\n .subscribe(apiResponse => {\r\n if (apiResponse.succeed){\r\n var foundIndex = this.data.findIndex(x => x.workGroup.id == item.workGroup.id && \r\n x.position.id === item.position.id && \r\n x.rosterType.id === item.rosterType.id);\r\n\r\n if (foundIndex !== -1 ){\r\n this.data.splice(foundIndex, 1);\r\n let rowNode = this.gridApi.getRowNode(`${item.workGroup.id}-${item.position.id}`);\r\n if (rowNode){\r\n this.gridApi.flashCells({rowNodes: [rowNode], flashDelay: 1000, fadeDelay: 1000});\r\n window.setTimeout(() => {\r\n this.gridApi.setRowData(this.data);\r\n this._toast.succeeded(`[${item.workGroup.name}, ${item.position.title}, ${item.rosterType.title}] deleted!`);\r\n }, 1000)\r\n }\r\n }else{\r\n this._toast.failed(`Delete [${item.workGroup.name}, ${item.position.title}, ${item.rosterType.title}] failed!`);\r\n }\r\n }else{\r\n this._toast.failed(`Failed to delete [${item.workGroup.name}, ${item.position.title}, ${item.rosterType.title}]: ${apiResponse.errors.join(\"|\")}`);\r\n }\r\n });\r\n }\r\n\r\n\r\n private getColumnDefs(){\r\n let cols = [\r\n {\r\n headerName: \"\",\r\n field: \"action\",\r\n cellRenderer: DeleteActionComponent,\r\n width: 50,\r\n hide: false,\r\n filter: false, \r\n suppressMovable: true,\r\n cellStyle: {textAlign:\"center\"}\r\n },\r\n {\r\n colId: \"workGroup\",\r\n headerName: 'Work Group',\r\n field:'workGroup.name',\r\n filter: true,\r\n floatingFilter: true,\r\n width: 300,\r\n sortable: true,\r\n headerClass: \"ag-ext-header-align-left\"\r\n },\r\n {\r\n colId: \"position\",\r\n headerName: 'Position',\r\n field:'position.title',\r\n filter: true,\r\n floatingFilter: true,\r\n width: 300,\r\n sortable: true,\r\n headerClass: \"ag-ext-header-align-left\"\r\n },\r\n {\r\n colId: \"rosterType\",\r\n headerName: 'Roster Type',\r\n field:'rosterType.title',\r\n filter: true,\r\n floatingFilter: true,\r\n width: 300,\r\n sortable: true,\r\n headerClass: \"ag-ext-header-align-left\"\r\n }\r\n ];\r\n\r\n return cols;\r\n }\r\n}","\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n\r\n

Loading Data...

\r\n
\r\n\r\n 0\"\r\n style=\"width: 100%; height:100%;\"\r\n class=\"ag-theme-alpine\"\r\n rowSelection=\"single\"\r\n [gridOptions]=\"gridOptions\"\r\n [context]=\"context\"\r\n [rowData]=\"data\"\r\n [columnDefs]=\"gridHeaders\"\r\n [enterMovesDown]=\"true\"\r\n [enterMovesDownAfterEdit]=\"true\"\r\n (gridReady)=\"onGridReady($event)\">\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { AgRendererComponent } from 'ag-grid-angular';\r\nimport { IAfterGuiAttachedParams, ICellRendererParams } from 'ag-grid-community';\r\nimport * as _ from 'lodash-es';\r\nimport { TimesheetBreakdownRuleService } from '../services/timesheet-breakdown-rule.service';\r\nimport { PayCategory } from '../shared/models/pay-category';\r\nimport { TimesheetBreakdownRule } from '../shared/models/timesheet-breakdown-rule';\r\n\r\n\r\n@Component({\r\n selector: 'pps-pay-category-dropdown',\r\n template: `\r\n \r\n \r\n `,\r\n styles: [\r\n ],\r\n})\r\nexport class PayCategoryDropdownComponent implements AgRendererComponent {\r\n private params: any;\r\n updating: boolean = false;\r\n payCategories: PayCategory[] = [];\r\n selectedPayCategory: PayCategory;\r\n\r\n constructor() { }\r\n\r\n refresh(params: any): boolean {\r\n return false;\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n\r\n let parent = params.context.componentParent;\r\n \r\n this.payCategories = parent.payCategories;\r\n\r\n this.selectedPayCategory = params.data.payCategory;\r\n }\r\n\r\n afterGuiAttached?(params?: IAfterGuiAttachedParams): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n onChange(evt, payCategory){\r\n let parent = this.params.context.componentParent;\r\n let ruleId = this.params.data.id;\r\n let foundIndex = parent.rules.findIndex(x => x.id === ruleId);\r\n if (foundIndex === -1){\r\n console.log(\"Something wrong\");\r\n return;\r\n }\r\n\r\n let selectedRule = parent.rules[foundIndex];\r\n let oldPayCategoryId = this.params.data.payCategory?.id;\r\n if (payCategory.id !== oldPayCategoryId){\r\n let rule = _.cloneDeep(selectedRule);\r\n rule.payCategory = _.cloneDeep(payCategory);\r\n this.updating = true;\r\n parent.updateRule(rule, \"pay-category\", null, null, null, () => this.updating = false);\r\n }\r\n }\r\n\r\n\r\n compare(a, b){\r\n return a&&b ? a.id === b.id : false;\r\n }\r\n}","import { Component, OnInit } from '@angular/core';\r\nimport { AgRendererComponent } from 'ag-grid-angular';\r\nimport { IAfterGuiAttachedParams, ICellRendererParams } from 'ag-grid-community';\r\nimport * as _ from 'lodash-es';\r\n\r\n@Component({\r\n selector: 'pps-position-checkbox',\r\n template: `\r\n \r\n `,\r\n styles: [\r\n ],\r\n})\r\nexport class PositionCheckboxComponent implements AgRendererComponent {\r\n params: any;\r\n checked: boolean;\r\n constructor() { }\r\n\r\n refresh(params: any): boolean {\r\n return false;\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n \r\n if (this.params.column.colId === \"salary-employee\"){\r\n this.checked = this.params.data.salaryEmployee;\r\n }\r\n\r\n if (this.params.column.colId === \"lead-head\"){\r\n this.checked = this.params.data.leadHead;\r\n }\r\n\r\n if (this.params.column.colId === \"logRnR\"){\r\n this.checked = this.params.data.logRnR;\r\n }\r\n }\r\n\r\n afterGuiAttached?(params?: IAfterGuiAttachedParams): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n checkedHandler(event) {\r\n let checked = event.target.checked;\r\n if (this.params.column.colId === \"salary-employee\"){\r\n this.params.data.salaryEmployee = checked;\r\n }\r\n\r\n if (this.params.column.colId === \"lead-head\"){\r\n this.params.data.leadHead = checked;\r\n }\r\n\r\n if (this.params.column.colId === \"logRnR\"){\r\n this.params.data.logRnR = checked;\r\n }\r\n\r\n this.params.context.componentParent.updatePosition(this.params.data);\r\n } \r\n}","import { Component, OnInit } from '@angular/core';\r\nimport { AgRendererComponent } from 'ag-grid-angular';\r\nimport { IAfterGuiAttachedParams, ICellRendererParams } from 'ag-grid-community';\r\nimport * as _ from 'lodash-es';\r\nimport { TimesheetBreakdownRuleService } from '../services/timesheet-breakdown-rule.service';\r\nimport { PayCategory } from '../shared/models/pay-category';\r\nimport { Position } from '../shared/models/position';\r\nimport { IRosterCode } from '../shared/models/roster-code';\r\nimport { TimesheetBreakdownRule } from '../shared/models/timesheet-breakdown-rule';\r\n\r\n\r\n@Component({\r\n selector: 'pps-position-dropdown',\r\n template: `\r\n \r\n \r\n `,\r\n styles: [\r\n ],\r\n})\r\nexport class PositionDropdownComponent implements AgRendererComponent {\r\n private params: any;\r\n updating: boolean = false;\r\n positions: Position[] = [];\r\n selectedPosition: Position;\r\n\r\n constructor() { }\r\n\r\n refresh(params: any): boolean {\r\n return false;\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n\r\n let parent = params.context.componentParent;\r\n \r\n this.positions = parent.positions;\r\n\r\n this.selectedPosition = params.data.position;\r\n }\r\n\r\n afterGuiAttached?(params?: IAfterGuiAttachedParams): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n onChange(evt, position){\r\n let parent = this.params.context.componentParent;\r\n let ruleId = this.params.data.id;\r\n let foundIndex = parent.rules.findIndex(x => x.id === ruleId);\r\n if (foundIndex === -1){\r\n console.log(\"Something wrong\");\r\n return;\r\n }\r\n\r\n let selectedRule = parent.rules[foundIndex];\r\n let oldPositionId = this.params.data.position?.id;\r\n if (position.id !== oldPositionId){\r\n let rule = _.cloneDeep(selectedRule);\r\n rule.position = _.cloneDeep(position);\r\n this.updating = true;\r\n parent.updateRule(rule, \"position\", null, null, null, () => this.updating = false);\r\n }\r\n }\r\n\r\n compare(a, b){\r\n return a&&b ? a.id === b.id : false;\r\n }\r\n}","import { Component, OnInit } from '@angular/core';\r\nimport { AgRendererComponent } from 'ag-grid-angular';\r\nimport { IAfterGuiAttachedParams, ICellRendererParams } from 'ag-grid-community';\r\nimport * as _ from 'lodash-es';\r\n\r\n@Component({\r\n selector: 'pps-roster-code-checkbox',\r\n template: `\r\n \r\n `,\r\n styles: [\r\n ],\r\n})\r\nexport class RosterCodeCheckboxComponent implements AgRendererComponent {\r\n params: any;\r\n checked: boolean;\r\n constructor() { }\r\n\r\n refresh(params: any): boolean {\r\n return false;\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n \r\n if (this.params.column.colId === \"can-be-used-in-timesheet\"){\r\n this.checked = this.params.data.canBeUsedInTimesheet;\r\n }\r\n\r\n if (this.params.column.colId === \"can-be-used-in-timesheet-breakdown-rule\"){\r\n this.checked = this.params.data.canBeUsedInTimesheetBreakdownRule;\r\n }\r\n }\r\n\r\n afterGuiAttached?(params?: IAfterGuiAttachedParams): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n checkedHandler(event) {\r\n let checked = event.target.checked;\r\n if (this.params.column.colId === \"can-be-used-in-timesheet\"){\r\n this.params.data.canBeUsedInTimesheet = checked;\r\n }\r\n\r\n if (this.params.column.colId === \"can-be-used-in-timesheet-breakdown-rule\"){\r\n this.params.data.canBeUsedInTimesheetBreakdownRule = checked;\r\n }\r\n\r\n this.params.context.componentParent.updateRosterCode(this.params.data);\r\n } \r\n}","import { Component, OnInit } from '@angular/core';\r\nimport { AgRendererComponent } from 'ag-grid-angular';\r\nimport { IAfterGuiAttachedParams, ICellRendererParams } from 'ag-grid-community';\r\nimport * as _ from 'lodash-es';\r\nimport { TimesheetBreakdownRuleService } from '../services/timesheet-breakdown-rule.service';\r\nimport { PayCategory } from '../shared/models/pay-category';\r\nimport { IRosterCode } from '../shared/models/roster-code';\r\nimport { TimesheetBreakdownRule } from '../shared/models/timesheet-breakdown-rule';\r\n\r\n\r\n@Component({\r\n selector: 'pps-roster-code-dropdown',\r\n template: `\r\n \r\n \r\n `,\r\n styles: [\r\n ],\r\n})\r\nexport class RosterCodeDropdownComponent implements AgRendererComponent {\r\n private params: any;\r\n updating: boolean = false;\r\n rosterCodes: IRosterCode[] = [];\r\n selectedRosterCode: IRosterCode;\r\n\r\n constructor() { }\r\n\r\n refresh(params: any): boolean {\r\n return false;\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n\r\n let parent = params.context.componentParent;\r\n \r\n this.rosterCodes = parent.rosterCodes;\r\n\r\n this.selectedRosterCode = params.data.rosterCode;\r\n }\r\n\r\n afterGuiAttached?(params?: IAfterGuiAttachedParams): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n onChange(evt, rosterCode){\r\n let parent = this.params.context.componentParent;\r\n let ruleId = this.params.data.id;\r\n let foundIndex = parent.rules.findIndex(x => x.id === ruleId);\r\n if (foundIndex === -1){\r\n console.log(\"Something wrong\");\r\n return;\r\n }\r\n\r\n let selectedRule = parent.rules[foundIndex];\r\n let oldRosterCodeId = this.params.data.rosterCode?.id;\r\n if (rosterCode.id !== oldRosterCodeId){\r\n let rule = _.cloneDeep(selectedRule);\r\n rule.rosterCode = _.cloneDeep(rosterCode);\r\n this.updating = true;\r\n parent.updateRule(rule, \"roster-code\", null, null, null, () => this.updating = false);\r\n }\r\n }\r\n\r\n compare(a, b){\r\n return a&&b ? a.id === b.id : false;\r\n }\r\n}","import { Component, ViewEncapsulation } from \"@angular/core\";\r\nimport { NgForm } from \"@angular/forms\";\r\nimport * as _ from \"lodash-es\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { SubSink } from \"subsink\";\r\nimport { IRosterCode } from \"../shared/models/roster-code\";\r\nimport { IEntity } from \"../shared/models/entity\";\r\nimport { IRosterProject } from \"../shared/models/roster/roster-project\";\r\nimport { Role } from \"../shared/models/role\";\r\nimport { AuthenticationService } from \"../services/authentication.service\";\r\nimport { BusinessOperation } from \"../shared/models/business-operation\";\r\n\r\n@Component({\r\n selector: \"pps-roster-project-form\",\r\n templateUrl: \"./roster-project-form.component.html\",\r\n styles:[`\r\n .roster-project-form .item {\r\n display: flex;\r\n align-items: center;\r\n padding: 0rem 0.5rem;\r\n width: 100%;\r\n }\r\n .roster-project-form .p-picklist .p-picklist-list .p-picklist-item{\r\n padding: 0rem;\r\n }\r\n /*\r\n This class is important to make sure the drag preview item is not displayed beneath the dynamic dialog. \r\n Another way is to set autoZIndex = false when open the component in addOrUpdateRosterSummaryLine() method\r\n */\r\n .p-picklist-item.cdk-drag-preview{\r\n z-index:2000 !important;\r\n padding: 0rem 0.75rem;\r\n }\r\n `],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class RosterProjectFormComponent{\r\n private subs = new SubSink();\r\n\r\n errorMessage = \"\";\r\n workGroups: IEntity[] = [];\r\n roles: Role[] = [];\r\n rosterCodes: IRosterCode[] = [];\r\n \r\n selectedWorkGroups: IEntity[] = [];\r\n rosterProject: IRosterProject = {};\r\n \r\n constructor(\r\n private _authService: AuthenticationService,\r\n private _dialogRef: DynamicDialogRef,\r\n private _dlgConfig: DynamicDialogConfig) {\r\n this.setData(this._dlgConfig.data);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n setData(data: any){\r\n this.workGroups = _.cloneDeep(data.workGroups);\r\n this.rosterProject = _.cloneDeep(data.rosterProject);\r\n this.roles = data.roles;\r\n this.rosterProject.groupIds.forEach(id => {\r\n let index = this.workGroups.findIndex(rg => rg.id === id);\r\n if (index !== -1){\r\n this.selectedWorkGroups.push(this.workGroups[index]);\r\n this.workGroups.splice(index, 1);\r\n }\r\n });\r\n }\r\n\r\n save(form: NgForm){\r\n this.errorMessage = \"\";\r\n\r\n if (form.invalid){\r\n return false;\r\n }\r\n\r\n if (!this.rosterProject.title){\r\n this.errorMessage = \"Please provide a title for the summary\"\r\n return;\r\n }\r\n\r\n this.rosterProject.groupIds = [];\r\n this.selectedWorkGroups.forEach(rg => this.rosterProject.groupIds.push(rg.id));\r\n this._dialogRef.close(this.rosterProject);\r\n }\r\n\r\n cancel(){\r\n this._dialogRef.close();\r\n }\r\n\r\n /**\r\n * Check if current user has permission to config roster project permission.\r\n * @returns true with permission, false without.\r\n */\r\n canSetPermission(): boolean{\r\n return this._authService.canUserDoOperartion(BusinessOperation.ManageRosterProjectPermission);\r\n }\r\n}","
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n {{workGroup.name}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
","import { Component, ViewEncapsulation } from \"@angular/core\";\r\nimport { NgForm } from \"@angular/forms\";\r\nimport * as _ from \"lodash-es\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { SubSink } from \"subsink\";\r\nimport { RosterSummaryLineService } from \"../services/roster-summery-line.service\";\r\nimport { IRosterCode } from \"../shared/models/roster-code\";\r\nimport { IRosterSummaryFormular } from \"../shared/models/roster/roster-summary-formular\";\r\nimport { IRosterSummaryLine } from \"../shared/models/roster/roster-summary-line\";\r\nimport { SummaryFormular } from \"../shared/models/roster/summary-formular\";\r\nimport { IEntity } from \"../shared/models/entity\";\r\nimport { IRosterProject } from \"../shared/models/roster/roster-project\";\r\nimport { IEmployer } from \"../shared/models/employer\";\r\n\r\n@Component({\r\n selector: \"pps-roster-summary-line-form\",\r\n templateUrl: \"./roster-summary-line-form.component.html\",\r\n styles:[`\r\n .roster-summary-line-form .item {\r\n display: flex;\r\n align-items: center;\r\n padding: 0rem 0.5rem;\r\n width: 100%;\r\n }\r\n .roster-summary-line-form .p-picklist .p-picklist-list .p-picklist-item{\r\n padding: 0rem;\r\n }\r\n /*\r\n This class is important to make sure the drag preview item is not displayed beneath the dynamic dialog. \r\n Another way is to set autoZIndex = false when open the component in addOrUpdateRosterSummaryLine() method\r\n */\r\n .p-picklist-item.cdk-drag-preview{\r\n z-index:2000 !important;\r\n padding: 0rem 0.75rem;\r\n }\r\n `],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class RosterSummaryLineFormComponent{\r\n private subs = new SubSink();\r\n\r\n errorMessage = \"\";\r\n workGroups: IEntity[] = [];\r\n rosterCodes: IRosterCode[] = [];\r\n rosterProjects: IRosterProject[] = [];\r\n employers: IEmployer[] = [];\r\n \r\n selectedEmployers: IEmployer[] = [];\r\n selectedWorkGroups: IEntity[] = [];\r\n rosterSummaryLine: IRosterSummaryLine = {};\r\n \r\n rosterSummaryFormulars: IRosterSummaryFormular [] = [\r\n {id: SummaryFormular.OnSite, formularName: \"On Site\"},\r\n {id: SummaryFormular.OffSite, formularName: \"Off Site\"},\r\n {id: SummaryFormular.RosterCode, formularName: \"Roster Code\"}\r\n ]; \r\n \r\n constructor(\r\n private _dialogRef: DynamicDialogRef,\r\n private _dlgConfig: DynamicDialogConfig,\r\n private _rosterSummaryLineService: RosterSummaryLineService) {\r\n this.setData(this._dlgConfig.data);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n setData(data: any){\r\n this.workGroups = _.cloneDeep(data.workGroups);\r\n this.rosterCodes = _.cloneDeep(data.rosterCodes);\r\n this.rosterSummaryLine = _.cloneDeep(data.rosterSummaryLine);\r\n this.rosterProjects = _.cloneDeep(data.rosterProjects);\r\n this.employers = _.cloneDeep(data.employers);\r\n\r\n // The value of this.rosterSummaryLine.companyCode is comma seperated employer IDs. We need convert these IDs\r\n // into the array of Employer.\r\n this.selectedEmployers = this._rosterSummaryLineService.getEmployersByCommaSeperatedIds(this.rosterSummaryLine.companyCode, this.employers)\r\n\r\n this.rosterSummaryLine.groupIds.forEach(id => {\r\n let index = this.workGroups.findIndex(rg => rg.id === id);\r\n if (index !== -1){\r\n this.selectedWorkGroups.push(this.workGroups[index]);\r\n this.workGroups.splice(index, 1);\r\n }\r\n });\r\n }\r\n\r\n showRosterCodeDropdown(){\r\n return this.rosterSummaryLine.rosterSummaryFormular && \r\n this.rosterSummaryLine.rosterSummaryFormular.id === SummaryFormular.RosterCode;\r\n }\r\n \r\n save(form: NgForm){\r\n this.errorMessage = \"\";\r\n\r\n if (form.invalid){\r\n return false;\r\n }\r\n\r\n if (!this.rosterSummaryLine.rosterProjectId){\r\n this.errorMessage = \"Please select a roster project for the summary\";\r\n return;\r\n }\r\n\r\n if (this.selectedEmployers.length === 0){\r\n this.errorMessage = \"Please select at least one company code\";\r\n return;\r\n }\r\n\r\n if (!this.rosterSummaryLine.title?.trim()){\r\n this.errorMessage = \"Please provide a title for the summary\";\r\n return;\r\n }\r\n\r\n if (this.rosterSummaryLine.active && !this.rosterSummaryLine.rosterSummaryFormular){\r\n this.errorMessage = \"Please choose a formular for the summary\";\r\n return;\r\n }\r\n\r\n this.rosterSummaryLine.companyCode = this.selectedEmployers.map(e=>e.id).join(\",\");\r\n this.rosterSummaryLine.groupIds = [];\r\n this.selectedWorkGroups.forEach(rg => this.rosterSummaryLine.groupIds.push(rg.id));\r\n this._dialogRef.close(this.rosterSummaryLine);\r\n }\r\n\r\n cancel(){\r\n this._dialogRef.close();\r\n }\r\n}","
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n (Inactive) \r\n {{employer.employerName}}\r\n \r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n {{workGroup.name}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
","
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
","import { Component } from \"@angular/core\";\r\nimport { NgForm } from \"@angular/forms\";\r\nimport { DialogService, DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { RosterPatternParser } from \"../services/roster-pattern-parser\";\r\nimport { IRosterType } from \"../shared/models/roster/roster-type\";\r\n\r\n@Component({\r\n selector: 'pps-roster-type-form',\r\n templateUrl: './roster-type-form.component.html'\r\n})\r\nexport class RosterTypeFormComponent{\r\n originalRosterType: IRosterType;\r\n rosterType: IRosterType = {\r\n title: \"\",\r\n rosterTypeRule: \"\",\r\n rosterTypeDescription: \"\"\r\n };\r\n rosterCodesObj: any = {};\r\n errorMessage = \"\";\r\n\r\n constructor( \r\n private _dialogRef: DynamicDialogRef,\r\n private _dlgConfig: DynamicDialogConfig,\r\n private _parser: RosterPatternParser,\r\n private _util: PpsUtilityService\r\n ) {\r\n this.setData(this._dlgConfig.data);\r\n }\r\n\r\n setData(data: any){\r\n data.rosterCodes.forEach(rc => this.rosterCodesObj[rc.code] = rc.id);\r\n\r\n if (data.rosterType){\r\n this.originalRosterType = data.rosterType;\r\n this.rosterType = this._util.deepCopy(data.rosterType);\r\n this._dlgConfig.header = \"Update Roster Type\";\r\n }else{\r\n this._dlgConfig.header = \"Create Roster Type\";\r\n this.originalRosterType = this._util.deepCopy(this.rosterType);\r\n }\r\n }\r\n\r\n save(form: NgForm){\r\n if (form.invalid){\r\n return false;\r\n }\r\n\r\n var parseResult = this._parser.parse(0, new Date(), this.rosterType.rosterTypeRule, this.rosterCodesObj);\r\n if (!parseResult.succeed){\r\n this.errorMessage = parseResult.errors.join(\";\");\r\n return false;\r\n }\r\n\r\n console.log(this.rosterType);\r\n if (this.originalRosterType.title !== this.rosterType.title ||\r\n this.originalRosterType.rosterTypeRule !== this.rosterType.rosterTypeRule ||\r\n this.originalRosterType.rosterTypeDescription !== this.rosterType.rosterTypeDescription){\r\n this._dialogRef.close(this.rosterType);\r\n }else{\r\n this._dialogRef.close();\r\n }\r\n }\r\n\r\n cancel(){\r\n //this.employee.state = this.employee.state.code;\r\n this._dialogRef.close();\r\n }\r\n}\r\n","import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { Component, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ConfirmationService, MenuItem } from 'primeng/api';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { EntityService } from '../services/entity.service';\r\nimport { PayCategoryService } from '../services/pay-category.service';\r\nimport { PositionService } from '../services/position.service';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { BusinessOperation } from '../shared/models/business-operation';\r\nimport { IEntity } from '../shared/models/entity';\r\nimport { EntityCategory } from '../shared/models/entity-category';\r\nimport { Position } from '../shared/models/position';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\nimport { PositionCheckboxComponent } from './position-checkbox.component';\r\nimport { EntityActionComponent } from './entity-action.component';\r\nimport { EntityFormComponent } from './entity-form.component';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { SubSink } from 'subsink';\r\nimport { GridCheckboxComponent } from './grid-checkbox.component';\r\n\r\n@Component({\r\n selector: 'pps-system-data-management',\r\n templateUrl: './system-data-management.component.html',\r\n styleUrls: ['./system-data-management.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class SystemDataManagementComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n \r\n smallScreen: boolean = true;\r\n items: MenuItem[] = [];\r\n spinnerName: string = \"dataSpinner\";\r\n private itemIcons = {\r\n \"Client Engineer\": \"pi-fw fas fa-user-cog\",\r\n \"Work Group\":\"pi-fw fas fa-user-friends\",\r\n \"Position\":\"pi-fw fas fa-address-card\",\r\n \"Pay Category\":\"pi-fw fas fa-money-check-alt\"\r\n }\r\n \r\n entities: any[] = [];\r\n gridHeaders: any[];\r\n context:any = {};\r\n private gridApi;\r\n entityLoading: boolean = false;\r\n private tipInfo: string = \"\";\r\n selectedCategory: EntityCategory = EntityCategory.Area\r\n @Input() selectedCategoryName: string = \"\";\r\n\r\n gridOptions = {\r\n getRowId: param => param.data.id,\r\n defaultColDef:{\r\n floatingFilter: true,\r\n enableCellChangeFlash: true\r\n }\r\n };\r\n \r\n constructor(private _route: ActivatedRoute,\r\n private _entityService: EntityService,\r\n private _dialog: DialogService,\r\n private _confirm: ConfirmationService,\r\n private _positionService: PositionService,\r\n private _payCategoryService: PayCategoryService,\r\n private _util: PpsUtilityService,\r\n private _toast: ToastService,\r\n private _spinner: NgxSpinnerService,\r\n private breakpointObserver: BreakpointObserver) { \r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.context = { componentParent: this };\r\n\r\n this.subs.sink = this._route.queryParams\r\n .subscribe(params => {\r\n this.selectedCategoryName = params.entity || \"Client Engineer\";\r\n\r\n this.tipInfo = `\r\n Double click on the ${this.selectedCategoryName} field or press F2 when focus on the ${this.selectedCategoryName} field to \r\n modify existing value. Press Enter to complete the ${this.selectedCategoryName} update.\r\n `;\r\n this.items = [\r\n {label:\"Settings\", icon: \"pi-fw fas fa-tools\"}, \r\n {label:\"Manage \" + this.selectedCategoryName, icon: this.itemIcons[this.selectedCategoryName]}\r\n ];\r\n\r\n this.gridHeaders = this.getColumnDefs(this.selectedCategoryName);\r\n this.selectCategory(this.selectedCategoryName);\r\n if (window.sessionStorage && window.sessionStorage.getItem(\"show-setting-tip\") !== \"1\" ){\r\n this._toast.message({\"detail\": this.tipInfo, life: 100000, key: \"for-help\", severity: \"success\" });\r\n window.sessionStorage.setItem(\"show-setting-tip\", \"1\");\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges() {\r\n this.gridHeaders = this.getColumnDefs(this.selectedCategoryName);\r\n this.selectCategory(this.selectedCategoryName);\r\n } \r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n }\r\n\r\n selectCategory(categoryName: string){\r\n this.selectedCategoryName = categoryName;\r\n this.selectedCategory = this._util.getEntityCategory(categoryName);\r\n\r\n if (this.gridApi){\r\n this.gridApi.setColumnDefs(this.getColumnDefs(categoryName));\r\n }\r\n\r\n if (this.isPosition()){\r\n this.loadPositions();\r\n }else if (this.isPayCategory()){\r\n this.loadPayCategories();\r\n }else{\r\n this.loadSelectedEntity();\r\n }\r\n }\r\n\r\n loadPositions(){\r\n this.entityLoading = true;\r\n this._spinner.show(this.spinnerName);\r\n this.subs.sink = this._positionService.getAll()\r\n .subscribe(res => this.afterEntityLoaded(res, p => {\r\n return {id: p.id, name: p.title, abbr: p.abbr, salaryEmployee: p.salaryEmployee, leadHead: p.leadHead, logRnR: p.logRnR};\r\n }))\r\n .add(()=>{\r\n this.entityLoading = false;\r\n this._spinner.hide(this.spinnerName);\r\n });\r\n }\r\n\r\n updatePosition(position: Position){\r\n this.subs.sink = this._positionService.update(position)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this._toast.succeeded(\"Position updated\", 2000, \"for-entity\");\r\n }else{\r\n this._toast.failed(\"Position updated failed: \" + res.errors.join(\";\"), 50000, \"for-entity\");\r\n }\r\n })\r\n .add(()=>{\r\n this.entityLoading = false;\r\n });\r\n }\r\n\r\n loadPayCategories(){\r\n this.entityLoading = true;\r\n this._spinner.show(this.spinnerName);\r\n this.subs.sink = this._payCategoryService.getAll()\r\n .subscribe(res => this.afterEntityLoaded(res, p => {\r\n return {id: p.id, name: p.name, entityCategory: EntityCategory.Unknown, active: true, sortNo: 0};\r\n }))\r\n .add(()=>{\r\n this.entityLoading = false;\r\n this._spinner.hide(this.spinnerName);\r\n });\r\n } \r\n\r\n loadSelectedEntity(){\r\n if (!this.selectedCategory){\r\n return;\r\n }\r\n \r\n this.entityLoading = true;\r\n this._spinner.show(this.spinnerName);\r\n this.subs.sink = this._entityService.getEntitiesByCategory(this.selectedCategory)\r\n .subscribe(res => this.afterEntityLoaded(res, null))\r\n .add(()=>{\r\n this.entityLoading = false;\r\n this._spinner.hide(this.spinnerName);\r\n });\r\n }\r\n\r\n afterEntityLoaded(apiResponse, mapper){\r\n if (apiResponse.succeed){\r\n if (mapper){\r\n this.entities = apiResponse.result.map(p => mapper(p)); \r\n }else{\r\n this.entities = apiResponse.result\r\n }\r\n\r\n if (this.isWorkGroup()){\r\n try{\r\n this.entities = this.entities.sort((a, b)=>{\r\n return a.sortNo - b.sortNo;\r\n });\r\n }\r\n catch(ex){}\r\n }\r\n\r\n this._toast.succeeded(`${this.entities.length} ${this.selectedCategoryName}s loaded`, 2000, \"for-entity\");\r\n }else{\r\n this._toast.failed(`Failed to load positions: ${apiResponse.errors.join(\";\")}`, 50000, \"for-entity\");\r\n }\r\n }\r\n\r\n isActive(categoryName: string): boolean{\r\n return this.isEqual(categoryName);\r\n }\r\n\r\n isWorkGroup(): boolean{\r\n return this.isEqual(\"Work Group\");\r\n }\r\n\r\n isPosition(): boolean{\r\n return this.isEqual(\"Position\");\r\n }\r\n\r\n isPayCategory(): boolean{\r\n return this.isEqual(\"Pay Category\");\r\n }\r\n \r\n isEqual(category): boolean{\r\n return (category.toLowerCase().replace(\" \", \"\") === this.selectedCategoryName.toLowerCase().replace(\" \", \"\"));\r\n }\r\n\r\n openEntityForm(entity: IEntity){\r\n if (entity === null){\r\n entity = {id: 0, name: \"\", entityCategory: this.selectedCategory, active: true, sortNo: 0};\r\n }\r\n\r\n let dialogOption: any = {\r\n backdrop: 'static',\r\n size: \"550\"\r\n };\r\n\r\n let dialog = this._dialog.open(EntityFormComponent, {\r\n header: `Add ${this.selectedCategoryName}`,\r\n styleClass: \"size-sm\",\r\n data: {\r\n entity: entity,\r\n categoryName: this.selectedCategoryName\r\n },\r\n draggable: true\r\n });\r\n\r\n this.subs.sink = dialog.onClose.subscribe(entity => {\r\n if (entity)\r\n {\r\n this.save(entity);\r\n }},\r\n reason => {\r\n console.log(reason);\r\n }\r\n );\r\n }\r\n\r\n private save(entity: IEntity){\r\n if (this.isPosition()){\r\n this.savePosition(entity);\r\n }else if (this.isPayCategory()){\r\n this.savePayCategory(entity);\r\n }else{\r\n this.saveEntity(entity);\r\n }\r\n }\r\n\r\n private saveEntity(entity: IEntity){\r\n this.subs.sink = this._entityService\r\n .addEntity(entity)\r\n .subscribe(res => {\r\n this.afterEntitySaved(res, entity);\r\n });\r\n }\r\n\r\n private savePosition(entity: IEntity){\r\n let pos = {id: entity.id, title: entity.name, abbr: null, active: true}\r\n this.subs.sink = this._positionService\r\n .add(pos)\r\n .subscribe(res => {\r\n let result = {id: res.result.id, name: res.result.title, entityCategory: EntityCategory.Unknown, active: true, sortNo: 0}\r\n this.afterEntitySaved(res, entity);\r\n });\r\n }\r\n\r\n private savePayCategory(entity: IEntity){\r\n this.subs.sink = this._payCategoryService\r\n .add(entity)\r\n .subscribe(res => {\r\n this.afterEntitySaved(res, entity);\r\n });\r\n }\r\n\r\n private afterEntitySaved(apiResponse, entity:IEntity){\r\n if (apiResponse.succeed){\r\n entity.id = apiResponse.result.id;\r\n this.entities.unshift(entity);\r\n this.gridApi.setRowData(this.entities);\r\n let rowNode = this.gridApi.getRowNode(apiResponse.result.id);\r\n if (rowNode){\r\n this.gridApi.flashCells({rowNodes: [rowNode]});\r\n rowNode.setSelected(true);\r\n \r\n window.setTimeout( () =>{\r\n this.gridApi.startEditingCell({rowIndex: rowNode.rowIndex, colKey: \"name\"});\r\n }, 1000);\r\n }\r\n this._toast.succeeded(`${this.selectedCategoryName}: [${entity.name}] create successfully`, 2000, \"for-entity\");\r\n }else{\r\n this._toast.failed(`${this.selectedCategoryName}: [${entity.name}] creatation failed: ${apiResponse.errors.join(\";\")}`);\r\n }\r\n }\r\n\r\n deleteEntity(entity: IEntity){\r\n if (entity === null){\r\n return;\r\n }\r\n\r\n this._confirm.confirm({\r\n header: `Delete ${this.selectedCategoryName}`,\r\n message: `Are you sure that you want to delete ${this.selectedCategoryName}: [${entity.name}]?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => {\r\n if (this.isPosition()){\r\n this.subs.sink = this._positionService.delete(entity.id)\r\n .subscribe(res => this.afterEntityDeleted(res, entity));\r\n }else{\r\n this.subs.sink = this._entityService.deleteEntity(entity.id)\r\n .subscribe(res => this.afterEntityDeleted(res, entity));\r\n }\r\n }});\r\n }\r\n\r\n private afterEntityDeleted(apiResponse, entity: IEntity){\r\n if (apiResponse.succeed){\r\n var foundIndex = this.entities.findIndex(x => x.id == entity.id);\r\n if (foundIndex !== -1 ){\r\n this.entities.splice(foundIndex, 1);\r\n this.gridApi.setRowData(this.entities);\r\n this._toast.succeeded(`${this.selectedCategoryName}: [${entity.name}] deleted!`, 2000, \"for-entity\");\r\n }else{\r\n this._toast.failed(`Delete ${this.selectedCategoryName}: [${entity.name}] failed!`, 5000, \"for-entity\");\r\n }\r\n }else{\r\n this._toast.failed(`Failed to delete ${this.selectedCategoryName}: [${entity.name}]: ${apiResponse.errors.join(\"|\")}`, 5000, \"for-entity\");\r\n }\r\n }\r\n\r\n private updateData(params){\r\n var entity = params as IEntity;\r\n this.subs.sink = this._entityService.updateEntity(entity).subscribe(res => this.afterEntityUpdated(res));\r\n }\r\n\r\n private entityNameChanged(params){\r\n let _this = params.context.componentParent;\r\n\r\n if (_this.isPosition()){\r\n let pos = {id: params.data.id, title: params.data.name, abbr: params.data.abbr || \"\", active: true};\r\n _this.subs.sink = _this._positionService.update(pos).subscribe(res => _this.afterEntityUpdated(res));\r\n }else if (_this.isPayCategory()){\r\n _this.subs.sink = _this._payCategoryService.update(params.data).subscribe(res => _this.afterEntityUpdated(res));\r\n }else{\r\n let entity = params.data as IEntity;\r\n entity.sortNo = +entity.sortNo;\r\n _this.subs.sink = _this._entityService.updateEntity(entity).subscribe(res => _this.afterEntityUpdated(res));\r\n }\r\n } \r\n\r\n private afterEntityUpdated(apiResponse){\r\n if (apiResponse.succeed){\r\n this._toast.succeeded(`${this.selectedCategoryName} updated`, 2000, \"for-entity\");\r\n }else{\r\n this._toast.failed(`${this.selectedCategoryName} update failed: ${apiResponse.errors.join(\"|\")}`, 2000, \"for-entity\");\r\n }\r\n }\r\n\r\n private getColumnDefs(category){\r\n let cols: any[] = [\r\n {\r\n headerName: \"\",\r\n field: \"action\",\r\n cellRenderer: EntityActionComponent,\r\n width: 40,\r\n hide: false,\r\n filter: false,\r\n sortable: false,\r\n cellStyle: {textAlign:\"center\"}\r\n },\r\n {\r\n headerName: this.selectedCategoryName,\r\n field:'name',\r\n filter: true,\r\n sortable: true,\r\n resizable: true,\r\n flex: 1,\r\n editable: true,\r\n onCellValueChanged: this.entityNameChanged,\r\n headerClass: \"ag-ext-header-align-left\"\r\n }\r\n ];\r\n if (category === \"Work Group\"){\r\n cols.splice(1, 0, {\r\n headerName: 'Order No',\r\n field:'sortNo',\r\n width: 60,\r\n editable: true,\r\n sortable: true,\r\n onCellValueChanged: this.entityNameChanged,\r\n cellStyle: {textAlign:\"center\"}\r\n });\r\n // cols.push({\r\n // colId: \"logRnR\",\r\n // headerName: \"R&R to be entered into timesheets\",\r\n // field: \"logRnR\",\r\n // sortable: true,\r\n // width: 200,\r\n // cellRenderer: GridCheckboxComponent,\r\n // cellRendererParams: {\r\n // checkboxValueColId: \"logRnR\"\r\n // }, \r\n // cellStyle: {textAlign:\"center\"}\r\n // });\r\n }\r\n\r\n if (category === \"Position\"){\r\n cols.push({\r\n headerName: 'Abbr',\r\n field:'abbr',\r\n filter: true,\r\n sortable: true,\r\n width: 120,\r\n editable: true,\r\n resizable: true,\r\n onCellValueChanged: this.entityNameChanged\r\n });\r\n\r\n cols.push({\r\n colId: \"salary-employee\",\r\n headerName: \"Salaried Position\",\r\n field: \"salaryEmployee\",\r\n sortable: true,\r\n width: 120,\r\n cellRenderer: PositionCheckboxComponent,\r\n cellStyle: {textAlign:\"center\"}\r\n });\r\n\r\n cols.push({\r\n colId: \"lead-head\",\r\n headerName: \"Lead Head\",\r\n field: \"leadHead\",\r\n sortable: true,\r\n width: 120,\r\n cellRenderer: PositionCheckboxComponent,\r\n cellStyle: {textAlign:\"center\"}\r\n });\r\n\r\n cols.push({\r\n colId: \"logRnR\",\r\n headerName: \"RnR to be entered into timesheets\",\r\n field: \"logRnR\",\r\n sortable: true,\r\n width: 240,\r\n cellRenderer: PositionCheckboxComponent,\r\n cellStyle: {textAlign:\"center\"}\r\n });\r\n }\r\n\r\n return cols;\r\n }\r\n}\r\n","\r\n \r\n
\r\n
\r\n {{message.detail}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n

Loading data...

\r\n
\r\n\r\n 0\"\r\n style=\"width: 100%; height:100%;\"\r\n class=\"ag-theme-alpine\"\r\n rowSelection=\"single\"\r\n [gridOptions]=\"gridOptions\"\r\n [context]=\"context\"\r\n [rowData]=\"entities\"\r\n [columnDefs]=\"gridHeaders\"\r\n [enterMovesDown]=\"true\"\r\n [enterMovesDownAfterEdit]=\"true\"\r\n (gridReady)=\"onGridReady($event)\">\r\n \r\n
\r\n\r\n
","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { AgGridModule } from \"ag-grid-angular\";\r\nimport { NgxSpinnerModule } from \"ngx-spinner\";\r\nimport { BadgeModule } from \"primeng/badge\";\r\nimport { BreadcrumbModule } from \"primeng/breadcrumb\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { ConfirmDialogModule } from \"primeng/confirmdialog\";\r\nimport { DropdownModule } from \"primeng/dropdown\";\r\nimport { PickListModule } from \"primeng/picklist\";\r\nimport { InputTextModule } from \"primeng/inputtext\";\r\nimport { MultiSelectModule } from \"primeng/multiselect\";\r\nimport { SplitterModule } from \"primeng/splitter\";\r\nimport { ToastModule } from \"primeng/toast\";\r\nimport { ToolbarModule } from \"primeng/toolbar\";\r\nimport { TooltipModule } from \"primeng/tooltip\";\r\nimport { AuthGuardService } from \"../services/auth-guard.service\";\r\nimport { BreakdownRuleDropdownComponent } from \"./breakdown-rule-dropdown.component\";\r\nimport { BreakdownRuleLockComponent } from \"./breakdown-rule-lock.component\";\r\nimport { PositionCheckboxComponent } from \"./position-checkbox.component\";\r\nimport { ClientManagementComponent } from \"./client-management.component\";\r\nimport { EntityActionComponent } from \"./entity-action.component\";\r\nimport { EntityFormComponent } from \"./entity-form.component\";\r\nimport { ManageResourceComponent } from \"./manage-resource.component\";\r\nimport { PayCategoryDropdownComponent } from \"./pay-category-dropdown.component\";\r\nimport { PositionDropdownComponent } from \"./position-dropdown.component\";\r\nimport { DeleteActionComponent} from \"./delete-action.component\";\r\nimport { RosterCodeDropdownComponent } from \"./roster-code-dropdown.component\";\r\nimport { SystemDataManagementComponent } from \"./system-data-management.component\";\r\nimport { TimesheetBreakdownRuleComponent } from \"./timesheet-breakdown-rule.component\";\r\nimport { ManageRosterCodeComponent } from \"./manage-roster-code.component\";\r\nimport { RosterCodeCheckboxComponent } from \"./roster-code-checkbox.component\";\r\nimport { ManageHolidayComponent } from \"./manage-holiday.component\";\r\nimport { MessagesModule } from \"primeng/messages\";\r\nimport { PanelModule } from \"primeng/panel\";\r\nimport { ManageRosterSettingsComponent } from \"./manage-roster-settings.component\";\r\nimport { TabViewModule } from \"primeng/tabview\";\r\nimport { ManageRosterCodeSettingsComponent } from \"./manage-roster-code-settings.component\";\r\nimport { ManageRosterTypeComponent } from \"./manage-roster-type.component\";\r\nimport { FieldsetModule } from \"primeng/fieldset\";\r\nimport { MessageModule } from \"primeng/message\";\r\nimport { RosterTypeFormComponent } from \"./roster-type-form.component\";\r\nimport { InputTextareaModule } from \"primeng/inputtextarea\";\r\nimport { SharedModule } from \"../shared/shared.module\";\r\nimport { ManageWorkAreaComponent } from \"./manage-work-area.component\";\r\nimport { TableModule } from \"primeng/table\";\r\nimport { ManageRosterSummaryLineComponent } from \"./manage-roster-summary-line.component\";\r\nimport { RosterSummaryLineFormComponent } from \"./roster-summary-line-form.component\";\r\nimport { InputNumberModule } from \"primeng/inputnumber\";\r\nimport { ColorPickerModule } from \"ngx-color-picker\";\r\nimport { ManageWorkGroupPositionRosterType } from \"./manage-workgroup-position-rostertype.component\";\r\nimport { WorkGroupPositionRosterTypeFormComponent } from \"./workgroup-position-rostertype-form.component\";\r\nimport { WorkareaFormComponent } from \"./workarea-form.component\";\r\nimport { ManageRosterProjectComponent } from \"./manage-roster-project.component\";\r\nimport { RosterProjectFormComponent } from \"./roster-project-form.component\";\r\nimport { ChipModule } from \"primeng/chip\";\r\nimport { ManageProjectColumnsComponent } from \"./manage-project-columns.component\";\r\nimport { ManageTrainingCourseComponent } from \"./manage-training-course.component\";\r\nimport { ManageEmployerComponent } from \"./manage-employer.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgxSpinnerModule,\r\n SharedModule,\r\n AgGridModule.withComponents([]),\r\n\r\n BadgeModule,\r\n BreadcrumbModule,\r\n ButtonModule,\r\n CheckboxModule,\r\n ChipModule,\r\n ColorPickerModule,\r\n ConfirmDialogModule,\r\n DropdownModule,\r\n FieldsetModule,\r\n InputNumberModule,\r\n InputTextModule,\r\n InputTextareaModule,\r\n MessageModule,\r\n MessagesModule, \r\n MultiSelectModule,\r\n PanelModule,\r\n PickListModule,\r\n SplitterModule,\r\n TableModule,\r\n TabViewModule,\r\n ToastModule,\r\n ToolbarModule,\r\n TooltipModule,\r\n \r\n RouterModule.forChild([\r\n { path: 'manage-company', component: ManageEmployerComponent, canActivate: [AuthGuardService] },\r\n { path: 'system-data-management', component: SystemDataManagementComponent, canActivate: [AuthGuardService] },\r\n { path: 'client-management', component: ClientManagementComponent, canActivate: [AuthGuardService] },\r\n { path: 'manage-resource', component: ManageResourceComponent, canActivate: [AuthGuardService] },\r\n { path: 'manage-roster-code', component: ManageRosterCodeComponent, canActivate: [AuthGuardService] },\r\n { path: 'manage-holiday', component: ManageHolidayComponent, canActivate: [AuthGuardService] },\r\n { path: 'timesheet-breakdown-rule', component: TimesheetBreakdownRuleComponent, canActivate: [AuthGuardService] },\r\n { path: 'manage-roster-settings', component: ManageRosterSettingsComponent, canActivate: [AuthGuardService] },\r\n { path: 'manage-project-columns', component: ManageProjectColumnsComponent, canActivate: [AuthGuardService] },\r\n { path: 'manage-training-courses', component: ManageTrainingCourseComponent, canActivate: [AuthGuardService] }\r\n ]) \r\n ],\r\n declarations: [\r\n ClientManagementComponent,\r\n EntityActionComponent,\r\n EntityFormComponent,\r\n ManageResourceComponent,\r\n ManageRosterCodeComponent,\r\n ManageHolidayComponent,\r\n DeleteActionComponent,\r\n SystemDataManagementComponent,\r\n PayCategoryDropdownComponent,\r\n RosterCodeDropdownComponent,\r\n PositionDropdownComponent,\r\n BreakdownRuleDropdownComponent,\r\n BreakdownRuleLockComponent,\r\n PositionCheckboxComponent,\r\n TimesheetBreakdownRuleComponent,\r\n RosterCodeCheckboxComponent,\r\n ManageRosterSettingsComponent,\r\n ManageRosterCodeSettingsComponent,\r\n ManageRosterTypeComponent,\r\n RosterTypeFormComponent,\r\n ManageWorkAreaComponent,\r\n ManageRosterProjectComponent,\r\n ManageRosterSummaryLineComponent,\r\n ManageProjectColumnsComponent,\r\n RosterSummaryLineFormComponent,\r\n RosterProjectFormComponent,\r\n ManageWorkGroupPositionRosterType,\r\n WorkGroupPositionRosterTypeFormComponent,\r\n WorkareaFormComponent,\r\n ManageTrainingCourseComponent,\r\n ManageEmployerComponent\r\n ]\r\n})\r\nexport class SystemSettingsModule{}","\r\nimport { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { forkJoin, Observable } from 'rxjs';\r\nimport { PayCategoryService } from '../services/pay-category.service';\r\nimport { PositionService } from '../services/position.service';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { RosterService } from '../services/roster.service';\r\nimport { TimesheetBreakdownRuleService } from '../services/timesheet-breakdown-rule.service';\r\nimport { PayCategory } from '../shared/models/pay-category';\r\nimport { IRosterCode } from '../shared/models/roster-code';\r\nimport { Position } from '../shared/models/position';\r\nimport { TimesheetBreakdownRule } from '../shared/models/timesheet-breakdown-rule';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\nimport { ViewEncapsulation } from '@angular/core';\r\nimport * as _ from 'lodash-es';\r\nimport { PayCategoryDropdownComponent } from './pay-category-dropdown.component';\r\nimport { ConfirmationService, MenuItem } from 'primeng/api';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { RosterCodeDropdownComponent } from './roster-code-dropdown.component';\r\nimport { PositionDropdownComponent } from './position-dropdown.component';\r\nimport { BreakdownRuleDropdownComponent } from './breakdown-rule-dropdown.component';\r\nimport { BreakdownRuleLockComponent } from './breakdown-rule-lock.component';\r\nimport { SubSink } from 'subsink';\r\n\r\n@Component({\r\n selector: 'pps-timesheet-breakdown-rule',\r\n templateUrl: './timesheet-breakdown-rule.component.html',\r\n styles: [`\r\n .ng-select.ng-select-auto-height .ng-select-container{\r\n height: auto;\r\n padding:0px;\r\n }\r\n `],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TimesheetBreakdownRuleComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n\r\n smallScreen = false;\r\n spinnerName: string = \"dataSpinner\";\r\n items: MenuItem[] = [\r\n {label:\"Settings\", icon: \"pi-fw fas fa-tools\"}, \r\n {label:\"Manage Payroll Timesheet Rules\", icon: \"pi-fw fas fa-comment-dollar\"}\r\n ];\r\n\r\n exporting: boolean = false;\r\n gridHeaders = [];\r\n context:any = {};\r\n // modules: Module[] = [\r\n // ClientSideRowModelModule\r\n // ]; \r\n\r\n frameworkComponents: any;\r\n gridOptions = {\r\n deltaRowDataMode: true,\r\n getRowId: param => param.data.id,\r\n defaultColDef: {\r\n filter: true,\r\n sortable: true,\r\n resizable:true,\r\n floatingFilter: true,\r\n cellStyle: this.getCellStyle,\r\n enableCellChangeFlash: true\r\n },\r\n enableCellTextSelection: true,\r\n ensureDomOrder: true\r\n };\r\n private gridApi;\r\n\r\n selectedRow: any = null;\r\n selectedPositions: Position[] = [];\r\n selectedRosterCodes: IRosterCode[] = [];\r\n selectedPayCategories: PayCategory[] = [];\r\n\r\n creatingRule: boolean = false;\r\n reloading: boolean = false;\r\n\r\n ruleForWeekend: string = \"0\";\r\n rule: TimesheetBreakdownRule = new TimesheetBreakdownRule();\r\n\r\n rules: TimesheetBreakdownRule[] = [];\r\n positions: Position[] = [];\r\n rosterCodes: IRosterCode[] = [];\r\n payCategories: PayCategory[] = [];\r\n // predefinedRulesList:any = null;\r\n // predefinedRules: any = {\r\n // 1: {\r\n // id: 1, \r\n // name: \"input_hour >= 7.6 ? 7.6 : input_hour\", \r\n // description: \"7.6 hours if the input value is more than 7.6, input value otherwise.\"\r\n // },\r\n // 2:{\r\n // id: 2, \r\n // name: \"input_hour < 7.6 ? 0 : input_hour - 7.6\",\r\n // description: \"input value - 7.6 hours if the input value is more than 7.6, 0 otherwise.\"\r\n // },\r\n // 3:{\r\n // id: 3, \r\n // name:\"7.6 hours\",\r\n // description: \"7.6 hours.\"\r\n // },\r\n // 4:{\r\n // id: 4, \r\n // name: \"input_hour\",\r\n // description: \"input value.\"\r\n // }\r\n // };\r\n \r\n constructor(private _spinner: NgxSpinnerService,\r\n private _ruleService: TimesheetBreakdownRuleService,\r\n private _positionService: PositionService,\r\n private _payCategoryService: PayCategoryService,\r\n private _rosterService: RosterService,\r\n private _toast: ToastService,\r\n private _confirmationService: ConfirmationService,\r\n public util: PpsUtilityService,\r\n private breakpointObserver: BreakpointObserver,\r\n private changeDetectorRef: ChangeDetectorRef) { \r\n \r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n console.log(\"smallScreen? \" + this.smallScreen);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.context = { componentParent: this };\r\n this.frameworkComponents = {\r\n positionDropdownComponent: PositionDropdownComponent,\r\n rosterCodeDropdownComponent: RosterCodeDropdownComponent,\r\n payCategoryDropdownComponent: PayCategoryDropdownComponent,\r\n breakdownRuleDropdownComponent: BreakdownRuleDropdownComponent\r\n }; \r\n\r\n this.gridHeaders = this.getColumnDefs();\r\n this.loadEntities();\r\n }\r\n\r\n ngAfterViewChecked()\r\n {\r\n /*\r\n add the following line to resolve the ExpressionChangedAfterItHasBeenCheckedError exception\r\n \r\n core.js:6185 ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: '0'. Current value: '992'.\r\n at throwErrorIfNoChangesMode (core.js:8092)\r\n at bindingUpdated (core.js:19773)\r\n at interpolation1 (core.js:19917)\r\n at Module.ɵɵpropertyInterpolate1 (core.js:21981)\r\n at TimesheetBreakdownRuleComponent_Template (timesheet-breakdown-rule.component.html:55)\r\n at executeTemplate (core.js:11949)\r\n at refreshView (core.js:11796)\r\n at refreshComponent (core.js:13229)\r\n at refreshChildComponents (core.js:11527)\r\n at refreshView (core.js:11848) \r\n */\r\n this.changeDetectorRef.detectChanges();\r\n } \r\n\r\n onGridReady(params) {\r\n this.gridApi = params.api;\r\n }\r\n\r\n onRowClicked(evt){\r\n let _this = evt.context.componentParent;\r\n var selectedRows = _this.gridApi.getSelectedRows();\r\n _this.selectedRow = selectedRows.length === 1 ? selectedRows[0] : null;\r\n }\r\n\r\n onRowDblClicked($event){\r\n }\r\n\r\n getLockedCount(){\r\n return this.rules.filter(r=>r.lock).length;\r\n }\r\n\r\n getUnlockedCount(){\r\n return this.rules.filter(r=>!r.lock).length;\r\n }\r\n\r\n loadRules(){\r\n this._spinner.show(this.spinnerName);\r\n this.reloading = true;\r\n this.subs.sink = this._ruleService.getAll()\r\n .subscribe(response => {\r\n if (response.succeed){\r\n this.rules = response.result;\r\n this._toast.succeeded(`${this.rules.length} rules have been loaded`);\r\n }else{\r\n this._toast.failed(\"Loading rules failed: \" + response.errors.join(\";\"));\r\n }\r\n })\r\n .add(() => {\r\n this._spinner.hide(this.spinnerName);\r\n this.reloading = false;\r\n });\r\n }\r\n\r\n loadEntities(){\r\n this._spinner.show(this.spinnerName);\r\n this.subs.sink = forkJoin([\r\n this._rosterService.getRosterCodes(),\r\n this._positionService.getAll(),\r\n this._payCategoryService.getAll()\r\n ]).subscribe(([rcRes, posRes, pcRes]) => { // onNext\r\n if (rcRes.succeed){\r\n this.rosterCodes = rcRes.result.filter(rc => rc.canBeUsedInTimesheetBreakdownRule);\r\n this.selectedRosterCodes = _.cloneDeep(this.rosterCodes);\r\n }\r\n\r\n if (posRes.succeed){\r\n this.positions = posRes.result;\r\n }\r\n\r\n if (pcRes.succeed){\r\n this.payCategories = pcRes.result;\r\n this.payCategories.forEach(pc => pc.lowerCaseName = pc.name.toLowerCase());\r\n }\r\n }, error => { // onError\r\n }, () => { //onComplete\r\n this.loadRules();\r\n }).add(() => { //Finalize handler\r\n this._spinner.hide(this.spinnerName);\r\n });\r\n }\r\n\r\n deleteRule(rule){\r\n this._confirmationService.confirm({\r\n header: \"Delete Breakdown Rule\",\r\n message: `Are you sure that you want to delete selected rule?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n key: \"dlg1\",\r\n defaultFocus: \"accept\",\r\n accept: () => {\r\n this._deleteRule(rule);\r\n }\r\n });\r\n }\r\n\r\n private _deleteRule(rule){\r\n this.subs.sink = this._ruleService.delete(rule.id)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n var foundIndex = this.rules.findIndex(x => x.id == rule.id);\r\n if (foundIndex !== -1){\r\n this.rules.splice(foundIndex, 1);\r\n this.gridApi.setRowData(this.rules);\r\n\r\n if (foundIndex < this.rules.length){\r\n let nextRow = this.gridApi.getRowNode(this.rules[foundIndex].id);\r\n if (nextRow){\r\n nextRow.setSelected(true);\r\n this.selectedRow = nextRow;\r\n }\r\n }\r\n\r\n this._toast.succeeded(`Timesheet breakdown rule for position [${rule.position.title}] deleted!`);\r\n }\r\n }else{\r\n this._toast.failed(`Delete timesheet breakdown rule failed: ${res.errors.join(\";\")}!`);\r\n }\r\n });\r\n }\r\n\r\n addRule(weekend: boolean){\r\n let rule = new TimesheetBreakdownRule();\r\n rule.weekend = weekend;\r\n rule.lock = false;\r\n rule.active = true;\r\n this.subs.sink = this._ruleService.add(rule)\r\n .subscribe(\r\n res => {\r\n if (res.succeed){\r\n this.rules.unshift(res.result);\r\n this.gridApi.setRowData(this.rules);\r\n let rowNode = this.gridApi.getRowNode(res.result.id);\r\n if (rowNode){\r\n this.gridApi.flashCells({rowNodes: [rowNode]});\r\n rowNode.setSelected(true);\r\n this.selectedRow = rowNode;\r\n }\r\n }else{\r\n this._toast.failed(`Add new rule failed: ${res.errors.join(\";\")}!`);\r\n }\r\n },\r\n error => {}\r\n )\r\n .add(()=>{\r\n });\r\n }\r\n\r\n updateRule(rule, updateColId, whenSucceeded = null, whenFailed = null, whenError = null, whenDone = null){\r\n this.subs.sink = this._ruleService.update(rule)\r\n .subscribe(res => {\r\n if (res.succeed){ \r\n var foundIndex = this.rules.findIndex(x => x.id == rule.id); \r\n \r\n if (foundIndex !== -1){\r\n let oldRule = this.rules[foundIndex];\r\n switch (updateColId){\r\n case \"lock\":\r\n oldRule.lock = rule.lock; break;\r\n case \"position\":\r\n oldRule.position = _.cloneDeep(rule.position); break;\r\n case \"roster-code\":\r\n oldRule.rosterCode = _.cloneDeep(rule.rosterCode); break;\r\n case \"pay-category\":\r\n oldRule.payCategory = _.cloneDeep(rule.payCategory); break;\r\n case \"break-down-rule\":\r\n oldRule.breakdownRule = rule.breakdownRule; break;\r\n }\r\n\r\n this.rules[foundIndex] = oldRule;\r\n this.gridApi.setRowData(this.rules);\r\n var rowNode = this.gridApi.getRowNode(rule.id);\r\n if (updateColId === \"lock\"){\r\n // This is to force the cellRendererSelector to switch to new component\r\n // https://github.com/ag-grid/ag-grid/issues/3086\r\n this.gridApi.redrawRows({rowNodes: [rowNode]});\r\n }\r\n\r\n this.gridApi.flashCells({\r\n rowNodes: [rowNode],\r\n columns: [updateColId]\r\n }); \r\n }\r\n\r\n this._toast.succeeded(`Timesheet breakdown rule for position [${res.result.position.title}] has been updated!`);\r\n if (whenSucceeded){\r\n whenSucceeded(res);\r\n }\r\n }else{\r\n this._toast.failed(`Update timesheet breakdown rule failed: ${res.errors.join(\";\")}!`);\r\n\r\n if (whenFailed){\r\n whenFailed(res);\r\n }\r\n }\r\n }, error => {\r\n if (whenError){\r\n whenError(error);\r\n }\r\n }).add(()=>{\r\n if (whenDone){\r\n whenDone();\r\n }\r\n });\r\n }\r\n\r\n private getColumnDefs(){\r\n return [\r\n // {\r\n // colId: \"id\",\r\n // headerName: 'Id',\r\n // field:'id',\r\n // filter: false,\r\n // sortable: true,\r\n // resizable: false,\r\n // width: 50,\r\n // suppressMovable: true,\r\n // cellStyle: {textAlign:\"center\"}\r\n // },\r\n {\r\n colId: \"lock\",\r\n headerName: 'Lock',\r\n field:'lock',\r\n filter: false,\r\n width: 70,\r\n sortable: true,\r\n cellRenderer: BreakdownRuleLockComponent,\r\n cellClass: \"pps-cell-text-align-center\"\r\n },\r\n {\r\n colId: \"weekday\",\r\n headerName: 'Weekday',\r\n field: '',\r\n width: 100,\r\n valueGetter: this.getWeekdayValue\r\n },\r\n {\r\n colId: \"position\",\r\n headerName: 'Position',\r\n field:'position.title',\r\n filter: \"agTextColumnFilter\",\r\n width: 220,\r\n sortable: true,\r\n cellRendererSelector: params => params.data.lock ? null : {component: \"positionDropdownComponent\"},\r\n comparator: (a, b) => this.positionComparator(a, b),\r\n cellClass: \"pps-grid-dropdown\"\r\n },\r\n {\r\n colId: \"roster-code\",\r\n headerName: 'Roster Code',\r\n field:'rosterCode.code',\r\n width: 220,\r\n filter: true,\r\n sortable: true,\r\n cellRendererSelector: params => params.data.lock ? null : {component: \"rosterCodeDropdownComponent\"},\r\n comparator: (a, b) => this.rosterCodeComparator(a, b),\r\n valueGetter: params => {\r\n return `${params.data.rosterCode?.code} - ${params.data.rosterCode?.description}`;\r\n }, \r\n cellClass: \"pps-grid-dropdown\"\r\n },\r\n {\r\n colId: \"pay-category\",\r\n headerName: 'Pay Category',\r\n field:'payCategory.name',\r\n width: 260,\r\n filter: true,\r\n sortable: true,\r\n cellRendererSelector: params => params.data.lock ? null : {component: \"payCategoryDropdownComponent\"},\r\n comparator: (a, b) => this.comparator(a, b),\r\n cellClass: \"pps-grid-dropdown\"\r\n },\r\n {\r\n colId: \"break-down-rule\",\r\n headerName: 'Timesheet Hour Calculation Rule',\r\n field:'breakdownRule',\r\n flex: 1,\r\n filter: true,\r\n sortable: true,\r\n cellRendererSelector: params => params.data.lock ? null : {component: \"breakdownRuleDropdownComponent\"},\r\n comparator: (a, b) => this.comparator(a, b),\r\n valueGetter: params => {\r\n var _this = params.context.componentParent;\r\n var rules = _this._ruleService.getBreakdownRules();\r\n return rules[params.data.breakdownRule - 1];\r\n },\r\n cellClass: \"pps-grid-dropdown\"\r\n }\r\n ];\r\n }\r\n\r\n private positionComparator(a, b): number{\r\n let aValue = a ? (a.title ? a.title : a) : \"\";\r\n let bValue = b ? (b.title ? b.title : b) : \"\";\r\n return aValue > bValue ? 1 : (aValue < bValue ? -1 : 0);\r\n }\r\n\r\n private rosterCodeComparator(a, b): number{\r\n let aValue = a ? (a.code ? a.code : a) : \"\";\r\n let bValue = b ? (b.code ? b.code : b) : \"\";\r\n return aValue > bValue ? 1 : (aValue < bValue ? -1 : 0);\r\n }\r\n\r\n private comparator(a, b): number{\r\n let aValue = a ? (a.name ? a.name : a) : \"\";\r\n let bValue = b ? (b.name ? b.name : b) : \"\";\r\n return aValue > bValue ? 1 : (aValue < bValue ? -1 : 0);\r\n }\r\n\r\n private getWeekdayValue(params){\r\n let rule: TimesheetBreakdownRule = params.data;\r\n\r\n return rule.weekend ? \"Weekend\" : \"Weekday\";\r\n }\r\n\r\n private getCellStyle(params){\r\n let rule: TimesheetBreakdownRule = params.data;\r\n\r\n if (rule.lock){\r\n return {color: \"#B00020\", fontWeight: \"normal\"};\r\n }\r\n }\r\n}\r\n","\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n

Loading rules...

\r\n
\r\n\r\n \r\n \r\n
\r\n
","import { Component, OnInit } from \"@angular/core\";\r\nimport { NgForm } from \"@angular/forms\";\r\nimport * as _ from \"lodash\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { EmployeeBase } from \"../shared/models/employee-base\";\r\nimport { IWorkArea } from \"../shared/models/workarea\";\r\n\r\n@Component({\r\n selector: \"pps-workarea-form\",\r\n templateUrl: \"./workarea-form.component.html\"\r\n})\r\nexport class WorkareaFormComponent implements OnInit{\r\n presetColors = [\r\n \"#5B9BD5\", \"#CCCCFF\", \"FF9900\", \"#0066FF\", \"#9933FF\",\r\n \"#FF0066\", \"#00FFFF\", \"#617099\", \"#28F0A0\", \"#FEC2F1\", \r\n \"#DC4264\", \"#FF66FF\", \"#FFFF00\", \"#92D050\"\r\n ]; \r\n workArea: IWorkArea;\r\n employees: EmployeeBase[] = [];\r\n\r\n constructor(\r\n private _dialogRef: DynamicDialogRef,\r\n private _dlgConfig: DynamicDialogConfig,\r\n private _util: PpsUtilityService) {\r\n this.setData(this._dlgConfig.data);\r\n }\r\n \r\n setData(data: any){\r\n this.employees = _.cloneDeep(data.employees);\r\n this.workArea = _.cloneDeep(data.workArea);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n save(form: NgForm){\r\n if (form.invalid){\r\n return false;\r\n }\r\n\r\n this._dialogRef.close(this.workArea);\r\n }\r\n\r\n cancel(){\r\n this._dialogRef.close();\r\n } \r\n}","
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component } from \"@angular/core\";\r\nimport { NgForm } from \"@angular/forms\";\r\nimport * as _ from \"lodash-es\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { SubSink } from \"subsink\";\r\nimport { IEntity } from \"../shared/models/entity\";\r\nimport { Position } from \"../shared/models/position\";\r\nimport { IRosterType } from \"../shared/models/roster/roster-type\";\r\nimport { IWorkGroupPositionRosterType } from \"../shared/models/roster/workgroup-position-rostertype\";\r\n\r\n@Component({\r\n selector: \"pps-workgroup-position-rostertype-form\",\r\n templateUrl: \"./workgroup-position-rostertype-form.component.html\"\r\n})\r\nexport class WorkGroupPositionRosterTypeFormComponent{\r\n private subs = new SubSink();\r\n\r\n errorMessage = \"\";\r\n\r\n workGroups: IEntity[] = [];\r\n positions: Position[] = [];\r\n rosterTypes: IRosterType[] = [];\r\n\r\n selectedWorkGroups: IEntity[] = [];\r\n selectedPositions: Position[] = [];\r\n selectedRosterType: IRosterType = {id: 0};\r\n\r\n // item: IWorkGroupPositionRosterType = {\r\n // workGroup: {id : 0},\r\n // position: {id : 0},\r\n // rosterType: {id : 0}\r\n // };\r\n\r\n constructor( \r\n private _dialogRef: DynamicDialogRef,\r\n private _dlgConfig: DynamicDialogConfig) {\r\n this.setData(this._dlgConfig.data);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n setData(data: any){\r\n this.workGroups = _.cloneDeep(data.workGroups);\r\n this.positions = _.cloneDeep(data.positions);\r\n this.rosterTypes = _.cloneDeep(data.rosterTypes);\r\n }\r\n\r\n save(form: NgForm){\r\n this.errorMessage = \"\";\r\n\r\n if (form.invalid){\r\n return false;\r\n }\r\n\r\n if (this.selectedWorkGroups.length === 0){\r\n this.errorMessage = \"Please select at least one work group\";\r\n return;\r\n }\r\n\r\n if (this.selectedPositions.length === 0){\r\n this.errorMessage = \"Please select at least one position\";\r\n return;\r\n }\r\n\r\n if (this.selectedRosterType.id === 0){\r\n this.errorMessage = \"Please select a roster type\";\r\n return;\r\n }\r\n\r\n var items: IWorkGroupPositionRosterType[] = [];\r\n this.selectedWorkGroups.forEach(wg=>{\r\n this.selectedPositions.forEach(p => {\r\n items.push({\r\n workGroup: {id: wg.id},\r\n position: {id: p.id},\r\n rosterType: {id: this.selectedRosterType.id}\r\n });\r\n });\r\n });\r\n\r\n console.log(items);\r\n\r\n this._dialogRef.close(items);\r\n }\r\n\r\n cancel(){\r\n this._dialogRef.close();\r\n } \r\n}","
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
","import { Component, OnDestroy, ViewEncapsulation } from \"@angular/core\";\r\nimport { NgForm } from \"@angular/forms\";\r\nimport { DateFilterModel } from \"ag-grid-community\";\r\nimport { addYears } from \"date-fns\";\r\nimport { DynamicDialogConfig, DynamicDialogRef } from \"primeng/dynamicdialog\";\r\nimport { PayrollService } from \"../services/payroll.service\";\r\nimport { PpsUtilityService } from \"../services/pps-utility.service\";\r\nimport { IDateRange } from \"../shared/models/date-range\";\r\nimport { EmployeeBase } from \"../shared/models/employee-base\";\r\nimport { IEntity } from \"../shared/models/entity\";\r\nimport { IJobCode } from \"../shared/models/job-code\";\r\nimport { IRosterCode } from \"../shared/models/roster-code\";\r\nimport { TimesheetGenerationModel } from \"../shared/models/timesheet-generation-model\";\r\nimport { TimesheetService } from \"../services/timesheet.service\";\r\nimport { SubSink } from \"subsink\";\r\nimport { RosterCodes } from \"../shared/models/roster-codes\";\r\nimport { RosterCodeService } from \"../services/roster-code.service\";\r\nimport { ConfirmationService } from \"primeng/api\";\r\nimport { ToastService } from \"../shared/toast/toast.service\";\r\n\r\n@Component({\r\n selector: \"pps-generate-timesheet-form\",\r\n templateUrl: \"./generate-timesheet-form.component.html\",\r\n styles:[`\r\n .p-dialog.p-confirm-dialog .p-confirm-dialog-message{\r\n max-height:400px;\r\n }\r\n `],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class GenerateTimesheetComponent implements OnDestroy{\r\n private subs = new SubSink();\r\n \r\n dateRanges: {id:string, title: string}[] = [\r\n {id: \"today\", title: \"Today\" },\r\n {id: \"last-week\", title: \"Last Week\" },\r\n {id: \"last-pay-run\", title: \"Last Pay Run\" }\r\n ];\r\n selectedDateRange: {id:string, title: string} = null;\r\n dateRange: IDateRange = {\r\n range: {\r\n from: this._util.getDateOnly(new Date()),\r\n to: this._util.getDateOnly(new Date())\r\n } \r\n };\r\n yearRange = `2018:${addYears(new Date(), 5).getFullYear()}`;\r\n message = \"\";\r\n\r\n groups: IEntity[] = [];\r\n employees: EmployeeBase[] = [];\r\n jobCodes: IJobCode[] = [];\r\n employeesToShow: EmployeeBase[] = [];\r\n\r\n selectedGroups: IEntity[] = [];\r\n timesheetGenerationModel: TimesheetGenerationModel = {\r\n from: new Date(),\r\n to: new Date(),\r\n employees: [],\r\n hours: 12,\r\n dsHours: 11.5,\r\n nsHours: 12\r\n };\r\n\r\n maxToDate: Date = new Date();\r\n maxFromDate: Date = new Date();\r\n\r\n constructor(\r\n private _dialogRef: DynamicDialogRef,\r\n private _dlgConfig: DynamicDialogConfig,\r\n private _payrollService: PayrollService,\r\n private _timesheetService: TimesheetService,\r\n private _rosterCodeService: RosterCodeService,\r\n private _confirm: ConfirmationService,\r\n private _toast: ToastService,\r\n private _util: PpsUtilityService) {\r\n this.setData(this._dlgConfig.data);\r\n }\r\n\r\n ngOnDestroy(): void{\r\n this.subs.unsubscribe(); \r\n }\r\n\r\n onDateRangeChanged(event){\r\n this.setDateRange();\r\n }\r\n \r\n private setDateRange(){\r\n if (this.selectedDateRange){\r\n let range = this._util.getDateRange(this.selectedDateRange.id);\r\n if (range){\r\n this.timesheetGenerationModel.from = range.from;\r\n this.timesheetGenerationModel.to = range.to;\r\n }else{\r\n if (this.selectedDateRange.id === \"last-pay-run\"){\r\n var lastPayPeriod = this._payrollService.getLastPayPeriod();\r\n this.timesheetGenerationModel.from = lastPayPeriod.range.from;\r\n this.timesheetGenerationModel.to = lastPayPeriod.range.to;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private setData(data: any){\r\n if (!data){\r\n return;\r\n }\r\n\r\n this.groups = data.groups;\r\n this.employees = data.employees;\r\n this.jobCodes = data.jobCodes;\r\n }\r\n\r\n updateEmployeeList(){\r\n // this.selectedGroups values from model binding\r\n var selectedGroupsDict = {};\r\n this.selectedGroups.forEach(g => selectedGroupsDict[g.id] = 1);\r\n \r\n var employees: EmployeeBase[] = [];\r\n\r\n this.timesheetGenerationModel.employees.forEach(e => {\r\n if (selectedGroupsDict.hasOwnProperty(e.workGroup.id)){\r\n employees.push(e);\r\n }\r\n });\r\n\r\n this.timesheetGenerationModel.employees = employees;\r\n\r\n this.employeesToShow = this.employees.filter(e => e.dateOfBirth && selectedGroupsDict.hasOwnProperty(e.workGroup.id));\r\n }\r\n\r\n cancel(){\r\n this._dialogRef.close();\r\n }\r\n\r\n generateTimesheet(form: NgForm){\r\n if (form.invalid){\r\n return false;\r\n }\r\n\r\n this.checkEmployeesPayrollRosterCode(this.timesheetGenerationModel, \r\n () => {\r\n this.generateTimesheetHelper();\r\n }\r\n );\r\n }\r\n\r\n private generateTimesheetHelper(){\r\n if (this.timesheetGenerationModel.from > this.timesheetGenerationModel.to){\r\n this.message = \"From date must be earlier than To date\";\r\n return;\r\n }\r\n\r\n this._dialogRef.close(this.timesheetGenerationModel);\r\n }\r\n\r\n private checkEmployeesPayrollRosterCode(timesheetGenerationModel: TimesheetGenerationModel, fnContinue: Function){\r\n\r\n this.subs.sink = this._timesheetService.generateTimesheetPreview(timesheetGenerationModel)\r\n .subscribe(res=>{\r\n if (res.succeed ){\r\n let result: string[] = [];\r\n\r\n res.result.forEach(e => {\r\n let code = this._rosterCodeService.getRosterCode(e.payrollRosterCode.id);\r\n \r\n if (this._rosterCodeService.isOnSite(e.payrollRosterCode.id)){\r\n result.push(`${this._util.getDateString(e.day)}: ${this._util.getEmployeeName(e.employee)} - ${code.code}`);\r\n }\r\n });\r\n\r\n if (result.length > 0){\r\n this._confirm.confirm({\r\n header: `Confirmation for Employees with Day/Night Shift`,\r\n message: `Are you sure ${result.length === 1 ? \"this employee\" : \"the following employees\"} attended work and ${result.length === 1 ? \"was\" : \"were\"} not sick?

${result.join('
')}`,\r\n blockScroll: false,\r\n defaultFocus: \"accept\",\r\n accept: () => {\r\n fnContinue();\r\n }\r\n }); \r\n }else{\r\n fnContinue();\r\n }\r\n }else{\r\n this._toast.failed(res.errors.join(\";\"), 10000, \"gtf\");\r\n }\r\n },\r\n err => {},\r\n () => {});\r\n } \r\n}","\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n Date is required!\r\n {{message}}\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n To date is required!\r\n {{message}}\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {{timesheetGenerationModel.jobCode?.description}}\r\n Job code is required!\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n Man hour is required!\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n Day shift man hour is required!\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n Night shift man hour is required!\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{workgroup.name}}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
{{employee.lastName}}, {{employee.firstName}}
\r\n
\r\n
\r\n
\r\n Select at least one employee!\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { IEntity } from '../shared/models/entity';\r\nimport { forkJoin } from 'rxjs';\r\nimport { format, lastDayOfWeek } from 'date-fns';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { TimesheetService } from '../services/timesheet.service';\r\nimport { IEmployeeTimesheet } from '../shared/models/employee-timesheet';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\nimport { IJobCode } from '../shared/models/job-code';\r\nimport { NgForm } from '@angular/forms';\r\nimport { IRosterCode } from '../shared/models/roster-code';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { SubSink } from 'subsink';\r\nimport { RosterService } from '../services/roster.service';\r\nimport { IEmployeeRoster } from '../shared/models/roster/employee-roster';\r\nimport * as _ from 'lodash';\r\n\r\n@Component({\r\n selector: 'pps-manage-timesheet',\r\n templateUrl: './manage-timesheet.component.html',\r\n styleUrls: ['./manage-timesheet.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ManageTimesheetComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n\r\n parent: any = null;\r\n selectedEmployees:any[];\r\n\r\n timesheet:any = {day: new Date(), hours: 12};\r\n groups: IEntity[] = [];\r\n rosterCodes: IRosterCode[] = [];\r\n employees: any = [];\r\n groupEmployees: any =[];\r\n maxDate: Date;\r\n\r\n employeeTimesheets: IEmployeeTimesheet[] = [];\r\n jobCodes: IJobCode[] = [];\r\n allEmployeeChecked: boolean = false;\r\n savingTimesheet = false;\r\n\r\n constructor(private timesheetService: TimesheetService,\r\n private rosterService: RosterService,\r\n private confirmationService: ConfirmationService,\r\n private toastService: ToastService,\r\n public util: PpsUtilityService,\r\n private _dialogRef: DynamicDialogRef,\r\n private _dialogConfig: DynamicDialogConfig) {}\r\n\r\n ngOnDestroy(): void {\r\n this.subs.unsubscribe();\r\n }\r\n\r\n private initializeDialog(){\r\n this.parent = this._dialogConfig.data.parent;\r\n this.groups = this._dialogConfig.data.groups;\r\n this.jobCodes = this._dialogConfig.data.jobCodes;\r\n this.rosterCodes = this._dialogConfig.data.rosterCodes;\r\n this.employees = this._dialogConfig.data.employees;\r\n } \r\n\r\n ngOnInit(): void {\r\n this.maxDate = lastDayOfWeek(new Date());\r\n this.initializeDialog();\r\n }\r\n\r\n loadEmployeesByGroup($event){\r\n this.selectedEmployees = [];\r\n\r\n if ($event.value){\r\n let group = $event.value;\r\n this.groupEmployees = this.employees.filter(emp => emp.dateOfBirth && emp.workGroup.id === group.id);\r\n this.groupEmployees.forEach(e => e.checked = true);\r\n this.allEmployeeChecked = true;\r\n }else{\r\n this.groupEmployees = [];\r\n }\r\n }\r\n\r\n validateHours(validateComplete){\r\n var timesheet = _.cloneDeep(this.timesheet);\r\n\r\n if (!this.selectedEmployees){\r\n if (validateComplete){\r\n validateComplete(\"Please select at least one employee.\");\r\n }\r\n return;\r\n }\r\n\r\n this.subs.sink = this.rosterService\r\n .getEmployeeRosterByEmployees(timesheet.day, this.selectedEmployees.map(e => e.id))\r\n .subscribe(res => {\r\n if (res.succeed){\r\n var empRosters: IEmployeeRoster[] = res.result;\r\n\r\n let message = {};\r\n this.selectedEmployees.forEach(emp => {\r\n let hourEntered = this.parent.getHoursEntered(emp.id, timesheet.day);\r\n let totalHour = hourEntered + timesheet.hours;\r\n timesheet.employee = emp;\r\n \r\n var empRoster = empRosters.find(e => e.employee.id === emp.id);\r\n var payrollRosterCode = null;\r\n if (empRoster){\r\n var rosterValue = empRoster.values[format(timesheet.day, \"yyyyMMdd\")];\r\n if (rosterValue){\r\n payrollRosterCode = rosterValue.prc;\r\n }\r\n }\r\n\r\n timesheet.payrollRosterCodeId = payrollRosterCode?.id;\r\n timesheet.payrollRosterCode = payrollRosterCode?.code;\r\n\r\n let warning = this.timesheetService.getWarningMessage(timesheet, totalHour, false);\r\n \r\n if (warning.type > 0){\r\n var subWarning = \"\";\r\n if (warning.type === 3){\r\n subWarning = `
${this.util.getEmployeeName(emp)}: \r\n ${totalHour} hours will be logged.
`;\r\n }\r\n\r\n if (message.hasOwnProperty(warning.message)){\r\n message[warning.message].push(subWarning);\r\n }else{\r\n message[warning.message] = [subWarning];\r\n }\r\n }\r\n });\r\n \r\n var messageToReturn = [];\r\n\r\n for(var prop in message){\r\n messageToReturn.push(`
${prop}
`);\r\n if (message[prop]){\r\n messageToReturn.push(message[prop].join(\"\"));\r\n }\r\n }\r\n\r\n if (validateComplete){\r\n var msg = messageToReturn.length > 0 ? `
Please read the following message carefully.\r\n Click [ Yes ] to continue to enter hours, \r\n [ No ] to cancel.
${messageToReturn.join(\"\")}` : null;\r\n validateComplete(msg);\r\n }\r\n }\r\n });\r\n }\r\n\r\n saveTimesheet(form: NgForm){\r\n if (form.invalid){\r\n return;\r\n }\r\n\r\n this.validateHours((errorMessage) => {\r\n if (errorMessage){\r\n this.confirmationService.confirm({\r\n header: \"Warning\",\r\n message: errorMessage,\r\n icon: \"fas fa-exclamation-triangle icon-danger p-as-start\",\r\n defaultFocus: \"accept\",\r\n accept: () => {\r\n this.saveTimesheetHelper();\r\n }});\r\n }else{\r\n this.saveTimesheetHelper();\r\n }\r\n });\r\n }\r\n\r\n private saveTimesheetHelper(){\r\n let tasks = [];\r\n this.selectedEmployees.forEach(emp => {\r\n var employeeTimesheet = Object.assign({}, this.timesheet);\r\n employeeTimesheet.employee = {id: emp.id};\r\n employeeTimesheet.id = 0;\r\n tasks.push(this.timesheetService.addTimesheet(employeeTimesheet));\r\n });\r\n\r\n this.savingTimesheet = true;\r\n this.subs.sink = forkJoin(tasks)\r\n .subscribe(results => {\r\n var goodCount = 0;\r\n\r\n results.forEach(r => {\r\n goodCount += r[\"succeed\"] ? 1 : 0\r\n })\r\n\r\n let msg = `${goodCount} timesheets saved!`;\r\n this.toastService.succeeded(msg, 1000);\r\n\r\n if (this.parent && this.parent.loadTimesheet){\r\n this.parent.loadTimesheet();\r\n\r\n results.forEach(ts => {\r\n window.setTimeout(() => this.parent.flashRow(ts[\"result\"].id), 1000);\r\n });\r\n }\r\n })\r\n .add(() => {\r\n this.savingTimesheet = false;\r\n this.selectedEmployees = [];\r\n });\r\n }\r\n\r\n close(){\r\n this._dialogRef.close();\r\n }\r\n\r\n canModifyPastTimeSheet(): boolean{\r\n return this.parent.canModifyPastTimeSheet();\r\n }\r\n}\r\n","
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Date is required\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {{timesheet.jobCode?.description}}\r\n Job code is required!\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n {{workshift.code}}: {{workshift.description}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n Work shift is required!\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Man hour is required!\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Max length of note is 500 characters!\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
0\">\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Employee Name \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{util.getEmployeeName(emp)}}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { AgRendererComponent } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\nimport { isSameDay, parseISO, parse } from 'date-fns';\r\nimport { Timesheet } from '../shared/models/timesheet';\r\n\r\n@Component({\r\n selector: 'pps-timesheet-action',\r\n template: `\r\n \r\n \r\n \r\n \r\n `,\r\n styles: [\r\n ],\r\n})\r\nexport class TimesheetActionComponent implements AgRendererComponent {\r\n params: ICellRendererParams;\r\n showIcon: boolean = true;\r\n timesheet: Timesheet;\r\n\r\n refresh(params: any): boolean {\r\n return false;\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.timesheet = params.data;\r\n this.showIcon = this.timesheet.id > 0;\r\n this.params = params;\r\n }\r\n\r\n afterGuiAttached?(params?: import(\"ag-grid-community\").IAfterGuiAttachedParams): void {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n editTimesheet(evt){\r\n evt.preventDefault();\r\n this.params.context.componentParent.openTimesheetForm(this.params.data);\r\n }\r\n\r\n deleteTimesheet(evt){\r\n evt.preventDefault();\r\n this.params.context.componentParent.deleteTimesheet(this.params.data);\r\n }\r\n\r\n canModifyTimeSheet(){\r\n let day = this.params.data.day;\r\n let today = new Date();\r\n if ((isSameDay(day, today) && this.params.context.componentParent.canModifyTimeSheet()) ||\r\n this.params.context.componentParent.canModifyPastTimeSheet()){\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { Timesheet } from '../shared/models/timesheet';\r\nimport { lastDayOfWeek } from 'date-fns';\r\nimport { IJobCode } from '../shared/models/job-code';\r\nimport { NgForm } from '@angular/forms';\r\nimport { IRosterCode } from '../shared/models/roster-code';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { TimesheetService } from '../services/timesheet.service';\r\n\r\n@Component({\r\n selector: 'pps-time-sheet-form',\r\n templateUrl: './timesheet-form.component.html',\r\n styleUrls: ['./timesheet-form.component.css']\r\n})\r\nexport class TimesheetFormComponent implements OnInit {\r\n private _timesheet: Timesheet;\r\n private _hoursBeforeUpdate = 0;\r\n parent: any = null;\r\n\r\n jobCodes: IJobCode[] = [];\r\n rosterCodes: IRosterCode[] = [];\r\n employeeName: string = \"\";\r\n maxDate: Date;\r\n\r\n constructor(private _dialogRef: DynamicDialogRef,\r\n private _dialogConfig: DynamicDialogConfig,\r\n private _confirmationService: ConfirmationService,\r\n private _timesheetService: TimesheetService,\r\n private util: PpsUtilityService) { }\r\n\r\n private initializeDialog(){\r\n this.parent = this._dialogConfig.data.parent;\r\n this.timesheet = this._dialogConfig.data.timesheet;\r\n this.jobCodes = this._dialogConfig.data.jobCodes;\r\n this.rosterCodes = this._dialogConfig.data.rosterCodes;\r\n } \r\n\r\n ngOnInit(): void {\r\n this.maxDate = lastDayOfWeek(new Date());\r\n this.initializeDialog();\r\n }\r\n\r\n set timesheet(timesheet: Timesheet){\r\n this._timesheet = timesheet;\r\n this._hoursBeforeUpdate = timesheet.hours;\r\n }\r\n\r\n get timesheet(){\r\n return this._timesheet;\r\n }\r\n\r\n save(form: NgForm){\r\n if (form.invalid){\r\n return;\r\n }\r\n\r\n let hoursEntered = this.parent.getHoursEntered(this.timesheet.employee.id, this.timesheet.day);\r\n let totalHours = hoursEntered - this._hoursBeforeUpdate + this.timesheet.hours;\r\n var warning = this._timesheetService.getWarningMessage(this.timesheet, totalHours, true);\r\n if (warning.type > 0){\r\n this._confirmationService.confirm({\r\n header: \"Warning\",\r\n message: warning.message,\r\n icon: \"fas fa-exclamation-triangle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => {\r\n this._dialogRef.close(this.timesheet);\r\n }});\r\n }else{\r\n this._dialogRef.close(this.timesheet);\r\n }\r\n }\r\n\r\n cancel(){\r\n this._dialogRef.close();\r\n }\r\n\r\n canModifyPastTimeSheet(): boolean{\r\n return this.parent.canModifyPastTimeSheet();\r\n }\r\n}\r\n","
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Date is required\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Job code is required!\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n {{workshift.code}}: {{workshift.description}}
\r\n
\r\n
\r\n \r\n
\r\n Work shift is required!\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Man hour is required!\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Max length of note is 500 characters!\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { ManageTimesheetComponent } from './manage-timesheet.component';\r\nimport { TimesheetService } from '../services/timesheet.service';\r\nimport { Timesheet } from '../shared/models/timesheet';\r\nimport { TimesheetSearchModel } from '../shared/models/timesheet-search-model';\r\nimport { PpsUtilityService } from '../services/pps-utility.service';\r\nimport { IEntity } from '../shared/models/entity';\r\nimport { Employee } from '../shared/models/employee';\r\nimport { ToastService } from '../shared/toast/toast.service';\r\nimport { TimesheetActionComponent } from './timesheet-action.component';\r\nimport { TimesheetFormComponent } from './timesheet-form.component';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { IJobCode } from '../shared/models/job-code';\r\nimport { IRosterCode } from '../shared/models/roster-code';\r\nimport { AuthenticationService } from '../services/authentication.service';\r\nimport { UserContext } from '../shared/models/user-context';\r\nimport { BusinessOperation } from '../shared/models/business-operation';\r\nimport { format, isSameDay } from 'date-fns';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { ConfirmationService, MenuItem } from 'primeng/api';\r\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\r\nimport { EmployeeBase } from '../shared/models/employee-base';\r\nimport { SubSink } from 'subsink';\r\nimport * as _ from 'lodash';\r\nimport { GridReadyEvent } from 'ag-grid-community';\r\nimport { IEmployeeTimesheet } from '../shared/models/employee-timesheet';\r\nimport { WarningType } from '../shared/models/warning-type';\r\nimport { GenerateTimesheetComponent } from './generate-timesheet-form.component';\r\nimport { TimesheetGenerationModel } from '../shared/models/timesheet-generation-model';\r\nimport { IEmployer } from '../shared/models/employer';\r\n\r\n@Component({\r\n selector: 'pps-timesheet',\r\n templateUrl: './timesheet.component.html',\r\n styles: []\r\n})\r\nexport class TimesheetComponent implements OnInit, OnDestroy {\r\n private subs = new SubSink();\r\n\r\n smallScreen = false;\r\n items: MenuItem[] = [{label: \"Timesheet\", icon: \"pi-fw fas fa-user-clock\"}];\r\n\r\n spinnerName: string = \"timesheetSpinner\";\r\n defaultSpinnerText: string = \"Loading timesheet data ...\";\r\n spinnerText: string = \"Loading timesheet data ...\";\r\n \r\n private gridApi;\r\n private gridColumnApi;\r\n exporting: boolean = false;\r\n exportingValidationReport : boolean = false;\r\n showSideBar: boolean = true;\r\n\r\n private warningColumns = [\"message\",\"payrollRosterCode\",\"totalHours\"];\r\n\r\n isLoggedIn: boolean = false;\r\n userContext: UserContext = null;\r\n\r\n selectedRow: any = null;\r\n selectedRowNode: any = null; //ag-grid RowNode\r\n\r\n gridHeaders = [];\r\n context:any = {};\r\n timesheets: Timesheet[] = [];\r\n allTimesheets: Timesheet[] = [];\r\n missingTimesheets: Timesheet[] = [];\r\n timesheetsTotal: Timesheet[] = [];\r\n\r\n jobCodes: IJobCode[] = [];\r\n selectedJobCode: IJobCode = null;\r\n\r\n groups: IEntity[] = [];\r\n selectedGroup: IEntity = null;\r\n\r\n employees: EmployeeBase[] = [];\r\n selectedEmployee: EmployeeBase = null;\r\n\r\n employers: IEmployer[] = [];\r\n selectedEmployer: IEmployer = null;\r\n\r\n quickDateRanges: {id:string, title: string}[] = [];\r\n selectedDateRange: {id:string, title: string} = null;\r\n\r\n rosterCodes: IRosterCode[] = [];\r\n searchModel: TimesheetSearchModel = {\r\n fromDate: new Date(),\r\n toDate: new Date(),\r\n groupId: 0,\r\n employeeId: 0,\r\n jobCodeId: 0,\r\n employerId: 0\r\n };\r\n\r\n topOptions = {\r\n alignedGrids: [],\r\n getRowId: param => {\r\n //console.log(param.data);\r\n return `${param.data.employee.id}-${param.data.id ?? 0 }`;\r\n },\r\n //immutableData: true,\r\n suppressHorizontalScroll: true,\r\n defaultColDef:{\r\n resizable: true,\r\n floatingFilter: true\r\n }\r\n };\r\n\r\n bottomOptions = {\r\n alignedGrids: []\r\n };\r\n\r\n private dateFilterParams = {\r\n comparator: this._util.filterDateComparator,\r\n filterOptions: [\"equals\", \"lessThan\", \"greaterThan\"],\r\n defaultOption: \"greaterThan\"\r\n };\r\n\r\n private numberFilterParams = {\r\n filterOptions: [\"equals\", \"lessThan\", \"greaterThan\"],\r\n defaultOption: \"equals\"\r\n };\r\n\r\n constructor(private timesheetService: TimesheetService,\r\n private spinner: NgxSpinnerService,\r\n private _dialog: DialogService,\r\n private _confirmDialog: ConfirmationService,\r\n public authService: AuthenticationService,\r\n private toast: ToastService,\r\n public _util: PpsUtilityService,\r\n private breakpointObserver: BreakpointObserver) {\r\n this.subs.sink = this.breakpointObserver.observe(['(min-width: 768px)'])\r\n .subscribe((state: BreakpointState) => {\r\n this.smallScreen = !state.matches;\r\n }); \r\n\r\n this.topOptions.alignedGrids.push(this.bottomOptions);\r\n this.bottomOptions.alignedGrids.push(this.topOptions);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initialize();\r\n }\r\n\r\n ngOnDestroy(): void{\r\n this.subs.unsubscribe(); \r\n }\r\n\r\n private initialize(){\r\n this.context = { componentParent: this };\r\n this.gridHeaders = this.getColumnDefs();\r\n\r\n this.selectedDateRange = {id: \"today\", title: \"Today\"};\r\n\r\n this.loadEntities();\r\n }\r\n\r\n onGridReady(gridReadyEvent: GridReadyEvent) {\r\n this.gridApi = gridReadyEvent.api;\r\n this.gridColumnApi = gridReadyEvent.columnApi;\r\n\r\n if (!this.canModifyTimeSheet() && !this.canModifyPastTimeSheet()){\r\n gridReadyEvent.columnApi.setColumnVisible(\"action\", false);\r\n }\r\n }\r\n\r\n onRowClicked(evt){\r\n let _this = evt.context.componentParent;\r\n var selectedRows = _this.gridApi.getSelectedRows();\r\n _this.selectedRow = selectedRows.length === 1 ? selectedRows[0] : null;\r\n _this.selectedRowNode = evt.node;\r\n } \r\n\r\n onRowDblClicked(params){\r\n let timesheet = params.data as Timesheet;\r\n\r\n if (timesheet.warningType !== WarningType.MissingTimesheet && (this.canModifyTimeSheet() || this.canModifyPastTimeSheet())){\r\n this.openTimesheetForm(timesheet);\r\n }\r\n }\r\n\r\n loadTimesheet(){\r\n this.spinnerText = \"Load timesheet data...\";\r\n this.spinner.show(this.spinnerName);\r\n\r\n this.timesheets = [];\r\n\r\n this.subs.sink = this.timesheetService.getTimesheets(this.searchModel)\r\n .subscribe(response => {\r\n if (response.succeed){\r\n this.allTimesheets = response.result;\r\n this.showAllEnteredTimesheets();\r\n }\r\n })\r\n .add(() => {\r\n this.spinner.hide(this.spinnerName);\r\n this.spinnerText = this.defaultSpinnerText;\r\n });\r\n }\r\n\r\n exportTimesheet(){\r\n this.exporting = true;\r\n this.subs.sink = this.timesheetService.downloadTimesheets(this.searchModel, false, () => this.exporting = false);\r\n }\r\n\r\n timesheetValidationReport(){\r\n this.exportingValidationReport = true;\r\n this.subs.sink = this.timesheetService.downloadTimesheets(this.searchModel, true, () => this.exportingValidationReport = false);\r\n }\r\n \r\n onEmployerChanged(){\r\n this.searchModel.employerId = this.selectedEmployer?.id ?? 0;\r\n\r\n this.loadTimesheet();\r\n }\r\n\r\n onJobCodeChanged(){\r\n if (this.selectedJobCode){\r\n this.searchModel.jobCodeId = this.selectedJobCode.id;\r\n }else{\r\n this.searchModel.jobCodeId = 0;\r\n }\r\n\r\n this.loadTimesheet();\r\n }\r\n\r\n onGroupChanged(event){\r\n if (this.selectedGroup){\r\n this.searchModel.groupId = this.selectedGroup.id;\r\n this.selectedEmployee = null;\r\n this.searchModel.employeeId = 0;\r\n }else{\r\n this.searchModel.groupId = 0;\r\n }\r\n\r\n this.loadTimesheet();\r\n }\r\n\r\n onEmployeeChanged(){\r\n if (this.selectedEmployee){\r\n this.searchModel.employeeId = this.selectedEmployee.id;\r\n this.selectedGroup = null;\r\n this.searchModel.groupId = 0;\r\n }else{\r\n this.searchModel.employeeId = 0;\r\n }\r\n\r\n this.loadTimesheet();\r\n }\r\n\r\n onDateRangeChanged(event){\r\n if (this.selectedDateRange){\r\n let range = this._util.getDateRange(this.selectedDateRange.id);\r\n if (range){\r\n this.searchModel.fromDate = range.from;\r\n this.searchModel.toDate = range.to;\r\n this.loadTimesheet();\r\n }\r\n }\r\n }\r\n\r\n manageTimesheet(): void{\r\n let dialog = this._dialog.open(ManageTimesheetComponent, {\r\n header: \"Employee Timesheet\",\r\n styleClass: \"size-md\",\r\n data:{\r\n parent: this,\r\n groups: this.groups,\r\n rosterCodes: this.rosterCodes,\r\n employees: this.employees,\r\n jobCodes: this.jobCodes\r\n },\r\n draggable: true\r\n });\r\n\r\n this.subs.sink = dialog.onClose.subscribe(\r\n _ => {\r\n },\r\n reason => {\r\n }\r\n );\r\n }\r\n\r\n getHoursEntered(empId: number, day: Date){\r\n let hoursEntered = 0;\r\n this.timesheets.forEach(ts => {\r\n if (isSameDay(ts.day, day) && ts.employee.id === empId){\r\n hoursEntered += ts.hours;\r\n }\r\n });\r\n\r\n return hoursEntered;\r\n }\r\n\r\n openTimesheetForm(timesheet: Timesheet){\r\n let hoursEntered = 0;\r\n this.timesheets.forEach(ts => {\r\n if (isSameDay(ts.day, timesheet.day) && ts.employee.id === timesheet.employee.id){\r\n hoursEntered += ts.hours;\r\n console.log(ts);\r\n }\r\n });\r\n\r\n let dialog = this._dialog.open(TimesheetFormComponent, {\r\n header: `Edit Timesheet - ${this._util.getEmployeeName(timesheet.employee)}`,\r\n styleClass: \"size-sm\",\r\n data:{\r\n parent: this,\r\n timesheet: Object.assign({}, timesheet),\r\n jobCodes: this.jobCodes,\r\n rosterCodes: this.rosterCodes\r\n },\r\n draggable: true\r\n });\r\n\r\n this.subs.sink = dialog.onClose.subscribe(\r\n timesheet => {\r\n if (timesheet){\r\n this.saveTimesheet(timesheet);\r\n }\r\n },\r\n reason => {\r\n }\r\n );\r\n }\r\n\r\n saveTimesheet(timesheet: Timesheet){\r\n this.subs.sink = this.timesheetService\r\n .updateTimesheet(timesheet)\r\n .subscribe(response => {\r\n if (response.succeed){\r\n let foundIndex = this.allTimesheets.findIndex(x => x.id == timesheet.id);\r\n if (foundIndex !== -1 ){\r\n this.allTimesheets[foundIndex] = response.result;\r\n }\r\n\r\n foundIndex = this.timesheets.findIndex(x => x.id == timesheet.id);\r\n if (foundIndex !== -1 ){\r\n this.timesheets[foundIndex] = response.result;\r\n this.timesheetsTotal = this.getTimesheetTotal(this.timesheets);\r\n var rowId = `${timesheet.employee.id}-${timesheet.id ?? 0 }`;\r\n this.resetGrid(this.timesheets[foundIndex], timesheet.id , rowId, false);\r\n this.flashRow(timesheet.id);\r\n this.toast.succeeded(\"Update timesheet succeed!\");\r\n }else{\r\n this.toast.failed(\"Update timesheet failed!\");\r\n }\r\n }else{\r\n this.toast.failed(\"Failed to save timesheet [\" + response.errors.join(\"|\") + \"]\");\r\n }\r\n });\r\n }\r\n\r\n getCountOfAllEnteredTimesheets(){\r\n return this.allTimesheets.filter(t=>t.warningType !== WarningType.MissingTimesheet).length;\r\n } \r\n\r\n getCountOfTimesheetsWithWarning(){\r\n return this.allTimesheets.filter(ts =>ts.warningType !== WarningType.NoWarning && ts.warningType !== WarningType.MissingTimesheet).length;\r\n } \r\n\r\n getCountOfMissingTimesheets(){\r\n return this.allTimesheets.filter(t=>t.warningType === WarningType.MissingTimesheet).length;\r\n }\r\n\r\n showAllEnteredTimesheets(){\r\n this.showMessageColumns(false);\r\n this.timesheets = this.allTimesheets.filter(t=>t.warningType !== WarningType.MissingTimesheet);\r\n this.timesheetsTotal = this.getTimesheetTotal(this.timesheets);\r\n }\r\n\r\n showTimesheetsWithWarning(){\r\n this.showMessageColumns(true);\r\n this.timesheets = this.allTimesheets.filter(ts =>ts.warningType !== WarningType.NoWarning && ts.warningType !== WarningType.MissingTimesheet);\r\n this.timesheetsTotal = this.getTimesheetTotal(this.timesheets);\r\n }\r\n\r\n showMissingTimesheets(){\r\n this.showMessageColumns(true);\r\n this.timesheets = this.allTimesheets.filter(t=>t.warningType === WarningType.MissingTimesheet);\r\n this.timesheetsTotal = this.getTimesheetTotal(this.timesheets);\r\n }\r\n\r\n showMessageColumns(show: boolean){\r\n var state = [{colId: \"message\", hide: !show}];\r\n\r\n this.gridColumnApi.applyColumnState({\r\n state: state\r\n });\r\n }\r\n //\r\n // This is to update the values of the grid and make sure the selected\r\n // row is rendered correctly\r\n private resetGrid(timesheet: Timesheet, timesheetId: number, selectedRowId: string, ensureVisible: boolean){\r\n // reference:\r\n // https://stackoverflow.com/questions/55723337/ag-grid-how-to-scroll-to-last-known-position\r\n // if ( ensureVisible ){\r\n // this.topOptions.immutableData = false;\r\n // }\r\n\r\n let rowNode = this.gridApi.getRowNode(selectedRowId);\r\n rowNode.setData(timesheet);\r\n\r\n if (timesheetId !== 0 && ensureVisible){\r\n var node = this.gridApi.getRowNode(selectedRowId);\r\n if (rowNode){\r\n this.gridApi.ensureIndexVisible(rowNode.rowIndex, 'middle');\r\n rowNode.setSelected(true);\r\n }\r\n }\r\n\r\n //if ( ensureVisible ){\r\n //this.topOptions.immutableData = true;\r\n //}\r\n }\r\n\r\n deleteTimesheet(timesheet: Timesheet){\r\n if (timesheet === null){\r\n return;\r\n }\r\n\r\n this._confirmDialog.confirm({\r\n header: \"Delete Timesheet\",\r\n message: `Please confirm the deletion of the timesheet for: ${this._util.getEmployeeName(timesheet.employee)}?`,\r\n icon: \"fas fa-exclamation-circle icon-danger\",\r\n defaultFocus: \"accept\",\r\n accept: () => {\r\n this.subs.sink = this.timesheetService.deleteTimesheet(timesheet.id)\r\n .subscribe(res => {\r\n if (res.succeed){\r\n var foundIndex = this.timesheets.findIndex(x => x.id == timesheet.id);\r\n if (foundIndex !== -1 ){\r\n this.timesheets.splice(foundIndex, 1);\r\n this.timesheetsTotal = this.getTimesheetTotal(this.timesheets);\r\n this.gridApi.setRowData(this.timesheets);\r\n\r\n if (foundIndex < this.timesheets.length){\r\n let nextRow = this.gridApi.getRowNode(this.timesheets[foundIndex].id);\r\n if (nextRow){\r\n nextRow.setSelected(true);\r\n this.selectedRow = this.timesheets[foundIndex];\r\n this.selectedRowNode = nextRow;\r\n }\r\n }\r\n \r\n this.toast.succeeded(\"Timesheet deleted!\");\r\n }else{\r\n this.toast.failed(\"Delete timesheet failed!\");\r\n }\r\n }else{\r\n this.toast.failed(\"Failed to delete timesheet [\" + res.errors.join(\"|\") + \"]\");\r\n }\r\n })\r\n }});\r\n }\r\n\r\n generateTimesheet(){\r\n let dialog = this._dialog.open(GenerateTimesheetComponent, {\r\n header: \"Generate Employee Timesheet from Roster\",\r\n styleClass: \"size-md\",\r\n data:{\r\n parent: this,\r\n groups: this.groups,\r\n rosterCodes: this.rosterCodes,\r\n employees: this.employees,\r\n jobCodes: this.jobCodes\r\n },\r\n draggable: true\r\n });\r\n\r\n this.subs.sink = dialog.onClose.subscribe(\r\n timesheetGenerationModel => {\r\n if (timesheetGenerationModel){\r\n this.generateTimesheetHelper(timesheetGenerationModel);\r\n }\r\n },\r\n reason => {\r\n }\r\n );\r\n }\r\n\r\n generateTimesheetHelper(timesheetGenerationModel: TimesheetGenerationModel){\r\n this.spinnerText = \"Generating timesheet data...\";\r\n this.spinner.show(this.spinnerName);\r\n\r\n this.subs.sink = this.timesheetService.generateTimesheet(timesheetGenerationModel)\r\n .subscribe(res=>{\r\n if (res.succeed && res.result > 0){\r\n this.searchModel = {\r\n fromDate: timesheetGenerationModel.from,\r\n toDate: timesheetGenerationModel.to,\r\n groupId: 0,\r\n employeeId: 0,\r\n jobCodeId: 0,\r\n employerId: 0\r\n };\r\n }\r\n },\r\n err => {},\r\n () => {\r\n this.spinner.hide(this.spinnerName);\r\n this.spinnerText = this.defaultSpinnerText;\r\n this.loadTimesheet();\r\n });\r\n }\r\n\r\n canEnterTimeSheet(): boolean{\r\n return this.authService.canUserDoOperartion(BusinessOperation.EnterTimeSheet);\r\n }\r\n\r\n canModifyTimeSheet(): boolean{\r\n return this.authService.canUserDoOperartion(BusinessOperation.ModifyTimeSheet);\r\n }\r\n\r\n canExportTimeSheet(): boolean{\r\n return this.authService.canUserDoOperartion(BusinessOperation.ExportTimeSheet);\r\n }\r\n\r\n canModifyPastTimeSheet(): boolean{\r\n let result = this.authService.canUserDoOperartion(BusinessOperation.UpdatePastTimeSheet);\r\n return result;\r\n }\r\n\r\n canGenerateTimeSheet(): boolean{\r\n return this.authService.canUserDoOperartion(BusinessOperation.GenerateTimeSheet);\r\n }\r\n\r\n flashRow(id){\r\n let rowNode = this.gridApi.getRowNode(id);\r\n if (rowNode){\r\n this.gridApi.flashCells({rowNodes: [rowNode]});\r\n } \r\n }\r\n\r\n private getColumnDefs(){\r\n let colDefs = [\r\n {\r\n headerName: \"Actions\",\r\n colId: \"action\",\r\n field: \"value\",\r\n cellRenderer: TimesheetActionComponent,\r\n width: 80,\r\n pinned: true,\r\n resizable: false,\r\n cellStyle: {textAlign:\"center\"}\r\n },\r\n {\r\n headerName: 'Employee',\r\n colId: \"employee\",\r\n field:'employee',\r\n filter: true,\r\n sortable: true,\r\n width: 180,\r\n pinned: true,\r\n cellStyle: this.getCellStyle,\r\n tooltipValueGetter: (params) => {\r\n return params.data.warningMessage || \"\";\r\n },\r\n valueGetter: params => params.context.componentParent._util.getEmployeeName(params.data[params.colDef.field])\r\n },\r\n {\r\n headerName: 'Message',\r\n colId: \"message\",\r\n field:'warningMessage',\r\n filter: true,\r\n sortable: true,\r\n width: 360,\r\n cellStyle: this.getCellStyle\r\n },\r\n {\r\n headerName: 'Position',\r\n colId: \"position\",\r\n field:'employee.position.title',\r\n filter: true,\r\n sortable: true,\r\n cellStyle: this.getCellStyle,\r\n width: 160\r\n },\r\n {\r\n headerName: 'Job Code',\r\n colId: \"jobcode\",\r\n field:'jobCode.jobCodeNo',\r\n filter: true,\r\n sortable: true,\r\n width: 100,\r\n cellStyle: this.getCellStyle\r\n },\r\n {\r\n headerName: 'Date',\r\n colId: \"day\",\r\n field:'day',\r\n filter: 'agDateColumnFilter',\r\n filterParams: this.dateFilterParams,\r\n sortable: true,\r\n width: 170,\r\n comparator: (date1, date2) => this._util.dateComparator(date1, date2),\r\n valueGetter: this.getDateValue,\r\n cellStyle: this.getCellStyle\r\n },\r\n {\r\n headerName: 'Day',\r\n colId: \"weekday\",\r\n field:'day',\r\n filter: true,\r\n sortable: true,\r\n width: 80,\r\n valueGetter: this.getWeekDay,\r\n comparator: (va, vb, na, nb, inverted) => {\r\n let a = this._util.getDate(na.data.day).getDay();\r\n let b = this._util.getDate(nb.data.day).getDay();\r\n\r\n if (a === b) return 0;\r\n return (a > b) ? 1 : -1;\r\n },\r\n cellStyle: this.getCellStyle\r\n },\r\n {\r\n headerName: 'Hours',\r\n colId: 'hours',\r\n field: 'hours', \r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n sortable: true,\r\n width: 80,\r\n cellStyle: this.getCellStyle,\r\n cellRenderer: params => params.context.componentParent._util.formatNumber(params.data[params.colDef.field], 2)\r\n },\r\n {\r\n headerName: 'Shift',\r\n colId: 'shift',\r\n field:'shift.code',\r\n filter: true,\r\n sortable: true,\r\n width: 70,\r\n cellStyle: this.getCellStyle\r\n },\r\n {\r\n headerName: 'Group',\r\n colId: 'group',\r\n field:'employee.workGroup.name',\r\n filter: true,\r\n sortable: true,\r\n width: 250,\r\n cellStyle: this.getCellStyle\r\n },\r\n {\r\n headerName: 'Note',\r\n colId: 'note',\r\n field:'note',\r\n filter: true,\r\n sortable: true,\r\n width: 280,\r\n cellStyle: this.getCellStyle\r\n },\r\n {\r\n headerName: 'Company',\r\n colId: 'company',\r\n field:'employee.employer.employerName',\r\n filter: true,\r\n sortable: true,\r\n width: 80,\r\n cellStyle: this.getCellStyle\r\n }/*,\r\n {\r\n headerName: 'Payroll Roster Code',\r\n colId: 'payrollRosterCode',\r\n field:'payrollRosterCode',\r\n filter: true,\r\n sortable: true,\r\n width: 140,\r\n cellStyle: this.getCellStyle\r\n },\r\n {\r\n headerName: 'Total Hours',\r\n colId: \"totalHours\",\r\n field:'totalHours', \r\n filter: 'agNumberColumnFilter',\r\n filterParams: this.numberFilterParams,\r\n sortable: true,\r\n width: 120,\r\n cellStyle: this.getCellStyle,\r\n cellRenderer: params => params.context.componentParent._util.formatNumber(params.data[params.colDef.field], 2)\r\n },\r\n {\r\n headerName: 'Warning Type',\r\n colId: \"warningType\",\r\n field:'warningType',\r\n width: 180,\r\n filter: 'agNumberColumnFilter',\r\n hide: true\r\n }*/\r\n ];\r\n\r\n if (this.smallScreen){\r\n colDefs.splice(0, 1);\r\n colDefs[0].pinned = false;\r\n }\r\n\r\n return colDefs;\r\n }\r\n\r\n private getTimesheetTotal(timesheets: Timesheet[]){\r\n let total:Timesheet = new Timesheet();\r\n total.employee = new Employee();\r\n total.employee.firstName = \"Total\";\r\n total.hours = 0;\r\n total.id = 0;\r\n timesheets.forEach(t => total.hours += t.hours);\r\n\r\n return [total];\r\n }\r\n\r\n private loadEntities(){\r\n this.subs.sink = this.timesheetService.getTimesheetEntities()\r\n .subscribe(res => {\r\n if (res.succeed){\r\n this.employees = res.result.employees;\r\n this.groups = this.getGroups(this.employees);\r\n this.jobCodes = res.result.jobCodes;\r\n this.rosterCodes = res.result.rosterCodes.filter(rc => rc.canBeUsedInTimesheet);\r\n this.employers = res.result.employers.sort((a,b) => this._util.sortAsc(a, b, \"employerName\"));\r\n\r\n let dateRanges = this._util.getDateRanges();\r\n this.quickDateRanges = Object.keys(dateRanges).map(key => { return {id: key, title: dateRanges[key].title}; });\r\n\r\n this.loadTimesheet();\r\n }\r\n });\r\n }\r\n\r\n private getGroups(employees: EmployeeBase[]): IEntity[]{\r\n let groupDict = {};\r\n employees.forEach(emp => {\r\n if (emp.workGroup && !groupDict.hasOwnProperty(emp.workGroup.id)){\r\n groupDict[emp.workGroup.id] = Object.assign({}, emp.workGroup);\r\n }\r\n });\r\n\r\n let groups: IEntity[] = Object.values(groupDict);\r\n groups.sort((a, b) => a.name > b.name ? 1 : (a.name < b.name ? -1 : 0));\r\n \r\n return groups;\r\n\r\n }\r\n\r\n private getWeekDay(params){\r\n var dateValue = params.data[params.colDef.field];\r\n if (dateValue){\r\n return format(dateValue, \"E\");\r\n }\r\n }\r\n\r\n private getDateValue(params){\r\n if (params.data[params.colDef.field]){\r\n let value = params.context.componentParent._util.getDateString(params.data[params.colDef.field]);\r\n return value;\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n private getCellStyle(params){\r\n var timesheet = params.data as Timesheet;\r\n var colId = params.colDef.colId;\r\n var style = {backgroundColor: \"rgba(255,255,255,0)\", color: \"#000000\"};\r\n let _this = params.context.componentParent;\r\n\r\n if (colId === \"hours\" || colId === \"totalHours\"){\r\n style = Object.assign(style, _this._util.getNumericCellStyle({borderRightColor:'#eeeeee'}));\r\n }\r\n\r\n if (timesheet.warningMessage && (_this.warningColumns.includes(colId) || colId === \"employee\")){\r\n if (timesheet.warningType === WarningType.MissingTimesheet){\r\n style = Object.assign(style, {backgroundColor: \"#ff0000\", color: \"#ffff00\"});\r\n }\r\n else{\r\n style = Object.assign(style, {backgroundColor: \"#FBC02D\", color: \"#212529\"});\r\n }\r\n }\r\n\r\n return style;\r\n }\r\n}","\r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n
\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n (Inactive) \r\n {{employer.employerName}}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n

{{spinnerText}}

\r\n\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { AgGridModule } from \"ag-grid-angular\";\r\nimport { NgxSpinnerModule } from \"ngx-spinner\";\r\nimport { BadgeModule } from \"primeng/badge\";\r\nimport { BreadcrumbModule } from \"primeng/breadcrumb\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { CalendarModule } from \"primeng/calendar\";\r\nimport { ConfirmDialogModule } from \"primeng/confirmdialog\";\r\nimport { DropdownModule } from \"primeng/dropdown\";\r\nimport { FieldsetModule } from \"primeng/fieldset\";\r\nimport { InputNumberModule } from \"primeng/inputnumber\";\r\nimport { InputTextModule } from \"primeng/inputtext\";\r\nimport { InputTextareaModule } from \"primeng/inputtextarea\";\r\nimport { ListboxModule } from \"primeng/listbox\";\r\nimport { PanelModule } from \"primeng/panel\";\r\nimport { SplitterModule } from \"primeng/splitter\";\r\nimport { TableModule } from \"primeng/table\";\r\nimport { ToastModule } from \"primeng/toast\";\r\nimport { ToolbarModule } from \"primeng/toolbar\";\r\nimport { TooltipModule } from \"primeng/tooltip\";\r\nimport { AuthGuardService } from \"../services/auth-guard.service\";\r\nimport { GenerateTimesheetComponent } from \"./generate-timesheet-form.component\";\r\nimport { ManageTimesheetComponent } from \"./manage-timesheet.component\";\r\nimport { TimesheetActionComponent } from \"./timesheet-action.component\";\r\nimport { TimesheetFormComponent } from \"./timesheet-form.component\";\r\nimport { TimesheetComponent } from \"./timesheet.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n NgxSpinnerModule,\r\n AgGridModule.withComponents([]),\r\n\r\n BadgeModule,\r\n BreadcrumbModule,\r\n ButtonModule,\r\n CalendarModule,\r\n ConfirmDialogModule,\r\n DropdownModule,\r\n FieldsetModule,\r\n InputNumberModule,\r\n InputTextareaModule,\r\n InputTextModule,\r\n ListboxModule,\r\n PanelModule,\r\n SplitterModule,\r\n TableModule,\r\n ToolbarModule,\r\n TooltipModule,\r\n ToastModule,\r\n\r\n RouterModule.forChild([\r\n { path: 'timesheets', component: TimesheetComponent, canActivate: [AuthGuardService] }\r\n ]) \r\n ],\r\n declarations: [\r\n ManageTimesheetComponent,\r\n TimesheetActionComponent,\r\n TimesheetFormComponent,\r\n TimesheetComponent,\r\n GenerateTimesheetComponent\r\n ]\r\n})\r\nexport class TimesheetModule{}","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n name: \"production\",\r\n version: \"4.4.3.20240915\",\r\n production: false,\r\n clientId: \"pps_management_system\",\r\n clientRoot: \"https://www.zoesen.com/\",\r\n stsAuthority: \"https://auth.zoesen.com\",\r\n apiRoot: \"https://api.zoesen.com\"\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\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\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"],"names":["AccessSettingActionComponent","constructor","refresh","params","agInit","accessPermission","data","afterGuiAttached","Error","onChange","newValue","console","log","context","componentParent","updateRoleProjectColumnAccessSetting","projectColumnGridApi","redrawRows","rowNodes","node","selectors","decls","vars","consts","template","i0","ctx","_","SubSink","AddAccountViewModel","AddUserComponent","_accountService","_toast","_router","breakpointObserver","label","icon","routerLink","subs","sink","observe","subscribe","state","smallScreen","matches","ngOnDestroy","unsubscribe","addUserAccount","userForm","newAccountViewModel","newPassword","confirmPassword","controls","setErrors","test","invalid","updating","accountCreated","newAcct","clone","btoa","add","res","succeed","succeeded","failed","returnToUserManagement","navigate","replaceUrl","gotoUserRoleManagement","CommonModule","FormsModule","RouterModule","AgGridModule","NgxSpinnerModule","BadgeModule","BreadcrumbModule","ButtonModule","CardModule","ConfirmDialogModule","InputTextModule","InputTextareaModule","PasswordModule","SplitterModule","TableModule","ToastModule","ToolbarModule","TooltipModule","AuthGuardService","ImportRosterComponent","ManageUserComponent","OperationAccessSettingActionComponent","ProjectColumnAccessSettingComponent","ResetPasswordComponent","RoleFormComponent","RoleOperationManagementComponent","UserProfileComponent","UserRoleManagementComponent","UserSelectionFormComponent","AdminModule","withComponents","forChild","path","component","canActivate","declarations","imports","_rosterService","_spinner","ngOnInit","resetRoster","resetRosterData","result","errors","join","importRoster","show","spinnerName","importingFromXlsm","hide","errorRes","importRosterFromCsvFile","importingFromCsv","importRosterFromCsv","_util","_confirmationService","getRowId","param","userId","onRowClicked","defaultColDef","resizable","floatingFilter","filter","sortable","initialize","gridHeaders","getColumnDefs","loadData","onGridReady","gridApi","api","evt","_this","selectedRows","getSelectedRows","selectedRow","length","addAccount","resetPassword","account","queryParams","entityLoading","accounts","getAll","apiResponse","_error","deleteAccount","confirm","header","message","userName","defaultFocus","accept","delete","foundIndex","findIndex","x","splice","setRowData","cols","headerName","field","width","flex","comparator","date1","date2","dateComparator","valueGetter","getDateValue","colDef","value","getDateString","hasAccess","updateRoleOperationSetting","roleOperationGridApi","AccessPermission","_userRoleService","_sessionService","_toastService","roleGridHeaders","getRoleGridHeader","loadRoles","projectColumnGridHeaders","getProjectColumnGridHeader","onRoleGridReady","roleGridApi","onProjectColumnGridReady","onRoleSelectionChanged","selectedRole","loadProjectColumns","id","getRoles","roles","roleId","loading","projectColumns","getProjectColumnsAccessModelByRole","projectColumn","updateProjectColumnAccessSetting","refreshUserContext","columnDescription","roleName","cellStyle","getNumericCellStyle","borderRightColor","cellRenderer","formatNumber","getCellStyle","getCellStyleWithCenterAlign","NoAccess","textAlign","backgroundColor","ReadAccess","WriteAccess","color","ResetPasswordViewModel","_route","resetPasswordViewModel","zoesenUserId","firstName","lastName","passwordReset","_dialogRef","_dialogConfig","role","save","form","isEqual","oldRole","close","cancel","Role","Object","assign","isNewRole","_roleOperationService","roleOperationGridHeaders","getRoleOperationGridHeader","onRoleOperationGridReady","loadRoleOperations","roleOperations","getOperationsByRole","roleOperation","addOperationToRole","operationName","deleteOperationFromRole","getCellStyleWithCenterAlignment","style","businessReady","fontWeight","BusinessOperation","_authService","section","init","updateAccountViewModel","clientUserId","userContext","zoesenUser","zoesenUsername","email","avatar","updatePasswordViewModel","canManageProfile","canUserDoAnyOfTheOperartions","ManageOwnProfile","ManageAllAccount","canManagePassword","ManageOwnPassword","updateUserProfile","profileForm","update","setUserProfile","updateCred","credForm","errorMessage","acct","updatePassword","forkJoin","_dialog","_confirmService","roleUserGridHeaders","getRoleUserGridHeader","onUserGridReady","userGridApi","selectedRoleUser","loadRoleUsers","onRoleUserSelectionChanged","onRoleRowDblClicked","openRoleForm","roleLoading","userList","loadUsers","getUsers","userLoading","roleUsers","getUsersByRole","roleDescription","dialog","open","styleClass","onClose","saveNewRole","updateRole","addRole","assignUser","users","addUsersToRole","tasks","forEach","user","push","addUserToRole","results","goodCount","r","msg","removeUser","getEmployeeName","deleteUserFromRole","suppressSizeToFit","employeeName","$event","getFullname","selectedUsers","SigninRedirectCallbackComponent","SignoutRedirectCallbackComponent","HomeComponent","LoginComponent","ErrorComponent","routes","AppRoutingModule","forRoot","exports","AppStatus","AppComponent","_healthService","appLoaded","appLoadingStatus","Initialized","appLoadingStatusMsg","LoginStarted","LoginCompleted","LogoutStarted","LogoutCompleted","UserContextLoading","Ready","window","setTimeout","healthCheck","healthCheckInterval","isLocalOrDevelopment","isTest","isProduction","BrowserModule","HttpClientModule","HTTP_INTERCEPTORS","BrowserAnimationsModule","ReactiveFormsModule","LayoutModule","AvatarModule","CalendarModule","ChipModule","DividerModule","DropdownModule","DialogService","DynamicDialogModule","InputMaskModule","InputNumberModule","MenuModule","MenubarModule","MessageModule","MessagesModule","MultiSelectModule","ProgressBarModule","PanelModule","RippleModule","SidebarModule","TabViewModule","NavMenuComponent","HttpHeaderInterceptor","UpdateRequestDateHttpInterceptor","UpdateResponseDateHttpInterceptor","ConfirmationService","MessageService","ProjectModule","RosterModule","EmployeeModule","TimesheetModule","SystemSettingsModule","PayrollModule","ReportModule","AppModule","bootstrap","provide","useClass","multi","userLoggedIn","then","loggedIn","login","authService","router","completeLogin","completeLogout","location","href","EmployeeActionComponent","editEmployee","preventDefault","openEmployeeForm","terminateEmployee","activateEmployee","activeEmployee","active","canModifyEmployee","EmployeeActivityModel","EmployeeActivityFormComponent","dialogRef","dialogConfig","util","setInitialData","employee","activity","title","activityModel","employeeId","activityDate","Date","formTitle","addYears","EmployeeFormComponent","dlgConfig","states","getStates","maxDate","yearRange","getFullYear","setData","employees","workGroups","positions","rosterTypes","workAreas","employers","selectedEmployee","groups","cloneDeep","hasOwnProperty","getStateObjectByCode","supervisors","emp","isSupervisorGroup","workGroup","name","supervisor","sort","a","b","w","employerName","map","e","code","setRosterTypeStartDate","rosterTypeDropdown","rosterTypeStartDate","hireDate","isNewEmployee","stateCode","find","s","EmployeeHistoryComponent","_employeeService","getEmployeeHistory","response","employeeHistory","getAddByName","inputs","EmployeeTrainingRecordFormComponent","courses","employeeTrainingRecord","EmployeeTrainingRecordWarningComponent","employeeTrainingRecords","cost","t","totalCost","formatCurrency","colDefs","DeleteActionComponent","EmployeeTrainingRecordComponent","_employeeTrainingRecordService","_confirm","loadEntities","selectedRowNode","onRowDblClicked","canManageEmployeeTrainingRecord","openEmployeeTrainingRecordForm","loadEmployeeTrainingRecords","courseId","enrollmentDate","trainingCourses","draggable","unshift","resetGrid","getFilteredCount","getModel","rootNode","childrenAfterFilter","canUserDoOperartion","ManageEmployeeTrainingRecord","item","deleteHelper","getActionComponentTooltip","pinned","suppressMovable","getEmployeeFullname","employeeFirstName","employeeLastName","gridData","selectedId","ensureVisible","getRowNode","ensureIndexVisible","rowIndex","setSelected","getEmployeeTrainingRecordEntities","CheckboxModule","EmployeesComponent","Employee","_employerService","_emplyoeeTrainingRecordService","_entityService","_rosterTypeService","_workAreaService","filterDateComparator","filterOptions","defaultOption","columnApi","setColumnVisible","getGroups","getPositions","groupResponse","positionsResponse","rosterTypesRes","waRes","employerRes","error","status","loadEmployees","getEmployees","showInRoster","addEmployee","updateEmployee","checkEmployeeTrainingRecord","callback","getTrainingRecordInPast6Month","activateEmployeeHelper","employeeActivityModel","saveEmployeeActivityModel","reason","exportEmployee","exporting","downloadEmployees","empActivityModel","getTotalActiveEmployeeCount","arr","dateOfBirth","employer","toLowerCase","canAddEmployee","AddEmployee","ModifyEmployee","canExportEmployee","ExportEmployee","canViewEmployeeRosterType","ManageRosterSetting","colId","getSupervisorName","filterParams","dateFilterParams","getEmployeeHomeAddress","rowData","address","city","postcode","format","environment","isLoggedIn","startClock","clockId","clearInterval","currentTime","setInterval","userFullname","version","_reportService","_logger","loginChanged","getMenuItems","logout","isActiveRoute","currentRoute","url","isUserAdmin","isUserSysAdmin","canViewLinks","ViewLinks","ManageLinks","canManageLinks","canManageRosterCodes","ManageRosterCode","canManageHoliday","ManageHoliday","canManageEmployer","ManageEmployer","canManageRosterSettings","canManageTrainingCourses","ManageTrainingCourse","canViewProject","ViewProject","CreateProject","ModifyProject","DeleteProject","ExportProject","canViewTimeSheet","ViewTimeSheet","EnterTimeSheet","ModifyTimeSheet","UpdatePastTimeSheet","ExportTimeSheet","canViewRoster","ViewRoster","ModifyRoster","canViewEmployee","ViewEmployee","canViewEmployeeTrainingRecord","canViewPayrollTimesheet","ViewPayrollTimesheet","ExportPayrollTimesheet","canDownloadReport","GenerateMonthlyIncomeReport","ExportPoInvoiceDiscrepancyReport","canExportPoInvoiceDiscrepanctReport","canGenerateMonthlyIncomeReport","canManageSystemSettings","ManageClientEngineer","ManageWorkGroup","ManageJobPosition","ManagePayCategory","ManageTimesheetBreakDownRule","canManageClientEngineer","canManageWorkGroup","canManageJobPosition","canManagePayCategory","canManageTimesheetBreakDownRule","canManageAccount","canManageProjectColumn","ManageProjectColumn","poInvoiceDiscrepancyReport","generatingReport","generatePoInvoiceDiscrepancyReport","generateMonthlyIncomeReport","getUserFullname","getUserInitial","firstname","lastname","initial","substr","toUpperCase","getUserEmail","menuItems","addViewLinksMenu","addProjectMenu","addRosterMenu","addTimesheetMenu","addEmployeeMenu","addPayrollMenu","addReportsMenu","addSystemSettingsMenu","addAdminMenu","addUserProfileMenu","linksMenu","items","externalLinks","link","target","menu","rosterProjects","rp","menuItem","entity","userProfileItems","command","gotoUserProfile","showProfileSideBar","PayrollTimesheetComponent","_payrollService","spinner","year","payPeriods","getPayPeriods","selectedDateRange","loadPayrollTimesheet","onDateRangeChanged","event","errorLineOnly","getPayrollTimesheet","totalLines","payrollTimesheets","pts","payCategoryId","units","exportPayrollTimesheet","downloadPayrollTimesheets","fromDate","range","from","toDate","to","canExportTimeSheet","getNumberOfErrorLines","getPayCategoryCellStyle","numberFilterParams","getUnitCellStyle","ts","background","Project","Validators","bankGuaranteeRequiredValidator","poRequiredValidator","ProjectFormComponent","projectService","documentService","formBuilder","changeDetectorRef","fileName","fileSize","setInitialValues","defaultQuotingDeadline","setHours","canAccessComment","canAccessAttachment","hasBudgetTab","showBudgetTab","clickedOnBudgetColumn","activeTabIndex","sourceColumnId","loadProjectComments","loadProjectAttachments","getUploadUrl","PpsProject","ngAfterViewChecked","detectChanges","onMaterialStatusChanged","selectedMaterialStatus","onClientChange","client","clientEngineers","representatives","project","projectForm","reset","onProjectStatusChanged","selectedProjectStatus","f","poAmount","setValue","poReceived","poNumber","quotingDeadline","setValidators","required","clearValidators","updateValueAndValidity","onCompletionPercentageChanged","per","completionPercentage","isNaN","estimatedCompletionValue","onContractNumberChanged","contractNumber","bankGuaranteeAmount","bankGuaranteeExpirationDate","submitted","comment","trim","postComment","Companies","companies","Representatives","PpsEntites","ppsEntites","ppsProject","PpsProjectColumnAccessPermission","ppsProjectColumnAccessPermission","currentUser","projectEntities","jobTypes","materialProcurementStatuses","projectStatuses","installationProgresses","responsibleEngineers","prj","getProjectFormGroup","projectStatus","materialProcurementStatus","projectColumnAccessPermission","formControlName","colName","charAt","slice","disable","onlySelf","clients","reps","group","projectNo","minLength","description","jobType","responsibleEngineer","materialEstimateDeliveryDate","materialActualArrivalDate","materialStatusMemo","installationProgress","workOrder","targetStartDate","targetCompletionDate","min","max","budgetHour","plannedHour","actualHour","earnedManHours","directLabor","plantAndEquipment","materialsAndConsumbles","management","thirdParty","validator","compose","valueChanges","errorInInfoFields","errorInExecutionFields","errorInMaterialFields","compareFn","isNewProject","ExecuteAccess","budgetColumns","i","readonlyAccess","jobLostOrCancelled","entityCategory","needMaterialEstimateDeliveryDate","needMaterialActualArrivalDate","showDisplayPostButton","isExistingProject","projectComments","loadingComment","commentInEditing","getProjectComments","fnAfter","projectComment","commentId","commentDate","addProjectComment","canEditComment","addBy","startEditComment","cancelCommentEditing","getDate","dateValue","updateComment","updatingComment","loadingAttachments","getProjectAttachments","documents","projectId","uploadUrl","getAttachmentUploadUrl","beforeProjectAttachmentUpload","onProjectAttachmentUpload","file","files","size","mouseOverDropArea","dragOverDropZone","mouseOutDropArea","getUploadDate","uploadDate","downloadAttachment","docUrl","filename","download","deleteAttachment","originalFilename","key","deleteProjectAttachment","ProjectInvoiceActionComponent","showInvoice","showInvoiceImage","deleteInvoice","canDeleteInvoice","parent","Invoice","ProjectInvoiceFormComponent","fileToUpload","isImage","height","previewSize","formData","FormData","invoiceImage","append","invoice","getMonth","clearAttachment","imageUrl","onFileSelectionChange","formatBytes","type","startsWith","reader","FileReader","onload","img","Image","src","ratio","toFixed","readAsDataURL","isValid","parse","ProjectInvoiceListComponent","imageService","invoiceService","toast","alignedGrids","suppressHorizontalScroll","topOptions","bottomOptions","invoices","total","inv","invoiceValue","invoiceTotal","invoiceNo","invoiceDate","incomeMonth","memo","invoiceImageUrl","originalInvoiceFilename","deleteProjectInvoice","resetInvoice","canUpdate","canUpdateInvoice","editable","isCellEditable","onCellValueChanged","invoiceChanged","headerComponentParams","getEditableHeaderComponent","valueFormatter","formatInvoiceValue","valueParser","validateDateValue","val","String","oldValue","invalidDate","stopEditing","projectInvoice","columnName","invoiceValueUpdated","column","updateInvoice","updateInvoiceTotal","idx","addMonths","differenceInCalendarMonths","startOfMonth","ProjectTimesheetComponent","timesheetService","loadProjectTimesheet","timesheets","searchModel","groupId","jobCodeId","employerId","getTimesheets","Math","apply","o","day","minDate","groupHoursByMonth","messages","severity","summary","detail","hoursByMonth","monthList","totalHours","month","hours","sDate","eDate","months","monthKey","m","budgetHours","oldMonthKey","getWeekDay","va","vb","na","nb","inverted","getDay","FileUploadModule","ProjectsComponent","EntityCategory","EntityCollection","ProjectStatuses","ProgressStatuses","onFilterChanged","minWidth","loadProjects","onFirstDataRendered","onCellDblClicked","canModifyProject","openProjectForm","children","projects","filteredProjectCount","projectTotal","calculateProjectsTotal","bottomGrid","exportProject","projectSearchModel","ipIds","psIds","downloadProjects","getProjectEntities","getProjects","entitiesRes","projectResponse","_loadEntitiesHelper","entities","processCompanyAndRepresentative","projectColumnAccessSettings","activeProjectsOnly","p","isActiveProject","Quoted","Completed","POReceived","Approved","RFQ","Pending","IRCSigned","Invoiced","Paid","compareObject","prop","compReps","companyRepresentatives","company","cid","areas","JobType","MaterialProcurementStatus","ProjectStatus","Area","ClientEngineer","InstallationProgress","totalInvoiceValue","getNextProjectNo","re","saveProject","addProject","resetProjectGrid","flashRow","updateProject","selectedProject","deleteProject","nextRow","addInvoice","invoiceFormData","saveInvoice","createInvoice","viewProjectInvoices","prjIndex","viewProjectTimesheet","selectedProjectId","canCreateProject","canDeleteProject","canExportProject","canCreateProjectInvoice","CreateProjectInvoice","canViewProjectInvoice","ViewProjectInvoice","DeleteProjectInvoice","getTotalColumns","headerClass","getProjectInfoHeaderClass","tooltipField","getResponsibleEngineer","getClientEngineers","browserDatePicker","dateTimeComparator","getQuotingDeadline","getMaterialProcurementStatus","getInvoices","getComputedCellStyle","earnedHours","formatPercentage","getGstRate","columnsWithPermission","totalColumn","columns","sortNo","c1","c2","getProjectStatusHeaderClass","getProjectPoHeaderClass","rowNode","flashCells","Array","isArray","date","caller","dateStr","deliveryDate","c","get","bankGuaranteeExpireDate","MonthlyIncomeReportComponent","loadReportData","getMonthlyIncomeReportData","reportItems","monthTotals","dateString","monthName","monthTotal","updateRowGroupMetaData","exportToExcel","onSort","rowGroupMetadata","groupName","index","previousRowData","previousRowGroup","PoInvoiceDiscrepancyReportItem","PoInvoiceDiscrepancyReportComponent","getPoDiscrepancyReportData","reportData","nonmatchPoList","po","poAmnount","poProjectsLookup","reduce","sum","cur","totalPoInvoiceValue","poInvoiceValue","invoiceIndex","poNo","projectDescription","totalProjectInvoiceValue","DeleteRosterDataFormComponent","rosterDataClearModel","startDate","selectedEmployees","note","deletionNote","selectedEmps","deletionModel","EmployeeFilterComponent","doesFilterPass","match","isSelectFilter","text","isTextFilter","valueFromGrid","indexOf","isFilterActive","setModel","model","filterChangedCallback","onFloatingFilterChanged","EmployeeFloatingFilterComponent","onParentModelChanged","parentModel","filterChangedEvent","parentFilterInstance","instance","EmployeeNameRenderer","getDisplayName","isBirthday","RosterCodes","TicketStatus","isSameDay","EmployeeRosterFormComponent","_patternParser","_payrollRosterCodeRecommendor","_rosterCodeService","PendingApproval","Planned","rosterData","rosterCodes","rc","rosterCodesObject","payrollRosterCodes","canBeUsedInTimesheetBreakdownRule","selectedRosterValue","rn","previousRosterValue","nextRosterValue","oldRosterValue","showRosterNoteField","checkPayrollRosterCode","onRosterCodeChanged","selectedRosterCode","showDayNo","sn","hasTicketStatus","Day","Night","showPayrollRosterCode","showTicketStatus","rosterPattern","cycles","prc","deepCopy","updateSection","checkChanges","pattern","rosterValue","rosterNote","oldFromDate","oldToDate","recommentedPayrollRosterCode","getRosterCode","recommend","acceptVisible","acceptLabel","rejectLabel","EventEmitter","InvalidEmployeeRostersComponent","ngOnChanges","InvalidEmployeeRosters","selectedRoster","validating","getInvalidEmployeeRosters","rosterProjectId","ier","dayStr","rosterCode","currentPayrollRosterCode","suggestedPayrollRosterCode","canUpdatePayrollRosterCode","payrollRosterCodeUpdateModel","totalInvalidNumber","messageSeverity","err","onRowSelect","row","rowId","onSelect","emit","autoOpenForm","autoOpenEmployeeRosterForm","fixPayrollRosterCode","invalidEmployeeRoster","updatePayrolLRosterCode","onPayrollRosterCodeUpdate","payrollRosterCode","shouldReloadRoster","totalNumberFixed","reloadRoster","onReloadRoster","outputs","features","PayrollRosterCodeRecommendor","currentRosterValue","FIP","DIP","RR","FOA","DOA","FIA","DIA","FOP","DOP","factory","providedIn","RosterEmployeeNoteFormComponent","empNote","rosterEmployeeNote","oldRosterEmployeeNote","updateInfo","subtitle","getColumnName","updateBy","updateDate","hasFormChanged","parseISO","RosterTooltipComponent","values","content","toHTML","isString","footer","updateByLastName","updateByFirstName","empRoster","terminateDate","terminateNote","empId","getRosterEmployeeNote","replace","eachDayOfInterval","eachMonthOfInterval","eachYearOfInterval","addDays","lastDayOfMonth","subDays","DateRangeFormComponent","UpdateTravelStatusFormComponent","GridActionComponent","RosterComponent","rosterService","_rosterCodeSettingService","_empService","_activatedRoute","customTooltip","onCellClicked","workGroupId","enableCellChangeFlash","updateEmployeeSortNo","beforeUnloadHandler","isActiveRoster","rosterProject","selectedItems","localStorage","getItem","columnDisplaySettingsKey","selectedEmployeeColumns","JSON","defaultVisibleColumns","canModifyRoster","storedSummaryLines","summaryLines","getSummaryLineDisplaySettingsKey","showHideEmployeeColumns","employeeColumns","sc","gridColumnApi","applyColumnState","setItem","stringify","showHideSummaryLine","pinnedSummaryLineData","gridReadyEvent","setSuppressRowDrag","canModifyEmployeeRosterSortNo","isGroupLine","isSummaryLine","clickEvent","employeeRoster","hl","updateEmployeeRoster","canColumnBeHighlighted","highlightEmployee","onCellDoubleClicked","selectedDate","showEmployeeRosterForm","shouldShowRosterEmployeeNoteForm","showRosterEmployeeNoteForm","selectedDateStr","prevDateStr","nextDateStr","empName","closeEmployeeRosterForm","getTime","endDate","rejectVisible","_employeeRosterForm","UpdateRosterValue","UpdateRosterNote","UpdateBoth","saveRosterNote","selectedDays","start","end","counter","resultTemp","updateRosterEmployeeNote","updatedEmpNote","rosterEmployeeNotes","onCellKeyPress","clipboardData","getRosterValueFromSelectedCell","pasteRosterData","deleteRosterData","onSortChanged","colState","getColumnState","sortActive","some","suppressRowDrag","filterActive","isAnyFilterPresent","onRowDragMove","movingNode","overNode","rowNeedsToMove","movingData","overData","fromIndex","employeeRosters","toIndex","newStore","moveInArray","clearFocusedCell","element","focusOnInvalidPayrollRosterCodeCell","cellLocation","getColumn","ensureNodeVisible","ensureColumnVisible","setFocusedCell","rosterDay","updateTravelStatus","initialValues","presetDateRange","updateTravelStatusModel","updatingTravelStatus","spinnerText","searchEmployeeRoster","flashDelay","fadeDelay","defaultSpinnerText","generateRosterData","options","showPresetDateRange","showFromDate","toDateLabel","maxToDate","minToDate","prompt","promptStyleClasses","generateRosterDataEndDate","dateRange","generateRosterDataHelper","deleteFutureRosterData","getRosterEmployees","deleteFutureRosterDataHelper","emps","exportRoster","exportingRoster","generateDailySignonSheet","generatingSignOnSheet","showEmptyPayrollRosterCode","UpdateEmployeeRosterSortNo","canGenerateSignOnSheet","PrintDailySignonSheet","canExportRoster","ExportRoster","loadRosterData","setColumnDefs","_loadRosterData","updateRosterNote","updateEmployeeRosterValuesForSelectedDays","updateByRule","batchUpdate","batchUpdateRoster","updateEmployeeRosterByValues","curEmployeeRoster","chainedAction","updateRoster","updateSummaryLineData","rosterSummaryLines","summaryLinesDelta","summaryLineData","sl","sld","setPinnedBottomRowData","dayKey","isDayNightCode","opacity","highlights","highlightStyle","getHighlightStyle","rosterColorCodeKey","rosterCodeSettingsObject","colorObject","fontSize","foregroundColor","rosterCellStyle","isReddish","getDayHeaderClass","holidayObject","isPayDay","isHoliday","getRosterValue","summaryData","getEmployeeSpan","getDaySpan","count","getRowNo","rowNo","getDragText","dob","getEmployeePersonalInfo","tooltipForInactiveEmployeeValueGetter","tooltipValueGetter","getDOB","getAccessId","accessId","draggableRow","showActionComponent","getActionComponentIcon","whenDone","grpsToReOrder","er","employeeOrders","employeesToUpdate","rosterSortNo","updateEmployeeRosterSortNo","dateRanges","getDateRanges","keys","getDateOnly","setDateRange","loadEntitiesAndRosterData","shouldLoadEntitiesForEditEmployee","getRostersWithEntities","rosterCodeSettings","rcs","travelStatus","ticketStatus","holidays","hd","holidayName","employeeUpdateEntities","n","setupGridData","employeeHighlights","statusText","_loadRosterDataHelper","empHighlights","includes","rowDrag","rowDragText","floatingFilterComponent","colSpan","tooltipComponent","concat","years","mon","monthHeader","days","payDay","holiday","dayHeader","headerTooltip","cellClass","highlightEmployeeSection","eh","checkAndUpdatePayrollRosterCode","currentPayrollRosterValue","ep","previousPayrollRosterValue","reject","removeEmployeeFromRoster","empoyeeId","whenFound","fullname","getEmployeeById","empRes","saveEmployee","oldEmployee","position","workArea","areaName","phone","newDate","oldDateStr","newDateStr","getGridActionIcon","getGridActionClass","getGridActionTooltip","showGridActionComponent","execGridAction","addEmplpoyeeToActiveRoster","addEmployeeToActiveRoster","summaryLineDisplaySettingsKey","hostBindings","DialogModule","FieldsetModule","ListboxModule","SharedModule","_dlgConfig","ranges","dt","getDateRange","AccountService","http","apiUrlProvider","post","username","ApiUrlProvider","apiRoot","_url","Promise","resolve","isLoggedInPromise","UserManager","Log","Subject","UserContext","AuthenticationService","_loginChangeSubject","asObservable","_appLoadingSubject","stsSettings","authority","stsAuthority","client_id","clientId","redirect_uri","clientRoot","scope","response_type","post_logout_redirect_uri","accessTokenExpiringNotificationTime","automaticSilentRenew","silent_redirect_uri","includeIdTokenInSilentRenew","logger","_userManager","events","addAccessTokenExpiring","silentLogin","next","currentAppStatus","tryOutTimes","signinSilent","_user","expiresAt","expires_at","catch","getUser","expired","signinRedirect","signinRedirectCallback","loadUserContext","userContextLoaded","signoutRedirect","_userContext","signoutRedirectCallback","clearUserContext","userCurrent","shouldRefreshUserContext","getUserContext","loadUserContextFromSession","getAccessToken","access_token","toPromise","setUserContext","canUserDoAllOfTheOperartions","operations","userOperations","uo","operation","isAdmin","isSysAdmin","userCtx","phoneNumber","profile","CompanyService","entityId","getCompanyRepresentatives","companyId","addCompanyRepresentative","updateCompanyRepresentative","deleteCompanyRepresentative","DocumentService","docType","responseType","objectUrl","URL","createObjectURL","imageAnchor","document","createElement","click","revokeObjectURL","EmployeeTrainingRecordService","getEmployeeTrainingRecords","HttpParams","EmployeeService","activeOnly","set","getSimpleEmployees","getEntitiesForEmployeeUpdateForm","getProjectResponsibleEngineers","updateEmployeeWithPut","put","deleteEmployeeWithDelete","empsToUpdate","EmployerService","EntityService","getEntities","getEntitiesByCategory","categoryId","WorkGroup","getAllGroups","getShifts","WorkShift","addEntity","updateEntity","deleteEntity","getTicketStatuses","getRosterSummaryLines","HealthCheckService","HolidayService","ImageService","HttpHeaders","intercept","req","token","headers","requestWithAuthHeader","handle","method","localDate2IsoString","body","undefined","HttpResponse","pipe","isoString2LocalDate","isIsoDateString","_isoDateFormat","InvoiceService","httpOptions","LoggingService","args","clsName","methodName","msgCount","PayCategoryService","differenceInDays","PayrollService","today","currentPeriod","firstPayDay","getCurrentPayPeriod","getLastPayPeriod","PositionService","startOfWeek","lastDayOfWeek","sub","startOfQuarter","lastDayOfQuarter","isBefore","isAfter","differenceInHours","PpsUtilityService","sortByDate","dateField","compact","temp","temp2","middleName","option","weekStartsOn","weeks","str","numberOfDecimal","bytes","decimals","k","dm","sizes","floor","parseFloat","pow","fontStyle","padNumber","num","pad","getDateTimeString","getEntityCategoryName","getEntityCategory","category","Unknown","d1","dateFormat","dateParts","split","d2","getNewName","prefix","suffix","predict","daysDiff","hoursDiff","obj","copy","setTime","len","attr","isNumeric","isFinite","colorStr","rgb","hexToRgb","g","hex","exec","parseInt","sortAsc","obj1","obj2","propName","sortHelper","sortDesc","asc","ProjectColumnService","ProjectService","getJobCodes","getProjectColumnAccessPermission","updateProjectWithPut","invoiceId","deleteProjectWithHttpDelete","numberArray","ReportService","ResourceService","RoleOperationService","getOperations","operationId","RosterCodeSettingService","RosterCodeService","rosterCodeId","isOnSite","RosterPatternParser","getTokens","_seperator","parsingResult","tokenList","dayCounter","shouldSetTicketStatus","isDayOrNightShift","nextToken","subtokens","seqStart","countOfDays","copyOfRosterValue","rv","getRosterValues","empRosterList","numberOfDays","assignSequence","startSeq","setPayRollRosterCode","rosterValues","prev","current","Number","RosterProjectService","deleteGroup","RosterSettingsService","RosterSummaryLineService","getEmployersByCommaSeperatedIds","employerIds","eid","RosterTypeService","RosterService","getRosterCodes","getHolidays","employeeRosterUpdateModel","getHighlighedRosterEmployee","updateByRuleModel","batchUpdateRoster1","rosterDataGenerationModel","getEmployeeRosterByEmployees","employeeList","withEntities","widhtEmployeeEntities","getRoster","allYearDays","_day","ticketStatusId","colorCode","payrollRosterCodeUpdateModelList","dr","whenError","fr","readAsText","activeRoster","dummyData","SessionService","sessionStorage","_userContextKey","_userContextRefreshFlag","removeItem","flag","TimesheetBreakdownRuleService","getBreakdownRules","TimesheetService","toString","getTimesheetEntities","addTimesheet","timesheet","updateTimesheet","deleteTimesheet","timesheetId","updateTimesheetWithPut","generateTimesheet","timesheetGenerationModel","employeeIds","jobCode","dsHours","nsHours","generateTimesheetPreview","deleteTimesheetWithDelete","downloadTimesheets","validationReport","getWarningMessage","newTotalHours","single","shift","TrainingCourseService","UserRoleService","getRolesByUser","projectColumnAccessSetting","getOperationsByUser","WorkAreaService","WorkGroupPositionRosterTypeService","showToDate","fromDateLabel","presetDateRangeLabel","mdClasses","activedRoute","Company","CompanyRepresentative","SummaryFormular","TimesheetBreakdownRule","Timesheet","AccountViewModel","UpdateAccountViewModel","UpdatePasswordViewModel","WarningType","RosterTypePreviewComponent","parser","suppressPropertyNamesCheck","gridOptions","processData","loadRosterCodes","rosterCodesDict","parsePattern","rosterCodeResponse","rosterCodeSettingsResponse","parseResult","rule","getHeaderClass","getCellValue","SafeHtmlPipe","sanitizer","transform","bypassSecurityTrustHtml","pure","ToastService","_messageService","toastMessage","textOrTpl","delay","opt","life","BreakdownRuleDropdownComponent","selectedBreakdownRule","breakdownRule","ruleId","rules","selectedRule","oldRule","updateRule","BreakdownRuleLockComponent","lock","toggleLock","currentRuleId","errorMessages","payCategory","ClientManagementComponent","_companyService","companyContext","companyGridHeaders","getGridHeader","companyNameChanged","loadCompanies","repContext","repGridHeaders","companyRepChanged","onCompanyGridReady","companyGridApi","autoSelectCompany","onRepGridReady","repGridApi","onCompanyRowClicked","selected","selectedCompany","loadCompanyReps","onRepRowClicked","selectedRep","onCompanyCellKeyDown","onDelete","deleteCompany","onRepCellKeyDown","deleteCompanyRep","companyReps","addCompany","newCompany","startEditingCell","colKey","addCompanyRep","newCompanyRep","_deleteCompany","_deleteCompanyRep","onCellValueChange","companyRep","Id","action","nodeName","getTooltip","getIcon","EntityActionComponent","isPayCategory","EntityFormComponent","categoryName","GridCheckboxComponent","checked","checkedHandler","updateData","ManageEmployerComponent","addEmployer","dialogOption","backdrop","addEmployerHelper","oldEmployers","empIndex","dataChanged","cellRendererParams","checkboxValueColId","ManageHolidayComponent","_holidayService","addHoliday","oldHolidays","currentHoliday","dayValue","getHoliday","h","ManageProjectColumnsComponent","_projectColumnService","projectColumnChanged","shouldReload","orderNo","sortBySortNo","ManageResourceComponent","_resourceService","addNewLink","maxOrder","resources","newLink","resource","resourceChanged","ManageRosterCodeSettingsComponent","changeTracking","rcsObject","rcsItem","rosterCodeSettingId","subIndex","changeForeColor","changeBackColor","saveChanges","changedSettings","getChangedSettings","rcsId","ctObj","discardChanges","resetChangeTracking","cs","shouldEnableSave","RosterCodeCheckboxComponent","ManageRosterCodeComponent","addRosterCode","canBeUsedInTimesheet","deleteRosterCodeHelper","updateRosterCode","rosterCodeChanged","RosterProjectFormComponent","ManageRosterProjectComponent","_rosterProjectService","workGroupsDict","rolesDict","wg","rg","deleteRosterProject","deleteRosterProjectHelper","rsl","rslIndex","rslId","deleteGroupHelper","groupIds","addOrUpdateRosterProject","create","rt","canSetPermission","ManageRosterProjectPermission","ManageRosterSettingsComponent","_rosterSettingsService","tabIndexKey","loadRosterSettings","dataIsReady","rosterSettings","tabSwitched","canManageRosterProject","ManageRosterProject","RosterSummaryLineFormComponent","ManageRosterSummaryLineComponent","_rosterSummaryLineService","deleteRosterSummaryLine","line","deleteRosterSummaryLineHelper","addOrUpdateRosterSummaryLine","rosterSummaryLine","rosterSummaryFormular","companyCode","getRosterProject","getEmployersInCommaSeperatedString","RosterTypeFormComponent","ManageRosterTypeComponent","getDescription","desc","deleteRosterType","rosterType","deleteRosterTypeHelper","addOrUpdateRosterType","ManageTrainingCourseComponent","_trainingCourseService","oldItems","addTrainingCourse","trainingCourse","course","WorkareaFormComponent","ManageWorkAreaComponent","workarea","addOrUpdateWorkArea","removable","usage","teamLeaders","isAdd","signOnSheet","getTeamLeaders","shouldPrintSignOnSheet","WorkGroupPositionRosterTypeFormComponent","ManageWorkGroupPositionRosterType","_workGroupPositionRosterTypeService","_positionService","loadAllData","addItem","PayCategoryDropdownComponent","payCategories","selectedPayCategory","oldPayCategoryId","compare","PositionCheckboxComponent","salaryEmployee","leadHead","logRnR","updatePosition","PositionDropdownComponent","selectedPosition","oldPositionId","RosterCodeDropdownComponent","oldRosterCodeId","selectedWorkGroups","OnSite","formularName","OffSite","RosterCode","selectedEmployers","showRosterCodeDropdown","_parser","rosterTypeRule","rosterTypeDescription","rosterCodesObj","originalRosterType","SystemDataManagementComponent","_payCategoryService","selectedCategoryName","tipInfo","itemIcons","selectCategory","selectedCategory","isPosition","loadPositions","loadPayCategories","loadSelectedEntity","afterEntityLoaded","abbr","mapper","isWorkGroup","ex","isActive","openEntityForm","savePosition","savePayCategory","saveEntity","afterEntitySaved","pos","afterEntityDeleted","afterEntityUpdated","entityNameChanged","PickListModule","TimesheetBreakdownRuleComponent","ColorPickerModule","_ruleService","deltaRowDataMode","enableCellTextSelection","ensureDomOrder","frameworkComponents","positionDropdownComponent","rosterCodeDropdownComponent","payCategoryDropdownComponent","breakdownRuleDropdownComponent","getLockedCount","getUnlockedCount","loadRules","reloading","rcRes","posRes","pcRes","selectedRosterCodes","pc","lowerCaseName","deleteRule","_deleteRule","addRule","weekend","updateColId","whenSucceeded","whenFailed","getWeekdayValue","cellRendererSelector","positionComparator","rosterCodeComparator","aValue","bValue","selectedPositions","selectedRosterType","GenerateTimesheetComponent","_timesheetService","lastPayPeriod","jobCodes","updateEmployeeList","selectedGroupsDict","selectedGroups","employeesToShow","checkEmployeesPayrollRosterCode","generateTimesheetHelper","fnContinue","blockScroll","ManageTimesheetComponent","confirmationService","toastService","initializeDialog","loadEmployeesByGroup","groupEmployees","allEmployeeChecked","validateHours","validateComplete","empRosters","hourEntered","getHoursEntered","totalHour","payrollRosterCodeId","warning","subWarning","messageToReturn","saveTimesheet","saveTimesheetHelper","employeeTimesheet","savingTimesheet","loadTimesheet","canModifyPastTimeSheet","TimesheetActionComponent","showIcon","editTimesheet","openTimesheetForm","canModifyTimeSheet","TimesheetFormComponent","_timesheet","_hoursBeforeUpdate","hoursEntered","TimesheetComponent","_confirmDialog","warningType","MissingTimesheet","allTimesheets","showAllEnteredTimesheets","exportTimesheet","timesheetValidationReport","exportingValidationReport","onEmployerChanged","selectedEmployer","onJobCodeChanged","selectedJobCode","onGroupChanged","selectedGroup","onEmployeeChanged","manageTimesheet","timesheetsTotal","getTimesheetTotal","getCountOfAllEnteredTimesheets","getCountOfTimesheetsWithWarning","NoWarning","getCountOfMissingTimesheets","showMessageColumns","showTimesheetsWithWarning","showMissingTimesheets","selectedRowId","canEnterTimeSheet","canGenerateTimeSheet","GenerateTimeSheet","warningMessage","quickDateRanges","groupDict","warningColumns","production","enableProdMode","__NgCli_bootstrap_1","bootstrapModule"],"sourceRoot":"webpack:///","x_google_ignoreList":[]}