{"version":3,"file":"217.2130b392eecfe946.js","mappings":"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","names":["UserService","BaseService","constructor","httpService","super","this","organizations","get","baseUrl","pipe","catchError","errorHandler","switchOrganisation","switchOrganisationRequest","post","static","t","i0","i1","core","jDH","factory","ɵfac","HeaderComponent","authService","spinner","ngbModalService","organizationSettingsService","router","userService","subscriptions","Subscription","toggleSidebar","EventEmitter","isDonor","loginResponse","roleId","Role","Donor","canViewRecurringPaymentOrgs","privileges","some","privilege","Privilege","ViewOrgRecurringPayment","canViewOrganizations","ViewOrganization","canViewOrganizationsSettings","ViewOrganizationSettings","canViewDonorInformation","ViewDonorInformation","canManageManualDeposit","ManageManualDeposits","openSettingsModal","show","SpinnerConstants","App","getSettings","subscribe","next","res","hide","open","OrganizationFormComponent","size","componentInstance","organizationModel","error","setActiveOrg","orgId","organisationId","org","find","o","id","loggedInOrgName","name","changeOrganization","add","organizationId","setLoginResponse","window","location","reload","ngOnDestroy","unsubscribe","ngOnInit","orgs","activeOrg","onToggleSidebar","emit","logout","navigate","i2","i3","i4","i5","i6","VBU","selectors","outputs","decls","vars","consts","template","rf","ctx","ctx_r0","logo","_r2","dropdownHideShow","SidebarComponent_ng_container_4_div_1_Template","length","org_r4","_r3","$implicit","SidebarComponent_div_7_a_2_Template","_c3","isVisible","otherOrganizations","_c4","_c5","_c6","_c7","_c8","_c9","_c10","_r5","SidebarComponent","filter","SidebarComponent_img_3_Template","SidebarComponent_ng_container_4_Template","SidebarComponent_div_7_Template","SidebarComponent_li_11_Template","SidebarComponent_li_12_Template","SidebarComponent_li_16_Template","SidebarComponent_li_17_Template","SidebarComponent_li_18_Template","SidebarComponent_a_20_Template","SidebarComponent_a_21_Template","SidebarComponent_li_22_Template","SidebarComponent_li_23_Template","SidebarComponent_ng_container_30_Template","_c0","_c1","_c2","routes","path","component","LayoutComponent","isSidebarVisible","children","redirectTo","pathMatch","loadChildren","Promise","all","__webpack_require__","e","then","bind","m","OrganizationModule","DonationHistoryModule","DonorInformationModuel","ManualDepositModule","TransactionsModule","AdminTaxModule","DonorTaxModule","PaymentModule","RecurringPaymentModule","ProfileModule","PaymentMethodModule","LayoutRoutingModule","$C","G2t","RouterModule","forChild","LayoutModule","OrganizationSettingsService","OrganizationService","FileUploadService","imports","SharedModule","OrganizationBasicDetail","OrganizationModel","hardwares","users","campaigns","FileUploaderComponent","title","message","valueSubject","BehaviorSubject","value$","asObservable","upload","event","input","srcElement","files","formData","FormData","append","uploadFileFn","onChange","writeValue","val","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","inputs","features","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","FileUploaderComponent_i_1_Template","$event","TaxesComponent","fb","spinnerService","fileUploadService","formInputElements","displayMessage","errorModel","uploadFile","OrganizationForm","BlobConstants","TaxLettersContainerName","tap","validationMessages","taxLetterTemplate","required","genericValidator","GenericValidator","FormControl","taxesForm","group","ngAfterViewInit","controlBlurs","map","formControl","fromEvent","nativeElement","merge","valueChanges","debounceTime","value","processMessages","viewQuery","FormControlName","ElementRef","LogoUploaderComponent","LogoUploaderComponent_i_1_Template","LogoUploaderComponent_img_3_Template","HardwareModel","active","HardwareFormComponent","activeModal","hardwareModel","requiredString","hardwareForm","requiredStringValidator","serialNumber","simCardNumber","save","CommonUtility","trimFormValues","close","dismiss","hardware_r2","_r1","ctx_r2","editHardware","HardwareListComponent","createNewHardware","openHardwareForm","hardware","hardwareModalRef","closed","hardwareRes","push","hardwareIndex","indexOf","splice","HardwareListComponent_tr_23_Template","UserInvitationModel","UserFormComponent","userInvitationModel","invitations","existingUserValidation","control","i","email","duplicateEmail","firstName","lastName","userInvitationForm","Validators","valid","_r4","userInvitation_r2","editUserInvitation","delete","UserListComponent_tr_23_a_15_Template","status","isReadonly","userId","UserListComponent","userInvitations","createNewUserInvitation","openUserInvitationForm","userInvitation","index","isActive","userInvitationModalRef","userInvitationRes","userInvitationIndex","UserListComponent_tr_23_Template","CampaignBasicModel","CampaignModel","CampaignFormComponent","campaignModel","campaignForm","invalid","campaign_r2","editCampaign","CampaignListComponent_tr_19_a_7_Template","CampaignListComponent","createNewCampaign","openCampaignForm","campaign","campaignModalRef","campaignRes","CampaignListComponent_tr_19_Template","CampaignListComponent_tr_20_Template","tmp_2_0","undefined","organizationService","organizationFormSpinner","canManageUsers","ManageOrganizationSettings","canManageOrgs","ManageOrganization","OrganizationsContainerName","canManageOrganizationsSettings","canManageOrganizations","saveDetails","organizationForm","taxesComponent","saveSettings","Error","applicationMessage","address1","address2","city","state","country","zip","bankAccountName","bankRoutingNumber","bankAccountNumber","accountHolderName","err","i7","OrganizationFormComponent_li_15_Template","OrganizationFormComponent_li_22_Template","OrganizationFormComponent_div_95_Template","OrganizationFormComponent_div_100_Template","tmp_17_0","tmp_20_0","formGroup","Object","keys","controls","forEach","key","setValue","trim"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/app/layout/services/user.service.ts","./src/app/layout/components/header/header.component.ts","./src/app/layout/components/header/header.component.html","./src/app/layout/components/sidebar/sidebar.component.html","./src/app/layout/components/sidebar/sidebar.component.ts","./src/app/layout/layout-routing.module.ts","./src/app/layout/layout.component.ts","./src/app/layout/layout.component.html","./src/app/layout/layout.module.ts","./src/app/models/organization.model.ts","./src/app/shared/components/file-uploader/file-uploader.component.html","./src/app/shared/components/file-uploader/file-uploader.component.ts","./src/app/layout/organization/components/organization-form/components/taxes/taxes.component.ts","./src/app/layout/organization/components/organization-form/components/taxes/taxes.component.html","./src/app/shared/components/logo-uploader/logo-uploader.component.html","./src/app/shared/components/logo-uploader/logo-uploader.component.ts","./src/app/models/hardware.model.ts","./src/app/layout/organization/components/organization-form/components/hardware-form/hardware-form.component.ts","./src/app/layout/organization/components/organization-form/components/hardware-form/hardware-form.component.html","./src/app/layout/organization/components/organization-form/components/hardware-list/hardware-list.component.html","./src/app/layout/organization/components/organization-form/components/hardware-list/hardware-list.component.ts","./src/app/models/user-invitation.model.ts","./src/app/layout/organization/components/organization-form/components/user-form/user-form.component.ts","./src/app/layout/organization/components/organization-form/components/user-form/user-form.component.html","./src/app/layout/organization/components/organization-form/components/user-list/user-list.component.html","./src/app/layout/organization/components/organization-form/components/user-list/user-list.component.ts","./src/app/models/campaign.model.ts","./src/app/layout/organization/components/organization-form/components/campaign-form/campaign-form.component.ts","./src/app/layout/organization/components/organization-form/components/campaign-form/campaign-form.component.html","./src/app/layout/organization/components/organization-form/components/campaign-list/campaign-list.component.html","./src/app/layout/organization/components/organization-form/components/campaign-list/campaign-list.component.ts","./src/app/layout/organization/components/organization-form/organization-form.component.html","./src/app/layout/organization/components/organization-form/organization-form.component.ts","./src/app/shared/utility/common.utility.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { catchError, Observable } from \"rxjs\";\r\nimport { LoginResponse } from \"src/app/models\";\r\nimport { OrganizationModel } from \"src/app/models/organization.model\";\r\nimport { SwitchOrganizationRequest } from \"src/app/models/user.model\";\r\nimport { BaseService } from \"src/app/services/base.service\";\r\nimport { HttpService } from \"src/app/services/http.service\";\r\n\r\n@Injectable()\r\nexport class UserService extends BaseService {\r\n constructor(private httpService: HttpService) {\r\n super();\r\n }\r\n\r\n organizations(): Observable {\r\n return this.httpService.get(this.baseUrl + `/User/Organizations`)\r\n .pipe(catchError(this.errorHandler));\r\n }\r\n\r\n switchOrganisation(switchOrganisationRequest: SwitchOrganizationRequest): Observable {\r\n return this.httpService.post(this.baseUrl + `/User/SwitchOrganization`, switchOrganisationRequest)\r\n .pipe(catchError(this.errorHandler));\r\n }\r\n}\r\n","import { Component, EventEmitter, Output, OnDestroy, OnInit } from \"@angular/core\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { SpinnerConstants } from \"src/app/models\";\r\nimport { Privilege, Role } from \"src/app/models/enum\";\r\nimport { AuthorizationService } from \"src/app/services\";\r\nimport { OrganizationFormComponent } from \"../../organization/components/organization-form/organization-form.component\";\r\nimport { OrganizationSettingsService } from \"../../services/organization-settings.service\";\r\nimport { UserService } from \"../../services/user.service\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { OrganizationModel } from \"src/app/models/organization.model\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Component({\r\n selector: 'app-header',\r\n templateUrl: './header.component.html'\r\n})\r\nexport class HeaderComponent implements OnInit, OnDestroy {\r\n constructor(\r\n private authService: AuthorizationService,\r\n private spinner: NgxSpinnerService,\r\n private ngbModalService: NgbModal,\r\n private organizationSettingsService: OrganizationSettingsService,\r\n private router: Router,\r\n private userService: UserService\r\n ) {\r\n\r\n }\r\n\r\n private subscriptions = new Subscription();\r\n public organizations: OrganizationModel[] = [];\r\n activeOrg: OrganizationModel | null | undefined;\r\n @Output() toggleSidebar = new EventEmitter();\r\n\r\n isDonor = (): boolean => {\r\n return this.authService.loginResponse!.roleId == Role.Donor;\r\n }\r\n\r\n canViewRecurringPaymentOrgs = (): boolean => {\r\n return this.authService.loginResponse!.privileges.some(privilege => privilege === Privilege.ViewOrgRecurringPayment);\r\n }\r\n\r\n canViewOrganizations = (): boolean => {\r\n return this.authService.loginResponse!.privileges.some(privilege => privilege === Privilege.ViewOrganization);\r\n }\r\n\r\n canViewOrganizationsSettings = (): boolean => {\r\n return this.authService.loginResponse!.privileges.some(privilege => privilege === Privilege.ViewOrganizationSettings);\r\n }\r\n\r\n canViewDonorInformation = (): boolean => {\r\n return this.authService.loginResponse!.privileges.some(privilege => privilege === Privilege.ViewDonorInformation);\r\n }\r\n\r\n canManageManualDeposit = (): boolean => {\r\n return this.authService.loginResponse!.privileges.some(privilege => privilege === Privilege.ManageManualDeposits);\r\n }\r\n\r\n openSettingsModal = () => {\r\n this.spinner.show(SpinnerConstants.App);\r\n this.organizationSettingsService.getSettings().subscribe({\r\n next: res => {\r\n this.spinner.hide(SpinnerConstants.App);\r\n var modalRef = this.ngbModalService.open(OrganizationFormComponent, { size: 'lg' })\r\n modalRef.componentInstance.organizationModel = res;\r\n },\r\n error: () => {\r\n this.spinner.hide(SpinnerConstants.App);\r\n }\r\n })\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.spinner.show(SpinnerConstants.App);\r\n this.subscriptions.add(\r\n this.userService.organizations().subscribe(orgs => {\r\n this.organizations = orgs;\r\n this.spinner.hide(SpinnerConstants.App);\r\n this.activeOrg = this.setActiveOrg();\r\n })\r\n );\r\n }\r\n setActiveOrg = (): OrganizationModel | null | undefined => {\r\n const orgId = this.authService.organisationId;\r\n if (orgId) {\r\n const org = this.organizations.find(o => o.id == orgId);\r\n if (org) {\r\n return org;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n\r\n loggedInOrgName = () => {\r\n const orgId = this.authService.organisationId;\r\n if (orgId) {\r\n const org = this.organizations.find(o => o.id == orgId);\r\n if (org) {\r\n return org.name;\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n changeOrganization = (orgId: number) => {\r\n this.spinner.show(SpinnerConstants.App);\r\n this.subscriptions.add(\r\n this.userService.switchOrganisation({organizationId: orgId}).subscribe(res => {\r\n this.authService.setLoginResponse(res);\r\n window.location.reload();\r\n this.spinner.hide(SpinnerConstants.App);\r\n })\r\n );\r\n }\r\n\r\n\r\n\r\n onToggleSidebar() {\r\n this.toggleSidebar.emit();\r\n }\r\n\r\n logout(): void {\r\n if (this.isDonor()) {\r\n this.router.navigate(['account/logout']);\r\n } else {\r\n this.router.navigate(['org-account/logout']);\r\n }\r\n }\r\n}\r\n","
\r\n \r\n Logout\r\n
\r\n","","import { Component, EventEmitter, Output, OnDestroy, OnInit } from '@angular/core';\r\nimport { OrganizationModel } from 'src/app/models/organization.model';\r\nimport { UserService } from '../../services/user.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { AuthorizationService } from 'src/app/services';\r\nimport { Privilege, Role } from 'src/app/models/enum';\r\nimport { NgxSpinnerService } from 'ngx-spinner';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { OrganizationSettingsService } from '../../services/organization-settings.service';\r\nimport { SpinnerConstants } from 'src/app/models';\r\nimport { OrganizationFormComponent } from '../../organization/components/organization-form/organization-form.component';\r\n\r\n@Component({\r\n selector: 'app-sidebar',\r\n templateUrl: './sidebar.component.html',\r\n})\r\nexport class SidebarComponent implements OnInit, OnDestroy {\r\n\r\n constructor(\r\n private authService: AuthorizationService,\r\n private spinner: NgxSpinnerService,\r\n private ngbModalService: NgbModal,\r\n private organizationSettingsService: OrganizationSettingsService,\r\n private userService: UserService\r\n) {\r\n \r\n}\r\n private subscriptions = new Subscription();\r\n public organizations: OrganizationModel[] = [];\r\n activeOrg: OrganizationModel | null | undefined;\r\n @Output() toggleSidebar = new EventEmitter();\r\n isVisible:boolean = false;\r\n\r\n get otherOrganizations(): OrganizationModel[] {\r\n return this.organizations.filter(o => o.id != this.activeOrg?.id);\r\n }\r\n \r\n isDonor = (): boolean => {\r\n return this.authService.loginResponse!.roleId == Role.Donor;\r\n }\r\n\r\ncanViewRecurringPaymentOrgs = (): boolean => {\r\n return this.authService.loginResponse!.privileges.some(privilege => privilege === Privilege.ViewOrgRecurringPayment);\r\n}\r\n\r\ncanViewOrganizations = (): boolean => {\r\n return this.authService.loginResponse!.privileges.some(privilege => privilege === Privilege.ViewOrganization);\r\n}\r\n\r\ncanViewOrganizationsSettings = (): boolean => {\r\n return this.authService.loginResponse!.privileges.some(privilege => privilege === Privilege.ViewOrganizationSettings);\r\n}\r\n\r\ncanViewDonorInformation = (): boolean => {\r\n return this.authService.loginResponse!.privileges.some(privilege => privilege === Privilege.ViewDonorInformation);\r\n}\r\n\r\ncanManageManualDeposit = (): boolean => {\r\n return this.authService.loginResponse!.privileges.some(privilege => privilege === Privilege.ManageManualDeposits);\r\n}\r\n\r\nopenSettingsModal = () => {\r\n this.spinner.show(SpinnerConstants.App);\r\n this.organizationSettingsService.getSettings().subscribe({\r\n next: res => { \r\n this.spinner.hide(SpinnerConstants.App);\r\n var modalRef = this.ngbModalService.open(OrganizationFormComponent, { size: 'lg' })\r\n modalRef.componentInstance.organizationModel = res;\r\n },\r\n error: () => {\r\n this.spinner.hide(SpinnerConstants.App);\r\n }\r\n })\r\n}\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscriptions.add(\r\n this.userService.organizations().subscribe(orgs => {\r\n this.organizations = orgs;\r\n this.activeOrg = this.setActiveOrg();\r\n })\r\n );\r\n }\r\n\r\n setActiveOrg = (): OrganizationModel | null | undefined => {\r\n const orgId = this.authService.organisationId;\r\n if (orgId) {\r\n const org = this.organizations.find(o => o.id == orgId);\r\n if (org) {\r\n return org;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n loggedInOrgName = () => {\r\n const orgId = this.authService.organisationId;\r\n if (orgId) {\r\n const org = this.organizations.find(o => o.id == orgId);\r\n if (org) {\r\n return org.name;\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\nchangeOrganization = (orgId: number) => {\r\n this.spinner.show(SpinnerConstants.App);\r\n this.subscriptions.add(\r\n this.userService.switchOrganisation({organizationId: orgId}).subscribe(res => {\r\n this.authService.setLoginResponse(res);\r\n window.location.reload();\r\n this.spinner.hide(SpinnerConstants.App);\r\n })\r\n );\r\n}\r\n\r\nonToggleSidebar() {\r\n this.toggleSidebar.emit();\r\n }\r\n\r\n dropdownHideShow(){\r\n this.isVisible = !this.isVisible;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { LayoutComponent } from './layout.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: LayoutComponent,\r\n children: [\r\n { path: '', redirectTo: 'organizations', pathMatch: 'full' },\r\n { path: 'organizations', loadChildren: () => import('./organization/organization.module').then(m => m.OrganizationModule) },\r\n { path: 'donation-history', loadChildren: () => import('./donation-history/donation-history.module').then(m => m.DonationHistoryModule) },\r\n { path: 'donor-information', loadChildren: () => import('./donor-information/donor-information.module').then(m => m.DonorInformationModuel) },\r\n { path: 'manual-deposit', loadChildren: () => import('./manual-deposit/manual-deposit.module').then(m => m.ManualDepositModule) },\r\n { path: 'transactions', loadChildren: () => import('./transactions/transactions.module').then(m => m.TransactionsModule) },\r\n { path: 'admin-tax', loadChildren: () => import('./admin-tax/admin-tax.module').then(m => m.AdminTaxModule) },\r\n { path: 'donor-tax', loadChildren: () => import('./donor-tax/donor-tax.module').then(m => m.DonorTaxModule) },\r\n { path: 'payment', loadChildren: () => import('./payment/payment.module').then(m => m.PaymentModule) },\r\n { path: 'recurring-payment', loadChildren: () => import('./recurring-payment/recurring-payment.module').then(m => m.RecurringPaymentModule) },\r\n { path: 'profile', loadChildren: () => import('./profile/profile.module').then(m => m.ProfileModule) },\r\n { path: 'payment-method', loadChildren: () => import('./payment-method/payment-method.module').then(m => m.PaymentMethodModule) }\r\n ]\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class LayoutRoutingModule {\r\n\r\n}\r\n","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'app-layout',\r\n templateUrl: './layout.component.html',\r\n})\r\nexport class LayoutComponent {\r\n\r\n isSidebarVisible = false;\r\n\r\n toggleSidebar() {\r\n this.isSidebarVisible = !this.isSidebarVisible;\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 { SharedModule } from \"../shared/shared.module\";\r\nimport { HeaderComponent } from \"./components/header/header.component\";\r\nimport { LayoutRoutingModule } from \"./layout-routing.module\";\r\nimport { LayoutComponent } from \"./layout.component\";\r\nimport { FileUploadService } from \"./organization/services/file-upload.service\";\r\nimport { OrganizationService } from \"./organization/services/organization.service\";\r\nimport { OrganizationSettingsService } from \"./services/organization-settings.service\";\r\nimport { UserService } from \"./services/user.service\";\r\nimport { SidebarComponent } from \"./components/sidebar/sidebar.component\";\r\n\r\n@NgModule({\r\n imports: [\r\n LayoutRoutingModule,\r\n SharedModule\r\n ],\r\n declarations: [\r\n LayoutComponent,\r\n HeaderComponent,\r\n SidebarComponent\r\n ],\r\n providers: [\r\n OrganizationSettingsService,\r\n OrganizationService,\r\n UserService,\r\n FileUploadService\r\n ]\r\n})\r\nexport class LayoutModule {\r\n\r\n}","import { CampaignModel } from \"./campaign.model\";\r\nimport { HardwareModel } from \"./hardware.model\";\r\nimport { UserInvitationModel } from \"./user-invitation.model\";\r\n\r\nexport interface OrganizationFilter {\r\n name: string;\r\n skip?: number;\r\n take?: number;\r\n}\r\n\r\nexport class OrganizationBasicDetail {\r\n id?: number;\r\n name?: string;\r\n logo?: string;\r\n address1?: string;\r\n address2?: string;\r\n city?: string;\r\n zip?: string;\r\n state?: string;\r\n country?: string;\r\n applicationMessage?: string;\r\n paymentProcessingFeesPercentage?: number;\r\n}\r\n\r\nexport class OrganizationModel extends OrganizationBasicDetail {\r\n bankAccountName?: string;\r\n bankRoutingNumber?: string;\r\n bankAccountNumber?: string;\r\n accountHolderName?: string;\r\n creationDate?: Date\r\n lastModifiedDate?: Date\r\n createdById?: number;\r\n lastModifiedById?: number;\r\n hardwares: HardwareModel[] = [];\r\n users: UserInvitationModel[] = [];\r\n campaigns: CampaignModel[] = [];\r\n taxLetterTemplate?: string;\r\n}\r\n\r\nexport class OrganizationResponse {\r\n totalCount!: number;\r\n organizations!: OrganizationModel[];\r\n}","
\r\n \r\n

{{title}}

\r\n {{message}}\r\n \r\n \r\n
","import { Component, EventEmitter, Output, Input, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Observable, BehaviorSubject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-file-uploader',\r\n templateUrl: './file-uploader.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => FileUploaderComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class FileUploaderComponent implements ControlValueAccessor {\r\n @Input()\r\n uploadFileFn!: (formData: FormData) => Observable;\r\n\r\n @Input()\r\n title: string = 'Upload your template here';\r\n\r\n @Input()\r\n message: string = 'Maximum size is 2Mb, doc, docx supported';\r\n\r\n onChange: any;\r\n valueSubject: BehaviorSubject = new BehaviorSubject('');\r\n value$: Observable = this.valueSubject.asObservable();\r\n\r\n upload(event: any): void {\r\n const input: HTMLInputElement = event.srcElement;\r\n if (input.files && input.files[0]) {\r\n const formData = new FormData();\r\n formData.append('file', input.files[0], input.files[0].name);\r\n if (this.uploadFileFn) {\r\n this.uploadFileFn(formData).subscribe(path => {\r\n this.onChange(path);\r\n this.writeValue(path);\r\n });\r\n }\r\n }\r\n }\r\n\r\n writeValue(val: string): void {\r\n this.valueSubject.next(val);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n }\r\n}\r\n","import { AfterViewInit, Component, ElementRef, Input, OnInit, ViewChildren } from \"@angular/core\";\r\nimport { FormBuilder, FormControl, FormControlName, FormGroup } from \"@angular/forms\";\r\nimport { NgxSpinnerService } from \"ngx-spinner\";\r\nimport { debounceTime, fromEvent, merge, Observable, tap } from \"rxjs\";\r\nimport { FileUploadService } from \"src/app/layout/organization/services/file-upload.service\";\r\nimport { BlobConstants, SpinnerConstants } from \"src/app/models\";\r\nimport { NotOkBaseClass } from \"src/app/models/error.model\";\r\nimport { OrganizationModel } from \"src/app/models/organization.model\";\r\nimport { GenericValidator } from \"src/app/shared/generic-validator\";\r\n\r\n@Component({\r\n templateUrl: './taxes.component.html',\r\n selector: 'app-taxes'\r\n})\r\nexport class TaxesComponent implements OnInit, AfterViewInit {\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[] = [];\r\n\r\n taxLetterTemplate!: FormControl;\r\n public taxesForm!: FormGroup;\r\n\r\n @Input()\r\n organizationModel!: OrganizationModel;\r\n\r\n displayMessage: { [key: string]: string } = {};\r\n private validationMessages: { [key: string]: { [key: string]: string } };\r\n private genericValidator: GenericValidator;\r\n errorModel: NotOkBaseClass | null = null;\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private spinnerService: NgxSpinnerService,\r\n private fileUploadService: FileUploadService\r\n ) {\r\n this.validationMessages = {\r\n taxLetterTemplate: {\r\n required: 'template is required.'\r\n }\r\n };\r\n\r\n this.genericValidator = new GenericValidator(this.validationMessages);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.taxLetterTemplate = new FormControl(this.organizationModel?.taxLetterTemplate); \r\n this.taxesForm = this.fb.group({\r\n taxLetterTemplate: this.taxLetterTemplate\r\n });\r\n }\r\n\r\n uploadFile = (formData: FormData): Observable => {\r\n this.spinnerService.show(SpinnerConstants.OrganizationForm);\r\n return this.fileUploadService.upload(BlobConstants.TaxLettersContainerName, formData).pipe(\r\n tap(() => this.spinnerService.hide(SpinnerConstants.OrganizationForm))\r\n );\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // Watch for the blur event from any input element on the form.\r\n // This is required because the valueChanges does not provide notification on blur\r\n const controlBlurs: Observable[] | undefined = this.formInputElements.map(\r\n (formControl: ElementRef) => fromEvent(formControl.nativeElement, 'blur')\r\n );\r\n\r\n // Merge the blur event observable with the valueChanges observable\r\n // so we only need to subscribe once.\r\n merge(this.taxesForm?.valueChanges, ...controlBlurs).pipe(\r\n debounceTime(500)\r\n ).subscribe(value => {\r\n this.displayMessage = this.genericValidator.processMessages(this.taxesForm);\r\n });\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n
\r\n
","
\r\n \r\n \r\n

Upload your logo here

\r\n Maximum size is 2Mb, PNG, JPG, GIF supported\r\n \r\n
","import { Component, EventEmitter, Output, Input, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { Observable, BehaviorSubject } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'app-logo-uploader',\r\n templateUrl: './logo-uploader.component.html',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => LogoUploaderComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class LogoUploaderComponent implements ControlValueAccessor {\r\n @Input()\r\n uploadFileFn!: (formData: FormData) => Observable;\r\n\r\n onChange: any;\r\n valueSubject: BehaviorSubject = new BehaviorSubject('');\r\n value$: Observable = this.valueSubject.asObservable();\r\n\r\n upload(event: any): void {\r\n const input: HTMLInputElement = event.srcElement;\r\n if (input.files && input.files[0]) {\r\n const formData = new FormData();\r\n formData.append('file', input.files[0], input.files[0].name);\r\n if (this.uploadFileFn) {\r\n this.uploadFileFn(formData).subscribe(path => {\r\n this.onChange(path);\r\n this.writeValue(path);\r\n });\r\n }\r\n }\r\n }\r\n\r\n writeValue(val: string): void {\r\n this.valueSubject.next(val);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n }\r\n}\r\n","export class HardwareModel {\r\n id?: number;\r\n name?: string;\r\n serialNumber?: string;\r\n simCardNumber?: string;\r\n active: boolean = false;\r\n organizationId: number = 0;\r\n organizationName?: string;\r\n creationDate?: Date;\r\n lastModifiedDate?: Date;\r\n createdBy?: string;\r\n lastModifiedBy?: string;\r\n}\r\n","import { AfterViewInit, Component, ElementRef, Input, OnInit, ViewChildren } from \"@angular/core\";\r\nimport { FormBuilder, FormControl, FormControlName, FormGroup, Validators } from \"@angular/forms\";\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { debounceTime, fromEvent, merge, Observable } from \"rxjs\";\r\nimport { NotOkBaseClass } from \"src/app/models/error.model\";\r\nimport { HardwareModel } from \"src/app/models/hardware.model\";\r\nimport { GenericValidator } from \"src/app/shared/generic-validator\";\r\nimport { CommonUtility } from \"src/app/shared/utility/common.utility\";\r\nimport { requiredStringValidator } from \"src/app/shared/validators/required-string-validator\";\r\n\r\n@Component({\r\n templateUrl: './hardware-form.component.html'\r\n})\r\nexport class HardwareFormComponent implements OnInit, AfterViewInit {\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[] = [];\r\n @Input()\r\n hardwareModel: HardwareModel = new HardwareModel();\r\n\r\n hardwareForm!: FormGroup;\r\n name!: FormControl;\r\n serialNumber!: FormControl;\r\n simCardNumber!: FormControl;\r\n active!: FormControl;\r\n \r\n displayMessage: { [key: string]: string } = {};\r\n private validationMessages: { [key: string]: { [key: string]: string } };\r\n private genericValidator: GenericValidator;\r\n errorModel: NotOkBaseClass | null = null;\r\n \r\n constructor(\r\n private fb: FormBuilder,\r\n public activeModal: NgbActiveModal\r\n ) {\r\n this.validationMessages = {\r\n name: {\r\n requiredString: 'Name is required.'\r\n }\r\n };\r\n \r\n this.genericValidator = new GenericValidator(this.validationMessages);\r\n }\r\n ngAfterViewInit(): void {\r\n // Watch for the blur event from any input element on the form.\r\n // This is required because the valueChanges does not provide notification on blur\r\n const controlBlurs: Observable[] | undefined = this.formInputElements.map(\r\n (formControl: ElementRef) => fromEvent(formControl.nativeElement, 'blur')\r\n );\r\n\r\n // Merge the blur event observable with the valueChanges observable\r\n // so we only need to subscribe once.\r\n merge(this.hardwareForm?.valueChanges, ...controlBlurs).pipe(\r\n debounceTime(500)\r\n ).subscribe(value => {\r\n this.displayMessage = this.genericValidator.processMessages(this.hardwareForm);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.name = new FormControl(this.hardwareModel?.name, requiredStringValidator());\r\n this.serialNumber = new FormControl(this.hardwareModel?.serialNumber);\r\n this.simCardNumber = new FormControl(this.hardwareModel?.simCardNumber);\r\n this.active = new FormControl(this.hardwareModel?.active);\r\n this.hardwareForm = this.fb.group({\r\n name: this.name,\r\n serialNumber: this.serialNumber,\r\n simCardNumber: this.simCardNumber,\r\n active: this.active\r\n });\r\n }\r\n\r\n save(): void {\r\n CommonUtility.trimFormValues(this.hardwareForm);\r\n this.activeModal.close({\r\n ...this.hardwareForm.value,\r\n id: this.hardwareModel?.id\r\n });\r\n }\r\n}\r\n","
\r\n
Add Hardware Information
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{displayMessage['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
Hardwares
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
NameSerial NumberSim Card NumberActive 
{{hardware.name}}{{hardware.serialNumber}}{{hardware.simCardNumber}}{{hardware.active ? 'Yes' : 'No'}}\r\n \r\n
\r\n
\r\n
\r\n
","import { Component, Input } from \"@angular/core\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { tap } from \"rxjs\";\r\nimport { HardwareModel } from \"src/app/models/hardware.model\";\r\nimport { HardwareFormComponent } from \"../hardware-form/hardware-form.component\";\r\n\r\n@Component({\r\n templateUrl: './hardware-list.component.html',\r\n selector: 'app-organization-hardware-list'\r\n})\r\nexport class HardwareListComponent {\r\n @Input()\r\n public hardwares: HardwareModel[] = [];\r\n\r\n @Input()\r\n public organizationId: number = 0;\r\n\r\n constructor(\r\n private ngbModalService: NgbModal\r\n ) {\r\n\r\n }\r\n\r\n public createNewHardware = () => {\r\n this.openHardwareForm(null);\r\n }\r\n\r\n public editHardware = (hardware: HardwareModel) => {\r\n this.openHardwareForm(hardware);\r\n }\r\n\r\n private openHardwareForm = (hardware: HardwareModel | null = null) => {\r\n var hardwareModalRef = this.ngbModalService.open(HardwareFormComponent, { size: 'sm' });\r\n if (hardware) {\r\n hardwareModalRef.componentInstance.hardwareModel = hardware;\r\n }\r\n hardwareModalRef.closed.pipe(\r\n tap((hardwareRes: HardwareModel) => {\r\n hardwareRes.organizationId = this.organizationId;\r\n if(hardware == null) {\r\n this.hardwares.push(hardwareRes);\r\n } else {\r\n const hardwareIndex = this.hardwares.indexOf(hardware);\r\n this.hardwares.splice(hardwareIndex, 1, {...hardware, ...hardwareRes});\r\n }\r\n })\r\n ).subscribe();\r\n }\r\n}\r\n","export class UserInvitationModel {\r\n id?: number;\r\n userId?: number;\r\n firstName?: string;\r\n lastName?: string;\r\n email?: string;\r\n isActive!: boolean;\r\n creationDate?: Date;\r\n lastModifiedDate?: Date;\r\n createdBy?: string;\r\n lastModifiedBy?: string;\r\n organizationId: number = 0;\r\n}","import { AfterViewInit, Component, ElementRef, Input, OnInit, ViewChildren } from \"@angular/core\";\r\nimport { AbstractControl, FormBuilder, FormControl, FormControlName, FormGroup, ValidationErrors, ValidatorFn, Validators } from \"@angular/forms\";\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { debounceTime, fromEvent, merge, Observable } from \"rxjs\";\r\nimport { NotOkBaseClass } from \"src/app/models/error.model\";\r\nimport { UserInvitationModel } from \"src/app/models/user-invitation.model\";\r\nimport { GenericValidator } from \"src/app/shared/generic-validator\";\r\nimport { CommonUtility } from \"src/app/shared/utility/common.utility\";\r\nimport { requiredStringValidator } from \"src/app/shared/validators/required-string-validator\";\r\n\r\n@Component({\r\n templateUrl: './user-form.component.html'\r\n})\r\nexport class UserFormComponent implements OnInit, AfterViewInit {\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[] = [];\r\n @Input()\r\n userInvitationModel: UserInvitationModel = new UserInvitationModel();\r\n\r\n @Input()\r\n invitations: UserInvitationModel[] = [];\r\n\r\n userInvitationForm!: FormGroup;\r\n firstName!: FormControl;\r\n lastName!: FormControl;\r\n email!: FormControl;\r\n\r\n displayMessage: { [key: string]: string } = {};\r\n private validationMessages: { [key: string]: { [key: string]: string } };\r\n private genericValidator: GenericValidator;\r\n errorModel: NotOkBaseClass | null = null;\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n public activeModal: NgbActiveModal\r\n ) {\r\n this.validationMessages = {\r\n firstName: {\r\n requiredString: 'First Name is required.'\r\n },\r\n lastName: {\r\n requiredString: 'Last Name is required.'\r\n },\r\n email: {\r\n required: 'Email is required.',\r\n email: 'Invalid email',\r\n duplicateEmail: 'Email already registered'\r\n }\r\n };\r\n\r\n this.genericValidator = new GenericValidator(this.validationMessages);\r\n }\r\n\r\n existingUserValidation = (): ValidatorFn => {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const existing = this.invitations.some(i => i.email == control.value) &&\r\n this.userInvitationModel != null && this.userInvitationModel.email != control.value;\r\n return existing ? { duplicateEmail: { value: control.value } } : null;\r\n };\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // Watch for the blur event from any input element on the form.\r\n // This is required because the valueChanges does not provide notification on blur\r\n const controlBlurs: Observable[] | undefined = this.formInputElements.map(\r\n (formControl: ElementRef) => fromEvent(formControl.nativeElement, 'blur')\r\n );\r\n\r\n // Merge the blur event observable with the valueChanges observable\r\n // so we only need to subscribe once.\r\n merge(this.userInvitationForm?.valueChanges, ...controlBlurs).pipe(\r\n debounceTime(500)\r\n ).subscribe(value => {\r\n this.displayMessage = this.genericValidator.processMessages(this.userInvitationForm);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.firstName = this.fb.control(this.userInvitationModel?.firstName, requiredStringValidator());\r\n this.lastName = this.fb.control(this.userInvitationModel?.lastName, requiredStringValidator());\r\n this.email = this.fb.control(this.userInvitationModel?.email, [Validators.required, Validators.email, this.existingUserValidation()]);\r\n this.userInvitationForm = this.fb.group({\r\n firstName: this.firstName,\r\n lastName: this.lastName,\r\n email: this.email,\r\n });\r\n }\r\n\r\n save(): void {\r\n CommonUtility.trimFormValues(this.userInvitationForm);\r\n if (this.userInvitationForm.valid) {\r\n this.activeModal.close({\r\n ...this.userInvitationForm.value,\r\n id: this.userInvitationModel?.id\r\n });\r\n }\r\n }\r\n}\r\n","
\r\n
Add Admin Information
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{displayMessage['firstName']}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{displayMessage['lastName']}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{displayMessage['email']}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n","
\r\n
\r\n
Admins
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \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 NameLast NameEmailStatus 
{{userInvitation.firstName}}{{userInvitation.lastName}}{{userInvitation.email}}{{status(userInvitation)}}\r\n \r\n
\r\n
\r\n
\r\n
","import { Component, Input } from \"@angular/core\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { tap } from \"rxjs\";\r\nimport { UserInvitationModel } from \"src/app/models/user-invitation.model\";\r\nimport { UserFormComponent } from \"../user-form/user-form.component\";\r\n\r\n@Component({\r\n templateUrl: './user-list.component.html',\r\n selector: 'app-organization-user-list'\r\n})\r\nexport class UserListComponent {\r\n @Input()\r\n public userInvitations: UserInvitationModel[] = [];\r\n\r\n @Input()\r\n public isReadonly!: boolean;\r\n\r\n @Input()\r\n public organizationId: number = 0;\r\n\r\n constructor(\r\n private ngbModalService: NgbModal\r\n ) {\r\n\r\n }\r\n\r\n public createNewUserInvitation = () => {\r\n this.openUserInvitationForm(null);\r\n }\r\n\r\n public editUserInvitation = (userInvitation: UserInvitationModel) => {\r\n this.openUserInvitationForm(userInvitation);\r\n }\r\n\r\n public delete = (userInvitation: UserInvitationModel) => {\r\n var index = this.userInvitations.indexOf(userInvitation);\r\n if (index > -1) {\r\n this.userInvitations.splice(index, 1)\r\n }\r\n }\r\n\r\n public status = (userInvitation: UserInvitationModel) : string => {\r\n if (!userInvitation.userId) {\r\n return \"To be submitted\";\r\n }\r\n else if(userInvitation.isActive) {\r\n return \"Active\";\r\n }\r\n return \"Invited\";\r\n }\r\n\r\n private openUserInvitationForm = (userInvitation: UserInvitationModel | null = null) => {\r\n var userInvitationModalRef = this.ngbModalService.open(UserFormComponent, { size: 'sm' });\r\n if (userInvitation) {\r\n userInvitationModalRef.componentInstance.userInvitationModel = userInvitation;\r\n }\r\n userInvitationModalRef.componentInstance.invitations = this.userInvitations;\r\n userInvitationModalRef.closed.pipe(\r\n tap((userInvitationRes: UserInvitationModel) => {\r\n userInvitationRes.organizationId = this.organizationId;\r\n if(userInvitation == null) {\r\n this.userInvitations.push(userInvitationRes);\r\n } else {\r\n const userInvitationIndex = this.userInvitations.indexOf(userInvitation);\r\n this.userInvitations.splice(userInvitationIndex, 1, {...userInvitation, ...userInvitationRes});\r\n }\r\n })\r\n ).subscribe();\r\n }\r\n}","export class CampaignBasicModel {\r\n id?: number;\r\n name?: string;\r\n active: boolean = false;\r\n}\r\n\r\nexport class CampaignModel extends CampaignBasicModel {\r\n organizationId: number = 0;\r\n organizationName?: string;\r\n creationDate?: Date;\r\n lastModifiedDate?: Date;\r\n createdBy?: string;\r\n lastModifiedBy?: string;\r\n}\r\n","import { Component, ElementRef, Input, ViewChildren } from \"@angular/core\";\r\nimport { FormBuilder, FormControl, FormControlName, FormGroup, Validators } from \"@angular/forms\";\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { debounceTime, fromEvent, merge, Observable } from \"rxjs\";\r\nimport { CampaignModel } from \"src/app/models/campaign.model\";\r\nimport { NotOkBaseClass } from \"src/app/models/error.model\";\r\nimport { GenericValidator } from \"src/app/shared/generic-validator\";\r\nimport { CommonUtility } from \"src/app/shared/utility/common.utility\";\r\nimport { requiredStringValidator } from \"src/app/shared/validators/required-string-validator\";\r\n\r\n@Component({\r\n templateUrl: './campaign-form.component.html'\r\n})\r\nexport class CampaignFormComponent {\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[] = [];\r\n @Input()\r\n campaignModel: CampaignModel = new CampaignModel();\r\n\r\n campaignForm!: FormGroup;\r\n name!: FormControl;\r\n active!: FormControl;\r\n\r\n displayMessage: { [key: string]: string } = {};\r\n private validationMessages: { [key: string]: { [key: string]: string } };\r\n private genericValidator: GenericValidator;\r\n errorModel: NotOkBaseClass | null = null;\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n public activeModal: NgbActiveModal\r\n ) {\r\n this.validationMessages = {\r\n name: {\r\n requiredString: 'Name is required.'\r\n }\r\n };\r\n\r\n this.genericValidator = new GenericValidator(this.validationMessages);\r\n }\r\n ngAfterViewInit(): void {\r\n // Watch for the blur event from any input element on the form.\r\n // This is required because the valueChanges does not provide notification on blur\r\n const controlBlurs: Observable[] | undefined = this.formInputElements.map(\r\n (formControl: ElementRef) => fromEvent(formControl.nativeElement, 'blur')\r\n );\r\n\r\n // Merge the blur event observable with the valueChanges observable\r\n // so we only need to subscribe once.\r\n merge(this.campaignForm?.valueChanges, ...controlBlurs).pipe(\r\n debounceTime(500)\r\n ).subscribe(value => {\r\n this.displayMessage = this.genericValidator.processMessages(this.campaignForm);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.name = new FormControl(this.campaignModel?.name, requiredStringValidator());\r\n this.active = new FormControl(this.campaignModel?.active);\r\n this.campaignForm = this.fb.group({\r\n name: this.name,\r\n active: this.active\r\n });\r\n }\r\n\r\n save(): void {\r\n CommonUtility.trimFormValues(this.campaignForm);\r\n if (this.campaignForm.valid) {\r\n this.activeModal.close({\r\n ...this.campaignForm.value,\r\n id: this.campaignModel?.id\r\n });\r\n }\r\n }\r\n}","
\r\n
Add Campaign Information
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{displayMessage['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
Campaigns
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
NameActive 
{{campaign.name}}{{campaign.active ? 'Yes' : 'No'}}\r\n \r\n
No records exists
\r\n
\r\n
\r\n
","import { Component, Input } from \"@angular/core\";\r\nimport { NgbModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { tap } from \"rxjs\";\r\nimport { CampaignModel } from \"src/app/models/campaign.model\";\r\nimport { CampaignFormComponent } from \"../campaign-form/campaign-form.component\";\r\n\r\n@Component({\r\n templateUrl: './campaign-list.component.html',\r\n selector: 'app-organization-campaign-list'\r\n})\r\nexport class CampaignListComponent {\r\n @Input()\r\n public campaigns: CampaignModel[] = [];\r\n\r\n @Input()\r\n public isReadonly!: boolean;\r\n \r\n @Input()\r\n public organizationId: number = 0;\r\n\r\n constructor(\r\n private ngbModalService: NgbModal\r\n ) {\r\n\r\n }\r\n\r\n public createNewCampaign = () => {\r\n this.openCampaignForm(null);\r\n }\r\n\r\n public editCampaign = (campaign: CampaignModel) => {\r\n this.openCampaignForm(campaign);\r\n }\r\n\r\n private openCampaignForm = (campaign: CampaignModel | null = null) => {\r\n var campaignModalRef = this.ngbModalService.open(CampaignFormComponent, { size: 'sm' });\r\n if (campaign) {\r\n campaignModalRef.componentInstance.campaignModel = campaign;\r\n }\r\n campaignModalRef.closed.pipe(\r\n tap((campaignRes: CampaignModel) => {\r\n campaignRes.organizationId = this.organizationId;\r\n if(campaign == null) {\r\n this.campaigns.push(campaignRes);\r\n } else {\r\n const hardwareIndex = this.campaigns.indexOf(campaign);\r\n this.campaigns.splice(hardwareIndex, 1, {...campaign, ...campaignRes});\r\n }\r\n })\r\n ).subscribe();\r\n }\r\n}\r\n","
\r\n \r\n
\r\n
Organization Settings
\r\n \r\n
\r\n
\r\n
\r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{displayMessage['name']}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n {{displayMessage['applicationMessage']}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \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, ElementRef, Input, OnInit, ViewChild, ViewChildren } from \"@angular/core\";\r\nimport { FormBuilder, FormControl, FormControlName, FormGroup, Validators } from \"@angular/forms\";\r\nimport { NgbActiveModal } from \"@ng-bootstrap/ng-bootstrap\";\r\nimport { NgxSpinner, NgxSpinnerService } from \"ngx-spinner\";\r\nimport { debounceTime, fromEvent, merge, Observable, of, tap } from \"rxjs\";\r\nimport { OrganizationSettingsService } from \"src/app/layout/services/organization-settings.service\";\r\nimport { BlobConstants, SpinnerConstants } from \"src/app/models\";\r\nimport { Privilege } from \"src/app/models/enum\";\r\nimport { NotOkBaseClass } from \"src/app/models/error.model\";\r\nimport { OrganizationModel } from \"src/app/models/organization.model\";\r\nimport { AuthorizationService } from \"src/app/services\";\r\nimport { GenericValidator } from \"src/app/shared/generic-validator\";\r\nimport { FileUploadService } from \"../../services/file-upload.service\";\r\nimport { OrganizationService } from \"../../services/organization.service\";\r\nimport { TaxesComponent } from \"./components/taxes/taxes.component\";\r\nimport { CommonUtility } from \"src/app/shared/utility/common.utility\";\r\nimport { requiredStringValidator } from \"src/app/shared/validators/required-string-validator\";\r\n\r\n@Component({\r\n templateUrl: './organization-form.component.html'\r\n})\r\nexport class OrganizationFormComponent implements OnInit {\r\n @ViewChildren(FormControlName, { read: ElementRef }) formInputElements: ElementRef[] = [];\r\n @ViewChild(TaxesComponent) taxesComponent?: TaxesComponent;\r\n @Input()\r\n organizationModel: OrganizationModel = new OrganizationModel();\r\n\r\n organizationForm!: FormGroup;\r\n organizationFormSpinner = SpinnerConstants.OrganizationForm;\r\n\r\n logo!: FormControl;\r\n name!: FormControl;\r\n address1!: FormControl;\r\n address2!: FormControl;\r\n city!: FormControl;\r\n state!: FormControl;\r\n country!: FormControl;\r\n zip!: FormControl;\r\n bankAccountName!: FormControl;\r\n bankRoutingNumber!:FormControl;\r\n bankAccountNumber!: FormControl;\r\n accountHolderName!: FormControl;\r\n applicationMessage!: FormControl;\r\n\r\n displayMessage: { [key: string]: string } = {};\r\n private validationMessages: { [key: string]: { [key: string]: string } };\r\n private genericValidator: GenericValidator;\r\n errorModel: NotOkBaseClass | null = null;\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n public activeModal: NgbActiveModal,\r\n private authService: AuthorizationService,\r\n private organizationService: OrganizationService,\r\n private spinnerService: NgxSpinnerService,\r\n private fileUploadService: FileUploadService,\r\n private organizationSettingsService: OrganizationSettingsService\r\n ) {\r\n this.validationMessages = {\r\n name: {\r\n requiredString: 'Name is required.'\r\n },\r\n applicationMessage: {\r\n requiredString: 'Message is required.'\r\n }\r\n };\r\n \r\n this.genericValidator = new GenericValidator(this.validationMessages);\r\n }\r\n ngOnInit(): void {\r\n this.logo = new FormControl(this.organizationModel?.logo);\r\n this.name = new FormControl(this.organizationModel?.name, requiredStringValidator());\r\n this.address1 = new FormControl(this.organizationModel?.address1);\r\n this.address2 = new FormControl(this.organizationModel?.address2);\r\n this.city = new FormControl(this.organizationModel?.city);\r\n this.state = new FormControl(this.organizationModel?.state);\r\n this.country = new FormControl(this.organizationModel?.country);\r\n this.zip = new FormControl(this.organizationModel?.zip);\r\n this.bankAccountName = new FormControl(this.organizationModel?.bankAccountName);\r\n this.bankRoutingNumber = new FormControl(this.organizationModel?.bankRoutingNumber);\r\n this.bankAccountNumber = new FormControl(this.organizationModel?.bankAccountNumber);\r\n this.accountHolderName = new FormControl(this.organizationModel?.accountHolderName);\r\n this.applicationMessage = new FormControl(this.organizationModel?.applicationMessage, requiredStringValidator());\r\n this.organizationForm = this.fb.group({\r\n logo: this.logo,\r\n name: this.name,\r\n address1: this.address1,\r\n address2: this.address2,\r\n city: this.city,\r\n state: this.state,\r\n country: this.country,\r\n zip: this.zip,\r\n bankAccountName: this.bankAccountName,\r\n bankRoutingNumber: this.bankRoutingNumber,\r\n bankAccountNumber: this.bankAccountNumber,\r\n accountHolderName: this.accountHolderName,\r\n applicationMessage: this.applicationMessage\r\n });\r\n }\r\n\r\n canManageUsers = (): boolean => {\r\n return this.authService.loginResponse!.privileges.some(privilege => privilege === Privilege.ManageOrganizationSettings);\r\n }\r\n\r\n canManageOrgs = (): boolean => {\r\n return this.authService.loginResponse!.privileges.some(privilege => privilege === Privilege.ManageOrganization);\r\n }\r\n\r\n uploadFile = (formData: FormData): Observable => {\r\n return this.fileUploadService.upload(BlobConstants.OrganizationsContainerName, formData);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // Watch for the blur event from any input element on the form.\r\n // This is required because the valueChanges does not provide notification on blur\r\n const controlBlurs: Observable[] | undefined = this.formInputElements.map(\r\n (formControl: ElementRef) => fromEvent(formControl.nativeElement, 'blur')\r\n );\r\n\r\n // Merge the blur event observable with the valueChanges observable\r\n // so we only need to subscribe once.\r\n merge(this.organizationForm?.valueChanges, ...controlBlurs).pipe(\r\n debounceTime(500)\r\n ).subscribe(value => {\r\n this.displayMessage = this.genericValidator.processMessages(this.organizationForm);\r\n });\r\n }\r\n\r\n canManageOrganizationsSettings = (): boolean => {\r\n return this.authService.loginResponse!.privileges.some(privilege => privilege === Privilege.ManageOrganizationSettings);\r\n }\r\n\r\n canManageOrganizations = (): boolean => {\r\n return this.authService.loginResponse!.privileges.some(privilege => privilege === Privilege.ManageOrganization);\r\n }\r\n\r\n saveDetails = () : Observable => {\r\n CommonUtility.trimFormValues(this.organizationForm);\r\n if (this.canManageOrganizations()) {\r\n return this.organizationService.save({\r\n ...this.organizationForm.value,\r\n ...this.taxesComponent?.taxesForm.value,\r\n id: this.organizationModel?.id,\r\n hardwares: this.organizationModel?.hardwares ?? [],\r\n users: this.organizationModel?.users ?? [],\r\n campaigns: this.organizationModel?.campaigns ?? []\r\n })\r\n } else if (this.canManageOrganizationsSettings()) {\r\n return this.organizationSettingsService.saveSettings({\r\n ...this.organizationForm.value,\r\n id: this.organizationModel?.id,\r\n hardwares: this.organizationModel?.hardwares ?? [],\r\n users: this.organizationModel?.users ?? [],\r\n campaigns: this.organizationModel?.campaigns ?? []\r\n })\r\n }\r\n throw new Error(\"Unauthorized!\");\r\n }\r\n\r\n save(): void {\r\n this.spinnerService.show(SpinnerConstants.OrganizationForm)\r\n this.saveDetails()\r\n .pipe(\r\n //tap(() => this.spinnerService.hide(SpinnerConstants.OrganizationForm)),\r\n tap(() => this.activeModal.close('Organization created'))\r\n ).subscribe({\r\n next: () => {\r\n this.spinnerService.hide(SpinnerConstants.OrganizationForm)\r\n this.activeModal.close('Organization created')\r\n },\r\n error: (err: NotOkBaseClass) => {\r\n this.errorModel = err;\r\n this.spinnerService.hide(SpinnerConstants.OrganizationForm);\r\n }\r\n });\r\n }\r\n}\r\n","import { FormControl, FormGroup } from \"@angular/forms\";\r\n\r\nexport class CommonUtility {\r\n public static trimFormValues(formGroup: FormGroup): void {\r\n Object.keys(formGroup.controls).forEach((key) => {\r\n const control = formGroup.get(key);\r\n if (control instanceof FormControl && typeof control.value === 'string') {\r\n control.setValue(control.value.trim());\r\n } \r\n });\r\n }\r\n}"],"x_google_ignoreList":[]}