dashboard.component.ts 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import { Component, computed, inject, OnInit, Signal } from '@angular/core';
  2. import { RouterModule } from '@angular/router';
  3. import { BaseComponent } from 'angularlib/base.component';
  4. import { LoginModule } from 'angularlib/login';
  5. import { Store } from '@ngxs/store';
  6. import { LoginService } from 'angularlib/login/login.service';
  7. import { MasterMenuComponent } from 'angularlib/menu/master.menu/master.menu.component';
  8. import { CommonModule } from '@angular/common';
  9. import { ComponentService } from 'angularlib/component.service';
  10. import { LabelModule } from 'angularlib/labels/label.module';
  11. import { masterMenu } from '../menu/menu';
  12. import { InputModule } from 'angularlib/input/input.module';
  13. import { EventI } from 'fis-commons/event/event';
  14. import { DashboardItemComponent } from 'angularlib/dashboard/dashboard-item/dashboard-item.component';
  15. import { LeaveModule } from 'fis/leave';
  16. import { MatDivider } from "@angular/material/divider";
  17. import { MatModule } from 'angularlib/mat.module';
  18. import { TenderModule } from 'fis/tender/tender.module';
  19. import { FISAccess } from 'fis/fis.access';
  20. import { FISMessaging } from 'fis/index';
  21. @Component({
  22. selector: 'spts-sales-submission-dashitem',
  23. imports: [
  24. CommonModule,
  25. RouterModule,
  26. MatModule,
  27. LoginModule,
  28. LabelModule,
  29. MasterMenuComponent,
  30. InputModule,
  31. LeaveModule,
  32. TenderModule
  33. ],
  34. providers: [ComponentService, FISAccess],
  35. templateUrl: './dashboard.component.html',
  36. styleUrl: './dashboard.component.scss'
  37. })
  38. export class DashboardComponent extends BaseComponent implements OnInit{
  39. protected masterMenu = masterMenu;
  40. protected username: Signal<string> = computed(() => {
  41. const GIVEN_NAME = this.loginService?.userSignal()?.name?.givenName;
  42. const FIS_NAME = this.loginService?.userSignal()?.fisInfo?.name;
  43. return GIVEN_NAME || FIS_NAME;
  44. });
  45. protected access = inject(FISAccess);
  46. protected hasAccess = {
  47. leaveApproval: false
  48. };
  49. protected goto = {
  50. field: {
  51. key: 'goto',
  52. type: 'select',
  53. label: {key:'will_redirect_to',default:'Go to'},
  54. selectOptions: [
  55. {value:'home',label:{key:'home_page',default:'Home'}},
  56. {value:'leave-new',label:{key:'new_leave',default:'Apply New Leave'}},
  57. {value:'leave-applied',label:{key:'applied_leave',default:'Applied Leave'}},
  58. {value:'leave-approval',label:{key:'leave_approval',default:'Leave Approval'}},
  59. {value:'spts-sales',label:{key:'sales_tender_submission',default:'Sales Tender Submission'}},
  60. ]
  61. },
  62. value: 'home',
  63. onChange: (event: EventI) => {
  64. switch (event?.payload?.value) {
  65. case 'leave-new' : {
  66. this.cs.navigate('/leave',{type:'new'});
  67. break;
  68. }
  69. case 'leave-applied' : {
  70. this.cs.navigate('/leave',{type:'view'});
  71. break;
  72. }
  73. case 'leave-approval' : {
  74. this.cs.navigate('/leave/approval');
  75. break;
  76. }
  77. case 'spts-sales' : {
  78. this.cs.navigate('/tender',{type:'sales'});
  79. break;
  80. }
  81. default: break;
  82. }
  83. }
  84. }
  85. constructor(
  86. protected store: Store,
  87. protected loginService: LoginService,
  88. protected cs: ComponentService
  89. ) {
  90. super(store);
  91. }
  92. ngOnInit(): void {
  93. super.ngOnInit();
  94. const run = async () => {
  95. const leaveApproval = await this.access.canActivate({data:{serviceId:'09 - Leave Application',accessRight:['canread','canapprove'],noprompt:true}},undefined);
  96. this.hasAccess = {
  97. ...this.hasAccess,
  98. leaveApproval: leaveApproval
  99. };
  100. }
  101. run();
  102. }
  103. }