@posiwise/user-module 0.0.125 → 0.0.126
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"posiwise-user-module.mjs","sources":["../../../../libs/user-module/src/lib/account/account.component.ts","../../../../libs/user-module/src/lib/account/account.component.html","../../../../libs/user-module/src/lib/account/account-details/account-details.component.ts","../../../../libs/user-module/src/lib/account/account-details/account-details.component.html","../../../../libs/user-module/src/lib/account/subscriptions/add-subscription/add-subscription.component.ts","../../../../libs/user-module/src/lib/account/subscriptions/add-subscription/add-subscription.component.html","../../../../libs/user-module/src/lib/account/subscriptions/saved-card-details/saved-card-details.component.ts","../../../../libs/user-module/src/lib/account/subscriptions/saved-card-details/saved-card-details.component.html","../../../../libs/user-module/src/lib/account/subscriptions/subscription-credential/subscription-credential.component.ts","../../../../libs/user-module/src/lib/account/subscriptions/subscription-credential/subscription-credential.component.html","../../../../libs/user-module/src/lib/account/subscriptions/update-payment-details/update-payment-details.component.ts","../../../../libs/user-module/src/lib/account/subscriptions/update-payment-details/update-payment-details.component.html","../../../../libs/user-module/src/lib/account/subscriptions/upgrade-subscription/upgrade-subscription.component.ts","../../../../libs/user-module/src/lib/account/subscriptions/upgrade-subscription/upgrade-subscription.component.html","../../../../libs/user-module/src/lib/account/subscriptions/user-subscription-details/user-subscription-details.component.ts","../../../../libs/user-module/src/lib/account/subscriptions/user-subscription-details/user-subscription-details.component.html","../../../../libs/user-module/src/lib/account/subscriptions/user-subscriptions-list/user-subscriptions-list.component.ts","../../../../libs/user-module/src/lib/account/subscriptions/user-subscriptions-list/user-subscriptions-list.component.html","../../../../libs/user-module/src/lib/account/user-invoice/user-invoice.component.ts","../../../../libs/user-module/src/lib/account/user-invoice/user-invoice.component.html","../../../../libs/user-module/src/lib/settings-tabs/communication-tab/communication-tab.component.ts","../../../../libs/user-module/src/lib/settings-tabs/communication-tab/communication-tab.component.html","../../../../libs/user-module/src/lib/settings-tabs/others-tab/others-tab.component.ts","../../../../libs/user-module/src/lib/settings-tabs/others-tab/others-tab.component.html","../../../../libs/user-module/src/lib/settings-tabs/security-tab/security-tab.component.ts","../../../../libs/user-module/src/lib/settings-tabs/security-tab/security-tab.component.html","../../../../libs/user-module/src/lib/settings-tabs/settings-tabs.component.ts","../../../../libs/user-module/src/lib/settings-tabs/settings-tabs.component.html","../../../../libs/user-module/src/lib/support/support.component.ts","../../../../libs/user-module/src/lib/support/support.component.html","../../../../libs/user-module/src/lib/support/support-details/support-details.component.ts","../../../../libs/user-module/src/lib/support/support-details/support-details.component.html","../../../../libs/user-module/src/lib/user-profile/edit-portfolios/edit-portfolios.component.ts","../../../../libs/user-module/src/lib/user-profile/edit-portfolios/edit-portfolios.component.html","../../../../libs/user-module/src/lib/user-profile/edit-project-modal/edit-project-modal.component.ts","../../../../libs/user-module/src/lib/user-profile/edit-project-modal/edit-project-modal.component.html","../../../../libs/user-module/src/lib/user-profile/edit-qualifications-modal/edit-qualifications-modal.component.ts","../../../../libs/user-module/src/lib/user-profile/edit-qualifications-modal/edit-qualifications-modal.component.html","../../../../libs/user-module/src/lib/user-profile/edit-recommendation-modal/edit-recommendation-modal.component.ts","../../../../libs/user-module/src/lib/user-profile/edit-recommendation-modal/edit-recommendation-modal.component.html","../../../../libs/user-module/src/lib/user-profile/edit-skills-modal/edit-skills-modal.component.ts","../../../../libs/user-module/src/lib/user-profile/edit-skills-modal/edit-skills-modal.component.html","../../../../libs/user-module/src/lib/user-profile/edit-social-links/edit-social-links.component.ts","../../../../libs/user-module/src/lib/user-profile/edit-social-links/edit-social-links.component.html","../../../../libs/user-module/src/lib/user-profile/edit-user-profile-modal/edit-user-profile-modal.component.ts","../../../../libs/user-module/src/lib/user-profile/edit-user-profile-modal/edit-user-profile-modal.component.html","../../../../libs/user-module/src/lib/user-profile/user-about/user-about.component.ts","../../../../libs/user-module/src/lib/user-profile/user-about/user-about.component.html","../../../../libs/user-module/src/lib/user-profile/user-portfolios/user-portfolios.component.ts","../../../../libs/user-module/src/lib/user-profile/user-portfolios/user-portfolios.component.html","../../../../libs/user-module/src/lib/user-profile/user-projects/user-projects.component.ts","../../../../libs/user-module/src/lib/user-profile/user-projects/user-projects.component.html","../../../../libs/user-module/src/lib/user-profile/user-profile-page.component.ts","../../../../libs/user-module/src/lib/user-profile/user-profile-page.component.html","../../../../libs/user-module/src/lib/user-module.module.ts","../../../../libs/user-module/src/posiwise-user-module.ts"],"sourcesContent":["import { Component, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { MenuItem } from 'primeng/api';\n\n@Component({\n selector: 'pw-user-account',\n templateUrl: './account.component.html'\n})\nexport class AccountComponent {\n @ViewChild('menuItems', { static: true }) menu: MenuItem[];\n\n items: MenuItem[];\n\n activeItem: MenuItem;\n\n path: string;\n\n constructor(private readonly router: Router) {\n this.items = [\n {\n id: 'account',\n label: 'Account',\n icon: 'fa fa-fw fa-list',\n routerLink: ['/account/details']\n },\n {\n id: 'subscription',\n label: 'Subscriptions',\n icon: 'fa fa-fw fa-file-invoice',\n routerLink: ['/account/subscriptions']\n },\n {\n id: 'invoice',\n label: 'Invoices',\n icon: 'fa fa-fw fa-tag',\n routerLink: ['/account/invoice']\n }\n ];\n this.activeItem =\n this.items[\n this.items.findIndex(\n record => record.routerLink[0] === this.router.url.split('?')[0]\n )\n ];\n }\n\n activateMenu() {\n this.activeItem = this.menu['activeItem'];\n }\n}\n","<pw-tabs [items]=\"items\"></pw-tabs>\n","import { Component, ElementRef, Injector, OnInit, ViewChild } from '@angular/core';\nimport { AbstractControl, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { NgxGpAutocompleteDirective } from '@angular-magic/ngx-gp-autocomplete';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { AuthService, GeoService, ProfileService } from '@posiwise/common-services';\nimport { AppUser, Country, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { StatusCodes } from 'http-status-codes';\nimport { map, Observable } from 'rxjs';\nimport swal from 'sweetalert2';\n\nimport { NgbDateStruct, NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'pw-account-details',\n templateUrl: './account-details.component.html',\n styleUrls: ['./account-details.component.scss']\n})\nexport class AccountDetailsComponent extends AppBaseComponent implements OnInit {\n @ViewChild('ngxPlaces') placesRef: NgxGpAutocompleteDirective;\n @ViewChild('password', { static: false }) passwordRef: ElementRef;\n\n emailForm: UntypedFormGroup;\n passwordForm: UntypedFormGroup;\n profileForm: UntypedFormGroup;\n\n image = 'assets/img/icons/male.png';\n\n countries$: Observable<Country[]>;\n\n states: Country[] = [];\n\n validatedEmail: string;\n\n toggleEmail: boolean;\n togglePassword: boolean;\n toggleNickName: boolean;\n\n passwordVerified = false;\n isCurrentPasswordValid = true;\n\n selectedState;\n\n user: User;\n\n slug: string;\n\n isLoaded = false;\n passwordBusyButton = false;\n slugBusyButton = false;\n emailBusyButton = false;\n validatePasswordBusyButton = false;\n profileBusyButton = false;\n\n constructor(\n private readonly fb: UntypedFormBuilder,\n private readonly modalService: NgbModal,\n private readonly authService: AuthService,\n private readonly geoService: GeoService,\n private readonly profileService: ProfileService,\n injector: Injector\n ) {\n super(injector);\n this.getForms();\n }\n\n ngOnInit() {\n this.getUserProfile();\n this.geoService.getCountries().subscribe(() => {\n this.countries$ = this.geoService\n .getCountries()\n .pipe(\n map((countries: []) => [{ name: 'Select Country', code: null }, ...countries])\n );\n });\n }\n\n handleAddressChange(_event) {\n this.profileForm.patchValue({\n latitude: _event.geometry.location.lat(),\n longitude: _event.geometry.location.lng(),\n location: _event.formatted_address\n });\n }\n\n private getUserProfile() {\n this.userService\n .getUserInfo()\n .subscribe(user => {\n if (user) {\n this.user = user;\n this.slug = user.slug;\n if (user?.user_avatar?.length) {\n this.image = user?.user_avatar[2]?.url;\n }\n let dobObject: NgbDateStruct;\n if (user.dob) {\n dobObject = {\n day: Number(user.dob.substring(8, 10)),\n month: Number(user.dob.substring(5, 7)),\n year: Number(user.dob.substring(0, 4))\n };\n }\n\n this.getRegion(user.country);\n\n this.profileForm.patchValue(this.user);\n this.profileForm.patchValue({ dob: dobObject });\n this.validatedEmail = this.user.email;\n }\n })\n .add(() => {\n this.isLoaded = true;\n });\n }\n\n /**\n * Updates Email Address\n * this needs to be separate and requires the email to be validated from email before it's actually changed\n */\n onEmailFormSubmit() {\n this.emailBusyButton = true;\n const data = this.emailForm.value;\n data.confirmation_path = 'confirm-email';\n\n if (data && this.passwordVerified) {\n this.userService\n .updateEmail(data)\n .subscribe(() => {\n this.emailForm.reset();\n this.passwordVerified = false;\n this.toast.success(`A verification email has been sent to ${data.email}`, '', {\n positionClass: 'toast-top-center',\n timeOut: 100000\n });\n })\n .add(() => {\n this.emailBusyButton = false;\n });\n }\n }\n\n validatePassword() {\n this.validatePasswordBusyButton = true;\n const password = this.passwordRef.nativeElement.value;\n if (password) {\n this.userService\n .checkPassword({ password })\n .subscribe(data => {\n if (data?.status === StatusCodes.OK) {\n this.passwordVerified = true;\n } else {\n this.toast.error(data.error.message);\n this.passwordRef.nativeElement.value = '';\n }\n })\n .add(() => {\n this.validatePasswordBusyButton = false;\n });\n }\n }\n\n handleImageError(event: Event, fallbackPath): void {\n HelperService.handleImageFallbackPath(event, fallbackPath);\n }\n\n checkValidity() {\n const password = this.passwordRef.nativeElement.value;\n if (password.length > 5) {\n this.isCurrentPasswordValid = false;\n } else {\n this.isCurrentPasswordValid = true;\n }\n }\n\n onPasswordFormSubmit() {\n if (this.passwordForm.valid) {\n this.passwordBusyButton = true;\n const data = {\n password: this.passwordForm.value['newPassword'],\n password_confirmation: this.passwordForm.value['confirmPassword'],\n old_password: this.passwordForm.value['currentPassword']\n };\n this.userService\n .updatePassword(data)\n .subscribe(response => {\n if (response.status_code === 200) {\n this.toast.success(response.message, '', {\n positionClass: 'toast-top-center'\n });\n this.onTogglePassword();\n } else {\n this.toast.error(response.error.message);\n }\n this.passwordForm.reset();\n })\n .add(() => {\n this.passwordBusyButton = false;\n });\n }\n }\n\n @ValidateForm('profileForm')\n onProfileFormSubmit() {\n this.profileBusyButton = true;\n const data = { ...this.profileForm.value };\n data.dob = HelperService.dateFormat(this.profileForm.get('dob')?.value);\n if (data.location === '') {\n data.location = null;\n }\n Object.entries(data).forEach(([key, val]) => {\n if (val === '' || val === null) {\n delete data[key];\n }\n });\n this.profileService\n .updateUserProfile(data)\n .subscribe(() => {\n this.toast.success(this.translation.translate('User.Profile.ProfileUpdated'));\n })\n .add(() => {\n this.profileBusyButton = false;\n });\n }\n\n onAvatarSave() {\n const data = {\n avatar: this.profileForm.get('avatar')?.value\n };\n this.profileService.updateUserProfile(data).subscribe(() => {\n this.toast.success(this.translation.translate('User.Profile.ProfileUpdated'));\n });\n }\n\n openModal(content) {\n this.modalService.open(content, { centered: true, windowClass: 'modal-holder' });\n }\n\n onUpdateSlug() {\n this.slugBusyButton = true;\n this.userService\n .updateSlug(this.slug)\n .subscribe(response => {\n this.toggleNickName = false;\n if (response?.status === StatusCodes.OK) {\n this.getUserProfile();\n } else {\n this.toast.error('User.Account.UserNameError');\n }\n })\n .add(() => {\n this.slugBusyButton = false;\n });\n }\n\n onImageSelection(event) {\n const blob = this.dataURLtoBlob(event);\n const filename = `${`${this.slug.toLocaleLowerCase()}_${Date.parse(\n new Date().toString()\n )}`}.png`;\n const file: File = new File([blob], filename);\n this.userService.addAvatar(file).subscribe(res => {\n this.image = res?.user_avatar[2]?.url;\n this.modalService.dismissAll();\n });\n }\n\n sendMailToResetPassword() {\n this.authService.forgotPassword(this.user.email, 'reset-password').subscribe(() => {\n this.toast.success(this.translation.translate('User.Account.Message.CheckEmail'));\n });\n }\n\n getRegion(countryId: number | string) {\n if (countryId) {\n this.geoService.getRegions(countryId).subscribe(response => {\n this.states = [{ code: 0, name: 'Select State' }, ...response];\n });\n }\n }\n\n private getForms() {\n this.emailForm = this.fb.group({\n email: ['', [Validators.required, Validators.email]]\n });\n\n this.passwordForm = this.fb.group(\n {\n currentPassword: ['', [Validators.required]],\n newPassword: ['', [Validators.required, Validators.minLength(8)]],\n confirmPassword: ['', [Validators.required, Validators.minLength(8)]]\n },\n {\n validators: this.passwordMatcher\n }\n );\n\n this.profileForm = AppUser.getForm(new AppUser({}));\n }\n\n private passwordMatcher(ac: AbstractControl): null {\n const password = ac.get('newPassword').value;\n const confirmPassword = ac.get('confirmPassword').value;\n if (password !== confirmPassword) {\n ac.get('confirmPassword').setErrors({ MatchPassword: true });\n }\n\n return null;\n }\n\n dataURLtoBlob(dataUrl: string) {\n const arr = dataUrl.split(',');\n const mime = /^[A-Z]*[a-z]*:(.*?);[A-Z]*/.exec(arr[0])?.[1];\n const bStr = atob(arr[1]);\n let n = bStr.length;\n const u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bStr.charCodeAt(n);\n }\n\n return new Blob([u8arr], { type: mime });\n }\n\n onToggleEmail() {\n this.emailForm.reset();\n this.passwordVerified = false;\n this.toggleEmail = false;\n }\n\n onTogglePassword() {\n this.passwordForm.reset();\n this.togglePassword = false;\n }\n\n onClose() {\n this.modalService.dismissAll();\n }\n\n shouldUserChangeEmail() {\n if (this.user.has_password) {\n this.toggleEmail = !this.toggleEmail;\n } else {\n swal.fire({\n text: `You don't have password, please reset your password first and then try changing email`,\n icon: 'warning'\n });\n }\n }\n}\n","<div class=\"w-100 text-center\">\n <ng-template [ngIf]=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </ng-template>\n</div>\n<div class=\"row d-flex flex-row\">\n <div class=\"col-md-8 order-md-first order-sm-last\">\n <section id=\"email-section\">\n <div class=\"row\">\n <div class=\"col-sm-12 col-md-8 col-lg-8\">\n <h2>{{ 'User.Account.RegisteredEmail' | transloco }}</h2>\n <!-- Email Form -->\n <section id=\"email-form\">\n <form [formGroup]=\"emailForm\"\n (ngSubmit)=\"onEmailFormSubmit()\">\n <!-- Email Address -->\n <div class=\"mt-0\">\n <label class=\"me-3\" for=\"Primary Email\">{{ 'User.Account.PrimaryEmail' | transloco }}:\n </label>\n <strong>{{ validatedEmail }}</strong>\n <div class=\"mt-1\">\n <ng-container *ngIf=\"!toggleEmail\">\n <a class=\"btn btn-raised btn-outline-primary\"\n aria-label=\"Navigate to Target\"\n (click)=\"shouldUserChangeEmail()\">\n {{ 'User.Account.ChangeEmail' | transloco }}</a>\n </ng-container>\n <ng-container *ngIf=\"toggleEmail\">\n <div class=\"row\">\n <div class=\"clearfix\"></div>\n <div class=\"col-12 mb-3\">\n <input type=\"password\"\n class=\"form-control\"\n id=\"pwd\"\n #password\n *ngIf=\"!passwordVerified\"\n placeholder=\"Current Password\"\n (keyup)=\"checkValidity()\" />\n <input type=\"text\"\n class=\"form-control\"\n id=\"email\"\n *ngIf=\"passwordVerified\"\n placeholder=\"New Email\"\n formControlName=\"email\" />\n </div>\n <div class=\"col-12\">\n <a *ngIf=\"toggleEmail\"\n class=\"btn btn-raised btn-outline-default my-2 me-2\"\n aria-label=\"Navigate to Target\"\n (click)=\"onToggleEmail()\">{{ 'Button.Cancel' | transloco }}</a>\n <button class=\"btn btn-raised btn-primary\"\n type=\"submit\"\n [buttonBusy]=\"validatePasswordBusyButton\"\n (click)=\"validatePassword()\"\n *ngIf=\"!passwordVerified\"\n [disabled]=\"isCurrentPasswordValid\">\n {{ 'User.Account.Validate' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-raised btn-primary\"\n [buttonBusy]=\"emailBusyButton\"\n *ngIf=\"passwordVerified\">\n {{\n 'User.Account.SendVerification' | transloco\n }}\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n <section id=\"slug\"\n class=\"mb-2 mt-3\">\n <div>\n <label class=\"me-3\" for=\"User Account\">{{ 'User.Account.NickName' | transloco }}:\n </label>\n <strong>{{ slug }}</strong>\n <div>\n <ng-container *ngIf=\"!toggleNickName\">\n <a class=\"btn btn-raised btn-outline-primary me-2\"\n aria-label=\"Navigate to Target\"\n (click)=\"toggleNickName = true\">\n {{ 'User.Account.ChangeNickname' | transloco }}</a>\n </ng-container>\n <ng-container *ngIf=\"toggleNickName\">\n <div class=\"mb-3\">\n <input type=\"text\"\n class=\"form-control slug-input\"\n [(ngModel)]=\"slug\"\n [ngModelOptions]=\"{ standalone: true }\" />\n </div>\n <div>\n <button type=\"button\"\n class=\"btn btn-raised btn-outline-default\"\n (click)=\"toggleNickName = false\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"button\"\n class=\"btn btn-raised btn-primary ms-2\"\n [buttonBusy]=\"slugBusyButton\"\n [disabled]=\"slug?.length < 2\"\n (click)=\"onUpdateSlug()\">\n {{ 'User.Account.UpdateNickname' | transloco }}\n </button>\n </div>\n </ng-container>\n </div>\n </div>\n </section>\n </form>\n </section>\n </div>\n </div>\n <section id=\"password-change\"\n class=\"mt-1\">\n <form [formGroup]=\"passwordForm\"\n (ngSubmit)=\"onPasswordFormSubmit()\">\n <div class=\"row\">\n <div class=\"col-sm-12 col-md-8 col-lg-8 mt-4\">\n <h2>{{ 'User.Account.ChangePassword' | transloco }}</h2>\n </div>\n <ng-container *ngIf=\"!user?.has_password\">\n <div class=\"text-danger mx-3 my-2\">\n <div>\n You don't have a password set, click on\n <em>{{ 'User.Account.ChangePassword' | transloco }}</em>.\n </div>\n <div>{{ 'User.Profile.PictureMessage' | transloco }}</div>\n </div>\n </ng-container>\n <div class=\"col-sm-12 col-md-8 col-lg-8\"\n *ngIf=\"user?.has_password\">\n <ng-container *ngIf=\"togglePassword\">\n <div class=\"mb-3\">\n <label for=\"account\">{{ 'User.Account.CurrentPassword' | transloco }}</label>\n <input type=\"password\"\n class=\"form-control\"\n formControlName=\"currentPassword\" />\n <small class=\"form-text text-muted danger\"\n *ngIf=\"\n !passwordForm.get('currentPassword').valid &&\n (passwordForm.get('currentPassword').dirty ||\n passwordForm.get('currentPassword').touched)\n \">\n {{ 'User.Account.Required' | transloco }}\n </small>\n </div>\n <div class=\"mb-3\">\n <label for=\"password\">{{ 'User.Account.NewPassword' | transloco }}</label>\n <input type=\"password\"\n class=\"form-control\"\n formControlName=\"newPassword\" />\n <small class=\"form-text text-muted danger\"\n *ngIf=\"\n !passwordForm.get('newPassword').valid &&\n (passwordForm.get('newPassword').dirty ||\n passwordForm.get('newPassword').touched)\n \">{{ 'User.Account.Validation.StrongPassword' | transloco }}\n </small>\n </div>\n <div class=\"mb-3\">\n <label for=\"password\">{{\n 'User.Account.ConfirmPassword' | transloco\n }}</label>\n <input type=\"password\"\n class=\"form-control\"\n formControlName=\"confirmPassword\" />\n <div class=\"text-danger\"\n *ngIf=\"\n passwordForm.get('confirmPassword').touched &&\n passwordForm.get('confirmPassword').errors\n ?.MatchPassword\n \">\n {{ 'User.Account.Validation.PasswordsMatch' | transloco }}\n </div>\n </div>\n <div class=\"mb-3\">\n <a class=\"btn btn-raised btn-outline-default\"\n aria-label=\"Navigate to Target\"\n data-bs-target=\"\"\n *ngIf=\"togglePassword\"\n (click)=\"onTogglePassword()\">\n {{ 'Button.Cancel' | transloco }}</a>\n <button class=\"btn btn-raised btn-primary ms-2\"\n [buttonBusy]=\"passwordBusyButton\"\n [disabled]=\"!passwordForm.valid\">\n {{ 'User.Account.UpdatePassword' | transloco }}\n </button>\n </div>\n </ng-container>\n <div>\n <a class=\"btn btn-raised btn-outline-primary\"\n aria-label=\"Navigate to Target\"\n data-bs-target=\"\"\n *ngIf=\"!togglePassword\"\n (click)=\"togglePassword = !togglePassword\">\n {{ 'User.Account.ChangePassword' | transloco }}</a>\n </div>\n </div>\n <div class=\"col-sm-12 col-md-8 col-lg-8\"\n *ngIf=\"!user?.has_password\">\n <a class=\"btn btn-raised btn-primary me-2\"\n aria-label=\"Navigate to Target\"\n data-bs-target=\"\"\n (click)=\"sendMailToResetPassword()\">\n {{ 'User.Account.ChangePassword' | transloco }}</a>\n </div>\n </div>\n </form>\n </section>\n </section>\n </div>\n <!-- Avatar -->\n <div class=\"mt-4 mt-sm-0 col-md-4 text-center order-md-last order-sm-first\">\n <h2>{{ 'User.Profile.Avatar' | transloco }}</h2>\n <div class=\"text-center mt-1\">\n <div class=\"image-container\">\n <img [src]=\"image\"\n width=\"150\"\n height=\"150\"\n class=\"image rounded-circle\"\n alt=\"User Male\"\n (error)=\"handleImageError($event, 'assets/img/icons/male.png')\" />\n <div class=\"overlay\"\n (keydown.enter)=\"openModal(content)\"\n (click)=\"openModal(content)\">\n <div class=\"overlay-text\">{{ 'User.Profile.Change' | transloco }}</div>\n </div>\n </div>\n <h4 class=\"mt-2\">{{ user?.first_name }} {{ user?.last_name }}</h4>\n <a aria-label=\"Navigate to Target\"\n class=\"d-inline-block mb-2\"\n (click)=\"openModal(content)\">\n {{ 'User.Profile.EditAvatar' | transloco }}</a>\n <br />\n </div>\n </div>\n</div>\n<br />\n<section id=\"user-profile\"\n class=\"mt-2\">\n <div class=\"row\">\n <div class=\"col-12\">\n <form [formGroup]=\"profileForm\"\n (ngSubmit)=\"onProfileFormSubmit()\">\n <h2>{{ 'User.Profile.UserProfile' | transloco }}</h2>\n <div class=\"row mt-3\">\n <div class=\"col-sm-12 col-md-6 col-lg-6\">\n <pw-input-container label=\"First Name\"\n name=\"first_name\"\n errorMsg=\"Please enter first Name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"first_name\"\n id=\"first_name\" />\n </pw-input-container>\n <pw-input-container label=\"Preferred name\"\n name=\"preferred_name\"\n errorMsg=\"Please enter preferred Name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"preferred_name\"\n id=\"preferred_name\" />\n </pw-input-container>\n <ng-container *ngIf=\"countries$ | async as countries\">\n <pw-input-container label=\"Country\"\n name=\"country\"\n errorMsg=\"Please select a country\">\n <p-dropdown\n id=\"country\"\n [options]=\"countries\"\n optionLabel=\"name\"\n optionValue=\"code\"\n formControlName=\"country\"\n (onChange)=\"getRegion($event.value)\"\n placeholder=\"{{ 'User.Profile.SelectCountry' | transloco }}\">\n </p-dropdown>\n </pw-input-container>\n </ng-container>\n <pw-input-container label=\"Province\"\n name=\"province\"\n errorMsg=\"Please enter province\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"province\" />\n </pw-input-container>\n <pw-input-container label=\"Website Url\"\n name=\"website_url\"\n errorMsg=\"Please enter Website\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"website_url\" />\n </pw-input-container>\n </div>\n <div class=\"col-sm-12 col-md-6 col-lg-6\">\n <pw-input-container label=\"Last Name\"\n name=\"last_name\"\n errorMsg=\"Please enter last Name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"last_name\"\n id=\"last_name\" />\n </pw-input-container>\n <pw-input-container label=\"Date of Birth\"\n name=\"dob\"\n errorMsg=\"Please enter date of birth\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"dd-mmm-yyyy\"\n formControlName=\"dob\"\n ngbDatepicker\n #d=\"ngbDatepicker\"\n [minDate]=\"{ day: 1, month: 1, year: 1950 }\"\n [maxDate]=\"{ day: 31, month: 12, year: 2018 }\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"d.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </pw-input-container>\n <pw-input-container label=\"State\"\n name=\"state\"\n errorMsg=\"Please select a state\">\n <p-dropdown\n id=\"state\"\n [options]=\"states\"\n [(ngModel)]=\"selectedState\"\n optionLabel=\"name\"\n optionValue=\"code\"\n formControlName=\"state\"\n [placeholder]=\"'User.Profile.SelectState' | transloco\">\n </p-dropdown>\n\n </pw-input-container>\n <!-- Location -->\n <pw-input-container label=\"Location\"\n name=\"location\">\n <input ngx-gp-autocomplete\n class=\"form-control\"\n #places=\"ngx-places\"\n formControlName=\"location\"\n (onAddressChange)=\"handleAddressChange($event)\" />\n </pw-input-container>\n <pw-input-container label=\"Phone Number\"\n name=\"phone_number\"\n errorMsg=\"Please enter phone number\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"phone_number\"\n id=\"phone_number\" />\n </pw-input-container>\n </div>\n <div class=\"col-12 text-end\">\n <div class=\"mb-3\">\n <button class=\"btn btn-raised btn-primary\" [buttonBusy]=\"profileBusyButton\">\n {{ 'Button.Save' | transloco }}\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n</section>\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ 'User.Profile.ProfilePicture' | transloco }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n aspectRatio=\"auto\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\n","import { Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { ProductService } from '@posiwise/common-services';\nimport { Product, PRODUCT_CATEGORY, Subscription, User } from '@posiwise/common-utilities';\n\nimport cloneDeep from 'lodash/cloneDeep';\nimport sortBy from 'lodash/sortBy';\n\n@Component({\n selector: 'pw-add-subscription',\n templateUrl: './add-subscription.component.html',\n styleUrls: ['./add-subscription.component.scss']\n})\nexport class AddSubscriptionComponent extends AppBaseComponent implements OnInit, OnDestroy {\n private readonly singleProducts = [];\n\n private readonly enterpriseProducts = [];\n\n form: UntypedFormGroup;\n\n busy: boolean;\n isLoaded: boolean;\n selectedProduct: boolean;\n isPurchaseAttempted: boolean;\n userLoggedIn: boolean;\n\n availableProducts: Product[] = [];\n products: Product[];\n\n user: User;\n\n unitError: string;\n\n category = PRODUCT_CATEGORY;\n\n units = 1;\n\n subscribedPermissionKeys = [];\n\n currentSubscription: Subscription;\n\n subscriptionId: number;\n\n constructor(\n private readonly productService: ProductService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.subscriptionId = Number(this.route.snapshot.queryParamMap.get('subscription_id'));\n this.getProducts();\n }\n\n private getProducts() {\n // Gets All the products\n this.productService\n .getProductList({}, this.subscriptionId, { only_relevant: true })\n .subscribe((response: Subscription) => {\n this.products = response.products || [];\n if (this.products?.length) {\n this.products = this.products.filter(x => x.active);\n }\n\n this.isLoaded = true;\n this.userStore().subscribe(user => {\n this.user = user;\n if (this.user) {\n const subs: Subscription[] = cloneDeep(this.user.subscriptions);\n subs.forEach(subscription => {\n subscription.products.forEach(product => {\n const prod = this.products.find(x => x.id === product.id);\n if (prod) {\n prod['is_subscribed'] = true;\n prod['purchased_units'] = product?.purchased_units;\n }\n });\n });\n\n this.subscribedPermissionKeys = Array.from(\n new Set(\n this.user.subscriptions\n .flatMap(x => x.products)\n .map(product => product.permission_key)\n )\n );\n\n // show category only if we have products\n const prodPermissionKeys = this.products.map(p => p.permission_key);\n this.subscribedPermissionKeys = this.subscribedPermissionKeys.filter(x =>\n prodPermissionKeys.includes(x)\n );\n\n // Filtering the product with the existing permission_key\n this.availableProducts = sortBy(\n this.getSingleCategoryProducts(),\n 'is_subscribed'\n );\n }\n });\n });\n }\n\n private getSingleCategoryProducts(category = this.subscribedPermissionKeys[0]) {\n return this.products.filter(x => category === x.permission_key);\n }\n\n onChangeCategory(category) {\n this.availableProducts = this.getSingleCategoryProducts(category);\n this.availableProducts = sortBy(this.availableProducts, 'is_subscribed');\n }\n\n onSelection(product) {\n this.router.navigate([\n `account/subscriptions/upgrade/${this.subscriptionId}/${product.id}`\n ]);\n }\n\n trackByProduct(_index: number, item: Product) {\n return item.id;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div *ngIf=\"isLoaded && !selectedProduct\"\n class=\"mt-4\">\n <a aria-label=\"Navigate to Target\"\n [routerLink]=\"['/account/subscriptions']\"\n class=\"previous float-start\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i>\n </a>\n\n <div class=\"d-flex flex-wrap justify-content-center\">\n <div class=\"toggle\"\n *ngFor=\"let item of subscribedPermissionKeys; let i = index\">\n <input type=\"radio\"\n name=\"sizeBy\"\n value=\"option{{ i + 1 }}\"\n id=\"option{{ i + 1 }}\"\n (change)=\"onChangeCategory(item)\"\n [checked]=\"i === 0\" />\n <label for=\"option{{ i + 1 }}\">{{ item }}</label>\n </div>\n </div>\n\n <ul class=\"row animated fadeIn d-flex\">\n <li *ngFor=\"let product of availableProducts; trackBy: trackByProduct\"\n class=\"col-sm-12 col-md-6 col-xl-4 my-3 mt-sm-2\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h4 class=\"text-bold-500 primary mb-3\">{{ product.name }}</h4>\n <ng-template [ngIf]=\"product.price_per_unit\"\n [ngIfElse]=\"freeProductRef\">\n <h5 *ngIf=\"product?.purchased_units\"\n class=\"my-3 branding-color-1\">\n Currently {{ product.currency | currencySymbol\n }}{{\n (\n (product.purchased_units * product.price_per_unit) /\n 100\n ) | number:'1.2-2'\n }} / {{ product.billing_frequency }}\n </h5>\n <h5 class=\"my-3\">\n Min\n {{product.min_units > 1 ? (product.min_units + ' Seats'): (product.min_units + ' Seat')}}\n - {{ product.currency | currencySymbol\n }}{{\n ((product.min_units * product.price_per_unit) / 100) | number:'1.2-2'\n }} / {{ product.billing_frequency }}\n </h5>\n <h5 class=\"d-inline-block text-bold-600 mb-2\">\n {{ product.currency | currencySymbol\n }}{{ (product.price_per_unit / 100) | number:'1.2-2' }} / {{\n product.billing_frequency\n }} / seat\n </h5>\n </ng-template>\n <ng-template #freeProductRef>\n <div class=\"d-inline-block text-bold-600 mb-2\">Free</div>\n </ng-template>\n <p class=\"mb-2\"\n [innerHTML]=\"product?.description\"></p>\n </div>\n <div class=\"card-footer px-3\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"onSelection(product)\"\n *ngIf=\"\n !product.is_subscribed &&\n !product.trial_subscription &&\n product.stripe_plan_id\n \"\n class=\"card-btn btn btn-raised me-1 btn-primary btn-sm\">\n {{ 'User.Subscriptions.Subscribe' | transloco }}\n </a>\n\n <div class=\"mt-3\"\n *ngIf=\"\n !product.is_subscribed &&\n product.trial_subscription &&\n product.stripe_plan_id\n \">\n <a aria-label=\"Navigate to Target\"\n (click)=\"onSelection(product)\"\n class=\"card-btn btn btn-raised me-1 btn-primary btn-sm\">\n {{ 'Button.Upgrade' | transloco }}\n </a>\n <span class=\"badge bg-secondary position-absolute trial-badge\">{{ 'User.Subscriptions.Trial' | transloco }}\n </span>\n </div>\n\n <span *ngIf=\"\n product.is_subscribed &&\n !product.trial_subscription &&\n !product.is_deleted\n \"\n class=\"card-btn badge bg-default text-white\">\n {{ 'User.Subscriptions.Subscribed' | transloco }}\n </span>\n\n <span *ngIf=\"\n product.is_subscribed &&\n product.trial_subscription &&\n product.price_per_unit === 0 &&\n !product.is_deleted &&\n !product.stripe_plan_id\n \"\n class=\"card-btn badge bg-default text-white\">\n Free\n </span>\n\n <span *ngIf=\"product.is_deleted\"\n class=\"card-btn badge bg-default text-white\">\n {{ 'User.Subscriptions.UnsubscribedButActive' | transloco }}\n </span>\n </div>\n </div>\n </div>\n </li>\n </ul>\n <div class=\"row\">\n <div class=\"col-12\">\n <pw-no-data [withImage]=\"true\" message=\"No products available under this category.\"\n *ngIf=\"availableProducts && availableProducts.length === 0\">\n </pw-no-data>\n </div>\n </div>\n</div>\n","/**\n * @summary Shows the saved credit card details of the user\n * @author anikets43\n *\n * Created at : 2020-02-08 16:56:18\n * Last modified : 2020-02-08 17:06:29\n */\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'pw-saved-card-details',\n templateUrl: './saved-card-details.component.html',\n styleUrls: ['./saved-card-details.component.scss']\n})\nexport class SavedCardDetailsComponent {\n /**\n * Credit Card details like brand, exp_month, exp_year, card_number\n */\n @Input() data: {\n brand?: string;\n exp_month?: string;\n exp_year?: string;\n card_number?: string;\n };\n\n /**\n * boolean: change payment option\n */\n @Input() isChangePayment: boolean;\n\n @Input() showNewCard: boolean;\n\n /**\n * Emitter: on payment change request\n */\n @Output() changeEvent: EventEmitter<boolean> = new EventEmitter();\n\n OnPaymentChange(value) {\n this.changeEvent.emit(value);\n }\n}\n","<div class=\"row\">\n <div class=\"col-12\"\n *ngIf=\"!showNewCard\">\n <h4 class=\"title\">Saved Card</h4>\n <div class=\"summary-row d-flex mb-2\">\n <div class=\"summary-left\">Type:</div>\n <div class=\"summary-right\">{{ data?.brand }}</div>\n </div>\n <div class=\"summary-row d-flex mb-2\">\n <div class=\"summary-left\">Expiry:</div>\n <div class=\"summary-right\">{{ data.exp_month }} / {{ data.exp_year }}</div>\n </div>\n <div class=\"summary-row d-flex mb-2\">\n <div class=\"summary-left\">Card Number:</div>\n <div class=\"summary-right\">{{ data?.card_number }}</div>\n </div>\n </div>\n\n <div class=\"col-12 mt-3\"\n *ngIf=\"!showNewCard\">\n <button type=\"button\"\n class=\"btn btn-outline-primary btn-sm\"\n aria-label=\"Change Payment Option\"\n (click)=\"OnPaymentChange(true)\">\n Change Payment Option\n </button>\n </div>\n</div>\n","import { Component, Injector, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { SubscriptionService } from '@posiwise/common-services';\nimport { Subscription } from '@posiwise/common-utilities';\nimport { PasswordValidationComponent } from '@posiwise/shared-components';\n\nimport { forkJoin, from, Observable } from 'rxjs';\nimport { distinct } from 'rxjs/operators';\n\nimport { CredentialData } from '../../../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-subscription-credential',\n templateUrl: './subscription-credential.component.html',\n styleUrls: ['./subscription-credential.component.scss']\n})\nexport class SubscriptionCredentialComponent extends AppBaseComponent implements OnInit, OnDestroy {\n private credentialToEdit;\n\n @ViewChild('passwordValidationModalForRevealCredential', { static: false })\n passwordValidationModalForRevealCredential: PasswordValidationComponent;\n\n @ViewChild('passwordValidationModalForEditCredential', { static: false })\n passwordValidationModalForEditCredential: PasswordValidationComponent;\n\n @ViewChild('passwordValidationModalForAddCredential', { static: false })\n passwordValidationModalForAddCredential: PasswordValidationComponent;\n\n form: UntypedFormGroup;\n\n data = [];\n\n subscriptionId: number;\n totalRecords: number;\n\n allSubscriptionCredentials: CredentialData[];\n availableCredentials: CredentialData[] = [];\n credentialsSelect: CredentialData[];\n updatedCredential: CredentialData;\n uniqueCredential = [];\n\n isEdit = false;\n submitted = false;\n buttonBusy = false;\n isLoaded = false;\n\n credentials = [];\n\n showForm = false;\n\n credentialSaved: string;\n credentialName: string;\n\n credentialToReveal;\n\n constructor(\n private readonly fb: UntypedFormBuilder,\n private readonly subscriptionService: SubscriptionService,\n injector: Injector\n ) {\n super(injector);\n this.form = this.fb.group({\n credentials: this.fb.array([])\n });\n }\n\n ngOnInit() {\n this.route.params.subscribe(params => {\n this.subscriptionId = params['subscriptionId'];\n if (this.subscriptionId) {\n this.getAllCredentials();\n }\n });\n }\n\n get credentialsGroup() {\n return this.form.get('credentials') as UntypedFormArray;\n }\n\n /** Function to get all credentials */\n private getAllCredentials() {\n this.allSubscriptionCredentials = [];\n this.subscriptionService\n .getAllSubscriptionCredentials(this.subscriptionId)\n .subscribe(response => {\n this.allSubscriptionCredentials = response.subscription_credentials;\n this.totalRecords = response.object_count;\n this.getAllAvailableCredentials();\n })\n .add(() => {\n this.isLoaded = true;\n });\n }\n\n /** Function to get available Credentials */\n private getAllAvailableCredentials() {\n this.credentials = [];\n this.uniqueCredential = [];\n this.subscriptionService.getAllCredentials().subscribe(response => {\n this.availableCredentials = response.credentials;\n from(this.availableCredentials)\n .pipe(distinct(c => c.name))\n .subscribe(res => {\n this.uniqueCredential.push(res);\n });\n this.uniqueCredential.forEach(credential => {\n const subscriptionCredentialGroup = { credential_name: '', credentials: [] };\n this.allSubscriptionCredentials.forEach(subscriptionCredential => {\n if (credential.name === subscriptionCredential.name) {\n subscriptionCredentialGroup['credentials'].push(subscriptionCredential);\n }\n });\n if (subscriptionCredentialGroup['credentials'].length > 0) {\n subscriptionCredentialGroup['credential_name'] = credential.name;\n this.credentials.push(subscriptionCredentialGroup);\n }\n });\n });\n }\n\n /** Function to get credential on select */\n selectedOption(event) {\n this.credentialsGroup.clear();\n const credentialName = this.isEdit ? event : event.value;\n this.credentialsSelect = this.availableCredentials.filter(x => x.name === credentialName);\n this.credentialsSelect.forEach(adminCredential => {\n const subscriptionCredential = this.allSubscriptionCredentials.find(\n credential => credential?.credential_id === adminCredential?.id\n );\n adminCredential.value = subscriptionCredential?.value;\n adminCredential.subscription_credential_id = subscriptionCredential?.id;\n adminCredential.credential_id = subscriptionCredential?.credential_id;\n this.credentialsGroup.push(\n this.fb.group({\n subscription_id: [0, [Validators.required]],\n credential_id: [adminCredential?.id],\n field: [adminCredential?.field],\n description: [adminCredential?.description],\n value: [\n adminCredential?.value,\n adminCredential?.is_required ? [Validators.required] : []\n ],\n id: [subscriptionCredential?.id]\n })\n );\n });\n }\n\n /** Function to post credentials */\n saveCredentials() {\n this.submitted = true;\n this.buttonBusy = true;\n const subscription$: Observable<Subscription>[] = [];\n const isValid = this.form.value.credentials.every(\n (_x, i) => this.credentialsGroup.controls[i].valid === true\n );\n if (isValid) {\n this.form.value.credentials.forEach(credential => {\n if (credential?.value) {\n const data = {\n subscription_id: this.subscriptionId,\n credential_id: credential.credential_id,\n value: credential.value\n };\n const sub$ = credential?.id\n ? this.subscriptionService.editSubscriptionCredential(credential.id, data)\n : this.subscriptionService.postSubscriptionCredential(data);\n\n subscription$.push(sub$);\n }\n });\n\n forkJoin(subscription$)\n .subscribe(response => {\n if (response?.length) {\n this.toast.success(\n this.translation.translate(\n 'User.Subscriptions.SubscriptionCredentials.UpdateMessage'\n )\n );\n } else {\n this.toast.error(`Something went wrong while saving credentials`);\n }\n })\n .add(() => {\n this.submitted = false;\n this.buttonBusy = false;\n });\n } else {\n this.buttonBusy = false;\n }\n }\n\n revealCredentials(credential) {\n this.credentialToReveal = credential.credential_name;\n this.passwordValidationModalForRevealCredential.open();\n }\n\n hideCredentials() {\n this.credentialName = '';\n }\n\n showCredentials() {\n this.credentialName = this.credentialToReveal;\n }\n\n /** Function to get form controls */\n get f() {\n return this.form.controls;\n }\n\n onCancel() {\n this.getAllCredentials();\n this.submitted = false;\n this.form.reset();\n this.showForm = false;\n this.isEdit = false;\n this.credentialsSelect = [];\n this.data = [];\n this.credentialSaved = '';\n }\n\n // password popup for add credential\n openCredentialsForAdd() {\n this.passwordValidationModalForAddCredential.open();\n }\n\n // password popup for edit credential\n openCredentialsForEdit(credential) {\n this.credentialToEdit = credential;\n this.passwordValidationModalForEditCredential.open();\n }\n\n editCredentials() {\n this.showForm = true;\n this.isEdit = true;\n this.selectedOption(this.credentialToEdit);\n }\n\n showEditForm() {\n this.data = [];\n this.isEdit = false;\n this.showForm = true;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"row\"\n *ngIf=\"showForm\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">\n <span>{{ data.length ? 'Edit' : 'Create new' }} Credential</span>\n </h3>\n </div>\n</div>\n<ng-container *ngIf=\"showForm\">\n <div class=\"container-fluid pw-tab\">\n <div class=\"p-2 mt-3\">\n <form>\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-4\"\n *ngIf=\"!isEdit && showForm\">\n <div class=\"mb-3\">\n <label for=\"credential\">Credential <span class=\"text-danger required-icon\">*</span> </label>\n <p-dropdown\n [options]=\"uniqueCredential\"\n [placeholder]=\"'Select credential'\"\n optionLabel=\"name\"\n optionValue=\"name\"\n (onChange)=\"selectedOption($event)\">\n </p-dropdown>\n </div>\n </div>\n\n <div class=\"col-12 col-md-4\"\n *ngIf=\"credentialsSelect?.length\">\n <div class=\"card pb-2 pt-2 overflow-visible\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <form [formGroup]=\"form\"\n novalidate\n (ngSubmit)=\"saveCredentials()\">\n <div formArrayName=\"credentials\">\n <div *ngFor=\"\n let credential of credentialsGroup.controls;\n let i = index\n \">\n <div [formGroupName]=\"i\">\n <div class=\"mb-3\">\n <pw-input-container label=\"{{\n credential.get('field').value\n }}\"\n [class.info-circle]=\"\n credential.get('description').value\n \"\n name=\"value\"\n errorMsg=\"Please enter value\">\n <span *ngIf=\"\n credential.get('description')\n .value\n \"\n class=\"tooltiptext gradient-custom-branding\">{{\n credential.get('description')\n .value\n }}</span>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"value\"\n [ngClass]=\"{\n 'is-invalid':\n submitted &&\n credential.get('value')\n .invalid\n }\" />\n </pw-input-container>\n </div>\n </div>\n </div>\n </div>\n <div class=\"text-end mt-3\">\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Back' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!showForm\">\n <div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-3\">Credentials</h2>\n </div>\n <div class=\"col-12 col-md-12 text-end\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"openCredentialsForAdd()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add Credential' }}\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"row my-4\">\n <div class=\"col-12 col-md-6 col-xl-4 mt-3 credential-cards\"\n *ngFor=\"let credential of credentials\">\n <div class=\"card\">\n <h2 class=\"credential-field mt-3\">{{ credential.credential_name }}</h2>\n <div class=\"card-content\"\n *ngFor=\"let subscriptionCredential of credential.credentials\">\n <div class=\"card-header\">\n <div>\n <strong class=\"d-block\">{{ subscriptionCredential.field }}:</strong>\n <input class=\"credential-value\"\n [type]=\"\n credentialName === credential.credential_name\n ? 'text'\n : 'password'\n \"\n readonly\n #input\n [value]=\"subscriptionCredential?.value\" />\n </div>\n </div>\n <div class=\"card-footer\">\n <div class=\"float-end px-2\">\n <button class=\"btn btn-outline-primary me-2\"\n *ngIf=\"credentialName !== credential.credential_name\"\n (click)=\"revealCredentials(credential)\">\n {{\n 'User.Subscriptions.SubscriptionCredentials.RevealCredential'\n | transloco\n }}\n </button>\n <button class=\"btn btn-outline-primary me-2\"\n *ngIf=\"credentialName === credential.credential_name\"\n (click)=\"hideCredentials()\">\n {{\n 'User.Subscriptions.SubscriptionCredentials.HideCredential'\n | transloco\n }}\n </button>\n <a class=\"me-2 my-1\"\n aria-label=\"Edit Credential\"\n (click)=\"openCredentialsForEdit(credential.credential_name)\"><i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i></a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"allSubscriptionCredentials?.length === 0 && isLoaded\"\n class=\"clearboth\">\n <pw-no-data [withImage]=\"true\" [message]=\"'User.Subscriptions.SubscriptionCredentials.NoDataMessage' | transloco\">\n </pw-no-data>\n </div>\n</ng-container>\n<!-- password validation modal for reveal Credential -->\n<pw-password-validation #passwordValidationModalForRevealCredential\n (successEvent)=\"showCredentials()\">\n</pw-password-validation>\n<!-- password validation modal for Edit Credential -->\n<pw-password-validation #passwordValidationModalForEditCredential\n (successEvent)=\"editCredentials()\">\n</pw-password-validation>\n<!-- password validation modal for Add Credential -->\n<pw-password-validation #passwordValidationModalForAddCredential\n (successEvent)=\"showEditForm()\">\n</pw-password-validation>\n","import { Component, Injector, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport {\n ProductService,\n ScriptLoaderService,\n SubscriptionService\n} from '@posiwise/common-services';\nimport { HelperService } from '@posiwise/helper-service';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { StatusCodes } from 'http-status-codes';\nimport { forkJoin } from 'rxjs';\n\nimport { CardDetails, StripeCardResponse } from '../../../shared/interface/user-module.interface';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\ndeclare let Stripe: {\n setPublishableKey(key: string): void;\n card: {\n createToken(\n card: CardDetails,\n callback: (status: number, response: StripeCardResponse) => void\n ): void;\n };\n};\n\n@Component({\n selector: 'pw-update-payment-details',\n templateUrl: './update-payment-details.component.html',\n styleUrls: ['./update-payment-details.component.scss']\n})\nexport class UpdatePaymentDetailsComponent extends AppBaseComponent implements OnInit {\n form: UntypedFormGroup;\n\n years = [];\n months = [];\n\n busy: boolean;\n isChangePayment: boolean;\n\n cardDetails: CardDetails[];\n\n loading = true;\n\n errorMessage: string;\n stripePublishKey: string;\n errorMsg: string;\n\n subscriptionId: number;\n productId: number;\n\n constructor(\n private readonly fb: UntypedFormBuilder,\n private readonly scriptLoader: ScriptLoaderService,\n private readonly productService: ProductService,\n private readonly subscriptionService: SubscriptionService,\n injector: Injector\n ) {\n super(injector);\n\n this.route.params.subscribe(response => {\n this.subscriptionId = Number(response['subscriptionId']);\n this.productId = Number(response['productId']);\n this.getCardDetails();\n });\n\n this.form = this.fb.group({\n card_number: ['', Validators.required],\n cvc: ['', Validators.required],\n exp_month: ['', Validators.required],\n exp_year: ['', Validators.required]\n });\n }\n\n ngOnInit() {\n this.scriptLoader.loadScript('head', 'https://js.stripe.com/v2/', true);\n this.years = HelperService.getYears();\n this.months = HelperService.getMonths();\n }\n\n private getCardDetails() {\n forkJoin({\n cardDetails: this.subscriptionService.getCardDetails(this.subscriptionId),\n product: this.productService.getProductById(this.productId)\n })\n .subscribe(response => {\n this.stripePublishKey = response.product.stripe_publishable_key;\n if (response.cardDetails.status === StatusCodes.OK) {\n this.cardDetails = response.cardDetails.data || null;\n }\n })\n .add(() => {\n this.loading = false;\n });\n }\n\n onUpdatePaymentDetailsCancel() {\n this.router.navigate(['/account/subscriptions']);\n }\n\n @ValidateForm('form')\n onSave() {\n this.busy = true;\n this.errorMsg = '';\n const cardDetails = {\n number: this.form.value.card_number,\n cvc: this.form.value.cvc,\n exp_month: this.form.value.exp_month,\n exp_year: this.form.value.exp_year\n };\n Stripe.setPublishableKey(this.stripePublishKey);\n\n Stripe.card.createToken(cardDetails, (status, res) => {\n if (status !== 200) {\n this.toast.error(res?.error?.message);\n this.busy = false;\n } else {\n this.subscriptionService\n .updateCardDetails(this.form.value, this.subscriptionId)\n .subscribe({\n next: response => {\n if (response.error) {\n const err = response.error.errors[0].message;\n this.toast.error(err);\n } else if (response.status === StatusCodes.CREATED) {\n this.toast.success(response.message);\n }\n this.cancel();\n }\n })\n .add(() => {\n this.busy = false;\n });\n }\n });\n }\n\n cancel() {\n this.router.navigate(['/account/subscriptions']);\n }\n\n onChange(value) {\n this.isChangePayment = value;\n }\n}\n","<div class=\"container-fluid\">\n <div class=\"card-block\">\n <div class=\"row\">\n <div class=\"col-lg-12 ps-0\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous float-start\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h4 class=\"form-section my-3\">\n <i class=\"ft-edit\" aria-hidden=\"true\"></i>\n Update Card Details\n </h4>\n </div>\n <div class=\"col-12 col-lg-6 mt-3 payment-left p-3 card\">\n <div class=\"card-body\">\n <div class=\"alert alert-danger\"\n *ngIf=\"errorMsg\">{{ errorMsg }}</div>\n <ng-template [ngIf]=\"!isChangePayment && cardDetails\">\n <pw-saved-card-details [data]=\"cardDetails\"\n (changeEvent)=\"onChange($event)\">\n </pw-saved-card-details>\n </ng-template>\n\n <ng-template [ngIf]=\"loading\">\n <div class=\"text-center\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n </ng-template>\n\n <ng-container *ngIf=\"(!cardDetails && !loading) || isChangePayment\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <h4 class=\"title\">New card?</h4>\n <div class=\"row\">\n <div class=\"col-md-9\">\n <div class=\"mb-3\">\n <label for=\"catdNumber\">Card Number</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"card_number\"\n placeholder=\"Card Number\"\n name=\"card_number\" />\n <div class=\"danger\"\n *ngIf=\"\n form.get('card_number').touched &&\n form.get('card_number').errors?.required\n \">\n <span> Please enter card number. </span>\n </div>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"mb-3\">\n <label for=\"cvc\">CVC</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"cvc\"\n placeholder=\"CVC\"\n name=\"cvc\" />\n <div class=\"danger\"\n *ngIf=\"\n form.get('cvc').touched &&\n form.get('cvc').errors?.required\n \">\n <span> Please enter cvc number. </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"mb-3\">\n <label class=\"sr-only\" for=\"Month\">Exp. Month</label>\n <p-dropdown\n [options]=\"months\"\n [appendTo]=\"'body'\"\n formControlName=\"exp_month\"\n [placeholder]=\"'Exp. Month'\"\n optionValue=\"value\"\n optionLabel=\"value\">\n </p-dropdown>\n <div class=\"danger\"\n *ngIf=\"\n form.get('exp_month').touched &&\n form.get('exp_month').errors?.required\n \">\n <span> Please enter expiry month. </span>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-6\">\n <div class=\"mb-3\">\n <label class=\"sr-only\" for=\"Year\">Exp. Year</label>\n <p-dropdown\n [options]=\"years\"\n formControlName=\"exp_year\"\n [placeholder]=\"'Exp. Year'\"\n optionValue=\"value\"\n [appendTo]=\"'body'\"\n optionLabel=\"value\">\n </p-dropdown>\n <div class=\"danger\"\n *ngIf=\"\n form.get('exp_year')?.touched &&\n form.get('exp_year')?.errors?.['required']\n \">\n <span> Please enter expiry year. </span>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 text-center mt-4\">\n <img src=\"/assets/img/icons/powered_by_stripe_v2.png\"\n class=\"payment-provider\"\n alt=\"\" />\n </div>\n\n <div class=\"col-12 mt-4 text-end\">\n <button type=\"button\"\n (click)=\"cancel()\"\n class=\"btn btn-outline-default me-2\">\n Cancel\n </button>\n <button type=\"submit\"\n class=\"btn btn-primary\"\n [buttonBusy]=\"busy\">\n Submit\n </button>\n </div>\n </div>\n </form>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Injector, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { AppState, GetUser } from '@posiwise/app-store';\nimport {\n FormHelperService,\n ProductService,\n ScriptLoaderService,\n SubscriptionService\n} from '@posiwise/common-services';\nimport { Product, Subscription, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { PasswordValidationComponent } from '@posiwise/shared-components';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { StatusCodes } from 'http-status-codes';\nimport swal from 'sweetalert2';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Store } from '@ngrx/store';\n\nimport { CardDetails } from '../../../shared/interface/user-module.interface';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\ndeclare let Stripe;\n\n@Component({\n selector: 'pw-upgrade-subscription',\n templateUrl: './upgrade-subscription.component.html',\n styleUrls: ['./upgrade-subscription.component.scss']\n})\nexport class UpgradeSubscriptionComponent extends AppBaseComponent implements OnInit, OnDestroy {\n @ViewChild('passwordValidationModal', { static: true })\n passwordValidationModal: PasswordValidationComponent;\n\n form: UntypedFormGroup;\n\n product: Product;\n subscription: Subscription;\n user: User;\n cardDetails: CardDetails;\n\n units: number;\n subscriptionId: number;\n productId: number;\n\n unitError: string;\n password: string;\n stripePublishKey: string;\n\n busy: boolean;\n isPurchaseAttempted: boolean;\n\n months = [];\n years = [];\n\n showNewCard: boolean;\n passwordModalVisible: boolean;\n\n errorMsg;\n\n get totalAmount() {\n if (this.product) {\n const units = Number(this.form.get('units').value);\n // eslint-disable-next-line no-restricted-globals\n if (!Number.isNaN(units)) {\n return (units * this.product.price_per_unit) / 100;\n }\n }\n\n return 0;\n }\n\n constructor(\n injector: Injector,\n private readonly productService: ProductService,\n private readonly fb: UntypedFormBuilder,\n private readonly modalService: NgbModal,\n private readonly subscriptionService: SubscriptionService,\n private readonly store: Store<AppState>,\n private readonly scriptLoader: ScriptLoaderService\n ) {\n super(injector);\n this.form = this.fb.group({\n card_number: ['', Validators.required],\n units: [],\n cvc: ['', Validators.required],\n exp_month: ['', Validators.required],\n exp_year: ['', Validators.required]\n });\n }\n\n ngOnInit(): void {\n this.scriptLoader.loadScript('head', 'https://js.stripe.com/v2/', true);\n this.years = HelperService.getYears();\n this.months = HelperService.getMonths();\n\n this.userStore().subscribe(user => {\n this.user = user;\n });\n\n this.route.params.subscribe(response => {\n this.subscriptionId = +response['subscriptionId'];\n this.productId = +response['productId'];\n this.getSubscriptionDetails();\n this.getCardDetails(this.subscriptionId);\n });\n }\n\n getSubscriptionDetails() {\n this.subscriptionService\n .getById(this.subscriptionId)\n .subscribe(response => {\n this.subscription = response;\n const product = this.subscription.products.find(x => x.id === this.productId);\n this.form.patchValue({\n units: product?.purchased_units\n });\n\n this.units = this.form.get('units').value;\n })\n .add(() => {\n this.getProductDetails();\n });\n }\n\n getProductDetails() {\n this.productService.getProductById(this.productId).subscribe(response => {\n this.product = response;\n this.stripePublishKey = response?.stripe_publishable_key;\n if (response?.stripe_publishable_key) {\n Stripe.setPublishableKey(response.stripe_publishable_key);\n }\n const prodUnits =\n this.units > this.product.min_units ? this.units : this.product.min_units || 1;\n\n this.form.patchValue({\n units: prodUnits\n });\n\n this.units = this.form.get('units').value;\n });\n }\n\n onMaxReached(event) {\n if (event) {\n this.unitError = `Maximum is ${this.units}`;\n }\n }\n\n onMinReached(event) {\n if (event) {\n this.unitError = `Minimum is ${this.subscription.min_units || this.product.min_units}`;\n }\n }\n\n onUnitChange(event) {\n this.units = event;\n this.form.patchValue({\n units: event\n });\n this.unitError = '';\n }\n\n onValidatePassword(isSuccess: boolean) {\n if (isSuccess) {\n this.onPurchaseSubmit();\n this.password = null;\n this.modalService.dismissAll();\n }\n }\n\n private postCreateToken(cardToken) {\n const data = {\n stripe_token: cardToken,\n product_id: this.product.id,\n units: this.form.get('units').value || 1,\n subscription_id: this.subscriptionId\n };\n this.userService\n .addNewSubscriptionUsingStripe(data)\n .subscribe({\n next: () => {\n this.toast.success(\n this.translation.translate('User.Subscriptions.SubscriptionPurchased')\n );\n this.router.navigate(['/account/subscriptions']);\n this.modalService.dismissAll();\n },\n error: () => {\n this.busy = false;\n }\n })\n .add(() => {\n this.busy = false;\n });\n }\n\n attemptPurchase() {\n if (this.user.has_password) {\n this.passwordValidationModal.open();\n } else {\n this.noPasswordModal();\n }\n }\n\n private onPurchaseSubmit() {\n this.busy = true;\n this.passwordModalVisible = true;\n if (this.subscription.stripe_customer_id) {\n if (this.showNewCard) {\n this.updateCardDetails();\n } else {\n this.enrollUserToSubscription();\n }\n } else if (this.form.valid) {\n const cardDetails = {\n number: this.form.value.card_number,\n cvc: this.form.value.cvc,\n exp_month: this.form.value.exp_month,\n exp_year: this.form.value.exp_year\n };\n // Get publishable key from product get id\n Stripe.card.createToken(\n cardDetails,\n (status, response) => {\n if (status === StatusCodes.OK) {\n const cardToken = response.id;\n this.postCreateToken(cardToken);\n } else {\n this.toast.error(response?.error?.message, '', { disableTimeOut: true });\n this.busy = false;\n this.isPurchaseAttempted = false;\n }\n },\n () => {\n this.busy = false;\n this.isPurchaseAttempted = false;\n this.modalService.dismissAll();\n }\n );\n }\n }\n\n private enrollUserToSubscription() {\n const data = {\n product_id: this.product.id,\n units: this.form.get('units').value,\n subscription_id: this.subscriptionId\n };\n\n this.subscriptionService.postSubscription(data).subscribe({\n next: response => {\n this.store.dispatch(new GetUser());\n if (response.id) {\n this.router.navigate(['/account/subscriptions']);\n this.toast.success(\n this.translation.translate('User.Subscriptions.SubscriptionPurchased')\n );\n this.isPurchaseAttempted = false;\n this.modalService.dismissAll();\n this.back();\n }\n },\n error: () => {\n this.busy = false;\n this.isPurchaseAttempted = false;\n },\n complete: () => {\n this.busy = !this.busy;\n }\n });\n }\n\n private noPasswordModal() {\n swal.fire({\n title: 'Set Password',\n html: `<div>Please set a password before changing the subscription in the account section.</div>\n <br />\n <strong><a href=\"/account/details\">Click here to reset</a></strong>`,\n confirmButtonText: 'OK'\n });\n }\n\n private getCardDetails(subscriptionId: number) {\n this.subscriptionService.getCardDetails(subscriptionId).subscribe(data => {\n this.cardDetails = data.data || null;\n this.form.patchValue({\n units: this.units,\n card_number: this.cardDetails?.card_number,\n cvc: this.cardDetails?.cvc,\n exp_month: this.cardDetails?.exp_month || '',\n exp_year: this.cardDetails?.exp_year || ''\n });\n });\n }\n\n onDiscardToggle() {\n this.form.markAllAsTouched();\n FormHelperService.markFormAsPristine(this.form);\n }\n\n @ValidateForm('form')\n updateCardDetails() {\n const cardDetails = {\n number: this.form.value.card_number,\n cvc: this.form.value.cvc,\n exp_month: this.form.value.exp_month,\n exp_year: this.form.value.exp_year\n };\n Stripe.setPublishableKey(this.stripePublishKey);\n\n Stripe.card.createToken(cardDetails, (status, res) => {\n if (status !== 200) {\n this.toast.error(res.error.message);\n } else {\n this.subscriptionService\n .updateCardDetails(this.form.value, this.subscriptionId)\n .subscribe({\n next: response => {\n if (response.error) {\n const err = response.error.errors[0].message;\n this.toast.error(err);\n } else if (response.status === StatusCodes.CREATED) {\n this.enrollUserToSubscription();\n this.toast.success(response.message);\n }\n },\n error: error => {\n this.errorMsg = HelperService.getErrorMessage(error);\n this.toast.error(this.errorMsg);\n }\n });\n }\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<h4 class=\"form-section m-3\">\n <i class=\"ft-check-circle\" aria-hidden=\"true\"></i> {{ 'Button.Payment' | transloco }}\n</h4>\n<div class=\"card-block\">\n <!-- Show Payment Page when there is user.has_stripe_account===false -->\n <ng-container>\n <form class=\"form\"\n (ngSubmit)=\"attemptPurchase()\"\n [formGroup]=\"form\">\n <div class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"form-body p-3 payment-left card pb-0\">\n <div class=\"card-body\">\n <div class=\"row\"\n *ngIf=\"product?.max_units > 1\">\n <div class=\"col-12\">\n <div class=\"mb-3\">\n <h4 class=\"title\">\n {{ 'User.Subscriptions.LicensesRequired' | transloco }}\n </h4>\n <div class=\"row btns-row\">\n <div class=\"col-md-4 col-8\">\n <pw-number-picker name=\"number-picker\"\n [(value)]=\"units\"\n [min]=\"subscription.min_units || product.min_units\"\n [max]=\"product.max_units\"\n step=\"1\"\n postfix=\"Units\"\n placeholder=\"Total Licenses\"\n [inputReadOnly]=\"false\"\n size=\"small\"\n pickStartAfter=\"500\"\n pickTimer=\"100\"\n [arrowKeys]=\"true\"\n (minReached)=\"onMinReached($event)\"\n (maxReached)=\"onMaxReached($event)\"\n (valueChange)=\"onUnitChange($event)\">\n </pw-number-picker>\n </div>\n </div>\n <div class=\"text-center\">\n <small class=\"form-text text-muted danger\">\n {{ unitError }}\n </small>\n </div>\n </div>\n <p>\n If you proceed, your credit card will be charged\n <strong>{{ product.currency }}\n {{ totalAmount | number:'1.2-2' }}</strong>\n </p>\n </div>\n </div>\n <!-- Shows Saved Card: Shows when user has card details and not trying to update the card details -->\n <ng-template [ngIf]=\"cardDetails\">\n <pw-saved-card-details [data]=\"cardDetails\"\n (changeEvent)=\"showNewCard = $event\"\n [showNewCard]=\"showNewCard\">\n </pw-saved-card-details>\n </ng-template>\n <!-- Add New Payment Starts, opens up when user doesn't have stripe account or tries to change the\n card details -->\n <ng-template [ngIf]=\"(user && !cardDetails) || (cardDetails && showNewCard)\">\n <h4 class=\"title\">\n {{ 'User.Subscriptions.NewCard' | transloco }}?\n </h4>\n <div class=\"row\">\n <div class=\"col-md-9\">\n <div class=\"mb-3\">\n <label for=\"cardNumber\">{{\n 'User.Subscriptions.CardNumber' | transloco\n }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"card_number\"\n placeholder=\"Card Number\"\n name=\"card_number\" />\n <div class=\"danger\"\n *ngIf=\"\n form.get('card_number').touched &&\n form.get('card_number').errors?.required\n \">\n <span> Please enter card number. </span>\n </div>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"mb-3\">\n <label for=\"cvc\">{{\n 'User.Subscriptions.CVC' | transloco\n }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"cvc\"\n placeholder=\"CVC\"\n name=\"cvc\" />\n <div class=\"danger\"\n *ngIf=\"\n form.get('cvc').touched &&\n form.get('cvc').errors?.required\n \">\n <span> Please enter cvc. </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"mb-3\">\n <label class=\"sr-only\" for=\"Month\">Exp. Month</label>\n <p-dropdown\n [options]=\"months\"\n formControlName=\"exp_month\"\n [placeholder]=\"'Exp. Month'\"\n optionValue=\"value\"\n [appendTo]=\"'body'\"\n optionLabel=\"value\">\n </p-dropdown>\n <div class=\"danger\"\n *ngIf=\"\n form.get('exp_month').touched &&\n form.get('exp_month').errors?.required\n \">\n <span> Please enter expiry month. </span>\n </div>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"mb-3\">\n <label class=\"sr-only\" for=\"Year\">Exp. Year</label>\n <p-dropdown\n [options]=\"years\"\n formControlName=\"exp_year\"\n [placeholder]=\"'Exp. Year'\"\n [appendTo]=\"'body'\"\n optionValue=\"value\"\n optionLabel=\"value\">\n </p-dropdown>\n <div class=\"danger\"\n *ngIf=\"\n form.get('exp_year').touched &&\n form.get('exp_year').errors?.required\n \">\n <span> Please enter expiry year. </span>\n </div>\n </div>\n </div>\n <div class=\"col-12 mt-2\"\n *ngIf=\"cardDetails\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"showNewCard = false; onDiscardToggle()\">Disregard and pay with current registered card</a>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n </div>\n <!-- Purchase Summary -->\n <div class=\"col-md-6\"\n *ngIf=\"product\">\n <div class=\"purchase-summary card p-3 payment-right\">\n <div class=\"card-body\">\n <h4 class=\"title\">{{ 'Label.PurchaseSummary' | transloco }}</h4>\n <div class=\"summary-row d-flex mb-2\">\n <div class=\"summary-left\">{{ 'Label.Plan' | transloco }}:</div>\n <div class=\"summary-right\">{{ product.name }}</div>\n </div>\n <div class=\"summary-row d-flex mb-2\">\n <div class=\"summary-left\">{{ 'Label.Price' | transloco }}:</div>\n <div class=\"summary-right\">\n {{ product.currency }}\n {{ (product.price_per_unit / 100) | number:'1.2-2' }}\n </div>\n </div>\n <div class=\"summary-row d-flex mb-2\">\n <div class=\"summary-left\">{{ 'Label.Seats' | transloco }}:</div>\n <div class=\"summary-right\">{{ form.get('units').value }}</div>\n </div>\n <div class=\"summary-row d-flex mb-2\">\n <div class=\"summary-left\">{{ 'Label.Total' | transloco }}:</div>\n <div class=\"summary-right\">\n {{ product.currency }} {{ totalAmount | number:'1.2-2' }}\n </div>\n </div>\n <div class=\"summary-row d-flex mb-2\">\n <div class=\"summary-left\">\n {{ 'Label.Recurrency' | transloco }}:\n </div>\n <div class=\"summary-right\">{{ product.billing_frequency }}</div>\n </div>\n </div>\n <div class=\"text-center\">\n <hr />\n <p>\n By subscribing you acknowledge and accept our terms of service and\n privacy policy\n </p>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-center mt-3\">\n <img src=\"/assets/img/icons/powered_by_stripe_v2.png\"\n class=\"payment-provider\"\n alt=\"\" />\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"form-actions text-end\">\n <button type=\"button\"\n class=\"btn btn-raised btn-outline-default me-1\"\n [disabled]=\"isPurchaseAttempted\"\n routerLink=\"/account/subscriptions\">\n <i class=\"ft-x\" aria-hidden=\"true\"></i>{{ 'Button.Back' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-raised btn-primary\"\n [disabled]=\"isPurchaseAttempted\"\n [buttonBusy]=\"busy\">\n <i class=\"ft-check\" aria-hidden=\"true\"></i>\n {{ 'Button.Purchase' | transloco }}\n </button>\n </div>\n </div>\n </div>\n </form>\n </ng-container>\n</div>\n\n<pw-password-validation #passwordValidationModal\n (successEvent)=\"onValidatePassword($event)\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p>\n If you proceed, your credit card will be charged\n <strong *ngIf=\"totalAmount\">{{ product.currency }} {{ totalAmount | number:'1.2-2' }}</strong>\n </p>\n </div>\n </div>\n</pw-password-validation>\n","import { Component, Injector, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { AppState, GetUser } from '@posiwise/app-store';\nimport { GeoService, SubscriptionService } from '@posiwise/common-services';\nimport { Country, Product, Subscription, User } from '@posiwise/common-utilities';\nimport { PasswordValidationComponent } from '@posiwise/shared-components';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { StatusCodes } from 'http-status-codes';\nimport { map, Observable } from 'rxjs';\nimport swal from 'sweetalert2';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Store } from '@ngrx/store';\n\n@Component({\n templateUrl: './user-subscription-details.component.html',\n styleUrls: ['./user-subscription-details.component.scss']\n})\nexport class UserSubscriptionDetailsComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy\n{\n @ViewChild('modal', { static: true }) modal: PasswordValidationComponent;\n\n allowUpdate: boolean;\n hasUnitChanged: boolean;\n\n busyButton = false;\n\n form: UntypedFormGroup;\n\n unitError: string;\n\n subscription: Subscription;\n\n units = 1;\n\n countries$: Observable<Country[]>;\n\n squaredLogo: string;\n fullLogo: string;\n slug: string;\n\n userId: number;\n subscriptionId: number;\n\n user: User;\n\n showApiToken = false;\n showApiClientId = false;\n refreshingTokens = false;\n\n totalAmount() {\n const allProductsPrice = this.subscription.products.map(x => x.price_per_unit * this.units);\n\n return allProductsPrice.reduce((a: number, b: number) => a + b, 0) / 100;\n }\n\n constructor(\n private readonly fb: UntypedFormBuilder,\n private readonly geoService: GeoService,\n private readonly modalService: NgbModal,\n private readonly subscriptionService: SubscriptionService,\n private readonly store: Store<AppState>,\n injector: Injector\n ) {\n super(injector);\n this.form = this.getForm();\n this.route.params.subscribe(params => {\n this.subscriptionId = +params['subscriptionId'];\n this.fetchData();\n });\n }\n\n ngOnInit() {\n this.geoService.getCountries().subscribe(() => {\n this.countries$ = this.geoService\n .getCountries()\n .pipe(\n map((countries: []) => [{ name: 'Select Country', code: null }, ...countries])\n );\n });\n this.userStore().subscribe(user => {\n if (user) {\n this.slug = user.slug;\n this.user = user;\n this.userId = user.id;\n }\n });\n }\n\n private fetchData() {\n this.subscriptionService.getById(this.subscriptionId).subscribe(response => {\n this.subscription = response;\n this.fullLogo = this.subscription?.full_logo.url;\n this.squaredLogo = this.subscription?.squared_logo?.url;\n this.form.patchValue(this.subscription);\n this.units = this.subscription?.products[0]?.purchased_units;\n this.form.patchValue({\n units: this.units\n });\n });\n }\n\n private getForm() {\n return this.fb.group({\n organisation: ['', [Validators.required]],\n contact_name: ['', [Validators.required]],\n contact_email: ['', [Validators.required, Validators.email]],\n contact_tel: [''],\n tax_id: [''],\n address: ['', [Validators.required]],\n country_code: ['', [Validators.required]],\n facebook_handle: [''],\n twitter_handle: [''],\n linkedin_handle: [''],\n reddit_handle: [''],\n company_url: [''],\n enforce_2fa: [false]\n });\n }\n\n /** *\n * Update seats for all the products of subscription\n */\n updateUnits() {\n if (this.subscription.products[0].trial_subscription) {\n return;\n }\n this.modal.open();\n }\n\n openModal(content) {\n this.modalService.open(content, { centered: true, windowClass: 'modal-holder' });\n }\n\n onImageSelection(event) {\n const blob = this.dataURLtoBlob(event);\n const filename = `${`${this.slug.toLocaleLowerCase()}_${Date.parse(\n new Date().toString()\n )}`}.png`;\n const file: File = new File([blob], filename);\n this.subscriptionService.addFullLogo(this.subscriptionId, file).subscribe(res => {\n this.modalService.dismissAll();\n this.fullLogo = res?.full_logo?.url;\n });\n }\n\n uploadSquaredLogo(event) {\n const blob = this.dataURLtoBlob(event);\n const filename = `${`${this.slug.toLocaleLowerCase()}_${Date.parse(\n new Date().toString()\n )}`}.png`;\n const file: File = new File([blob], filename);\n this.subscriptionService.addSquaredLogo(this.subscriptionId, file).subscribe(res => {\n this.modalService.dismissAll();\n this.squaredLogo = res?.squared_logo?.url;\n });\n }\n\n onClose() {\n this.modalService.dismissAll();\n }\n\n dataURLtoBlob(dataUrl) {\n const arr = dataUrl.split(',');\n const mime = /^[A-Z]*[a-z]*:(.*?);[A-Z]*/.exec(arr[0])?.[1];\n const bStr = atob(arr[1]);\n let n = bStr.length;\n const u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bStr.charCodeAt(n);\n }\n\n return new Blob([u8arr], { type: mime });\n }\n\n @ValidateForm('form')\n onSaveDetails() {\n this.busyButton = true;\n this.subscriptionService\n .updateSubscription(Number(this.subscriptionId), this.form.value)\n .subscribe(() => {\n this.toast.success('Subscription details updated.');\n this.store.dispatch(new GetUser());\n this.back();\n })\n .add(() => {\n this.busyButton = false;\n });\n }\n\n onPasswordValidation(_event) {\n this.subscriptionService\n .updateSubscriptionUnit(this.subscription.id, this.units)\n .subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success('Unit quantity updated.');\n } else {\n this.toast.error('Something went wrong!');\n }\n });\n }\n\n onMaxReached(event) {\n if (event) {\n this.unitError = `Maximum is ${this.units}`;\n }\n }\n\n onMinReached(event) {\n if (event) {\n this.unitError = `Minimum is ${this.units}`;\n }\n }\n\n onUnitChange(event) {\n this.allowUpdate = true;\n this.hasUnitChanged = true;\n this.units = event;\n this.unitError = '';\n }\n\n /** Function to execute on location select */\n handleAddressChange(event) {\n this.form.get('address').setValue(event.formatted_address);\n }\n\n toggleApiTokenVisibility() {\n this.showApiToken = !this.showApiToken;\n }\n\n toggleApiClientIdVisibility() {\n this.showApiClientId = !this.showApiClientId;\n }\n\n refreshApiTokens() {\n swal.fire({\n title: 'Are you sure?',\n text: 'This will expire the current tokens.',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#d33',\n cancelButtonColor: '#3085d6',\n confirmButtonText: 'Yes, refresh tokens!'\n }).then(result => {\n if (result.isConfirmed) {\n this.performTokenRefresh();\n }\n });\n }\n\n private performTokenRefresh() {\n this.refreshingTokens = true;\n this.subscriptionService\n .refreshApiTokens(this.subscriptionId)\n .subscribe({\n next: response => {\n if (response && response.api_access_token) {\n this.subscription.api_access_token = response.api_access_token;\n }\n if (response && response.api_client_id) {\n this.subscription.api_client_id = response.api_client_id;\n }\n\n this.showApiToken = false;\n this.showApiClientId = false;\n this.fetchData();\n }\n })\n .add(() => {\n this.refreshingTokens = false;\n });\n }\n\n trackByProduct(_index: number, item: Product) {\n return item.id;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.allowUpdate = false;\n }\n}\n","<!-- edit Subscription details page -->\n<div class=\"row\">\n <div class=\"col-12\">\n <h3 class=\"my-3\">{{ subscription?.organisation || subscription?.contact_name }}</h3>\n </div>\n</div>\n\n<div class=\"row\"\n *ngIf=\"subscription\">\n <div class=\"col-md-6\">\n <div class=\"text-center mt-5\">\n <div class=\"image-container\">\n <h4 class=\"mb-2\">Full Logo\n <span class=\"tooltip-wrap ms-1\"\n [pTooltip]=\"'User.Subscriptions.Tooltip.FullLogo'|transloco\"\n [appendTo]=\"'body'\"\n [tooltipPosition]=\"'top'\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </h4>\n <img [src]=\"fullLogo\"\n alt=\"full logo\"\n width=\"100%\"\n class=\"image full-logo\"\n height=\"100%\"\n role=\"presentation\"\n onerror=\"this.onerror=null;this.src='assets/img/icons/dummy-logo.jpg';\" />\n <div class=\"overlay mt-2\"\n (keydown.enter)=\"openModal(content)\"\n (click)=\"openModal(content)\">\n <div class=\"overlay-text\">\n <a aria-label=\"Navigate to Target\">{{ 'User.Profile.Change' | transloco }}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"text-center mt-5\">\n <div class=\"image-container\">\n <h4 class=\"mb-2\">Squared Logo\n <span class=\"tooltip-wrap ms-1\"\n [pTooltip]=\"'User.Subscriptions.Tooltip.SquaredLogo'|transloco\"\n [appendTo]=\"'body'\"\n [tooltipPosition]=\"'top'\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </h4>\n <img [src]=\"squaredLogo\"\n alt=\"Squared Presentation\"\n width=\"150\"\n class=\"squared_logo\"\n [height]=\"'150'\"\n role=\"presentation\"\n onerror=\"this.onerror=null;this.src='assets/img/icons/dummy-icon.jpg';\" />\n <div class=\"overlay mt-2\"\n (keydown.enter)=\"openModal(squaredLogoContent)\"\n (click)=\"openModal(squaredLogoContent)\">\n <div class=\"overlay-text\">\n <a aria-label=\"Navigate to Target\">{{ 'User.Profile.Change' | transloco }}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"row\">\n <div class=\"col-12\">\n <small *ngIf=\"subscription?.trial_subscription && subscription?.calculated_price\"\n class=\"text-danger\">Upgrade to be able to update your purchased seats</small>\n </div>\n</div>\n<div class=\"row btns-row align-items-center\">\n <div class=\"col-md-3 col-8\"\n *ngIf=\"subscription\">\n <pw-number-picker [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.Seats'|transloco\"\n name=\"number-picker\"\n [(value)]=\"units\"\n [min]=\"subscription?.min_units||subscription?.products[0].min_units\"\n [max]=\"subscription?.products[0].max_units\"\n step=\"1\"\n postfix=\"seats\"\n placeholder=\"Total Licences\"\n [inputReadOnly]=\"subscription?.products[0].trial_subscription\"\n [showUpButton]=\"!subscription?.products[0].trial_subscription\"\n [showDownButton]=\"!subscription?.products[0].trial_subscription\"\n size=\"small\"\n pickStartAfter=\"500\"\n pickTimer=\"100\"\n [arrowKeys]=\"true\"\n (minReached)=\"onMinReached($event)\"\n (maxReached)=\"onMaxReached($event)\"\n (valueChange)=\"onUnitChange($event)\">\n </pw-number-picker>\n </div>\n\n <div class=\"col-md-3 col-4 p-1\"\n *ngIf=\"subscription\">\n\n <ng-template [ngIf]=\"!subscription?.products[0].trial_subscription && allowUpdate\"\n [ngIfElse]=\"nonPaidRef\">\n <button class=\"btn btn-primary\"\n (click)=\"updateUnits()\">\n {{ 'User.Subscriptions.UpdateUnits' | transloco }}\n </button>\n </ng-template>\n <ng-template #nonPaidRef>\n <div>\n <small class=\"danger\"\n *ngIf=\"subscription?.products[0].trial_subscription\">Update seats is available only to paid subscriptions</small>\n </div>\n </ng-template>\n </div>\n\n <div class=\"col-12 col-md-6\"\n *ngIf=\"hasUnitChanged\">\n <table class=\"table table-borderless table-sm\"\n aria-describedby=\"Product details\">\n <thead>\n <tr>\n <th scope=\"true\">Product</th>\n <th scope=\"true\">Price per seat <span>({{subscription?.products[0]?.currency|currencySymbol}})</span></th>\n <th scope=\"true\">Seats</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let product of subscription.products; trackBy: trackByProduct\">\n <td>{{ product.name }}</td>\n <td>{{ product.price_per_unit / 100 }}</td>\n <td>{{ units }}</td>\n </tr>\n </tbody>\n </table>\n <p>\n If you proceed, the new cost for your subscription will be\n <strong>{{ totalAmount()| currency: subscription?.products[0]?.currency:'symbol-narrow'}}</strong>\n </p>\n </div>\n</div>\n<form [formGroup]=\"form\"\n (ngSubmit)=\"onSaveDetails()\"\n class=\"row mt-4\"\n *ngIf=\"subscription\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.ContactName' | transloco\"\n class=\"col-md-6\"\n label=\"Contact Name\"\n name=\"contact_name\"\n errorMsg=\"Please enter Contact Name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"contact_name\" />\n </pw-input-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.ContactEmail' | transloco\"\n class=\"col-md-6\"\n label=\"Contact Email\"\n name=\"contact_email\"\n errorMsg=\"Please enter Contact Email\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"contact_email\" />\n </pw-input-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.Organization' | transloco\"\n class=\"col-md-6\"\n label=\"Organisation\"\n name=\"organisation\"\n errorMsg=\"Please enter organisation\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"organisation\" />\n </pw-input-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.Phone' | transloco\"\n class=\"col-md-6\"\n label=\"Contact Tel\"\n name=\"contact_tel\"\n errorMsg=\"Please enter Contact Telephone Number\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"contact_tel\" />\n </pw-input-container>\n <ng-container *ngIf=\"countries$ | async as countries\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.Country' | transloco\"\n class=\"col-md-6\"\n label=\"Country\"\n name=\"country_code\"\n [isLeftTooltip]=\"true\"\n errorMsg=\"Please select a country\">\n <p-dropdown\n id=\"country\"\n [options]=\"countries\"\n optionLabel=\"name\"\n optionValue=\"code\"\n formControlName=\"country_code\"\n placeholder=\"Select Country\">\n </p-dropdown>\n </pw-input-container>\n </ng-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.Address' | transloco\"\n class=\"col-md-6\"\n label=\"Address\"\n name=\"address\"\n errorMsg=\"Please enter address\">\n <input ngx-gp-autocomplete\n class=\"form-control\"\n #places=\"ngx-places\"\n formControlName=\"address\"\n (onAddressChange)=\"handleAddressChange($event)\" />\n </pw-input-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.VatNumber' | transloco\"\n class=\"col-md-6\"\n label=\"GST/VAT Number\"\n name=\"tax_id\"\n errorMsg=\"Please enter GST/VAT Number\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"tax_id\" />\n </pw-input-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.CompanyUrl' | transloco\"\n class=\"col-md-6\"\n label=\"Company URL\"\n name=\"company_url\"\n errorMsg=\"Please enter company url\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"company_url\" />\n </pw-input-container>\n\n <ng-container *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <div class=\"col-12\">\n <h3>Social Media</h3>\n <p>\n Any of the social media handles that you set here will appear in the footer of emails going out to your child subscriptions.\n </p>\n </div>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.FacebookHandle' | transloco\"\n class=\"col-md-6\"\n label=\"Facebook handle\"\n name=\"facebook_handle\"\n errorMsg=\"Please enter facebook id\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"facebook_handle\" />\n </pw-input-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.TwitterHandle' | transloco\"\n class=\"col-md-6\"\n label=\"Twitter handle\"\n name=\"twitter_handle\"\n errorMsg=\"Please enter twitter id\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"twitter_handle\" />\n </pw-input-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.LinkedinHandle' | transloco\"\n class=\"col-md-6\"\n label=\"Linkedin handle\"\n name=\"linkedin_handle\"\n errorMsg=\"Please enter linkedin id\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"linkedin_handle\" />\n </pw-input-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.RedditHandle' | transloco\"\n class=\"col-md-6\"\n label=\"Reddit handle\"\n name=\"reddit_handle\"\n errorMsg=\"Please enter reddit id\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"reddit_handle\" />\n </pw-input-container>\n </ng-container>\n\n <ng-container *ngIf=\"subscription?.api_hits_max > 0\">\n <div class=\"col-12\">\n <h3>{{ 'User.Subscriptions.APICredentials.Title' | transloco }}</h3>\n <p>\n Manage your {{appConfig?.company?.name}} API credentials. These tokens are used to authenticate API requests.\n </p>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label class=\"form-label\">{{ 'User.Subscriptions.APICredentials.AccessToken' | transloco }}</label>\n <div class=\"input-group\">\n <input type=\"text\"\n class=\"form-control\"\n [value]=\"showApiToken ? subscription?.api_access_token || ('User.Subscriptions.APICredentials.NoTokenAvailable' | transloco) : '*************************'\"\n readonly />\n <button type=\"button\"\n class=\"btn btn-outline-secondary\"\n (click)=\"toggleApiTokenVisibility()\">\n {{ showApiToken ? ('User.Subscriptions.APICredentials.Hide' | transloco) : ('User.Subscriptions.APICredentials.View' | transloco) }}\n </button>\n </div>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label class=\"form-label\">{{ 'User.Subscriptions.APICredentials.ClientId' | transloco }}</label>\n <div class=\"input-group\">\n <input type=\"text\"\n class=\"form-control\"\n [value]=\"showApiClientId ? subscription?.api_client_id || ('User.Subscriptions.APICredentials.NoClientIdAvailable' | transloco) : '*************************'\"\n readonly />\n <button type=\"button\"\n class=\"btn btn-outline-secondary\"\n (click)=\"toggleApiClientIdVisibility()\">\n {{ showApiClientId ? ('User.Subscriptions.APICredentials.Hide' | transloco) : ('User.Subscriptions.APICredentials.View' | transloco) }}\n </button>\n </div>\n </div>\n </div>\n <div class=\"col-12 mt-3\">\n <div class=\"d-flex align-items-center gap-3\">\n <button type=\"button\"\n class=\"btn btn-warning\"\n (click)=\"refreshApiTokens()\"\n [disabled]=\"refreshingTokens\">\n <i class=\"fas fa-sync-alt me-2\" [class.fa-spin]=\"refreshingTokens\"></i>\n {{ refreshingTokens ? ('User.Subscriptions.APICredentials.Refreshing' | transloco) : ('User.Subscriptions.APICredentials.RefreshTokens' | transloco) }}\n </button>\n\n <div class=\"d-flex align-items-center gap-2\">\n <ng-container *ngIf=\"subscription?.api_hits !== null\">\n <span class=\"text-muted\">{{ 'User.Subscriptions.APICredentials.ApiHits' | transloco }}:</span>\n <span class=\"fw-bold\">{{ subscription.api_hits | number }}</span>\n </ng-container>\n\n <ng-container *ngIf=\"subscription?.api_hits_max !== null\">\n <span class=\"text-muted\">{{ 'User.Subscriptions.APICredentials.ApiHitsMax' | transloco }}:</span>\n <span class=\"fw-bold\">{{ subscription.api_hits_max | number }}</span>\n </ng-container>\n\n <!-- Show utilization percentage when both values exist -->\n <ng-container *ngIf=\"subscription?.api_hits !== null || subscription?.api_hits_max !== null\">\n <span class=\"text-muted ms-2\">(</span>\n <span class=\"fw-bold\" [ngClass]=\"{\n 'text-success': (subscription.api_hits / subscription.api_hits_max) <= 0.8,\n 'text-warning': (subscription.api_hits / subscription.api_hits_max) > 0.8 && (subscription.api_hits / subscription.api_hits_max) <= 0.9,\n 'text-danger': (subscription.api_hits / subscription.api_hits_max) > 0.9\n }\">\n {{ (subscription.api_hits / subscription.api_hits_max * 100) | number:'1.0-0' }}% consumed\n </span>\n <span class=\"text-muted\">)</span>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n\n <div class=\"col-12 mt-5\">\n <h3>Security</h3>\n <p>\n While we'll add more security options in the future, please start by enforcing 2FA for all your subscription members.\n </p>\n </div>\n <div class=\"col-12 col-sm-3\">\n <pw-input-container label=\"Enforce 2FA\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.Enforce2fa' | transloco\"\n name=\"enforce_2fa\">\n <ui-switch formControlName=\"enforce_2fa\"\n name=\"enforce_2fa\"> </ui-switch>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n routerLink=\"/account/subscriptions\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button name=\"submit\"\n type=\"submit\"\n [buttonBusy]=\"busyButton\"\n class=\"btn btn-primary\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n</form>\n\n<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h3 class=\"modal-title mb-0 p-0\">{{ 'User.Subscriptions.FullLogo' | transloco }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n (imageSelectionEvent)=\"onImageSelection($event)\"\n aspectRatio=\"fullLogo\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n<ng-template #squaredLogoContent\n let-modal>\n <div class=\"modal-header\">\n <h3 class=\"modal-title mb-0 p-0\">{{ 'User.Subscriptions.SquaredLogo' | transloco }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n (imageSelectionEvent)=\"uploadSquaredLogo($event)\"\n aspectRatio=\"auto\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n<pw-password-validation #modal\n (successEvent)=\"onPasswordValidation($event)\"> </pw-password-validation>\n","/*\n * @Author: anikets43\n * @description: shows all the subscribed user products\n * Account => Subscription\n */\n\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { HttpParams } from '@angular/common/http';\nimport { Component, Injector, OnDestroy, OnInit, ViewChild } from '@angular/core';\n\nimport { AdminService } from '@posiwise/admin-module-utils';\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { AppState, GetUser } from '@posiwise/app-store';\nimport { PermissionService, SubscriptionService } from '@posiwise/common-services';\nimport { Product, Subscription, User } from '@posiwise/common-utilities';\nimport { PasswordValidationComponent } from '@posiwise/shared-components';\n\nimport sortBy from 'lodash/sortBy';\nimport { MenuItem } from 'primeng/api';\nimport swal from 'sweetalert2';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Store } from '@ngrx/store';\n\nimport { CurrentItem } from '../../../shared/interface/user-module.interface';\nimport { AddSubscriptionComponent } from '../add-subscription/add-subscription.component';\n\n@Component({\n selector: 'pw-user-subscriptions-list',\n templateUrl: './user-subscriptions-list.component.html',\n styleUrls: ['./user-subscriptions-list.component.scss']\n})\nexport class UserSubscriptionListComponent extends AppBaseComponent implements OnInit, OnDestroy {\n @ViewChild('menuItems', { static: false })\n menu: MenuItem[];\n\n @ViewChild(AddSubscriptionComponent, { static: false })\n changeSubscriptionRef: AddSubscriptionComponent;\n\n @ViewChild('passwordValidationModalForAccountDelete', { static: false })\n passwordValidationModalForAccountDelete: PasswordValidationComponent;\n\n @ViewChild('passwordValidationModalForKey', { static: false })\n passwordValidationModalForKey: PasswordValidationComponent;\n\n @ViewChild('passwordValidationForUnsubscribe', { static: false })\n passwordValidationForUnsubscribe: PasswordValidationComponent;\n\n showApiKey = true;\n\n password: string;\n productName: string;\n\n subscribedSubscriptions = [];\n\n activeItem: MenuItem;\n\n isAddNew: boolean;\n\n user: User;\n\n isUpdatePayment: false;\n\n selectedSubscription: { id: number; productId: number };\n\n editing: boolean;\n\n isLoaded = false;\n\n currentItem: CurrentItem;\n\n showTos = false;\n\n objectKeys = Object.keys;\n\n items: MenuItem[] = [\n { id: 'profile', label: 'Profile', icon: 'fa fa-fw fa-user-cog' },\n { id: 'subscription', label: 'Subscription', icon: 'fa fa-fw fa-book' },\n { id: 'invoice', label: 'Invoice', icon: 'fa fa-file-invoice-dollar' }\n ];\n\n productId: number;\n\n constructor(\n private readonly subscriptionService: SubscriptionService,\n private readonly adminService: AdminService,\n private readonly modalService: NgbModal,\n private readonly store: Store<AppState>,\n private readonly clipboard: Clipboard,\n injector: Injector\n ) {\n super(injector);\n this.getSubscribedProduct = this.getSubscribedProduct.bind(this);\n }\n\n ngOnInit() {\n this.route.queryParams.subscribe(params => {\n this.isAddNew = params['isNew'];\n this.getSubscribedProduct();\n this.selectedSubscription = null;\n });\n\n [this.activeItem] = this.items;\n }\n\n onClipboardCopy(accessCode: string) {\n this.clipboard.copy(accessCode);\n this.toast.success('Access Key copied to the clipboard');\n }\n\n attemptUnsubscribe(item, productId: number) {\n this.selectedSubscription = item;\n this.selectedSubscription.productId = productId;\n if (this.user.has_password) {\n this.passwordValidationForUnsubscribe.open();\n } else {\n this.noPasswordModal();\n }\n }\n\n private getSubscribedProduct() {\n this.userStore().subscribe(user => {\n this.user = user;\n if (user) {\n this.userService.getUserSubscriptions(user.id).subscribe(response => {\n this.subscribedSubscriptions = sortBy(response.subscriptions, 'deleted');\n response?.expired_subscriptions.forEach(subscription => {\n this.subscribedSubscriptions.push(subscription);\n });\n this.subscribedSubscriptions.forEach(subscription => {\n subscription.products.forEach((product: Product) => {\n product.masked = product.api_access_token\n ? '*************************'\n : null;\n });\n });\n this.isLoaded = true;\n });\n }\n });\n }\n\n updateApiKey(item) {\n this.subscriptionService.updateSubscriptionAPIKey(item.id).subscribe(response => {\n item.api_access_token = response;\n this.toast.success(this.translation.translate('User.Subscriptions.UpdatedKey'));\n this.getSubscribedProduct();\n });\n }\n\n showKey(item) {\n this.currentItem = item;\n this.passwordValidationModalForKey.open();\n this.showApiKey = false;\n }\n\n displayApiKey() {\n this.showApiKey = true;\n this.currentItem.masked = this.currentItem?.api_access_token;\n }\n\n activateMenu() {\n this.activeItem = this.menu['activeItem'];\n if (this.activeItem.id === 'subscription') {\n this.getSubscribedProduct();\n }\n }\n\n onUnsubscribe(item) {\n const httpParams = new HttpParams().set('product_id', item.productId);\n this.subscriptionService\n .deleteSubscription(item.id, { params: httpParams })\n .subscribe(() => {\n this.store.dispatch(new GetUser());\n this.toast.success(\n this.translation.translate('User.Subscriptions.UnsubscribedProduct')\n );\n this.modalService.dismissAll();\n this.getSubscribedProduct();\n this.selectedSubscription = null;\n });\n }\n\n onValidatePassword(isSuccess: boolean) {\n if (isSuccess) {\n this.onUnsubscribe(this.selectedSubscription);\n }\n }\n\n discardEdit() {\n this.editing = false;\n this.selectedSubscription = null;\n }\n\n onSaveDetails() {\n this.toast.success(this.translation.translate('User.Subscriptions.UpdatedMessage'));\n this.editing = false;\n }\n\n onUpdatePaymentDetailsCancel() {\n this.router.navigate(['.'], { relativeTo: this.route, queryParams: {} });\n }\n\n attemptUpgrade(subscription: Subscription, product: Product) {\n if (this.user.has_password) {\n this.router.navigate([\n `account/subscriptions/upgrade/${subscription.id}/${product.id}`\n ]);\n } else {\n this.noPasswordModal();\n }\n }\n\n private noPasswordModal() {\n swal.fire({\n title: 'Set Password',\n text: `Please set a password before changing the subscription in the account section.`,\n confirmButtonText: 'OK'\n });\n }\n\n showModalForAccountDeletion() {\n swal.fire({\n title: 'Delete',\n html: `Are you sure you want to delete?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n this.passwordValidationModalForAccountDelete.open();\n }\n });\n }\n\n deleteUser(_event) {\n const subscriptionId = PermissionService.selectedSubscription.id;\n this.adminService.deleteUser(this.user.id, subscriptionId).subscribe(() => {\n this.router.navigate(['logout']);\n });\n }\n\n showPrivacyAndTos(product: Product) {\n this.productId = product.id;\n this.productName = product.name;\n this.showTos = true;\n }\n\n onCancel() {\n this.showTos = false;\n }\n\n trackBySubscription(_index: number, item: { id: number }) {\n return item.id;\n }\n\n trackByProduct(_index: number, item: { id: number }) {\n return item.id;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<ng-container *ngIf=\"!showTos\">\n <!-- Subscriptions Tab Content -->\n <div class=\"row\"\n *ngIf=\"!editing && !isAddNew\">\n <div class=\"col-12\">\n <h2>Your Subscriptions</h2>\n <p class=\"float-start\">You'll find in this section the summary of your subscriptions.</p>\n <div class=\"text-end\">\n <!-- Delete Account -->\n <button type=\"button\"\n class=\"btn btn-sm btn-outline-danger px-3 mt-2 me-2 me-sm-2\"\n (click)=\"showModalForAccountDeletion()\"\n [pTooltip]=\"'User.Account.Tooltip.DeleteAccount' | transloco\"\n tooltipPosition=\"bottom\">\n {{ 'User.Account.DeleteAccount' | transloco }}\n </button>\n </div>\n </div>\n </div>\n <!-- Subscribed Product Cards -->\n\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"row\"\n *ngIf=\"\n !editing && !isAddNew && !isUpdatePayment && isLoaded && subscribedSubscriptions.length\n \">\n <div class=\"col-12 col-md-6 my-4\"\n *ngFor=\"let subscription of subscribedSubscriptions; trackBy: trackBySubscription\">\n <div class=\"subscription-details mb-4\">\n <div class=\"float-start\">\n <div>\n <strong>Organisation:</strong>\n {{\n subscription.organisation\n ? subscription.organisation\n : subscription.contact_name\n }}\n </div>\n <div>\n <strong>{{ 'User.Subscriptions.TotalPriceExclTax' | transloco }}:</strong>\n <ng-template [ngIf]=\"subscription.calculated_price\"\n [ngIfElse]=\"freeProductRef\">\n {{\n subscription.calculated_price / 100\n | currency: subscription.products[0]?.currency:'symbol-narrow'\n }}\n {{ subscription.products[0].trial_subscription ? '(After Trial)' : '' }}\n </ng-template>\n <ng-template #freeProductRef> Free </ng-template>\n </div>\n <div>\n <strong>{{ 'User.Subscriptions.TotalPurchasedSeats' | transloco }}:</strong>\n {{ subscription.purchased_units }}\n </div>\n <div>\n <div>\n <strong>{{ 'User.Subscriptions.SeatsInUse' | transloco }}:</strong>\n {{ subscription.units_in_use || 1 }}\n </div>\n </div>\n </div>\n\n <!-- Products list -->\n <div *ngFor=\"\n let product of subscription.products;\n let first = first;\n trackBy: trackByProduct\n \">\n <ng-container *ngIf=\"first\">\n <!-- Edit -->\n <div *ngIf=\"\n !product.deleted &&\n (subscription.is_subscription_owner ||\n subscription.is_subscription_admin) &&\n !product.dependency_products?.length\n \"\n class=\"float-end m-2 m-sm-2\">\n <a class=\"btn btn-outline-primary btn-sm mx-1\"\n aria-label=\"Navigate to Target\"\n [routerLink]=\"['../subscriptions', subscription.id]\">\n {{ 'Button.Edit' | transloco }}\n </a>\n <button [routerLink]=\"['../subscriptions', subscription.id, 'credential']\"\n *ngIf=\"\n !product.expired &&\n !product.deleted &&\n !product.trial_subscription\n \"\n class=\"btn btn-dark btn-sm float-end mx-1\">\n {{ 'User.Subscriptions.Credentials' | transloco }}\n </button>\n <!-- Update Card Details -->\n <a class=\"btn btn-sm btn-outline-primary mx-1 me-sm-2\"\n *ngIf=\"!isUpdatePayment && subscription.stripe_customer_id\"\n [routerLink]=\"[\n '../subscriptions',\n subscription.id,\n 'product',\n product.id,\n 'update-payment'\n ]\">\n <i class=\"fa fa-edit\" aria-hidden=\"true\"></i>\n {{ 'User.Subscriptions.UpdateCardDetails' | transloco }}</a>\n </div>\n <!-- Add New Subscription -->\n <div class=\"float-end m-2 m-sm-2\"\n *ngIf=\"\n !product.deleted &&\n (subscription.is_subscription_owner ||\n subscription.is_subscription_admin) &&\n !product.dependency_products?.length\n \">\n <button class=\"btn btn-sm btn-primary\"\n [routerLink]=\"'/account/subscriptions/add-new'\"\n [queryParams]=\"{ subscription_id: subscription.id }\"\n [pTooltip]=\"\n 'User.Subscriptions.Tooltip.ManageAllProducts' | transloco\n \"\n tooltipPosition=\"bottom\">\n <i class=\"fa fa-plus-circle\"></i>\n {{ 'User.Subscriptions.SeeAllProducts' | transloco }}\n </button>\n </div>\n </ng-container>\n <div class=\"card subscription-products-cards\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <div>\n <h4 class=\"mb-3 text-bold-500 primary\">{{ product?.name }}</h4>\n <!-- Frequency -->\n <div>\n <div>\n <strong class=\"d-inline-block w-50\">{{\n 'User.Subscriptions.Frequency' | transloco\n }}:</strong>\n {{ product?.billing_frequency | uppercase }}\n </div>\n </div>\n <!-- Expiration -->\n <div [ngClass]=\"{ 'text-danger': product.expired }\">\n <strong class=\"d-inline-block w-50\">{{\n product.expired ? 'Expired' : 'Expiry Date'\n }}:</strong>\n {{ product.expires_at | dateFormat }}\n </div>\n <!-- Estimated Price -->\n <div [ngClass]=\"{ 'text-danger': product.expired }\">\n <strong class=\"d-inline-block w-50\">{{\n 'User.Subscriptions.PriceExclTax' | transloco\n }}:</strong>\n {{ product.currency }}\n {{ (product.calculated_price / 100) | number:'1.2-2' }}\n </div>\n <!-- API Key -->\n <ng-template [ngIf]=\"\n (product.stripe_plan_id && product.max_hits > 0) ||\n product.max_hits_trial > 0\n \">\n <div class=\"d-inline\">\n <strong class=\"d-inline-block w-50\">{{\n 'User.Subscriptions.ApiKey' | transloco\n }}:</strong>\n <code class=\"d-inline me-2\">{{ product.masked }}</code>\n </div>\n <div class=\"float-end\">\n <!-- Show Access Key -->\n <button class=\"btn\"\n ngbTooltip=\"Show Access Key\"\n (click)=\"showKey(product)\">\n <i class=\"fas fa-eye\" aria-hidden=\"true\"></i>\n </button>\n <!-- Copy To Clipboard -->\n <button class=\"btn\"\n ngbTooltip=\"Copy Key\">\n <i\n class=\"fal fa-copy\"\n aria-hidden=\"true\"\n (click)=\"\n onClipboardCopy(product.api_access_token)\n \"\n (keydown.enter)=\"onClipboardCopy(product.api_access_token)\"\n ></i>\n </button>\n <!-- Update API Key -->\n <button class=\"btn\"\n ngbTooltip=\"Change Key\"\n *ngIf=\"!product.expired && !product.deleted\"\n (click)=\"updateApiKey(product)\">\n <i class=\"fal fa-sync-alt\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </ng-template>\n <div class=\"clearfix\"></div>\n </div>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-start\">\n <div *ngIf=\"product.deleted && !product.expired\">\n <i class=\"fa fa-info-circle me-2\" aria-hidden=\"true\"></i>{{ 'User.Subscriptions.OutdatedMessage' | transloco }}\n </div>\n <div>\n <span *ngIf=\"product.deleted\"\n class=\"badge bg-danger me-2\">Deleted</span>\n <span class=\"badge bg-warning me-2\"\n *ngIf=\"\n product.trial_subscription &&\n product.calculated_price\n \">\n Trial</span>\n <span class=\"badge bg-grey me-2\"\n *ngIf=\"product?.pause_collection && objectKeys(product?.pause_collection)?.length\"\n [pTooltip]=\"'User.Subscriptions.Tooltip.PausedCollection'|transloco\"\n tooltipPosition=\"top\">\n Paused collection\n </span>\n <span class=\"badge bg-success me-2\"\n *ngIf=\"!product.calculated_price\">\n Free\n </span>\n </div>\n </div>\n <ng-template [ngIf]=\"\n subscription.is_subscription_owner ||\n subscription.is_subscription_admin\n \">\n <!-- Unsubscribe -->\n <button class=\"btn btn-outline-danger btn-sm float-end me-2\"\n *ngIf=\"\n subscription?.stripe_customer_id&&\n !product?.deleted &&\n !product?.trial_subscription\n \"\n (click)=\"attemptUnsubscribe(subscription, product.id)\">\n {{ 'User.Subscriptions.Unsubscribe' | transloco }}\n </button>\n <button class=\"badge bg-dark me-2 float-end\"\n *ngIf=\"product?.product_privacy_service_id\"\n (click)=\"showPrivacyAndTos(product)\">\n {{\n 'User.Subscriptions.PrivacyAndTermsOfService'\n | transloco\n }}\n </button>\n\n <ng-template [ngIf]=\"product.stripe_plan_id && product.active\">\n <!-- Upgrade -->\n <button class=\"btn btn-primary btn-sm me-2 float-end\"\n *ngIf=\"product.trial_subscription && !product.deleted\"\n (click)=\"attemptUpgrade(subscription, product)\">\n {{ 'Button.Upgrade' | transloco }}\n </button>\n <!-- Subscribe -->\n <button class=\"btn btn-primary btn-sm float-start\"\n *ngIf=\"subscription.expired && product.stripe_plan_id\"\n [routerLink]=\"'/account/subscriptions/add-new'\">\n {{ 'User.Subscriptions.Subscribe' | transloco }}\n </button>\n </ng-template>\n </ng-template>\n <div *ngIf=\"!product?.deleted && !subscription.is_subscription_owner\">\n <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i> Invited to\n use this product\n <span *ngIf=\"subscription.is_subscription_admin\"\n class=\"fw-bold\">as an admin</span>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"subscription.products.length === 0\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <p class=\"text-center\">\n No product available for this subscription\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12\"\n *ngIf=\"!editing && !isAddNew && !isUpdatePayment\">\n <pw-no-data [withImage]=\"true\" message=\"You don't have any subscription.\"\n *ngIf=\"subscribedSubscriptions.length === 0\">\n </pw-no-data>\n </div>\n </div>\n </div>\n </div>\n\n <!--\n Add New Subscription\n -->\n <!-- <ng-template [ngIf]=\"isAddNew && !isUpdatePayment\">\n <pw-subscription-details></pw-subscription-details>\n </ng-template> -->\n <!--\n Validate Password For Account Delete\n -->\n <pw-password-validation #passwordValidationModalForAccountDelete\n (successEvent)=\"deleteUser($event)\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p>{{ 'User.Account.Message.ActionCanNotUndone' | transloco }}</p>\n <p>{{ 'User.Account.Message.ConfirmPassword' | transloco }}</p>\n </div>\n </div>\n </pw-password-validation>\n <!--\n Validate Password For Display Key\n -->\n <pw-password-validation #passwordValidationModalForKey\n (successEvent)=\"displayApiKey()\">\n </pw-password-validation>\n <!--\n Validate Password For Unsubscribe\n -->\n <pw-password-validation #passwordValidationForUnsubscribe\n (successEvent)=\"onValidatePassword($event)\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p>{{ 'User.Account.Message.ActionCanNotUndone' | transloco }}</p>\n <p>{{ 'User.Account.Message.ConfirmPassword' | transloco }}</p>\n </div>\n </div>\n </pw-password-validation>\n</ng-container>\n\n<ng-container *ngIf=\"showTos\">\n <pw-privacy-and-tos [productId]=\"productId\"></pw-privacy-and-tos>\n</ng-container>\n\n<router-outlet></router-outlet>\n","import { Component, Injector, OnDestroy } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { Paging, POLL_TIMEOUT } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { LazyLoadEvent } from 'primeng/api';\nimport { interval, Subscription } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\n\n@Component({\n selector: 'pw-user-invoice',\n templateUrl: './user-invoice.component.html',\n styleUrls: ['./user-invoice.component.scss']\n})\nexport class UserInvoiceComponent extends AppBaseComponent implements OnDestroy {\n invoices = [];\n buttonBusy = false;\n userId: number;\n totalRecordsUnFiltered = 0;\n\n searchText = '';\n subscription: Subscription;\n intervalTimer = interval(POLL_TIMEOUT * 60 * 1000);\n isLoaded = false;\n page = 0;\n totalRecords = 0;\n\n invoiceFrequency = ['week', 'month', 'year'];\n\n constructor(injector: Injector) {\n super(injector);\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.fetchInvoices({\n page: this.page,\n page_size: this.PAGE_SIZE,\n order_by: pageDetails.sortField,\n order_direction: pageDetails.sortOrder,\n search: this.searchText\n });\n }\n\n private fetchInvoices(paging: Paging) {\n this.isLoaded = false;\n this.userStore().subscribe(user => {\n if (user) {\n this.userId = user.id;\n this.userService.getUserInvoices(paging, user.id).subscribe(response => {\n this.isLoaded = true;\n this.invoices = response.invoices;\n this.totalRecords = response.object_count;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n this.pollForInvoices();\n });\n }\n });\n }\n\n private pollForInvoices() {\n this.subscription = this.intervalTimer\n .pipe(mergeMap(() => this.userService.getUserInvoices({}, this.userId)))\n .subscribe(data => {\n this.invoices = data.invoices;\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","<div class=\"row\" [class.custom-disable-wrapper]=\"buttonBusy\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center\">\n <h2 class=\"card-title p-0 float-start\">Your Invoices</h2>\n </div>\n</div>\n\n<div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"></p-progressSpinner>\n</div>\n<div class=\"row primeng-datatable-container mt-0\" [class.custom-disable-wrapper]=\"buttonBusy\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"col-12 px-0\">\n <p-table #tt\n [value]=\"invoices\"\n [paginator]=\"totalRecords !== 0\"\n [rows]=\"PAGE_SIZE\"\n [lazy]=\"true\"\n [totalRecords]=\"totalRecords\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n >\n <ng-template pTemplate=\"caption\">\n <div class=\"search-filter justify-content-end\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n type=\"text\"\n pInputText\n size=\"50\"\n placeholder=\"Search Invoices...\"\n data-cy=\"incident-search\"\n class=\"wd-90\">\n </div>\n </div>\n </ng-template>\n\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"col\" pSortableColumn=\"date\">Invoice Date <p-sortIcon field=\"date\"></p-sortIcon></th>\n <th scope=\"col\" pSortableColumn=\"frequency\">Frequency <p-sortIcon field=\"frequency\"></p-sortIcon></th>\n <th scope=\"col\" pSortableColumn=\"seatsPurchased\">Seats Purchased <p-sortIcon field=\"seatsPurchased\"></p-sortIcon></th>\n <th scope=\"col\" pSortableColumn=\"subtotal\">Subtotal <p-sortIcon field=\"subtotal\"></p-sortIcon></th>\n <th scope=\"col\" pSortableColumn=\"total\">Total (incl. tax) <p-sortIcon field=\"total\"></p-sortIcon></th>\n <th scope=\"col\">Action</th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-invoice>\n <tr>\n <td>{{ invoice.date | date:'dd-MMM-YYYY' }}</td>\n <td>\n <span class=\"badge\"\n [appDynamicBadge]=\"{\n itemsArray: invoiceFrequency,\n item: invoice.product.billing_frequency\n }\"\n color=\"blue-grey\">{{ invoice.product.billing_frequency }}</span>\n </td>\n <td>{{ invoice?.subscription_product?.purchased_units }}</td>\n <td>{{ (invoice.subtotal_in_cents / 100) | currency:invoice?.product?.currency }}</td>\n <td class=\"td-total\">{{ (invoice.total_in_cents / 100) | currency:invoice?.product?.currency }}</td>\n <td>\n <a *ngIf=\"invoice?.file?.url; else noFileUrl\" class=\"btn btn-sm btn-primary\" [attr.href]=\"invoice.file.url\" target=\"_blank\" title=\"Download\">\n <i class=\"fa fa-download\"> Download</i>\n </a>\n <ng-template #noFileUrl>\n <a class=\"btn btn-sm btn-primary\" [attr.href]=\"invoice?.stripe_invoice_pdf\" target=\"_blank\" title=\"Download\">\n <i class=\"fa fa-download\"> Download</i>\n </a>\n </ng-template>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n\n <span *ngIf=\"totalRecords !== 0\" class=\"total-records-count\">Total: {{ totalRecords }}</span>\n\n </div>\n</div>\n<pw-no-data [withImage]=\"true\" message=\"You don't have any invoice yet.\" *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n</pw-no-data>\n\n","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { AppState, getUser } from '@posiwise/app-store';\nimport { CommonService, ProfileService } from '@posiwise/common-services';\nimport { User } from '@posiwise/common-utilities';\n\nimport { Store } from '@ngrx/store';\n\n@Component({\n selector: 'pw-communication-tab',\n templateUrl: './communication-tab.component.html',\n styleUrl: './communication-tab.component.scss'\n})\nexport class CommunicationTabComponent extends AppBaseComponent implements OnInit {\n subscriptions = [];\n userSubscription = [];\n\n isLoaded = false;\n\n user: User;\n\n constructor(\n private readonly commonService: CommonService,\n private readonly profileService: ProfileService,\n private readonly store: Store<AppState>,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getAllSubscription();\n }\n\n private getAllSubscription() {\n this.commonService.getAllNewsletter().subscribe(response => {\n this.store.select(getUser).subscribe(user => {\n if (user?.currentUser) {\n this.user = user.currentUser;\n this.profileService\n .getUserObject('user_newsletters', this.user.slug)\n .subscribe(newsletter => {\n this.isLoaded = true;\n this.userSubscription = newsletter;\n this.subscriptions = response.newsletters;\n if (this.userSubscription.length > 0 && this.subscriptions.length > 0) {\n this.subscriptions.forEach(element => {\n const item = this.userSubscription?.find(\n x => x.newsletter_id === element.id\n );\n element.enabled = item ? item.send_newsletters : false;\n });\n } else {\n this.subscriptions.forEach(element => {\n element.enabled = false;\n });\n }\n });\n }\n });\n });\n }\n\n onValueChange(item, value) {\n const data = {\n send_newsletter: value\n };\n\n if (item.id === 9999) {\n const marketingSubs = {\n id: this.user.id,\n send_marketing_emails: value\n };\n this.profileService.updateUserProfile(marketingSubs).subscribe(() => {\n this.updateUser();\n this.toast.success(this.translation.translate('User.Settings.UpdatedMessage'));\n });\n } else {\n this.commonService.toggleNewsletter(item.id, data).subscribe(() => {\n this.updateUser();\n this.toast.success(\n this.translation.translate('User.Settings.Communications.UpdatedMessage')\n );\n });\n }\n }\n\n updateUser() {\n // this.userService.getUserInfo().subscribe(resp => {\n // this.localStorage.setItem('user', JSON.stringify(resp)).subscribe();\n // });\n }\n}\n","<div class=\"row\">\n <div class=\"col-12\">\n <h2>Communication preferences</h2>\n\n <p>\n Although sometimes we do need to communicate with you - for example if you contact\n Support, or if we need to send you a receipt or invoice - we make a clear distinction\n between transactional and non-transactional communications.\n </p>\n\n <p>\n You will always receive the transactional communications but you can decide to opt out\n from all the not transactional ones. To do so, you’ll just need to turn the switch off\n in the list of available communication provided below.\n </p>\n </div>\n\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n</div>\n\n<div class=\"row mt-4 pt-1\"\n *ngIf=\"isLoaded\">\n <div class=\"col-md-6 col-sm-6\">\n <ng-container *ngFor=\"let item of subscriptions; let idx = index\">\n <div class=\"mb-3\"\n *ngIf=\"item.visible || item.enabled\">\n <div class=\"row\">\n <div class=\"col-md-10 col-sm-6\">\n <label for=\"name\">{{ item.name }}</label>\n </div>\n <div class=\"col-md-2 col-sm-6\">\n <ui-switch [checked]=\"item.enabled\"\n checkedLabel=\"on\"\n uncheckedLabel=\"off\"\n (valueChange)=\"onValueChange(item, $event)\">\n </ui-switch>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n\n\n<pw-no-data [withImage]=\"true\" message=\"You don't have any communication preferences yet.\" *ngIf=\"subscriptions.length === 0 && isLoaded\">\n</pw-no-data>\n","import { Component, Injector, OnDestroy, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { CommonService } from '@posiwise/common-services';\n\n@Component({\n selector: 'pw-others-tab',\n templateUrl: './others-tab.component.html'\n})\nexport class OthersTabComponent extends AppBaseComponent implements OnInit, OnDestroy {\n subscriptionConfigs = [];\n globalConfigs = [];\n\n userId: number;\n\n isLoaded = false;\n\n constructor(\n private readonly commonService: CommonService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit(): void {\n this.getGlobalConfigs();\n this.userStore().subscribe(res => {\n if (res) {\n this.userId = res.id;\n }\n });\n }\n\n private getGlobalSubscriptionConfig() {\n this.commonService\n .getAllGlobalSubscriptionConfigs()\n .subscribe(response => {\n this.subscriptionConfigs = response.global_subscription_configs;\n this.globalConfigs.forEach(globalConfig => {\n const config = this.subscriptionConfigs?.find(\n subscriptionConfig =>\n subscriptionConfig.global_config_id === globalConfig?.id\n );\n globalConfig.value = config?.value;\n globalConfig.global_subscription_config_id = config?.id;\n });\n })\n .add(() => {\n this.isLoaded = true;\n });\n }\n\n private getGlobalConfigs() {\n this.commonService.getAllGlobalConfigs().subscribe(response => {\n this.globalConfigs = response.global_configs;\n this.getGlobalSubscriptionConfig();\n });\n }\n\n onValueChange(item, value) {\n const data = {\n user_id: this.userId,\n value,\n global_config_id: item?.id\n };\n const sub$ = item?.global_subscription_config_id\n ? this.commonService.editGlobalSubscriptionConfig(\n item?.global_subscription_config_id,\n data\n )\n : this.commonService.postGlobalSubscriptionConfig(data);\n sub$.subscribe(() => {\n this.toast.success(this.translation.translate('User.OtherSettings.UpdatedMessage'));\n }).add(() => {\n this.getGlobalConfigs();\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"row\">\n <div class=\"col-12\">\n <h2>Other</h2>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"row mt-4 pt-1\"\n *ngIf=\"isLoaded && globalConfigs?.length\">\n <div class=\"col-md-6 col-sm-6\">\n <ng-container *ngFor=\"let item of globalConfigs; let idx = index\">\n <div class=\"mb-3\">\n <div class=\"row\">\n <div class=\"col-md-10 col-sm-6\">\n <label for=\"name\"> {{ item?.name }} </label>\n </div>\n <div class=\"col-md-2 col-sm-6\">\n <ui-switch [checked]=\"item.value === 'true'\"\n checkedLabel=\"on\"\n uncheckedLabel=\"off\"\n (valueChange)=\"onValueChange(item, $event)\">\n </ui-switch>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div *ngIf=\"isLoaded && !globalConfigs?.length\">\n <pw-no-data [withImage]=\"true\" [message]=\"'User.OtherSettings.NoDataMessage' | transloco\"> </pw-no-data>\n</div>\n","import { Component, ElementRef, Injector, OnInit, ViewChild } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\n\nimport { StatusCodes } from 'http-status-codes';\n\n@Component({\n selector: 'pw-security-tab',\n templateUrl: './security-tab.component.html',\n styleUrls: ['./security-tab.component.scss']\n})\nexport class SecurityTabComponent extends AppBaseComponent implements OnInit {\n @ViewChild('password', { static: false }) passwordRef: ElementRef;\n @ViewChild('verificationCode', { static: false }) verificationCode: ElementRef;\n\n @ViewChild('ssoPassword', { static: false }) ssoPasswordRef: ElementRef;\n\n showSSOSection = false;\n ssoPasswordVerified = false;\n isSSOPasswordInvalid = true;\n\n user;\n\n isCurrentPasswordValid = true;\n passwordVerified = false;\n show2FA = false;\n\n created2faDetails: object;\n\n constructor(injector: Injector) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUser();\n }\n\n private getUser() {\n this.userService.getUserInfo().subscribe(res => {\n this.user = res;\n });\n }\n\n validatePassword() {\n const password = this.passwordRef.nativeElement.value;\n if (password) {\n this.userService.checkPassword({ password }).subscribe({\n next: data => {\n if (data?.status === StatusCodes.OK) {\n if (this.user?.enable_two_factor_authenticator === false) {\n this.passwordVerified = true;\n this.create2FA();\n } else {\n this.disable2FA();\n }\n }\n },\n error: err => {\n if (err) {\n this.toast.error(err.error.message);\n this.passwordRef.nativeElement.value = '';\n }\n }\n });\n }\n }\n\n checkValidity() {\n const password = this.passwordRef.nativeElement.value;\n if (password.length > 5) {\n this.isCurrentPasswordValid = false;\n } else {\n this.isCurrentPasswordValid = true;\n }\n }\n\n private create2FA() {\n this.userService.createTwoFactorAuthenticator().subscribe(res => {\n this.created2faDetails = res;\n });\n }\n\n verify2FA() {\n this.userService\n .verifyTwoFactorAuthenticator(this.verificationCode.nativeElement.value)\n .subscribe(() => {\n this.enable2FA();\n });\n }\n\n private enable2FA() {\n this.userService\n .enableTwoFactorAuthenticator(this.verificationCode.nativeElement.value)\n .subscribe(_ => {\n this.getUser();\n this.reset();\n });\n }\n\n private disable2FA() {\n this.userService.disableTwoFactorAuthenticator().subscribe(_ => {\n this.getUser();\n this.reset();\n });\n }\n\n reset() {\n this.show2FA = false;\n this.isCurrentPasswordValid = true;\n this.passwordVerified = false;\n this.created2faDetails = {};\n }\n\n checkSSOPasswordValidity() {\n const password = this.ssoPasswordRef.nativeElement.value;\n this.isSSOPasswordInvalid = password.length <= 5;\n }\n\n validateSSOPassword() {\n const password = this.ssoPasswordRef.nativeElement.value;\n if (password) {\n this.userService.checkPassword({ password }).subscribe({\n next: data => {\n if (data?.status === StatusCodes.OK) {\n this.ssoPasswordVerified = true;\n }\n },\n error: err => {\n this.toast.error(err.error.message);\n this.ssoPasswordRef.nativeElement.value = '';\n }\n });\n }\n }\n\n triggerSSO() {\n this.userService.sendSSOActivationEmail().subscribe(() => {\n this.toast.success(\n this.user?.cognito_sso_activated\n ? 'Activation email resent successfully.'\n : 'SSO activation email sent successfully.'\n );\n this.getUser();\n this.resetSSO();\n });\n }\n\n resetSSO() {\n this.showSSOSection = false;\n this.ssoPasswordVerified = false;\n this.isSSOPasswordInvalid = true;\n if (this.ssoPasswordRef?.nativeElement) {\n this.ssoPasswordRef.nativeElement.value = '';\n }\n }\n}\n","<div class=\"row\">\n <div class=\"col-12\">\n <h2>Security settings</h2>\n </div>\n</div>\n<p-accordion>\n <p-accordionTab header=\"Two Factor Authentication (2FA)\">\n <div class=\"row mt-2\">\n <div class=\"col-12\">\n <div class=\"d-flex\">\n <p class=\"small text-muted\"> Add an extra layer of security to your user account by asking to verify their\n identity when they enter a username and password </p>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n <!-- Disable 2FA -->\n <button class=\"btn btn-danger\" *ngIf=\"user?.enable_two_factor_authenticator\" (click)=\"show2FA = true\"> Disable\n </button>\n <!-- Enable 2FA -->\n <button class=\"btn btn-primary\" *ngIf=\"!user?.enable_two_factor_authenticator\"\n [disabled]=\"created2faDetails?.code\" (click)=\"show2FA = true\"> Enable </button>\n </div>\n </div>\n <div class=\"row\" *ngIf=\"show2FA\">\n <div class=\"col-12 col-md-6 col-lg-4 mt-2\">\n <div class=\"mb-3\">\n <input type=\"password\" class=\"form-control\" #password *ngIf=\"!passwordVerified\" placeholder=\"Current Password\"\n (keyup)=\"checkValidity()\" />\n </div>\n </div>\n <div *ngIf=\"created2faDetails?.code\" class=\"col-12\">\n <p class=\"small\"> Scan the QR code below or use secret manually with the Google authenticator app on your mobile\n device, after that fill in the field below with the code generated in the app </p>\n <img [src]=\"created2faDetails?.qr_uri\" alt=\"loading QR code...\" class=\"qr-code img-thumbnail img-responsive\" />\n <strong> Secret Key: {{ created2faDetails?.code }}</strong>\n <p class=\"small\">Auth Type: Time Based OTP</p>\n </div>\n </div>\n <div class=\"row\" *ngIf=\"show2FA\">\n <div class=\"col-4\">\n <div class=\"mb-3 mt-2\">\n <input type=\"text\" #verificationCode class=\"form-control\" *ngIf=\"passwordVerified\"\n placeholder=\"Provide passcode from authenticator app\" />\n </div>\n </div>\n <div class=\"col-12\" *ngIf=\"show2FA\">\n <div class=\"d-flex mt-2\">\n <button class=\"btn btn-raised btn-outline-default me-2\" (click)=\"reset()\"> Cancel </button>\n <button class=\"btn btn-raised btn-primary\" *ngIf=\"!passwordVerified\" (click)=\"validatePassword()\"\n [disabled]=\"isCurrentPasswordValid\"> Validate </button>\n <button class=\"btn btn-raised btn-primary\" *ngIf=\"passwordVerified\" (click)=\"verify2FA()\"> Confirm </button>\n </div>\n </div>\n </div>\n </p-accordionTab>\n</p-accordion>\n<p-accordion>\n <p-accordionTab header=\"Single Sign On (SSO) - AWS Cognito\">\n <div class=\"row mt-2\">\n <div class=\"col-12\">\n <p class=\"small text-muted\"> {{ user?.cognito_sso_activated ? 'You have already activated AWS Cognito SSO, if you click on ‘Resend activation email‘ you‘ll receive an email with instructions to reset your SSO\n password.' : 'Once you click ‘Enable’, you’ll receive an email with instructions to activate your AWS Cognito\n SSO. This will enable you to access all our systems using a single password.' }} </p>\n </div>\n </div>\n <!-- Enable or Resend Button -->\n <div class=\"row\" *ngIf=\"!showSSOSection\">\n <div class=\"col-12\">\n <button class=\"btn btn-primary\" (click)=\"showSSOSection = true\"> {{ user?.cognito_sso_activated ? 'Resend\n activation email' : 'Enable' }} </button>\n </div>\n </div>\n <!-- Password Validation -->\n <div class=\"row\" *ngIf=\"showSSOSection\">\n <div class=\"col-12 col-md-6 col-lg-4 mt-2\" *ngIf=\"!ssoPasswordVerified\">\n <div class=\"mb-3\">\n <input type=\"password\" class=\"form-control\" #ssoPassword placeholder=\"Current Password\"\n (keyup)=\"checkSSOPasswordValidity()\" />\n </div>\n </div>\n <div class=\"col-12\">\n <div class=\"d-flex mt-2\">\n <button class=\"btn btn-raised btn-outline-default me-2\" (click)=\"resetSSO()\"> Cancel </button>\n <button class=\"btn btn-raised btn-primary\" *ngIf=\"!ssoPasswordVerified\" (click)=\"validateSSOPassword()\"\n [disabled]=\"isSSOPasswordInvalid\"> Validate </button>\n <button class=\"btn btn-primary\" *ngIf=\"ssoPasswordVerified\" (click)=\"triggerSSO()\"> Confirm </button>\n </div>\n </div>\n </div>\n </p-accordionTab>\n</p-accordion>\n","import { Component, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { PermissionService } from '@posiwise/common-services';\n\nimport { MenuItem } from 'primeng/api';\n\n@Component({\n selector: 'pw-settings',\n templateUrl: './settings-tabs.component.html'\n})\nexport class SettingsComponent {\n @ViewChild('menuItems', { static: true }) menu: MenuItem[];\n\n items: MenuItem[];\n activeItem: MenuItem;\n\n constructor(\n private readonly router: Router,\n private readonly permissionService: PermissionService\n ) {\n this.items = [\n {\n id: 'communications',\n label: 'Communications',\n icon: 'fa fa-fw fa-cogs',\n routerLink: ['/settings/communication']\n },\n {\n id: 'security',\n label: 'Security',\n icon: 'fa fa-fw fa-lock',\n routerLink: ['/settings/security']\n },\n {\n id: 'other',\n label: 'Other',\n icon: 'fa fa-fw fa-list',\n routerLink: ['/settings/other']\n }\n ];\n this.activeItem =\n this.items[\n this.items.findIndex(\n record => record.routerLink[0] === this.router.url.split('?')[0]\n )\n ];\n }\n\n activateMenu() {\n this.activeItem = this.menu['activeItem'];\n }\n}\n","<pw-tabs [items]=\"items\"></pw-tabs>\n","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { CommonService, PermissionService } from '@posiwise/common-services';\n\n@Component({\n selector: 'pw-support',\n templateUrl: './support.component.html',\n styleUrls: ['./support.component.scss']\n})\nexport class SupportComponent extends AppBaseComponent implements OnInit {\n supports = [];\n\n subscriptionId: number;\n\n isLoading: boolean;\n\n isLoaded = false;\n\n constructor(\n injector: Injector,\n private readonly commonService: CommonService\n ) {\n super(injector);\n }\n\n ngOnInit(): void {\n this.subscriptionId = PermissionService.selectedSubscription?.id;\n this.getAllSupport();\n }\n\n private getAllSupport() {\n this.isLoading = true;\n this.commonService\n .getAllCustomerSupport(this.subscriptionId)\n .subscribe(response => {\n this.supports = response;\n })\n .add(() => {\n this.isLoading = false;\n this.isLoaded = true;\n });\n }\n}\n","<div class=\"row m-3\">\n <div class=\"col-12 mb-3\">\n <div\n\t\tclass=\"col-12 d-flex flex-wrap justify-content-between align-items-center mt-4\">\n\t\t<h2 class=\"card-title p-0 float-start\">Support Center</h2>\n\t\t<a routerLink=\"/support-details/add\"\n\t\t\taria-label=\"Navigate to Target\"\n\t\t\tclass=\"btn btn-sm btn-outline-primary float-end\"\n tabindex=\"0\"\n (keydown)=\"$event.key === 'Enter' && $event.target.click()\"\n\t\t\taria-expanded=\"false\">\n\t\t\t<i class=\"fa fa-plus-circle\"\n\t\t\t\taria-hidden=\"true\"></i>\n Create new support request\n\t\t</a>\n\t</div>\n </div>\n <div class=\"col-12 my-3\">\n <h3>Previous support requests</h3>\n <p>Please note that responses to your support requests are sent directly to your email. You can simply reply to those\n emails for further assistance.</p>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"isLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"col-12 mb-3\">\n <p-accordion>\n <p-accordionTab *ngFor=\"let item of supports\"\n header=\"{{ item?.created_at | dateFormat }} ({{ item?.user_name }}) {{ item?.title }}\">\n <p>{{ item?.description }}</p>\n <a [href]=\"item?.attachment?.version_200x200?.url\"\n target=\"_blank\">\n <img alt=\"version_200x200\"\n *ngIf=\"item?.attachment?.version_200x200?.url\"\n [src]=\"item?.attachment?.version_200x200?.url\"\n class=\"img-fluid\" /></a>\n </p-accordionTab>\n </p-accordion>\n </div>\n <div class=\"col-12\"\n *ngIf=\"!supports?.length && isLoaded\">\n <pw-no-data [withImage]=\"true\" message=\"No support requests found\"> </pw-no-data>\n </div>\n</div>\n","import { AfterViewInit, Component, ElementRef, Injector, OnInit, Renderer2 } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n\nimport { AppAdmin } from '@posiwise/admin-module-utils';\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { AuthService, CommonService, PermissionService } from '@posiwise/common-services';\nimport { HelperService } from '@posiwise/helper-service';\nimport { ValidateForm } from '@posiwise/utils';\n\n@Component({\n selector: 'pw-support-details',\n templateUrl: './support-details.component.html',\n styleUrls: ['./support-details.component.scss']\n})\nexport class SupportDetailsComponent extends AppBaseComponent implements AfterViewInit, OnInit {\n form: UntypedFormGroup;\n\n uploadedFiles = [];\n\n invalidFile = false;\n isSubmitClicked = false;\n\n siteKey: string;\n\n recaptcha = null;\n\n isLoading: boolean;\n filesUploaded: boolean;\n subscriptionId;\n\n constructor(\n injector: Injector,\n private readonly commonService: CommonService,\n private readonly authService: AuthService,\n private readonly renderer: Renderer2,\n private readonly el: ElementRef\n ) {\n super(injector);\n this.form = AppAdmin.customerSupportForm();\n this.form.get('product_id').setValue(PermissionService.selectedProduct.id);\n this.siteKey = this.appConfig.integrations.captcha_key_V2;\n }\n\n ngOnInit(): void {\n this.subscriptionId = PermissionService.selectedSubscription?.id;\n }\n\n ngAfterViewInit() {\n this.attachCloseButtonListener();\n }\n\n @ValidateForm('form')\n onSave() {\n this.isSubmitClicked = true;\n }\n\n handleSuccess(token: string) {\n if (token) {\n this.authService.validateReCaptcha(token).subscribe((isSuccess: boolean) => {\n if (isSuccess) {\n this.isLoading = true;\n const data = {\n ...this.form.value\n };\n if (this.uploadedFiles.length > 0) {\n data.attachment = this.uploadedFiles[0];\n }\n if (!data.attachment) {\n delete data.attachment;\n }\n this.commonService\n .postCustomerSupport({ ...data, subscription_id: this.subscriptionId })\n .subscribe(() => {\n this.back();\n })\n .add(() => {\n this.isLoading = false;\n this.isSubmitClicked = false;\n });\n }\n });\n }\n }\n\n onSelect(event = null) {\n this.invalidFile = false;\n for (const file of event.files) {\n if (!HelperService.validateFile(file, this.toast)) {\n this.invalidFile = true;\n } else {\n this.uploadedFiles.push(file);\n }\n }\n this.filesUploaded = true;\n\n if (this.invalidFile) {\n setTimeout(() => this.attachCloseButtonListener(), 0);\n }\n }\n\n onRemove(event) {\n this.uploadedFiles = this.uploadedFiles.filter(x => event.file.name !== x.name);\n if (this.uploadedFiles.length === 0) {\n this.filesUploaded = false;\n }\n this.invalidFile = false;\n }\n\n attachCloseButtonListener() {\n const closeButton = this.el.nativeElement.querySelector('.p-message-close');\n\n if (closeButton) {\n this.renderer.listen(closeButton, 'click', () => {\n this.handleCloseButtonClick();\n });\n }\n }\n\n handleCloseButtonClick() {\n this.invalidFile = false;\n this.filesUploaded = false;\n }\n\n onUploadError(event) {\n HelperService.onUploadError(event, this.toast);\n }\n}\n","<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\" (click)=\"back()\" class=\"previous\"><i\n class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">{{ 'Label.NewSupport' | transloco }}</h3>\n </div>\n <div class=\"p-2 m-1 mt-3\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"col-12\">\n <pw-input-container label=\"title\"\n name=\"title\"\n errorMsg=\"Title is required\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"title\" />\n </pw-input-container>\n </div>\n <div class=\"col-12 col-sm-12\">\n <pw-input-container label=\"Description\"\n errorMsg=\"description is required\"\n name=\"description\">\n <textarea rows=\"3\"\n type=\"text\"\n class=\"form-control\"\n formControlName=\"description\"\n id=\"description\"></textarea>\n </pw-input-container>\n </div>\n <div class=\"col-12 col-md-6\">\n <h4 class=\"mt-4\">You can add a picture here</h4>\n <div class=\"mb-3 file-upload-support-details\">\n <label for=\"file\">Upload Picture</label>\n <p-fileUpload #forms\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"image/*\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\"\n [ngIf]=\"uploadedFiles?.length\">\n <div class=\"drag-drop-text\" *ngIf=\"!filesUploaded && (!uploadedFiles || uploadedFiles.length === 0)\">\n <p>You can drag and drop your file here</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"isLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"col-12 text-end mt-3\">\n <ng-container *ngIf=\"isSubmitClicked\">\n <div class=\"support-details-captcha\">\n <ngx-recaptcha2 [ngModelOptions]=\"{ standalone: true }\"\n [siteKey]=\"siteKey\"\n size=\"normal\"\n [(ngModel)]=\"recaptcha\"\n (success)=\"handleSuccess($event)\">\n </ngx-recaptcha2>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!isSubmitClicked\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"back()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </ng-container>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild } from '@angular/core';\n\nimport { ProfileService } from '@posiwise/common-services';\nimport { Subscription } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { FileUpload } from 'primeng/fileupload';\nimport { forkJoin, Observable } from 'rxjs';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { ModalContext } from '../../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-edit-portfolios',\n templateUrl: './edit-portfolios.component.html',\n styleUrls: ['./edit-portfolios.component.scss']\n})\nexport class EditPortfoliosComponent {\n @ViewChild('content', { static: true }) content: TemplateRef<ModalContext>;\n @ViewChild('form', { static: false }) uploader: FileUpload;\n\n @Output() successEvent: EventEmitter<boolean> = new EventEmitter();\n\n @Input() id: number;\n @Input() slug: string;\n\n uploadedFiles = [];\n project = [];\n projectPictures = [];\n\n busy: boolean;\n filesUploaded: boolean;\n\n constructor(\n private readonly modalService: NgbModal,\n private readonly profileService: ProfileService\n ) {}\n\n openModal(id: number) {\n this.id = 0;\n this.id = id;\n this.modalService.open(this.content, {\n centered: true,\n size: 'lg',\n windowClass: 'modal-holder'\n });\n }\n\n onSelect(event = null) {\n // eslint-disable-next-line no-restricted-syntax\n for (const file of event.files) {\n if (HelperService.validateFile(file)) {\n this.uploadedFiles.push(file);\n }\n }\n this.filesUploaded = true;\n }\n\n getProjectPictures() {\n this.profileService.getProjectPictures(this.slug).subscribe(response => {\n if (response.length > 0) {\n this.projectPictures = response.flatMap(x => x.project_pictures);\n }\n });\n }\n\n /**\n * Uploads multiple images for the project\n * @param form\n */\n onSave(form) {\n if (this.uploadedFiles.length > 0) {\n this.busy = true;\n const subscriptions$: Observable<Subscription>[] = [];\n this.uploadedFiles.forEach(file => {\n subscriptions$.push(\n this.profileService.addProjectPictures({\n project_id: Number(this.id),\n image: file\n })\n );\n });\n\n forkJoin(subscriptions$)\n .subscribe({\n next: () => {\n form.clear();\n this.successEvent.emit();\n this.modalService.dismissAll();\n },\n error: () => {\n form.clear();\n this.modalService.dismissAll();\n }\n })\n .add(() => {\n this.busy = false;\n });\n }\n }\n\n deleteProjectPicture(id: number) {\n this.profileService.deletePicture(id).subscribe(_ => {\n this.getProjectPictures();\n });\n }\n\n trackByImage(_index: number, item: { id: number }) {\n return item?.id;\n }\n\n onRemove(event) {\n this.uploadedFiles = this.uploadedFiles.filter(x => event.file.name !== x.name);\n this.filesUploaded = false;\n }\n\n onUploadError(event) {\n HelperService.onUploadError(event);\n }\n}\n","<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">Add/Edit Portfolio Item</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n Add a cover image or a downloadable file for your portfolio item\n <p-fileUpload #form\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\"\n [ngIf]=\"uploadedFiles?.length\">\n <div class=\"drag-drop-text\" *ngIf=\"!filesUploaded && (!uploadedFiles || uploadedFiles.length === 0)\">\n <p>You can drag and drop your file here</p>\n </div>\n </ng-template>\n </p-fileUpload>\n <div class=\"ui-fileupload-content ui-widget-content ui-corner-bottom\">\n <div class=\"ui-fileupload-files\">\n <div class=\"\">\n <h5>Uploaded Pictures</h5>\n <div *ngFor=\"let image of projectPictures; trackBy: trackByImage\"\n class=\"ui-fileupload-row d-inline-block\">\n <div>\n <img [src]=\"image?.picture?.version_50x50?.url\"\n alt=\"\"\n width=\"50\" />\n </div>\n <div class=\"pt-1 ps-1\">\n <button icon=\"pi pi-times\"\n type=\"button\"\n (click)=\"deleteProjectPicture(image.id)\"\n class=\"ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only\">\n <span class=\"ui-button-icon-left ui-clickable pi pi-times\"></span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"modal.close()\">\n Cancel\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n [buttonBusy]=\"busy\"\n (click)=\"onSave(form)\">\n Save\n </button>\n </div>\n</ng-template>\n","import {\n Component,\n EventEmitter,\n Injector,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { ProfileService, ValidationService } from '@posiwise/common-services';\nimport { Project } from '@posiwise/common-utilities';\nimport { appendQueryParam, clearQueryParams, ValidateForm } from '@posiwise/utils';\n\nimport moment from 'moment';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { ModalContext } from '../../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-edit-project-modal',\n templateUrl: './edit-project-modal.component.html',\n styleUrls: ['./edit-project-modal.component.scss']\n})\nexport class EditProjectModalComponent extends AppBaseComponent implements OnInit, OnDestroy {\n @ViewChild('content', { static: true }) content: TemplateRef<ModalContext>;\n\n @Output() cancelEvent: EventEmitter<void> = new EventEmitter();\n @Output() saveEvent: EventEmitter<boolean> = new EventEmitter();\n\n form: UntypedFormGroup;\n\n weeks: number[] = [];\n startYears: number[];\n endYears: number[];\n\n title = 'Add Project';\n\n submitted = false;\n buttonBusy = false;\n\n private currentProject: Project;\n\n userId: number;\n\n constructor(\n public modalService: NgbModal,\n private readonly fb: UntypedFormBuilder,\n private readonly profileService: ProfileService,\n injector: Injector\n ) {\n super(injector);\n this.getForm();\n }\n\n get f() {\n return this.form.controls;\n }\n\n ngOnInit() {\n clearQueryParams(this.router, this.route);\n this.userStore().subscribe(user => {\n this.userId = user.id;\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n getStartYear() {\n const d = new Date(`01 July 1980`);\n const range = [];\n for (let i = new Date().getFullYear(); i >= d.getFullYear(); i--) {\n range.push(i);\n }\n this.startYears = range;\n }\n\n getEndYears(start_year) {\n const range = [];\n for (let i = new Date().getFullYear(); i >= start_year; i--) {\n range.push(i);\n }\n this.endYears = range;\n }\n\n private getWeeks() {\n const endYear = moment([this.form.value['end_year']]);\n const startYear = moment([this.form.value['start_year']]);\n if (endYear) {\n const weeks = endYear.diff(startYear, 'weeks');\n this.weeks = Array.from(Array(weeks).keys());\n }\n }\n\n onOpen(item = null) {\n this.currentProject = item;\n appendQueryParam(this.router, this.route, {\n modal: 'editProjects'\n });\n\n if (item) {\n this.form.patchValue(item);\n this.title = `Edit Project - ${item.title}`;\n this.getStartYear();\n this.getEndYears(item.end_year);\n this.getWeeks();\n } else {\n this.form.reset();\n this.title = 'Add Project';\n }\n\n this.modalService.open(this.content, {\n centered: true,\n size: 'lg',\n windowClass: 'modal-holder'\n });\n }\n\n @ValidateForm('form')\n onSaveDetail() {\n this.submitted = true;\n this.buttonBusy = true;\n const { value } = this.form;\n value.user_id = this.userId;\n\n const subscription$ = this.currentProject?.id\n ? this.profileService.updateProjects(this.currentProject.id, value)\n : this.profileService.addProjects(value);\n subscription$\n .subscribe(() => {\n this.modalService.dismissAll();\n this.toast.success(\n this.translation.translate('User.Profile.Projects.ProjectUpdated')\n );\n this.saveEvent.emit(true);\n })\n .add(() => {\n this.submitted = false;\n this.buttonBusy = false;\n });\n }\n\n private getForm() {\n this.form = this.fb.group({\n start_year: [\n null,\n [\n Validators.required,\n Validators.pattern(ValidationService.CustomValidatorPatterns.Year)\n ]\n ],\n end_year: [\n null,\n [\n Validators.required,\n Validators.pattern(ValidationService.CustomValidatorPatterns.Year)\n ]\n ],\n client_name: [null, Validators.required],\n title: [null, Validators.required],\n description: [null, Validators.required],\n length: ['', [Validators.required, Validators.max(5000)]],\n advertisable: [false],\n syndicated: [false]\n });\n }\n}\n","<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">{{ title }}</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <form [formGroup]=\"form\">\n <div class=\"row p-2\">\n <!-- Title -->\n <pw-input-container class=\"col-12\"\n label=\"Title\"\n name=\"title\"\n errorMsg=\"This field is required.\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"title\"\n [ngClass]=\"{ 'is-invalid': submitted && f.title.errors }\" />\n </pw-input-container>\n <!-- Client Name -->\n <pw-input-container class=\"col-12\"\n label=\"Client Name\"\n name=\"client_name\"\n errorMsg=\"This field is required.\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"client_name\"\n [ngClass]=\"{ 'is-invalid': submitted && f.client_name.errors }\" />\n </pw-input-container>\n <!-- Project Start Year -->\n <pw-input-container class=\"col-4\"\n label=\"Start\"\n name=\"start_year\"\n errorMsg=\"YYYY format date is required\">\n <p-dropdown\n (onShow)=\"getStartYear()\"\n formControlName=\"start_year\"\n [options]=\"startYears\"\n [placeholder]=\"'Select Start Year'\"\n (onChange)=\"getEndYears($event.value)\"\n [ngClass]=\"{ 'is-invalid': submitted && f.start_year.errors }\">\n </p-dropdown>\n </pw-input-container>\n <!-- Project End Year -->\n <pw-input-container class=\"col-4\"\n label=\"End\"\n name=\"end_year\"\n errorMsg=\"YYYY format date is required\">\n <p-dropdown\n formControlName=\"end_year\"\n [options]=\"endYears\"\n [placeholder]=\"'Select End Year'\"\n (onChange)=\"getEndYears($event.value)\"\n [ngClass]=\"{ 'is-invalid': submitted && f.end_year.errors }\">\n </p-dropdown>\n </pw-input-container>\n <!-- Total Weeks Worked -->\n <pw-input-container class=\"col-4\"\n label=\"Weeks worked\"\n name=\"length\"\n errorMsg=\"This field is required. (0-5000)\">\n <input type=\"number\"\n formControlName=\"length\"\n class=\"form-control\"\n placeholder=\"weeks\"\n [ngClass]=\"{ 'is-invalid': submitted && f.length.errors }\" />\n </pw-input-container>\n <!-- Description -->\n <pw-input-container class=\"col-12\"\n label=\"Description\"\n name=\"description\"\n errorMsg=\"This field is required.\">\n <textarea type=\"text\"\n class=\"form-control\"\n formControlName=\"description\"\n required\n [ngClass]=\"{ 'is-invalid': submitted && f.description.errors }\"></textarea>\n </pw-input-container>\n </div>\n </form>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"modal.close()\">\n Cancel\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n (click)=\"onSaveDetail()\">Save</button>\n </div>\n</ng-template>\n","import {\n Component,\n EventEmitter,\n Injector,\n OnInit,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { QualificationService } from '@posiwise/common-services';\nimport { appendQueryParam, clearQueryParams, ValidateForm } from '@posiwise/utils';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { ModalContext } from '../../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-edit-qualifications-modal',\n templateUrl: './edit-qualifications-modal.component.html',\n styleUrls: ['./edit-qualifications-modal.component.scss']\n})\nexport class EditQualificationsModalComponent extends AppBaseComponent implements OnInit {\n @Output()\n saveEvent: EventEmitter<void> = new EventEmitter();\n\n @ViewChild('content', { static: true }) content: TemplateRef<ModalContext>;\n\n title = 'Add Education';\n\n form: UntypedFormGroup;\n\n userId: number;\n\n now: Date = new Date(); // Used for datepicker\n\n minToDate = this.now;\n\n qualifications = [\n { value: 0, label: 'No formal education' },\n { value: 1, label: 'Primary education' },\n { value: 2, label: 'Secondary educ, action or high school' },\n { value: 3, label: 'GED' },\n { value: 4, label: 'Vocational qualification' },\n { value: 5, label: \"Bachelor's degree\" },\n { value: 7, label: \"Master's degree\" },\n { value: 9, label: 'Doctorate or higher' }\n ];\n buttonBusy = false;\n\n constructor(\n public modalService: NgbModal,\n private readonly fb: UntypedFormBuilder,\n private readonly qualificationService: QualificationService,\n injector: Injector\n ) {\n super(injector);\n\n this.form = this.fb.group({\n id: [null],\n school: [null, Validators.required],\n course: [null, Validators.required],\n degree: [null],\n started_on: [null, Validators.required],\n ended_on: [null, Validators.required],\n description: [null],\n points: [null]\n });\n }\n\n ngOnInit() {\n clearQueryParams(this.router, this.route);\n this.userStore().subscribe(response => {\n this.userId = response.id;\n });\n }\n\n onOpen(value = null) {\n appendQueryParam(this.router, this.route, {\n modal: 'editQualifications'\n });\n\n if (value) {\n this.form.patchValue(value);\n this.title = 'Edit Education';\n } else {\n this.form.reset();\n this.title = 'Add Education';\n }\n\n this.modalService.open(this.content, {\n centered: true,\n size: 'lg',\n windowClass: 'modal-holder'\n });\n }\n\n onDateChange(): void {\n const fromDate = this.form.controls['started_on'].value;\n if (fromDate) {\n this.minToDate = new Date(fromDate);\n this.minToDate.setDate(this.minToDate.getDate() + 1);\n }\n }\n\n @ValidateForm('form')\n onSaveDetail() {\n this.buttonBusy = true;\n const data = { ...this.form.value };\n data.user_id = this.userId;\n data.degree = this.qualifications.find(x => x.value === data.points)?.label;\n\n const sub$ = data?.id\n ? this.qualificationService.updateQualifications(data.id, data)\n : this.qualificationService.addQualifications(data);\n\n sub$.subscribe(() => {\n const msg = data.id\n ? this.translation.translate('User.Profile.Qualifications.UpdatedMessage')\n : this.translation.translate('User.Profile.Qualifications.AddedMessage');\n this.toast.success(msg);\n this.saveEvent.emit();\n clearQueryParams(this.router, this.route);\n this.modalService.dismissAll();\n }).add(() => {\n this.buttonBusy = false;\n });\n }\n}\n","<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">{{ title }}</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <form [formGroup]=\"form\">\n <div class=\"row p-2\">\n <pw-input-container class=\"col-12\"\n label=\"School\"\n name=\"school\"\n errorMsg=\"This field is required.\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"school\" />\n </pw-input-container>\n\n <pw-input-container class=\"col-6\"\n label=\"Dates Attended\"\n name=\"started_on\"\n errorMsg=\"This field is required.\">\n <div class=\"ui-fluid\">\n <p-calendar formControlName=\"started_on\"\n [monthNavigator]=\"true\"\n [yearNavigator]=\"true\"\n yearRange=\"1950:2020\"\n (onSelect)=\"onDateChange()\"\n [showIcon]=\"true\"\n dateFormat=\"yy-mm-dd\">\n </p-calendar>\n </div>\n </pw-input-container>\n\n <pw-input-container class=\"col-6\"\n label=\"Dates Completed\"\n name=\"ended_on\"\n errorMsg=\"This field is required.\">\n <div class=\"ui-fluid\">\n <p-calendar formControlName=\"ended_on\"\n [monthNavigator]=\"true\"\n [yearNavigator]=\"true\"\n [showIcon]=\"true\"\n (onSelect)=\"onDateChange()\"\n [minDate]=\"minToDate\"\n dateFormat=\"yy-mm-dd\"\n yearRange=\"1950:2025\"></p-calendar>\n </div>\n </pw-input-container>\n\n <pw-input-container class=\"col-12\"\n label=\"Degree\"\n name=\"points\"\n errorMsg=\"This field is required.\">\n <p-dropdown [options]=\"qualifications\"\n placeholder=\"Select\"\n formControlName=\"points\"></p-dropdown>\n </pw-input-container>\n\n <pw-input-container class=\"col-12\"\n label=\"Course\"\n name=\"course\"\n errorMsg=\"This field is required.\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"course\" />\n </pw-input-container>\n\n <pw-input-container class=\"col-12\"\n label=\"Description\"\n name=\"description\">\n <textarea type=\"text\"\n class=\"form-control\"\n formControlName=\"description\"></textarea>\n </pw-input-container>\n </div>\n </form>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"modal.close()\">\n Cancel\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n (click)=\"onSaveDetail()\">Save</button>\n </div>\n</ng-template>\n\n<i\n class=\"fa fa-lg pi pi-plus-circle float-end mt-2 pt-1 pt-md-0 profile-icons\"\n data-cy=\"add-qualification\"\n (keydown.enter)=\"onOpen()\"\n aria-label=\"Add Qualification\"\n (click)=\"onOpen()\"\n aria-hidden=\"true\"\n></i>\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { ProfileService } from '@posiwise/common-services';\nimport { Project, User } from '@posiwise/common-utilities';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { ModalContext } from '../../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-edit-recommendation-modal',\n templateUrl: './edit-recommendation-modal.component.html'\n})\nexport class EditRecommendationModalComponent {\n @ViewChild('content', { static: true }) content: TemplateRef<ModalContext>;\n\n @Input() user: User;\n\n form: UntypedFormGroup;\n\n title = 'Endorse';\n\n buttonBusy = false;\n\n project = new Project();\n\n constructor(\n public modalService: NgbModal,\n private readonly fb: UntypedFormBuilder,\n private readonly profileService: ProfileService\n ) {\n this.form = this.fb.group({\n project_id: [null],\n user_id: [null],\n description: [null, Validators.required],\n quality: [null],\n time: [null],\n communication: [null]\n });\n }\n\n onOpen(value = null) {\n if (value) {\n this.project = value;\n }\n this.modalService.open(this.content, {\n centered: true,\n size: 'lg',\n windowClass: 'modal-holder'\n });\n }\n\n @ValidateForm('form')\n onSaveDetail() {\n this.buttonBusy = true;\n const data = {\n user_id: this.user.id,\n project_id: this.project.id,\n description: this.form.get('description').value,\n quality: this.form.get('quality').value,\n time: this.form.get('time').value,\n communication: this.form.get('communication').value\n } as object;\n\n this.profileService\n .postProjectRecommendation(data)\n .subscribe(_ => {\n this.modalService.dismissAll();\n })\n .add(() => {\n this.buttonBusy = false;\n });\n }\n}\n","<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">{{ title }}</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <form [formGroup]=\"form\">\n <div class=\"row p-2\">\n <pw-input-container class=\"col-12 col-md-4\"\n label=\"Quality\"\n name=\"quality\"\n errorMsg=\"This field is required.\">\n <p-rating formControlName=\"quality\"\n [cancel]=\"false\"></p-rating>\n </pw-input-container>\n\n <pw-input-container class=\"col-12 col-md-4\"\n label=\"Communication\"\n name=\"communication\"\n errorMsg=\"This field is required.\">\n <p-rating formControlName=\"communication\"\n [cancel]=\"false\"></p-rating>\n </pw-input-container>\n\n <pw-input-container class=\"col-12 col-md-4\"\n label=\"Time\"\n name=\"time\"\n errorMsg=\"This field is required.\">\n <p-rating formControlName=\"time\"\n [cancel]=\"false\"></p-rating>\n </pw-input-container>\n\n <pw-input-container class=\"col-12\"\n label=\"Description\"\n name=\"description\"\n errorMsg=\"This field is required.\">\n <textarea type=\"text\"\n class=\"form-control\"\n formControlName=\"description\"></textarea>\n </pw-input-container>\n </div>\n </form>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"modal.close()\">\n Cancel\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n (click)=\"onSaveDetail()\">Save</button>\n </div>\n</ng-template>\n\n<!-- <i class=\"fal fa-plus-circle fa-2x btn-link float-end btn-add\" (click)=\"onOpen()\" aria-hidden=\"true\"></i> -->\n","import {\n Component,\n EventEmitter,\n Injector,\n Input,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { TAG_ENTITY, TAG_TYPE } from '@posiwise/common-utilities';\nimport { appendQueryParam, clearQueryParams } from '@posiwise/utils';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { ModalContext } from '../../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-edit-skills-modal',\n templateUrl: './edit-skills-modal.component.html'\n})\nexport class EditSkillsModalComponent extends AppBaseComponent {\n @ViewChild('content', { static: true }) content: TemplateRef<ModalContext>;\n\n @Input()\n userId: number;\n\n @Input()\n slug: string;\n\n @Input()\n entityType = TAG_TYPE.SKILLS;\n\n @Input()\n entityEntity = TAG_ENTITY.USER;\n\n @Output()\n saveEvent: EventEmitter<boolean> = new EventEmitter();\n\n allSkills = [];\n\n searchSkills = [];\n\n selectedSkills = [];\n\n constructor(\n private readonly modalService: NgbModal,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n open() {\n this.getSkills();\n this.modalService.open(this.content, { centered: true, windowClass: 'modal-holder' });\n appendQueryParam(this.router, this.route, {\n modal: 'editskills'\n });\n }\n\n /**\n * Populate all the skills for the dropdown\n */\n private getSkills() {\n this.tagService.getTagsByType('skills', {}).subscribe(response => {\n this.allSkills = response.tags;\n this.getEntitySkills();\n });\n }\n\n /**\n * Skills Search\n * @param event: keyword to search\n */\n search(event) {\n let data = [];\n if (event.query) {\n data = this.allSkills.filter(x =>\n x.name.toLowerCase().includes(event.query.toLowerCase())\n );\n } else {\n this.allSkills.forEach(item => {\n data.push(item);\n });\n }\n this.searchSkills = data;\n }\n\n close(modal) {\n modal.close();\n this.selectedSkills = [];\n }\n\n private getEntitySkills() {\n this.tagService\n .getTagsByEntity(this.slug, this.entityEntity, this.entityType)\n .subscribe(response => {\n this.selectedSkills = this.allSkills.filter(item => {\n return response.tags.find(x => x.id === item.id);\n });\n });\n }\n\n saveUserSkills() {\n const skills = [];\n this.selectedSkills.forEach(element => {\n skills.push({\n tag_id: element.id,\n rank: element.id,\n years: 0,\n preferred: true\n });\n });\n\n const postData = {\n entity_tags: skills,\n user_id: Number(this.userId),\n slug: this.slug,\n tag_entity: this.entityEntity\n };\n\n this.tagService.addTags(postData).subscribe(() => {\n this.saveEvent.emit(true);\n this.toast.success(this.translation.translate('User.Profile.Skills.UpdatedMessage'));\n clearQueryParams(this.router, this.route);\n this.modalService.dismissAll();\n });\n }\n}\n","<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">My Skills</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"ui-fluid skills-modal skills-dropdown\">\n <p-autoComplete [(ngModel)]=\"selectedSkills\"\n [suggestions]=\"searchSkills\"\n dataKey=\"id\"\n field=\"name\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n [minLength]=\"1\"\n [maxlength]=\"10\"\n placeholder=\"Skills\"\n [dropdown]=\"true\"\n [multiple]=\"true\"></p-autoComplete>\n\n <small class=\"p-2\">Select up to 10 skills.</small>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"close(modal)\">Cancel</button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"saveUserSkills()\">Save</button>\n </div>\n</ng-template>\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { AbstractControl, UntypedFormBuilder, UntypedFormGroup, ValidatorFn } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { ProfileService } from '@posiwise/common-services';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { ModalContext, ValidationError } from '../../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-edit-social-links',\n templateUrl: './edit-social-links.component.html'\n})\nexport class EditSocialLinksComponent extends AppBaseComponent implements OnInit {\n @ViewChild('content', { static: true }) content: TemplateRef<ModalContext>;\n\n @Input() links: Record<string, string> = {};\n @Input() userId: number;\n\n @Output() saveEvent: EventEmitter<void> = new EventEmitter();\n\n form: UntypedFormGroup;\n\n buttonBusy = false;\n\n constructor(\n injector: Injector,\n private readonly modalService: NgbModal,\n private readonly fb: UntypedFormBuilder,\n private readonly profileService: ProfileService,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n this.form = this.fb.group({\n user_id: 0,\n youtube: ['', this.urlValidator('youtube')],\n skype: ['', this.urlValidator('skype')],\n linkedin: ['', this.urlValidator('linkedin')],\n twitter: ['', this.urlValidator('twitter')],\n instagram: ['', this.urlValidator('instagram')],\n facebook: ['', this.urlValidator('facebook')],\n stackoverflow: ['', this.urlValidator('stackoverflow')],\n github: ['', this.urlValidator('github')],\n bitbucket: ['', this.urlValidator('bitbucket')],\n gitlab: ['', this.urlValidator('gitlab')]\n });\n }\n\n private urlValidator(social: string): ValidatorFn {\n return (control: AbstractControl): ValidationError | null => {\n const url = `https://www.${social}`;\n const url2 = `https://${social}`;\n if (control.value) {\n const valid = control.value.includes(url) || control.value.includes(url2);\n\n return valid ? null : { urlMalformed: { value: control.value } };\n }\n\n return null;\n };\n }\n\n ngOnInit() {\n this.form.patchValue(this.links);\n }\n\n onOpen(links) {\n this.links = links;\n this.form.patchValue(this.links);\n this.modalService.open(this.content, {\n centered: true,\n size: 'lg',\n windowClass: 'modal-holder'\n });\n }\n\n @ValidateForm('form')\n onSaveDetail() {\n this.buttonBusy = true;\n this.form.patchValue({\n user_id: this.userId\n });\n this.profileService\n .postLinks(this.form.value)\n .subscribe(_ => {\n this.toast.success(\n this.translation.translate('User.Profile.SocialLinks.AddedMessage')\n );\n this.modalService.dismissAll();\n this.saveEvent.emit();\n })\n .add(() => {\n this.buttonBusy = false;\n });\n }\n}\n","<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">Tell us your external portfolio</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <form [formGroup]=\"form\"\n class=\"p-sm-3\"\n (ngSubmit)=\"onSaveDetail()\">\n <div>\n <p>\n Please tell us where we can find more information about you or about your\n work/projects. This will impact your ranking on the site.\n </p>\n </div>\n\n <div class=\"row mt-0\">\n <div class=\"col-sm-6 col-12\">\n <div class=\"mb-3\">\n <label for=\"file\"><img src=\"/assets/img/icons/social/linkedin.svg\"\n width=\"20\"\n alt=\"\" />\n LinkedIn</label>\n <input type=\"url\"\n formControlName=\"linkedin\"\n class=\"form-control\"\n placeholder=\"https://linkedin.com/in/nickname\" />\n </div>\n </div>\n\n <div class=\"col-sm-6 col-12\">\n <div class=\"mb-3\">\n <label for=\"file\"><img src=\"/assets/img/icons/social/twitter.svg\"\n width=\"20\"\n alt=\"\" />\n Twitter</label>\n <input type=\"url\"\n formControlName=\"twitter\"\n class=\"form-control\"\n placeholder=\"https://twitter.com/nickname\" />\n </div>\n </div>\n\n <div class=\"col-sm-6 col-12\">\n <div class=\"mb-3\">\n <label for=\"file\"><img src=\"/assets/img/icons/social/facebook.svg\"\n width=\"20\"\n alt=\"\" />\n Facebook</label>\n <input type=\"url\"\n formControlName=\"facebook\"\n class=\"form-control\"\n placeholder=\"https://www.facebook.com/nickname\" />\n </div>\n </div>\n\n <div class=\"col-sm-6 col-12\">\n <div class=\"mb-3\">\n <label for=\"file\"><img src=\"/assets/img/icons/social/youtube.svg\"\n width=\"20\"\n alt=\"\" />\n YouTube</label>\n <input type=\"url\"\n formControlName=\"youtube\"\n class=\"form-control\"\n placeholder=\"https://www.youtube.com/nickname\" />\n </div>\n </div>\n\n <div class=\"col-sm-6 col-12\">\n <div class=\"mb-3\">\n <label for=\"file\">\n <img src=\"/assets/img/icons/social/skype.svg\"\n width=\"20\"\n alt=\"\" /> Skype\n </label>\n <input type=\"url\"\n formControlName=\"skype\"\n class=\"form-control\"\n placeholder=\"https://www.skype.com/nickname\" />\n </div>\n </div>\n\n <div class=\"col-sm-6 col-12\">\n <div class=\"mb-3\">\n <label for=\"file\"><img src=\"/assets/img/icons/social/github.svg\"\n width=\"20\"\n alt=\"\" />\n Github</label>\n <input type=\"url\"\n formControlName=\"github\"\n class=\"form-control\"\n placeholder=\"https://github.com/nickname\" />\n </div>\n </div>\n\n <div class=\"col-sm-6 col-12\">\n <div class=\"mb-3\">\n <label for=\"file\"><img src=\"/assets/img/icons/social/stackoverflow.svg\"\n width=\"20\"\n alt=\"\" />\n StackOverflow</label>\n <input type=\"url\"\n formControlName=\"stackoverflow\"\n class=\"form-control\"\n placeholder=\"http://stackoverflow.com/users/nickname\" />\n </div>\n </div>\n </div>\n </form>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"modal.close()\">\n Cancel\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n (click)=\"onSaveDetail()\">Save</button>\n </div>\n</ng-template>\n","import {\n Component,\n EventEmitter,\n Injector,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { NgxGpAutocompleteDirective } from '@angular-magic/ngx-gp-autocomplete';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GeoService, ProfileService } from '@posiwise/common-services';\nimport { Country } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { map, Observable } from 'rxjs';\n\nimport { NgbDateStruct, NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { EditUser, ModalContext, UserProfile } from '../../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-edit-user-profile-modal',\n templateUrl: './edit-user-profile-modal.component.html',\n styleUrl: './edit-user-profile-modal.component.scss'\n})\nexport class EditUserProfileModalComponent extends AppBaseComponent implements OnInit {\n @ViewChild('content', { static: true }) content: TemplateRef<ModalContext>;\n\n @Input() slug: string;\n @Input() user: EditUser;\n\n @Output() saveEvent: EventEmitter<UserProfile> = new EventEmitter<UserProfile>();\n\n @ViewChild('ngxPlaces') placesRef: NgxGpAutocompleteDirective;\n\n form: UntypedFormGroup;\n\n countries$: Observable<Country[]>;\n\n states: Country[] = [];\n buttonBusy = false;\n\n constructor(\n public modalService: NgbModal,\n private readonly fb: UntypedFormBuilder,\n private readonly profileService: ProfileService,\n private readonly geoService: GeoService,\n injector: Injector\n ) {\n super(injector);\n this.form = this.fb.group({\n first_name: [null, Validators.required],\n last_name: [null, Validators.required],\n headline: [null, Validators.required],\n description: [null, Validators.required],\n gender: ['M'],\n phone_number: [null],\n dob: [null, Validators.required],\n website_url: [null],\n country: [null, Validators.required],\n postcode: [null],\n location: [null],\n state: [null, Validators.required],\n province: [null, Validators.required]\n });\n }\n\n ngOnInit() {\n this.geoService.getCountries().subscribe(() => {\n this.countries$ = this.geoService\n .getCountries()\n .pipe(\n map((countries: []) => [{ name: 'Select Country', code: null }, ...countries])\n );\n });\n this.getValues();\n }\n\n getValues() {\n let dobObject: NgbDateStruct;\n\n const userProfile = this.user?.profile;\n if (userProfile) {\n if (userProfile?.country) {\n this.getRegion(userProfile.country);\n }\n if (userProfile?.dob) {\n dobObject = {\n year: Number(userProfile.dob.substring(0, 4)),\n month: Number(userProfile.dob.substring(5, 7)),\n day: Number(userProfile.dob.substring(8, 10))\n };\n\n this.form.patchValue({});\n }\n\n this.form.patchValue(userProfile);\n this.form.patchValue({\n first_name: this.user.first_name,\n last_name: this.user.last_name,\n dob: dobObject || {}\n });\n }\n }\n\n handleAddressChange(_event) {\n this.form.patchValue({\n latitude: _event.geometry.location.lat(),\n longitude: _event.geometry.location.lng(),\n location: _event.formatted_address\n });\n }\n\n onOpen() {\n this.form.reset();\n this.getValues();\n this.modalService.open(this.content, {\n centered: true,\n size: 'lg',\n windowClass: 'modal-holder'\n });\n }\n\n getRegion(countryId) {\n if (countryId) {\n this.geoService.getRegions(countryId).subscribe(response => {\n this.states = [{ code: 0, name: 'Select State' }, ...response];\n });\n }\n }\n\n onSaveDetail() {\n this.form.patchValue({ province: this.form.value.state });\n this.save();\n }\n\n @ValidateForm('form')\n save() {\n this.buttonBusy = true;\n const data = { ...this.form.value };\n data.dob = HelperService.dateFormat(this.form.get('dob').value);\n\n this.profileService\n .updateUserProfile(data)\n .subscribe(response => {\n if (response.id) {\n this.toast.success(this.translation.translate('User.Profile.ProfileUpdated'));\n this.modalService.dismissAll();\n this.saveEvent.emit(response);\n }\n })\n .add(() => {\n this.buttonBusy = false;\n });\n }\n}\n","<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">Edit Intro</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSaveDetail()\">\n <div class=\"row\">\n <pw-input-container class=\"col-6\"\n label=\"First Name\"\n name=\"first_name\"\n errorMsg=\"Please enter first Name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"first_name\"\n id=\"first_name\" />\n </pw-input-container>\n\n <pw-input-container class=\"col-6\"\n label=\"Last Name\"\n name=\"last_name\"\n errorMsg=\"Please enter last Name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"last_name\"\n id=\"last_name\" />\n </pw-input-container>\n\n <pw-input-container class=\"col-12\"\n label=\"Headline\"\n name=\"headline\"\n errorMsg=\"Please enter headline\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"headline\"\n id=\"headline\" />\n </pw-input-container>\n\n <pw-input-container class=\"col-12\"\n label=\"About me\"\n name=\"description\"\n errorMsg=\"Please enter description\">\n <textarea class=\"form-control\"\n formControlName=\"description\"\n id=\"description\"></textarea>\n </pw-input-container>\n\n <pw-input-container class=\"col-6\"\n label=\"Gender\"\n name=\"gender\"\n errorMsg=\"Please enter Gender\">\n <p-selectButton [options]=\"[\n { label: 'Male', value: 'M' },\n { label: 'Female', value: 'F' }\n ]\"\n formControlName=\"gender\"></p-selectButton>\n </pw-input-container>\n\n <pw-input-container class=\"col-6\"\n label=\"Date of Birth\"\n name=\"dob\"\n errorMsg=\"Please enter date of birth\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"yyyy-mm-dd\"\n formControlName=\"dob\"\n ngbDatepicker\n #d=\"ngbDatepicker\"\n [minDate]=\"{ year: 1950, month: 1, day: 1 }\"\n [maxDate]=\"{ year: 2018, month: 12, day: 31 }\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"d.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </pw-input-container>\n\n <pw-input-container class=\"col-6\"\n label=\"Phone\"\n name=\"phone_number\"\n errorMsg=\"Please enter phone\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"phone_number\" />\n </pw-input-container>\n\n <pw-input-container class=\"col-6\"\n label=\"Postcode\"\n name=\"postcode\"\n errorMsg=\"Please enter postcode\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"postcode\" />\n </pw-input-container>\n\n <ng-container *ngIf=\"countries$ | async as countries\">\n <pw-input-container class=\"col-12 col-sm-6\"\n label=\"Country\"\n name=\"country\"\n errorMsg=\"Please select a country\">\n\n <p-dropdown\n id=\"country\"\n [options]=\"countries\"\n optionLabel=\"name\"\n optionValue=\"code\"\n formControlName=\"country\"\n (onChange)=\"getRegion($event.value)\"\n placeholder=\"{{ 'User.Profile.SelectCountry' | transloco }}\">\n </p-dropdown>\n\n </pw-input-container>\n </ng-container>\n\n <pw-input-container class=\"col-12 col-sm-6\"\n label=\"State\"\n name=\"state\"\n errorMsg=\"Please select a state\">\n <p-dropdown\n id=\"state\"\n [options]=\"states\"\n optionLabel=\"name\"\n optionValue=\"code\"\n formControlName=\"state\"\n [placeholder]=\"'User.Profile.SelectState' | transloco\">\n </p-dropdown>\n </pw-input-container>\n\n <!-- Location -->\n <pw-input-container label=\"Location\"\n class=\"col-12 col-md-6\"\n name=\"location\">\n <input ngx-gp-autocomplete\n class=\"form-control\"\n #places=\"ngx-places\"\n formControlName=\"location\"\n (onAddressChange)=\"handleAddressChange($event)\" />\n </pw-input-container>\n\n <pw-input-container class=\"col-12 col-sm-6\"\n label=\"Website\"\n name=\"website_url\"\n errorMsg=\"Please enter Website\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"website_url\" />\n </pw-input-container>\n </div>\n <div class=\"modal-footer\">\n <input type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"modal.close()\"\n value=\"Cancel\" />\n <input type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n value=\"Save Changes\" />\n </div>\n </form>\n </div>\n</ng-template>\n","import {\n Component,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { ProfileService, QualificationService, TagService } from '@posiwise/common-services';\nimport { TAG_ENTITY, TAG_TYPE, User } from '@posiwise/common-utilities';\n\nimport { forkJoin, Subscription } from 'rxjs';\nimport swal from 'sweetalert2';\n\nimport {\n AboutUserProfile,\n Qualification,\n Skill\n} from '../../shared/interface/user-module.interface';\nimport { EditQualificationsModalComponent } from '../edit-qualifications-modal/edit-qualifications-modal.component';\nimport { EditSkillsModalComponent } from '../edit-skills-modal/edit-skills-modal.component';\nimport { EditSocialLinksComponent } from '../edit-social-links/edit-social-links.component';\nimport { EditUserProfileModalComponent } from '../edit-user-profile-modal/edit-user-profile-modal.component';\n\n@Component({\n selector: 'pw-user-about',\n templateUrl: './user-about.component.html',\n styleUrls: ['./user-about.component.scss']\n})\nexport class UserAboutComponent extends AppBaseComponent implements OnInit, OnDestroy {\n @Input() user: User;\n @Input() isEdit = false;\n\n @Output()\n saveEvent: EventEmitter<boolean> = new EventEmitter();\n\n @ViewChild(EditUserProfileModalComponent, { static: false })\n modal: EditUserProfileModalComponent;\n\n @ViewChild(EditQualificationsModalComponent, { static: false })\n qualificationModal: EditQualificationsModalComponent;\n\n @ViewChild(EditSkillsModalComponent, { static: false })\n skillsModal: EditSkillsModalComponent;\n\n @ViewChild(EditSocialLinksComponent, { static: false })\n socialModal: EditSocialLinksComponent;\n\n private readonly navigationSubscription: Subscription;\n\n allSkills = [];\n\n searchSkills = [];\n\n selectedSkills: Skill[];\n\n objectKeys = Object.keys;\n\n user_profile: AboutUserProfile;\n\n qualifications: Qualification[] = [];\n\n userLinks: Record<string, string> = {};\n\n noUserLinks: boolean;\n\n loading = false;\n\n constructor(\n private readonly profileService: ProfileService,\n private readonly qualificationService: QualificationService,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserDetails();\n this.getSkills();\n }\n\n getUserDetails() {\n this.loading = true;\n forkJoin({\n user_profile: this.profileService.getUserObject('user_profile', this.user.slug),\n qualifications: this.profileService.getUserObject('qualifications', this.user.slug),\n user_links: this.profileService.getUserObject('user_link', this.user.slug),\n user_skills: this.tagService.getGroupedSkills(\n this.user.slug,\n TAG_ENTITY.USER,\n TAG_TYPE.SKILLS\n )\n }).subscribe({\n next: response => {\n this.user_profile = response.user_profile;\n this.user['profile'] = response.user_profile;\n this.qualifications = response.qualifications;\n this.userLinks = response.user_links || [];\n this.noUserLinks = Object.values(this.userLinks).some(x => !!x);\n this.selectedSkills = response.user_skills;\n this.loading = false;\n },\n error: err => {\n this.loading = false;\n this.toast.showToast(err);\n },\n complete: () => {\n this.loading = false;\n }\n });\n }\n\n /**\n * Populate all the skills for the dropdown\n */\n private getSkills() {\n this.tagService.getTagsByType('skills', {}).subscribe(response => {\n this.allSkills = response.skills;\n });\n }\n\n onProfileOpen() {\n this.modal.onOpen();\n }\n\n openSkills() {\n this.skillsModal.open();\n }\n\n onProfileSaved(_event) {\n this.getUserDetails();\n this.saveEvent.emit();\n }\n\n onOpenSocial() {\n if (this.socialModal) {\n this.socialModal.onOpen(this.userLinks); // Pass userLinks to the modal\n }\n }\n\n editQualification(item) {\n this.qualificationModal.onOpen(item);\n }\n\n deleteQualification(item) {\n swal.fire({\n title: 'Delete',\n html: `Are you sure you want to delete <strong>${item.degree}</strong>?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n this.qualificationService.deleteQualifications(item.id).subscribe(() => {\n this.toast.success(\n this.translation.translate(\n 'User.Profile.Qualifications.QualificationDelete'\n )\n );\n this.getUserDetails();\n });\n }\n });\n }\n\n onSaveUserLinks() {\n this.getUserDetails();\n }\n\n trackByQualification(_index: number, item: { id: number }) {\n return item.id;\n }\n\n override ngOnDestroy() {\n // avoid memory leaks here by cleaning up after ourselves. If we\n // don't then we will continue to run our initialiseInvites()\n // method on every navigationEnd event.\n if (this.navigationSubscription) {\n this.navigationSubscription.unsubscribe();\n }\n }\n}\n","<div class=\"row\">\n <div class=\"col-sm-12 mt-2\">\n <div data-cy=\"personal-info\">\n <h2 class=\"\">Personal Information</h2>\n <ng-container *ngIf=\"user && isEdit\">\n <i\n class=\"profile-icons fa fa-lg fa-user-edit float-end mt-3 pt-1 pt-md-0\"\n (click)=\"onProfileOpen()\"\n (keydown.enter)=\"onProfileOpen()\"\n aria-label=\"Open Profile\"\n aria-hidden=\"true\"\n ></i>\n <pw-edit-user-profile-modal [user]=\"user\"\n (saveEvent)=\"onProfileSaved($event)\"\n [slug]=\"user?.slug\">\n </pw-edit-user-profile-modal>\n </ng-container>\n </div>\n <div>\n <div class=\"my-3\">\n <span class=\"profile-label\">About Me:</span>\n <span class=\"display-block overflow-hidden\">{{ user_profile?.description || 'No description has been added yet.' }}\n </span>\n </div>\n <hr />\n <div class=\"row mt-0 my-0\">\n <div class=\"col-6 col-sm-6 col-lg-4\">\n <ul class=\"no-list-style personal-info\">\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"icon-present font-small-3\" aria-hidden=\"true\"></i>\n Birthday:</span>\n <span class=\"display-block overflow-hidden pt-2\">{{\n user_profile?.dob | dateFormat\n }}</span>\n </li>\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-globe font-small-3\" aria-hidden=\"true\"></i> Lives\n in:</span>\n <span class=\"display-block overflow-hidden pt-2\">{{\n user_profile?.country\n }}</span>\n </li>\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-monitor font-small-3\" aria-hidden=\"true\"></i>\n Website:</span>\n <a class=\"display-block overflow-hidden pt-2\">{{\n user_profile?.website_url\n }}</a>\n </li>\n </ul>\n </div>\n <div class=\"col-6 col-sm-6 col-lg-4\">\n <ul class=\"no-list-style personal-info\">\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-user font-small-3\" aria-hidden=\"true\"></i>\n Gender:</span>\n <span class=\"display-block overflow-hidden pt-2\">\n {{\n user_profile?.gender === 'M'\n ? 'Male'\n : user_profile?.gender === 'F'\n ? 'Female'\n : ''\n }}\n </span>\n </li>\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-mail font-small-3\" aria-hidden=\"true\"></i>\n Email:</span>\n <a class=\"display-block overflow-hidden pt-2\">{{ user?.email }}</a>\n </li>\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-smartphone font-small-3\" aria-hidden=\"true\"></i> Phone\n Number:</span>\n <span class=\"display-block overflow-hidden pt-2\">{{\n user_profile?.phone_number\n }}</span>\n </li>\n </ul>\n </div>\n <div class=\"col-6 col-md-6 col-lg-4\">\n <ul class=\"no-list-style personal-info\">\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-book font-small-3\" aria-hidden=\"true\"></i>\n Joined:</span>\n <span class=\"display-block overflow-hidden pt-2\">{{\n user?.joined_at | dateFormat\n }}</span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <hr />\n <div data-cy=\"skills-info\"\n class=\"mt-4\">\n <h2 class=\"\">Skills</h2>\n <div class=\"float-end\"\n *ngIf=\"isEdit\">\n <i\n class=\"profile-icons fa fa-lg fa-edit float-end mt-3 pt-1 pt-md-0\"\n (click)=\"openSkills()\"\n (keydown.enter)=\"openSkills()\"\n aria-label=\"Open Skills\"\n aria-hidden=\"true\"\n ></i>\n <pw-edit-skills-modal [userId]=\"user?.id\"\n [slug]=\"user?.slug\"\n (saveEvent)=\"getUserDetails()\">\n </pw-edit-skills-modal>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"mb-4\"\n *ngIf=\"selectedSkills?.length === 0\">\n {{\n isEdit\n ? \"You haven't selected any skills yet. Please add some.\"\n : 'No skills added.'\n }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"ui-fluid\">\n <span class=\"\"\n *ngFor=\"let skill of selectedSkills\">\n <span class=\"my-2 me-3\">{{ skill.category_name }}</span>\n <span *ngFor=\"let item of skill.tags\"\n class=\"badge bg-success me-2 mb-2\">{{ item.name }}\n </span>\n <br />\n </span>\n </div>\n <hr />\n <div data-cy=\"educational-info\">\n <div class=\"\">\n <h2 class=\"\">Educational Information</h2>\n <div class=\"float-end\"\n *ngIf=\"isEdit\">\n <pw-edit-qualifications-modal (saveEvent)=\"getUserDetails()\">\n </pw-edit-qualifications-modal>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-lg-6 col-12 mb-4\"\n [ngClass]=\"{ editable: isEdit }\"\n *ngFor=\"let item of qualifications; trackBy: trackByQualification\">\n <div class=\"mb-2\">\n <div class=\"float-start\">\n <h4>{{ item?.school }}</h4>\n <ul class=\"no-list-style\">\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-clock font-small-3\" aria-hidden=\"true\"></i>\n Period:</span>\n <span class=\"display-block overflow-hidden pt-2\">\n {{ item?.started_on }} - {{ item?.ended_on }}\n </span>\n </li>\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-feather font-small-3\" aria-hidden=\"true\"></i>\n Degree:</span>\n <span class=\"display-block overflow-hidden pt-2\">\n {{ item?.degree }}\n </span>\n </li>\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-octagon font-small-3\" aria-hidden=\"true\"></i>\n Course:</span>\n <span class=\"display-block overflow-hidden pt-2\">\n {{ item?.course }}\n </span>\n </li>\n </ul>\n </div>\n <div class=\"float-end action\"\n *ngIf=\"isEdit\">\n <span class=\"fa-stack\">\n <i\n class=\"fa fa-lg fa-edit fa-stack-1x me-3 profile-icons\"\n title=\"Edit\"\n (keydown.enter)=\"editQualification(item)\"\n aria-label=\"Edit Qualification\"\n (click)=\"editQualification(item)\"\n aria-hidden=\"true\"\n ></i>\n </span>\n <span class=\"fa-stack\">\n <i\n class=\"fa fa-lg fa-trash fa-stack-1x delete-icon\"\n data-cy=\"delete-qualification\"\n title=\"Delete\"\n aria-label=\"Delete Qualification\"\n (keydown.enter)=\"deleteQualification(item)\"\n (click)=\"deleteQualification(item)\"\n aria-hidden=\"true\"\n ></i>\n </span>\n </div>\n </div>\n </div>\n <div class=\"col-lg-6 col-12 mb-4\"\n *ngIf=\"qualifications && qualifications.length === 0\">\n {{\n isEdit\n ? ' No qualification yet. Please add some.'\n : 'No qualifications added.'\n }}\n </div>\n </div>\n </div>\n <hr />\n <!-- External Portfolio -->\n <div data-cy=\"portfolio-info\"\n class=\"mt-4\">\n <div class=\"\">\n <h2 class=\"\">External Portfolio</h2>\n <i\n class=\"fa fa-lg fa-edit profile-icons float-end mt-3 pt-1 pt-md-0\"\n *ngIf=\"isEdit\"\n (click)=\"onOpenSocial()\"\n aria-label=\"Edit external portfolio\"\n (keydown)=\"($event.key === 'Enter' ? onOpenSocial() : null)\"\n title=\"Edit External Portfolio\"\n ></i>\n </div>\n <div class=\"row\">\n <div class=\"col-md-6 col-12 mb-4\">\n <div *ngIf=\"userLinks\">\n <ng-container *ngFor=\"let link of objectKeys(userLinks)\">\n <a target=\"_blank\"\n rel=\"noopener noreferrer\"\n [href]=\"userLinks[link]\"\n *ngIf=\"userLinks[link]\">\n <img src=\"assets/img/icons/social/{{ link }}.svg\"\n class=\"me-2\"\n width=\"40\"\n alt=\"\" />\n </a>\n </ng-container>\n </div>\n <div class=\"row\">\n <ng-container *ngIf=\"user\">\n <pw-edit-social-links [userId]=\"user.id\"\n [links]=\"userLinks\"\n (saveEvent)=\"onSaveUserLinks()\">\n </pw-edit-social-links>\n </ng-container>\n <div class=\"col-12 mb-4\"\n *ngIf=\"!noUserLinks\">\n {{\n isEdit\n ? 'No external portfolio yet. Please add some.'\n : 'No portfolio added.'\n }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"loading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\n\nimport { ProfileService } from '@posiwise/common-services';\nimport { User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'pw-portfolios',\n templateUrl: './user-portfolios.component.html',\n styleUrls: ['./user-portfolios.component.scss']\n})\nexport class PortfoliosComponent implements OnInit {\n @Input() user: User;\n @Input() isEdit = false;\n\n projectPictures = [];\n\n selectedPicURL: string;\n\n isLoaded = false;\n\n constructor(\n private readonly service: ProfileService,\n private readonly modalService: NgbModal\n ) {}\n\n ngOnInit() {\n this.getProjectPictures();\n }\n\n private getProjectPictures() {\n this.service.getProjectPictures(this.user.slug).subscribe(response => {\n if (response.length > 0) {\n this.projectPictures = response.flatMap(x => x.project_pictures);\n }\n this.isLoaded = true;\n });\n }\n\n deletePicture(id) {\n HelperService.raiseDeletePopup().then(resp => {\n if (resp.value) {\n this.service.deletePicture(id).subscribe(_ => {\n this.getProjectPictures();\n });\n }\n });\n }\n\n trackByImage(_index: number, item: { id: number }) {\n return item.id;\n }\n\n showFullImage(picture, content, evt) {\n if ($(evt.target).attr('id') !== 'delete-icon') {\n this.selectedPicURL = picture.picture.url;\n this.modalService.open(content, {\n centered: true,\n size: 'lg',\n windowClass: 'img-popup'\n });\n }\n }\n}\n","<div class=\"row\">\n <div class=\"col-sm-12 mt-2\">\n <h2>User's Portfolio</h2>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <pw-no-data [withImage]=\"true\" message=\"No portfolio listed yet - please consider adding some.\"\n *ngIf=\"projectPictures.length === 0 && isLoaded\"></pw-no-data>\n <div class=\"card-body\">\n <div class=\"card-block\"\n *ngIf=\"projectPictures.length\">\n <div class=\"grid-hover\">\n <div class=\"row\">\n <div class=\"col-md-4 col-12 mb-2\"\n *ngFor=\"let picture of projectPictures; trackBy: trackByImage\">\n <figure class=\"effect-marley\"\n (keydown.enter)=\"showFullImage(picture, content, $event)\"\n (click)=\"showFullImage(picture, content, $event)\">\n <img [src]=\"picture.picture.url\"\n alt=\"project pic\" />\n <figcaption>\n <h2>\n <span class=\"portfolio-header-text\">{{ picture.project_title }}</span>\n </h2>\n <i\n class=\"fal fa-2x fa-times white\"\n id=\"delete-icon\"\n (click)=\"deletePicture(picture.id)\"\n (keydown.enter)=\"deletePicture(picture.id)\"\n *ngIf=\"isEdit\"\n aria-hidden=\"true\"\n ></i>\n <p class=\"thumb-description\">\n {{ picture?.project_description }}\n </p>\n </figcaption>\n </figure>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #content\n let-modal>\n <div class=\"modal-img-popup\">\n <img alt=\"Selected Url\"\n [src]=\"selectedPicURL\"\n class=\"img-fluid\" />\n <button type=\"button\"\n class=\"close close-img\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss('Cross click')\">\n <span class=\"btn\">×</span>\n </button>\n </div>\n</ng-template>\n","import { Component, Injector, Input, OnInit, ViewChild } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { ProfileService } from '@posiwise/common-services';\nimport { Project, User } from '@posiwise/common-utilities';\n\nimport swal from 'sweetalert2';\n\nimport { EditPortfoliosComponent } from '../edit-portfolios/edit-portfolios.component';\nimport { EditProjectModalComponent } from '../edit-project-modal/edit-project-modal.component';\nimport { EditRecommendationModalComponent } from '../edit-recommendation-modal/edit-recommendation-modal.component';\nimport { EditSkillsModalComponent } from '../edit-skills-modal/edit-skills-modal.component';\n\n@Component({\n selector: 'pw-user-projects',\n templateUrl: './user-projects.component.html',\n styleUrls: ['./user-projects.component.scss']\n})\nexport class UserProjectsComponent extends AppBaseComponent implements OnInit {\n @Input() user: User;\n @Input() isEdit = false;\n\n @ViewChild(EditProjectModalComponent, { static: true })\n projectModal: EditProjectModalComponent;\n\n @ViewChild(EditSkillsModalComponent, { static: false })\n skillModal: EditSkillsModalComponent;\n\n @ViewChild(EditRecommendationModalComponent, { static: true })\n recommendationModal: EditRecommendationModalComponent;\n\n @ViewChild(EditPortfoliosComponent, { static: false })\n portfolios: EditPortfoliosComponent;\n\n projects: Project[] = [];\n\n submitted: boolean;\n\n isLoaded = false;\n\n constructor(\n private readonly service: ProfileService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getProjects();\n }\n\n onEditProject(item) {\n this.projectModal.onOpen(item);\n }\n\n editRecommendation(item) {\n this.recommendationModal.onOpen(item);\n }\n\n openSkills(project) {\n this.skillModal.slug = project.slug;\n this.skillModal.open();\n }\n\n getProjects() {\n this.service.getProjects(this.user?.slug).subscribe(response => {\n this.projects = response.projects;\n this.isLoaded = true;\n });\n }\n\n onSkillsSave() {\n this.getProjects();\n }\n\n onSaveProject(_event) {\n this.getProjects();\n }\n\n openPortfolios(id: number) {\n this.portfolios.openModal(id);\n this.portfolios.getProjectPictures();\n }\n\n onDeleteProject(project) {\n swal.fire({\n title: 'Delete',\n text: `Are you sure you want to delete ${project.title}?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n this.service.deleteProject(project.id).subscribe(() => {\n this.projects = this.projects.filter((x: Project) => x.id !== project.id);\n });\n }\n });\n }\n\n trackByProject(_index: number, item: Project) {\n return item.id;\n }\n\n deletePicture(project) {\n this.service.deletePicture(project.project_pictures[0].id).subscribe(_ => {\n this.getProjects();\n });\n }\n}\n","<div class=\"row\">\n <div class=\"col-sm-12 mt-2\">\n <h2>User's Projects</h2>\n <div class=\"row\"\n *ngIf=\"isEdit\">\n <div class=\"col-12\">\n <div class=\"content-header\">\n <button class=\"btn btn-primary float-end\"\n (click)=\"onEditProject(null)\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{'Create Project' | transloco}}\n </button>\n </div>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div id=\"timeline\"\n class=\"timeline-center timeline-wrapper\"\n *ngIf=\"projects?.length\">\n <ul class=\"timeline\">\n <li class=\"timeline-line\"></li>\n </ul>\n <ul class=\"timeline\">\n <li class=\"timeline-line\"></li>\n <li class=\"timeline-item\"\n [ngClass]=\"{ 'mt-5': odd }\"\n *ngFor=\"\n let project of projects;\n let i = index;\n let odd = odd;\n let even = even;\n trackBy: trackByProject\n \">\n <div class=\"timeline-badge\">\n <span class=\"bg-red bg-lighten-1\"\n data-bs-toggle=\"tooltip\"\n data-placement=\"right\"\n title=\"Portfolio project work\">\n <span class=\"timeline-year\"> {{ project.start_year }} </span>\n </span>\n </div>\n <div class=\"timeline-card card shadow rounded border-grey border-lighten-2 pb-0\">\n <div class=\"card-header\">\n <h4 class=\"mb-0 card-title\">\n <a>{{ project.title }}</a>\n </h4>\n <div class=\"card-subtitle text-muted mt-0\">\n <span class=\"font-small-3\">\n {{ project.start_year }} - {{ project.end_year }}</span>\n </div>\n </div>\n <div class=\"card-body project-card\">\n <ng-container *ngIf=\"project.project_pictures?.length\">\n <i\n class=\"fal fa-times\"\n (click)=\"deletePicture(project)\"\n (keydown.enter)=\"deletePicture(project)\"\n aria-hidden=\"true\"\n ></i>\n <img class=\"img-fluid project-picture\"\n [src]=\"project.project_pictures[0].picture.url\"\n alt=\"Project Cover\" />\n </ng-container>\n <div class=\"card-body\">\n <div class=\"\">\n <p class=\"card-text\">{{ project.description }}</p>\n <div class=\"list-inline mb-1\">\n <!-- Skills -->\n <div *ngIf=\"project.tags?.length\">\n <div class=\"my-2\">\n <i class=\"fa fa-user-tag\" aria-hidden=\"true\"></i>\n Skills\n </div>\n <ng-container *ngFor=\"let tag of project.tags\">\n <span class=\"badge bg-success me-2\">{{\n tag.name\n }}</span>\n </ng-container>\n </div>\n <div class=\"mt-2\"\n *ngIf=\"project.project_recommendations?.length\">\n <div class=\"my-2\">\n <i\n class=\"fa fa-clipboard-check me-2\"\n aria-hidden=\"true\"\n ></i>\n Recommendations\n </div>\n <section class=\"mb-2\"\n *ngFor=\"\n let recommendation of project.project_recommendations\n \">\n <div class=\"me-2\">\n Client: {{ recommendation?.client_name }}\n </div>\n <div class=\"me-2\">\n Message: {{ recommendation?.description }}\n </div>\n <div class=\"row recommendation\">\n <div class=\"col-4\">\n <span>Communication</span>\n <p-rating [(ngModel)]=\"\n recommendation.communication\n \"\n [cancel]=\"false\"\n [readonly]=\"true\">\n </p-rating>\n </div>\n <div class=\"col-4\">\n <span>Quality</span>\n <p-rating [(ngModel)]=\"recommendation.quality\"\n [cancel]=\"false\"\n [readonly]=\"true\">\n </p-rating>\n </div>\n <div class=\"col-4\">\n <span>Time</span>\n <p-rating [(ngModel)]=\"recommendation.time\"\n [cancel]=\"false\"\n [readonly]=\"true\">\n </p-rating>\n </div>\n </div>\n </section>\n </div>\n <div class=\"text-end mt-3 d-flex justify-content-end project-actions\"\n *ngIf=\"isEdit\">\n <!-- Project Edit -->\n <span class=\"btn btn-link pb-0 actions\"\n (keydown.enter)=\"onEditProject(project)\"\n (click)=\"onEditProject(project)\">\n Edit\n </span>\n <button class=\"btn btn-link pb-0 actions\"\n (click)=\"openSkills(project)\">\n Skills\n </button>\n <pw-edit-skills-modal [userId]=\"user?.id\"\n entityEntity=\"Project\"\n entityType=\"skills\"\n (saveEvent)=\"onSkillsSave()\"\n [slug]=\"project?.slug\">\n </pw-edit-skills-modal>\n <!-- Portfolios -->\n <button class=\"btn btn-link pb-0 actions\"\n (click)=\"openPortfolios(project.id)\">\n Photos\n </button>\n <pw-edit-portfolios [slug]=\"user?.slug\"\n [id]=\"project.id\"\n (successEvent)=\"getProjects()\">\n </pw-edit-portfolios>\n <span class=\"btn btn-link pb-0 delete-project actions\"\n (keydown.enter)=\"onDeleteProject(project)\"\n (click)=\"onDeleteProject(project)\">\n Delete\n </span>\n </div>\n <!-- Recommendation -->\n <span class=\"pe-1 mt-3\"\n (click)=\"editRecommendation(project)\"\n (keydown.enter)=\"editRecommendation(project)\"\n *ngIf=\"!isEdit\">\n <a class=\"primary\"><span class=\"fa fa-commenting-o\"></span> Endorse\n </a></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </li>\n </ul>\n </div>\n <pw-no-data [withImage]=\"true\" [message]=\"\n isEdit\n ? ('User.Profile.Projects.NoProjects' | transloco)\n : ('User.Profile.Projects.NoUserProjects' | transloco)\n \"\n *ngIf=\"projects?.length === 0 && isLoaded\">\n </pw-no-data>\n </div>\n</div>\n<pw-edit-project-modal (saveEvent)=\"onSaveProject($event)\"></pw-edit-project-modal>\n<pw-edit-recommendation-modal [user]=\"user\"></pw-edit-recommendation-modal>\n","import { Component, Injector, OnDestroy, OnInit, ViewChild } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { ProfileService } from '@posiwise/common-services';\nimport { User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { StatusCodes } from 'http-status-codes';\nimport { MenuItem } from 'primeng/api';\nimport { forkJoin } from 'rxjs';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { UserProfile, UserRelationship } from '../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-user-profile-page',\n templateUrl: './user-profile-page.component.html',\n styleUrls: ['./user-profile-page.component.scss']\n})\nexport class UserProfilePageComponent extends AppBaseComponent implements OnInit, OnDestroy {\n @ViewChild('menuItems', { static: true })\n menu: MenuItem[];\n\n private loggedInUserDetails: User;\n\n user: User;\n slug: string;\n\n objectKeys = Object.keys;\n\n image = 'assets/img/icons/male.png';\n\n isFollowing: boolean;\n\n isLoaded = false;\n\n userProfile: UserProfile;\n\n items: MenuItem[];\n activeItem: MenuItem;\n\n activateMenu() {\n this.activeItem = this.menu['activeItem'];\n }\n\n constructor(\n injector: Injector,\n private readonly profileService: ProfileService,\n private readonly modalService: NgbModal\n ) {\n super(injector);\n this.route.params.subscribe(data => {\n this.slug = data['user-slug'];\n });\n\n this.items = [\n { id: 'about', label: 'About', icon: 'fa fa-fw fa-user' },\n {\n id: 'projects',\n label: 'Projects',\n icon: 'fa fa-fw fa-briefcase',\n state: {\n permission: this.permissionService.evaluatePermissions('Pages.Product.CRM')\n }\n },\n {\n id: 'portfolio',\n label: 'Portfolio',\n icon: 'fa fa-fw fa-image',\n state: {\n permission: this.permissionService.evaluatePermissions('Pages.Product.CRM')\n }\n }\n ];\n [this.activeItem] = this.items;\n }\n\n get allowEdit() {\n return (\n this.loggedInUserDetails?.slug === this.slug || this.permissionService.isSuperAdmin()\n );\n }\n\n ngOnInit() {\n this.getUserBySlug();\n // Horizontal Timeline js for user timeline\n $.getScript('/assets/js/vertical-timeline.js');\n }\n\n handleImageError(event: Event, fallbackPath): void {\n HelperService.handleImageFallbackPath(event, fallbackPath);\n }\n\n private dataURLtoBlob(dataUrl: string) {\n const arr = dataUrl?.split(',');\n // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec\n const mime = /^[A-Z]*[a-z]*:(.*?);[A-Z]*/.exec(arr[0])?.[1];\n const bStr = atob(arr[1]);\n let n = bStr.length;\n const u8arr = new Uint8Array(n);\n // eslint-disable-next-line no-plusplus\n while (n--) {\n u8arr[n] = bStr.charCodeAt(n);\n }\n\n return new Blob([u8arr], { type: mime });\n }\n\n openModal(content) {\n if (this.allowEdit) {\n this.modalService.open(content, { centered: true, windowClass: 'modal-holder' });\n }\n }\n\n onImageSelection(event) {\n const blob = this.dataURLtoBlob(event);\n const filename = `${`${this.slug.toLocaleLowerCase()}_${Date.parse(\n new Date().toString()\n )}`}.png`;\n const file: File = new File([blob], filename);\n this.userService.addAvatar(file).subscribe(res => {\n this.modalService.dismissAll();\n this.image = res?.user_avatar[2]?.url;\n });\n }\n\n getUserBySlug() {\n forkJoin({\n user: this.profileService.getUserObject('user', this.slug),\n user_profile: this.profileService.getUserObject('user_profile', this.slug),\n avatar: this.profileService.getUserObject('avatar', this.slug)\n }).subscribe({\n next: response => {\n this.user = response.user;\n this.userProfile = response.user_profile;\n if (response.avatar && response.avatar.length > 0) {\n this.image = response?.avatar[2]?.url;\n }\n this.getCurrentUserDetails();\n this.isLoaded = true;\n },\n error: error => {\n if (error.status === StatusCodes.NOT_FOUND) {\n this.router.navigate(['NotFound']);\n }\n }\n });\n }\n\n onClose() {\n this.modalService.dismissAll();\n }\n\n private getCurrentUserDetails() {\n this.userStore().subscribe((currentUser: User) => {\n if (currentUser) {\n this.loggedInUserDetails = currentUser;\n\n this.userService\n .getCurrentUserObject('user_relationships')\n .subscribe((response: UserRelationship[]) => {\n this.isFollowing =\n response.length > 0\n ? response.some(\n x =>\n x.followed_id === this.user.id &&\n currentUser.id === x.follower_id\n )\n : false;\n });\n }\n });\n }\n\n sendMessageSlug() {\n this.router.navigate(['/message'], { fragment: this.slug });\n }\n\n followUser() {\n this.userService.followUser(this.user.id).subscribe(response => {\n const name = this.user.first_name || this.user.slug;\n if (response.id) {\n this.isFollowing = true;\n this.toast.success(`You're now following ${name}`);\n } else {\n this.isFollowing = false;\n this.toast.success(`You've unfollowed ${name}`);\n }\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<!-- User Profile Starts -->\n<!-- Basic User Details Starts -->\n<section id=\"user-profile\"\n *ngIf=\"user\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"dashboard\">\n <div class=\"media row py-3 align-items-center\">\n <div class=\"col-3 col-sm-2\">\n <div class=\"align-self-center halfway-fab text-center\">\n <!-- User Avatar -->\n <a class=\"profile-image\">\n <img [src]=\"image\"\n width=\"100\"\n height=\"100\"\n class=\"rounded-circle img-border width-100\"\n alt=\"User Male\"\n (error)=\"handleImageError($event, 'assets/img/icons/male.png')\"\n (keydown.enter)=\"openModal(content)\"\n (click)=\"openModal(content)\" />\n <div class=\"ms-4 ps-3 ms-sm-0 ps-sm-0 overlay\"\n (keydown.enter)=\"openModal(content)\"\n (click)=\"openModal(content)\"\n *ngIf=\"allowEdit\">\n <div class=\"overlay-text\">\n <!-- Change Profile Pic -->\n <a aria-label=\"Navigate to Target\">\n {{ 'User.Profile.Change' | transloco }}\n </a>\n </div>\n </div>\n </a>\n </div>\n </div>\n <div class=\"col-9 col-sm-5\">\n <div class=\"align-self-start halfway-fab ps-3 pt-2\">\n <div>\n <strong class=\"font-medium-2 text-uppercase\"\n *ngIf=\"user?.last_name\">\n {{\n user?.first_name\n ? user?.first_name + ' ' + user?.last_name\n : 'Update Profile'\n }}\n </strong>\n <strong class=\"font-medium-2 text-uppercase\"\n *ngIf=\"!user?.last_name\">\n {{ user?.first_name ? user?.first_name : 'Update Profile' }}\n </strong>\n <p class=\"font-small-4\">{{ userProfile?.headline }}</p>\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-5\">\n <div class=\"profile-cover-buttons\"\n *ngIf=\"!allowEdit\">\n <div class=\"d-flex halfway-fab align-self-end\">\n <div class=\"text-end d-none d-sm-none d-md-none d-lg-block\">\n <button type=\"button\"\n (click)=\"followUser()\"\n class=\"btn btn-outline-primary btn-raised me-2\">\n <i class=\"fa fa-plus\" aria-hidden=\"true\"></i>\n {{ isFollowing ? 'Following' : 'Follow' }}\n </button>\n <button type=\"button\"\n class=\"btn btn-primary btn-raised me-3\"\n (click)=\"sendMessageSlug()\">\n <i class=\"fa fa-mail-bulk\" aria-hidden=\"true\"></i> Message\n </button>\n </div>\n <div class=\"text-end d-block d-sm-block d-md-block d-lg-none\">\n <button type=\"button\"\n class=\"btn btn-primary btn-raised me-2\">\n <i class=\"fa fa-plus\" aria-hidden=\"true\"></i>\n </button>\n <button type=\"button\"\n class=\"btn btn-primary btn-raised me-3\">\n <i class=\"fa fa-mail-bulk\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</section>\n<!-- Basic User Details Ends -->\n<section>\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabMenu #menuItems\n [model]=\"items\"\n [activeItem]=\"activeItem\"\n (keydown.enter)=\"activateMenu()\"\n (click)=\"activateMenu()\">\n </p-tabMenu>\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <ng-template [ngIf]=\"user && activeItem.id === 'about'\">\n <pw-user-about [user]=\"user\"\n [isEdit]=\"allowEdit\"\n (saveEvent)=\"getUserBySlug()\">\n </pw-user-about>\n </ng-template>\n <ng-template [ngIf]=\"activeItem.id === 'projects'\">\n <pw-user-projects [user]=\"user\"\n [isEdit]=\"allowEdit\"></pw-user-projects>\n </ng-template>\n <ng-template [ngIf]=\"activeItem.id === 'portfolio'\">\n <pw-portfolios [user]=\"user\"\n [isEdit]=\"allowEdit\"></pw-portfolios>\n </ng-template>\n </div>\n </div>\n </div>\n</section>\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ 'User.Profile.ProfilePicture' | transloco }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n aspectRatio=\"auto\"\n [userAvatar]=\"image\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgxGpAutocompleteModule } from '@angular-magic/ngx-gp-autocomplete';\n\nimport { AppConfigService } from '@posiwise/app-config-service';\nimport { CoreTranslocoModule } from '@posiwise/core-transloco';\nimport { DirectivesModule } from '@posiwise/directives';\nimport { PipesModule } from '@posiwise/pipes';\nimport { SharedComponentsModule } from '@posiwise/shared-components';\n\nimport { NgxCaptchaModule } from 'ngx-captcha';\nimport { UiSwitchModule } from 'ngx-ui-switch';\nimport { AccordionModule } from 'primeng/accordion';\nimport { CalendarModule } from 'primeng/calendar';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\nimport { RatingModule } from 'primeng/rating';\nimport { SelectButtonModule } from 'primeng/selectbutton';\n\nimport { Loader } from '@googlemaps/js-api-loader';\nimport { NgbDatepickerModule, NgbModalModule } from '@ng-bootstrap/ng-bootstrap';\n\nimport { AccountComponent } from './account/account.component';\nimport { AccountDetailsComponent } from './account/account-details/account-details.component';\nimport { AddSubscriptionComponent } from './account/subscriptions/add-subscription/add-subscription.component';\nimport { SavedCardDetailsComponent } from './account/subscriptions/saved-card-details/saved-card-details.component';\nimport { SubscriptionCredentialComponent } from './account/subscriptions/subscription-credential/subscription-credential.component';\nimport { UpdatePaymentDetailsComponent } from './account/subscriptions/update-payment-details/update-payment-details.component';\nimport { UpgradeSubscriptionComponent } from './account/subscriptions/upgrade-subscription/upgrade-subscription.component';\nimport { UserSubscriptionDetailsComponent } from './account/subscriptions/user-subscription-details/user-subscription-details.component';\nimport { UserSubscriptionListComponent } from './account/subscriptions/user-subscriptions-list/user-subscriptions-list.component';\nimport { UserInvoiceComponent } from './account/user-invoice/user-invoice.component';\nimport { CommunicationTabComponent } from './settings-tabs/communication-tab/communication-tab.component';\nimport { OthersTabComponent } from './settings-tabs/others-tab/others-tab.component';\nimport { SecurityTabComponent } from './settings-tabs/security-tab/security-tab.component';\nimport { SettingsComponent } from './settings-tabs/settings-tabs.component';\nimport { SupportComponent } from './support/support.component';\nimport { SupportDetailsComponent } from './support/support-details/support-details.component';\nimport { EditPortfoliosComponent } from './user-profile/edit-portfolios/edit-portfolios.component';\nimport { EditProjectModalComponent } from './user-profile/edit-project-modal/edit-project-modal.component';\nimport { EditQualificationsModalComponent } from './user-profile/edit-qualifications-modal/edit-qualifications-modal.component';\nimport { EditRecommendationModalComponent } from './user-profile/edit-recommendation-modal/edit-recommendation-modal.component';\nimport { EditSkillsModalComponent } from './user-profile/edit-skills-modal/edit-skills-modal.component';\nimport { EditSocialLinksComponent } from './user-profile/edit-social-links/edit-social-links.component';\nimport { EditUserProfileModalComponent } from './user-profile/edit-user-profile-modal/edit-user-profile-modal.component';\nimport { UserAboutComponent } from './user-profile/user-about/user-about.component';\nimport { PortfoliosComponent } from './user-profile/user-portfolios/user-portfolios.component';\nimport { UserProfilePageComponent } from './user-profile/user-profile-page.component';\nimport { UserProjectsComponent } from './user-profile/user-projects/user-projects.component';\n\nconst primeNgModules = [\n CalendarModule,\n MultiSelectModule,\n ProgressSpinnerModule,\n AccordionModule,\n FileUploadModule,\n DropdownModule,\n RatingModule,\n SelectButtonModule\n];\n\nconst ngbModule = [NgbModalModule, NgbDatepickerModule];\n\n@NgModule({\n declarations: [\n AccountComponent,\n AccountDetailsComponent,\n AddSubscriptionComponent,\n SavedCardDetailsComponent,\n SubscriptionCredentialComponent,\n UpdatePaymentDetailsComponent,\n UpgradeSubscriptionComponent,\n UserSubscriptionDetailsComponent,\n UserSubscriptionListComponent,\n UserInvoiceComponent,\n CommunicationTabComponent,\n OthersTabComponent,\n SecurityTabComponent,\n SettingsComponent,\n SupportComponent,\n EditPortfoliosComponent,\n EditProjectModalComponent,\n EditQualificationsModalComponent,\n EditRecommendationModalComponent,\n EditSkillsModalComponent,\n EditSocialLinksComponent,\n EditUserProfileModalComponent,\n UserAboutComponent,\n PortfoliosComponent,\n UserProfilePageComponent,\n UserProjectsComponent,\n SupportDetailsComponent\n ],\n imports: [\n InputTextModule,\n DirectivesModule,\n CommonModule,\n ReactiveFormsModule,\n CoreTranslocoModule,\n NgxGpAutocompleteModule,\n SharedComponentsModule,\n PipesModule,\n UiSwitchModule,\n NgxCaptchaModule,\n FormsModule,\n ...primeNgModules,\n ...ngbModule\n ],\n exports: [\n AccountComponent,\n AccountDetailsComponent,\n AddSubscriptionComponent,\n SavedCardDetailsComponent,\n SubscriptionCredentialComponent,\n UpdatePaymentDetailsComponent,\n UpgradeSubscriptionComponent,\n UserSubscriptionDetailsComponent,\n UserSubscriptionListComponent,\n UserInvoiceComponent,\n CommunicationTabComponent,\n OthersTabComponent,\n SecurityTabComponent,\n SettingsComponent,\n SupportComponent,\n EditPortfoliosComponent,\n EditProjectModalComponent,\n EditQualificationsModalComponent,\n EditRecommendationModalComponent,\n EditSkillsModalComponent,\n EditSocialLinksComponent,\n EditUserProfileModalComponent,\n UserAboutComponent,\n PortfoliosComponent,\n UserProfilePageComponent,\n UserProjectsComponent,\n SupportDetailsComponent\n ],\n providers: [\n {\n provide: Loader,\n useFactory: (appConfigService: AppConfigService) => {\n return new Loader({\n apiKey: appConfigService.getGoogleApiKey(),\n libraries: ['places']\n });\n },\n deps: [AppConfigService]\n }\n ]\n})\nexport class UserModuleModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3","i5","i6","i7","i8","i9","i10","i4","i7.SavedCardDetailsComponent","i10.SavedCardDetailsComponent","i11","i13","i14","i12","i5.EditQualificationsModalComponent","i6.EditSkillsModalComponent","i7.EditSocialLinksComponent","i8.EditUserProfileModalComponent","i8.EditPortfoliosComponent","i9.EditProjectModalComponent","i10.EditRecommendationModalComponent","i11.EditSkillsModalComponent","i8.UserAboutComponent","i9.PortfoliosComponent","i10.UserProjectsComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"posiwise-user-module.mjs","sources":["../../../../libs/user-module/src/lib/account/account.component.ts","../../../../libs/user-module/src/lib/account/account.component.html","../../../../libs/user-module/src/lib/account/account-details/account-details.component.ts","../../../../libs/user-module/src/lib/account/account-details/account-details.component.html","../../../../libs/user-module/src/lib/account/subscriptions/add-subscription/add-subscription.component.ts","../../../../libs/user-module/src/lib/account/subscriptions/add-subscription/add-subscription.component.html","../../../../libs/user-module/src/lib/account/subscriptions/saved-card-details/saved-card-details.component.ts","../../../../libs/user-module/src/lib/account/subscriptions/saved-card-details/saved-card-details.component.html","../../../../libs/user-module/src/lib/account/subscriptions/subscription-credential/subscription-credential.component.ts","../../../../libs/user-module/src/lib/account/subscriptions/subscription-credential/subscription-credential.component.html","../../../../libs/user-module/src/lib/account/subscriptions/update-payment-details/update-payment-details.component.ts","../../../../libs/user-module/src/lib/account/subscriptions/update-payment-details/update-payment-details.component.html","../../../../libs/user-module/src/lib/account/subscriptions/upgrade-subscription/upgrade-subscription.component.ts","../../../../libs/user-module/src/lib/account/subscriptions/upgrade-subscription/upgrade-subscription.component.html","../../../../libs/user-module/src/lib/account/subscriptions/user-subscription-details/user-subscription-details.component.ts","../../../../libs/user-module/src/lib/account/subscriptions/user-subscription-details/user-subscription-details.component.html","../../../../libs/user-module/src/lib/account/subscriptions/user-subscriptions-list/user-subscriptions-list.component.ts","../../../../libs/user-module/src/lib/account/subscriptions/user-subscriptions-list/user-subscriptions-list.component.html","../../../../libs/user-module/src/lib/account/user-invoice/user-invoice.component.ts","../../../../libs/user-module/src/lib/account/user-invoice/user-invoice.component.html","../../../../libs/user-module/src/lib/settings-tabs/communication-tab/communication-tab.component.ts","../../../../libs/user-module/src/lib/settings-tabs/communication-tab/communication-tab.component.html","../../../../libs/user-module/src/lib/settings-tabs/others-tab/others-tab.component.ts","../../../../libs/user-module/src/lib/settings-tabs/others-tab/others-tab.component.html","../../../../libs/user-module/src/lib/settings-tabs/security-tab/security-tab.component.ts","../../../../libs/user-module/src/lib/settings-tabs/security-tab/security-tab.component.html","../../../../libs/user-module/src/lib/settings-tabs/settings-tabs.component.ts","../../../../libs/user-module/src/lib/settings-tabs/settings-tabs.component.html","../../../../libs/user-module/src/lib/support/support.component.ts","../../../../libs/user-module/src/lib/support/support.component.html","../../../../libs/user-module/src/lib/support/support-details/support-details.component.ts","../../../../libs/user-module/src/lib/support/support-details/support-details.component.html","../../../../libs/user-module/src/lib/user-profile/edit-portfolios/edit-portfolios.component.ts","../../../../libs/user-module/src/lib/user-profile/edit-portfolios/edit-portfolios.component.html","../../../../libs/user-module/src/lib/user-profile/edit-project-modal/edit-project-modal.component.ts","../../../../libs/user-module/src/lib/user-profile/edit-project-modal/edit-project-modal.component.html","../../../../libs/user-module/src/lib/user-profile/edit-qualifications-modal/edit-qualifications-modal.component.ts","../../../../libs/user-module/src/lib/user-profile/edit-qualifications-modal/edit-qualifications-modal.component.html","../../../../libs/user-module/src/lib/user-profile/edit-recommendation-modal/edit-recommendation-modal.component.ts","../../../../libs/user-module/src/lib/user-profile/edit-recommendation-modal/edit-recommendation-modal.component.html","../../../../libs/user-module/src/lib/user-profile/edit-skills-modal/edit-skills-modal.component.ts","../../../../libs/user-module/src/lib/user-profile/edit-skills-modal/edit-skills-modal.component.html","../../../../libs/user-module/src/lib/user-profile/edit-social-links/edit-social-links.component.ts","../../../../libs/user-module/src/lib/user-profile/edit-social-links/edit-social-links.component.html","../../../../libs/user-module/src/lib/user-profile/edit-user-profile-modal/edit-user-profile-modal.component.ts","../../../../libs/user-module/src/lib/user-profile/edit-user-profile-modal/edit-user-profile-modal.component.html","../../../../libs/user-module/src/lib/user-profile/user-about/user-about.component.ts","../../../../libs/user-module/src/lib/user-profile/user-about/user-about.component.html","../../../../libs/user-module/src/lib/user-profile/user-portfolios/user-portfolios.component.ts","../../../../libs/user-module/src/lib/user-profile/user-portfolios/user-portfolios.component.html","../../../../libs/user-module/src/lib/user-profile/user-projects/user-projects.component.ts","../../../../libs/user-module/src/lib/user-profile/user-projects/user-projects.component.html","../../../../libs/user-module/src/lib/user-profile/user-profile-page.component.ts","../../../../libs/user-module/src/lib/user-profile/user-profile-page.component.html","../../../../libs/user-module/src/lib/user-module.module.ts","../../../../libs/user-module/src/posiwise-user-module.ts"],"sourcesContent":["import { Component, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { MenuItem } from 'primeng/api';\n\n@Component({\n selector: 'pw-user-account',\n templateUrl: './account.component.html'\n})\nexport class AccountComponent {\n @ViewChild('menuItems', { static: true }) menu: MenuItem[];\n\n items: MenuItem[];\n\n activeItem: MenuItem;\n\n path: string;\n\n constructor(private readonly router: Router) {\n this.items = [\n {\n id: 'account',\n label: 'Account',\n icon: 'fa fa-fw fa-list',\n routerLink: ['/account/details']\n },\n {\n id: 'subscription',\n label: 'Subscriptions',\n icon: 'fa fa-fw fa-file-invoice',\n routerLink: ['/account/subscriptions']\n },\n {\n id: 'invoice',\n label: 'Invoices',\n icon: 'fa fa-fw fa-tag',\n routerLink: ['/account/invoice']\n }\n ];\n this.activeItem =\n this.items[\n this.items.findIndex(\n record => record.routerLink[0] === this.router.url.split('?')[0]\n )\n ];\n }\n\n activateMenu() {\n this.activeItem = this.menu['activeItem'];\n }\n}\n","<pw-tabs [items]=\"items\"></pw-tabs>\n","import { Component, ElementRef, Injector, OnInit, ViewChild } from '@angular/core';\nimport { AbstractControl, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { NgxGpAutocompleteDirective } from '@angular-magic/ngx-gp-autocomplete';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { AuthService, GeoService, ProfileService } from '@posiwise/common-services';\nimport { AppUser, Country, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { StatusCodes } from 'http-status-codes';\nimport { map, Observable } from 'rxjs';\nimport swal from 'sweetalert2';\n\nimport { NgbDateStruct, NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'pw-account-details',\n templateUrl: './account-details.component.html',\n styleUrls: ['./account-details.component.scss']\n})\nexport class AccountDetailsComponent extends AppBaseComponent implements OnInit {\n @ViewChild('ngxPlaces') placesRef: NgxGpAutocompleteDirective;\n @ViewChild('password', { static: false }) passwordRef: ElementRef;\n\n emailForm: UntypedFormGroup;\n passwordForm: UntypedFormGroup;\n profileForm: UntypedFormGroup;\n\n image = 'assets/img/icons/male.png';\n\n countries$: Observable<Country[]>;\n\n states: Country[] = [];\n\n validatedEmail: string;\n\n toggleEmail: boolean;\n togglePassword: boolean;\n toggleNickName: boolean;\n\n passwordVerified = false;\n isCurrentPasswordValid = true;\n\n selectedState;\n\n user: User;\n\n slug: string;\n\n isLoaded = false;\n passwordBusyButton = false;\n slugBusyButton = false;\n emailBusyButton = false;\n validatePasswordBusyButton = false;\n profileBusyButton = false;\n\n constructor(\n private readonly fb: UntypedFormBuilder,\n private readonly modalService: NgbModal,\n private readonly authService: AuthService,\n private readonly geoService: GeoService,\n private readonly profileService: ProfileService,\n injector: Injector\n ) {\n super(injector);\n this.getForms();\n }\n\n ngOnInit() {\n this.getUserProfile();\n this.geoService.getCountries().subscribe(() => {\n this.countries$ = this.geoService\n .getCountries()\n .pipe(\n map((countries: []) => [{ name: 'Select Country', code: null }, ...countries])\n );\n });\n }\n\n handleAddressChange(_event) {\n this.profileForm.patchValue({\n latitude: _event.geometry.location.lat(),\n longitude: _event.geometry.location.lng(),\n location: _event.formatted_address\n });\n }\n\n private getUserProfile() {\n this.userService\n .getUserInfo()\n .subscribe(user => {\n if (user) {\n this.user = user;\n this.slug = user.slug;\n if (user?.user_avatar?.length) {\n this.image = user?.user_avatar[2]?.url;\n }\n let dobObject: NgbDateStruct;\n if (user.dob) {\n dobObject = {\n day: Number(user.dob.substring(8, 10)),\n month: Number(user.dob.substring(5, 7)),\n year: Number(user.dob.substring(0, 4))\n };\n }\n\n this.getRegion(user.country);\n\n this.profileForm.patchValue(this.user);\n this.profileForm.patchValue({ dob: dobObject });\n this.validatedEmail = this.user.email;\n }\n })\n .add(() => {\n this.isLoaded = true;\n });\n }\n\n /**\n * Updates Email Address\n * this needs to be separate and requires the email to be validated from email before it's actually changed\n */\n onEmailFormSubmit() {\n this.emailBusyButton = true;\n const data = this.emailForm.value;\n data.confirmation_path = 'confirm-email';\n\n if (data && this.passwordVerified) {\n this.userService\n .updateEmail(data)\n .subscribe(() => {\n this.emailForm.reset();\n this.passwordVerified = false;\n this.toast.success(`A verification email has been sent to ${data.email}`, '', {\n positionClass: 'toast-top-center',\n timeOut: 100000\n });\n })\n .add(() => {\n this.emailBusyButton = false;\n });\n }\n }\n\n validatePassword() {\n this.validatePasswordBusyButton = true;\n const password = this.passwordRef.nativeElement.value;\n if (password) {\n this.userService\n .checkPassword({ password })\n .subscribe(data => {\n if (data?.status === StatusCodes.OK) {\n this.passwordVerified = true;\n } else {\n this.toast.error(data.error.message);\n this.passwordRef.nativeElement.value = '';\n }\n })\n .add(() => {\n this.validatePasswordBusyButton = false;\n });\n }\n }\n\n handleImageError(event: Event, fallbackPath): void {\n HelperService.handleImageFallbackPath(event, fallbackPath);\n }\n\n checkValidity() {\n const password = this.passwordRef.nativeElement.value;\n if (password.length > 5) {\n this.isCurrentPasswordValid = false;\n } else {\n this.isCurrentPasswordValid = true;\n }\n }\n\n onPasswordFormSubmit() {\n if (this.passwordForm.valid) {\n this.passwordBusyButton = true;\n const data = {\n password: this.passwordForm.value['newPassword'],\n password_confirmation: this.passwordForm.value['confirmPassword'],\n old_password: this.passwordForm.value['currentPassword']\n };\n this.userService\n .updatePassword(data)\n .subscribe(response => {\n if (response.status_code === 200) {\n this.toast.success(response.message, '', {\n positionClass: 'toast-top-center'\n });\n this.onTogglePassword();\n } else {\n this.toast.error(response.error.message);\n }\n this.passwordForm.reset();\n })\n .add(() => {\n this.passwordBusyButton = false;\n });\n }\n }\n\n @ValidateForm('profileForm')\n onProfileFormSubmit() {\n this.profileBusyButton = true;\n const data = { ...this.profileForm.value };\n data.dob = HelperService.dateFormat(this.profileForm.get('dob')?.value);\n if (data.location === '') {\n data.location = null;\n }\n Object.entries(data).forEach(([key, val]) => {\n if (val === '' || val === null) {\n delete data[key];\n }\n });\n this.profileService\n .updateUserProfile(data)\n .subscribe(() => {\n this.toast.success(this.translation.translate('User.Profile.ProfileUpdated'));\n })\n .add(() => {\n this.profileBusyButton = false;\n });\n }\n\n onAvatarSave() {\n const data = {\n avatar: this.profileForm.get('avatar')?.value\n };\n this.profileService.updateUserProfile(data).subscribe(() => {\n this.toast.success(this.translation.translate('User.Profile.ProfileUpdated'));\n });\n }\n\n openModal(content) {\n this.modalService.open(content, { centered: true, windowClass: 'modal-holder' });\n }\n\n onUpdateSlug() {\n this.slugBusyButton = true;\n this.userService\n .updateSlug(this.slug)\n .subscribe(response => {\n this.toggleNickName = false;\n if (response?.status === StatusCodes.OK) {\n this.getUserProfile();\n } else {\n this.toast.error('User.Account.UserNameError');\n }\n })\n .add(() => {\n this.slugBusyButton = false;\n });\n }\n\n onImageSelection(event) {\n const blob = this.dataURLtoBlob(event);\n const filename = `${`${this.slug.toLocaleLowerCase()}_${Date.parse(\n new Date().toString()\n )}`}.png`;\n const file: File = new File([blob], filename);\n this.userService.addAvatar(file).subscribe(res => {\n this.image = res?.user_avatar[2]?.url;\n this.modalService.dismissAll();\n });\n }\n\n sendMailToResetPassword() {\n this.authService.forgotPassword(this.user.email, 'reset-password').subscribe(() => {\n this.toast.success(this.translation.translate('User.Account.Message.CheckEmail'));\n });\n }\n\n getRegion(countryId: number | string) {\n if (countryId) {\n this.geoService.getRegions(countryId).subscribe(response => {\n this.states = [{ code: 0, name: 'Select State' }, ...response];\n });\n }\n }\n\n private getForms() {\n this.emailForm = this.fb.group({\n email: ['', [Validators.required, Validators.email]]\n });\n\n this.passwordForm = this.fb.group(\n {\n currentPassword: ['', [Validators.required]],\n newPassword: ['', [Validators.required, Validators.minLength(8)]],\n confirmPassword: ['', [Validators.required, Validators.minLength(8)]]\n },\n {\n validators: this.passwordMatcher\n }\n );\n\n this.profileForm = AppUser.getForm(new AppUser({}));\n }\n\n private passwordMatcher(ac: AbstractControl): null {\n const password = ac.get('newPassword').value;\n const confirmPassword = ac.get('confirmPassword').value;\n if (password !== confirmPassword) {\n ac.get('confirmPassword').setErrors({ MatchPassword: true });\n }\n\n return null;\n }\n\n dataURLtoBlob(dataUrl: string) {\n const arr = dataUrl.split(',');\n const mime = /^[A-Z]*[a-z]*:(.*?);[A-Z]*/.exec(arr[0])?.[1];\n const bStr = atob(arr[1]);\n let n = bStr.length;\n const u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bStr.charCodeAt(n);\n }\n\n return new Blob([u8arr], { type: mime });\n }\n\n onToggleEmail() {\n this.emailForm.reset();\n this.passwordVerified = false;\n this.toggleEmail = false;\n }\n\n onTogglePassword() {\n this.passwordForm.reset();\n this.togglePassword = false;\n }\n\n onClose() {\n this.modalService.dismissAll();\n }\n\n shouldUserChangeEmail() {\n if (this.user.has_password) {\n this.toggleEmail = !this.toggleEmail;\n } else {\n swal.fire({\n text: `You don't have password, please reset your password first and then try changing email`,\n icon: 'warning'\n });\n }\n }\n}\n","<div class=\"w-100 text-center\">\n <ng-template [ngIf]=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </ng-template>\n</div>\n<div class=\"row d-flex flex-row\">\n <div class=\"col-md-8 order-md-first order-sm-last\">\n <section id=\"email-section\">\n <div class=\"row\">\n <div class=\"col-sm-12 col-md-8 col-lg-8\">\n <h2>{{ 'User.Account.RegisteredEmail' | transloco }}</h2>\n <!-- Email Form -->\n <section id=\"email-form\">\n <form [formGroup]=\"emailForm\"\n (ngSubmit)=\"onEmailFormSubmit()\">\n <!-- Email Address -->\n <div class=\"mt-0\">\n <label class=\"me-3\" for=\"Primary Email\">{{ 'User.Account.PrimaryEmail' | transloco }}:\n </label>\n <strong>{{ validatedEmail }}</strong>\n <div class=\"mt-1\">\n <ng-container *ngIf=\"!toggleEmail\">\n <a class=\"btn btn-raised btn-outline-primary\"\n aria-label=\"Navigate to Target\"\n (click)=\"shouldUserChangeEmail()\">\n {{ 'User.Account.ChangeEmail' | transloco }}</a>\n </ng-container>\n <ng-container *ngIf=\"toggleEmail\">\n <div class=\"row\">\n <div class=\"clearfix\"></div>\n <div class=\"col-12 mb-3\">\n <input type=\"password\"\n class=\"form-control\"\n id=\"pwd\"\n #password\n *ngIf=\"!passwordVerified\"\n placeholder=\"Current Password\"\n (keyup)=\"checkValidity()\" />\n <input type=\"text\"\n class=\"form-control\"\n id=\"email\"\n *ngIf=\"passwordVerified\"\n placeholder=\"New Email\"\n formControlName=\"email\" />\n </div>\n <div class=\"col-12\">\n <a *ngIf=\"toggleEmail\"\n class=\"btn btn-raised btn-outline-default my-2 me-2\"\n aria-label=\"Navigate to Target\"\n (click)=\"onToggleEmail()\">{{ 'Button.Cancel' | transloco }}</a>\n <button class=\"btn btn-raised btn-primary\"\n type=\"submit\"\n [buttonBusy]=\"validatePasswordBusyButton\"\n (click)=\"validatePassword()\"\n *ngIf=\"!passwordVerified\"\n [disabled]=\"isCurrentPasswordValid\">\n {{ 'User.Account.Validate' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-raised btn-primary\"\n [buttonBusy]=\"emailBusyButton\"\n *ngIf=\"passwordVerified\">\n {{\n 'User.Account.SendVerification' | transloco\n }}\n </button>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n <section id=\"slug\"\n class=\"mb-2 mt-3\">\n <div>\n <label class=\"me-3\" for=\"User Account\">{{ 'User.Account.NickName' | transloco }}:\n </label>\n <strong>{{ slug }}</strong>\n <div>\n <ng-container *ngIf=\"!toggleNickName\">\n <a class=\"btn btn-raised btn-outline-primary me-2\"\n aria-label=\"Navigate to Target\"\n (click)=\"toggleNickName = true\">\n {{ 'User.Account.ChangeNickname' | transloco }}</a>\n </ng-container>\n <ng-container *ngIf=\"toggleNickName\">\n <div class=\"mb-3\">\n <input type=\"text\"\n class=\"form-control slug-input\"\n [(ngModel)]=\"slug\"\n [ngModelOptions]=\"{ standalone: true }\" />\n </div>\n <div>\n <button type=\"button\"\n class=\"btn btn-raised btn-outline-default\"\n (click)=\"toggleNickName = false\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"button\"\n class=\"btn btn-raised btn-primary ms-2\"\n [buttonBusy]=\"slugBusyButton\"\n [disabled]=\"slug?.length < 2\"\n (click)=\"onUpdateSlug()\">\n {{ 'User.Account.UpdateNickname' | transloco }}\n </button>\n </div>\n </ng-container>\n </div>\n </div>\n </section>\n </form>\n </section>\n </div>\n </div>\n <section id=\"password-change\"\n class=\"mt-1\">\n <form [formGroup]=\"passwordForm\"\n (ngSubmit)=\"onPasswordFormSubmit()\">\n <div class=\"row\">\n <div class=\"col-sm-12 col-md-8 col-lg-8 mt-4\">\n <h2>{{ 'User.Account.ChangePassword' | transloco }}</h2>\n </div>\n <ng-container *ngIf=\"!user?.has_password\">\n <div class=\"text-danger mx-3 my-2\">\n <div>\n You don't have a password set, click on\n <em>{{ 'User.Account.ChangePassword' | transloco }}</em>.\n </div>\n <div>{{ 'User.Profile.PictureMessage' | transloco }}</div>\n </div>\n </ng-container>\n <div class=\"col-sm-12 col-md-8 col-lg-8\"\n *ngIf=\"user?.has_password\">\n <ng-container *ngIf=\"togglePassword\">\n <div class=\"mb-3\">\n <label for=\"account\">{{ 'User.Account.CurrentPassword' | transloco }}</label>\n <input type=\"password\"\n class=\"form-control\"\n formControlName=\"currentPassword\" />\n <small class=\"form-text text-muted danger\"\n *ngIf=\"\n !passwordForm.get('currentPassword').valid &&\n (passwordForm.get('currentPassword').dirty ||\n passwordForm.get('currentPassword').touched)\n \">\n {{ 'User.Account.Required' | transloco }}\n </small>\n </div>\n <div class=\"mb-3\">\n <label for=\"password\">{{ 'User.Account.NewPassword' | transloco }}</label>\n <input type=\"password\"\n class=\"form-control\"\n formControlName=\"newPassword\" />\n <small class=\"form-text text-muted danger\"\n *ngIf=\"\n !passwordForm.get('newPassword').valid &&\n (passwordForm.get('newPassword').dirty ||\n passwordForm.get('newPassword').touched)\n \">{{ 'User.Account.Validation.StrongPassword' | transloco }}\n </small>\n </div>\n <div class=\"mb-3\">\n <label for=\"password\">{{\n 'User.Account.ConfirmPassword' | transloco\n }}</label>\n <input type=\"password\"\n class=\"form-control\"\n formControlName=\"confirmPassword\" />\n <div class=\"text-danger\"\n *ngIf=\"\n passwordForm.get('confirmPassword').touched &&\n passwordForm.get('confirmPassword').errors\n ?.MatchPassword\n \">\n {{ 'User.Account.Validation.PasswordsMatch' | transloco }}\n </div>\n </div>\n <div class=\"mb-3\">\n <a class=\"btn btn-raised btn-outline-default\"\n aria-label=\"Navigate to Target\"\n data-bs-target=\"\"\n *ngIf=\"togglePassword\"\n (click)=\"onTogglePassword()\">\n {{ 'Button.Cancel' | transloco }}</a>\n <button class=\"btn btn-raised btn-primary ms-2\"\n [buttonBusy]=\"passwordBusyButton\"\n [disabled]=\"!passwordForm.valid\">\n {{ 'User.Account.UpdatePassword' | transloco }}\n </button>\n </div>\n </ng-container>\n <div>\n <a class=\"btn btn-raised btn-outline-primary\"\n aria-label=\"Navigate to Target\"\n data-bs-target=\"\"\n *ngIf=\"!togglePassword\"\n (click)=\"togglePassword = !togglePassword\">\n {{ 'User.Account.ChangePassword' | transloco }}</a>\n </div>\n </div>\n <div class=\"col-sm-12 col-md-8 col-lg-8\"\n *ngIf=\"!user?.has_password\">\n <a class=\"btn btn-raised btn-primary me-2\"\n aria-label=\"Navigate to Target\"\n data-bs-target=\"\"\n (click)=\"sendMailToResetPassword()\">\n {{ 'User.Account.ChangePassword' | transloco }}</a>\n </div>\n </div>\n </form>\n </section>\n </section>\n </div>\n <!-- Avatar -->\n <div class=\"mt-4 mt-sm-0 col-md-4 text-center order-md-last order-sm-first\">\n <h2>{{ 'User.Profile.Avatar' | transloco }}</h2>\n <div class=\"text-center mt-1\">\n <div class=\"image-container\">\n <img [src]=\"image\"\n width=\"150\"\n height=\"150\"\n class=\"image rounded-circle\"\n alt=\"User Male\"\n (error)=\"handleImageError($event, 'assets/img/icons/male.png')\" />\n <div class=\"overlay\"\n (keydown.enter)=\"openModal(content)\"\n (click)=\"openModal(content)\">\n <div class=\"overlay-text\">{{ 'User.Profile.Change' | transloco }}</div>\n </div>\n </div>\n <h4 class=\"mt-2\">{{ user?.first_name }} {{ user?.last_name }}</h4>\n <a aria-label=\"Navigate to Target\"\n class=\"d-inline-block mb-2\"\n (click)=\"openModal(content)\">\n {{ 'User.Profile.EditAvatar' | transloco }}</a>\n <br />\n </div>\n </div>\n</div>\n<br />\n<section id=\"user-profile\"\n class=\"mt-2\">\n <div class=\"row\">\n <div class=\"col-12\">\n <form [formGroup]=\"profileForm\"\n (ngSubmit)=\"onProfileFormSubmit()\">\n <h2>{{ 'User.Profile.UserProfile' | transloco }}</h2>\n <div class=\"row mt-3\">\n <div class=\"col-sm-12 col-md-6 col-lg-6\">\n <pw-input-container label=\"First Name\"\n name=\"first_name\"\n errorMsg=\"Please enter first Name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"first_name\"\n id=\"first_name\" />\n </pw-input-container>\n <pw-input-container label=\"Preferred name\"\n name=\"preferred_name\"\n errorMsg=\"Please enter preferred Name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"preferred_name\"\n id=\"preferred_name\" />\n </pw-input-container>\n <ng-container *ngIf=\"countries$ | async as countries\">\n <pw-input-container label=\"Country\"\n name=\"country\"\n errorMsg=\"Please select a country\">\n <p-dropdown\n id=\"country\"\n [options]=\"countries\"\n optionLabel=\"name\"\n optionValue=\"code\"\n formControlName=\"country\"\n (onChange)=\"getRegion($event.value)\"\n placeholder=\"{{ 'User.Profile.SelectCountry' | transloco }}\">\n </p-dropdown>\n </pw-input-container>\n </ng-container>\n <pw-input-container label=\"Province\"\n name=\"province\"\n errorMsg=\"Please enter province\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"province\" />\n </pw-input-container>\n <pw-input-container label=\"Website Url\"\n name=\"website_url\"\n errorMsg=\"Please enter Website\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"website_url\" />\n </pw-input-container>\n </div>\n <div class=\"col-sm-12 col-md-6 col-lg-6\">\n <pw-input-container label=\"Last Name\"\n name=\"last_name\"\n errorMsg=\"Please enter last Name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"last_name\"\n id=\"last_name\" />\n </pw-input-container>\n <pw-input-container label=\"Date of Birth\"\n name=\"dob\"\n errorMsg=\"Please enter date of birth\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"dd-mmm-yyyy\"\n formControlName=\"dob\"\n ngbDatepicker\n #d=\"ngbDatepicker\"\n [minDate]=\"{ day: 1, month: 1, year: 1950 }\"\n [maxDate]=\"{ day: 31, month: 12, year: 2018 }\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"d.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </pw-input-container>\n <pw-input-container label=\"State\"\n name=\"state\"\n errorMsg=\"Please select a state\">\n <p-dropdown\n id=\"state\"\n [options]=\"states\"\n [(ngModel)]=\"selectedState\"\n optionLabel=\"name\"\n optionValue=\"code\"\n formControlName=\"state\"\n [placeholder]=\"'User.Profile.SelectState' | transloco\">\n </p-dropdown>\n\n </pw-input-container>\n <!-- Location -->\n <pw-input-container label=\"Location\"\n name=\"location\">\n <input ngx-gp-autocomplete\n class=\"form-control\"\n #places=\"ngx-places\"\n formControlName=\"location\"\n (onAddressChange)=\"handleAddressChange($event)\" />\n </pw-input-container>\n <pw-input-container label=\"Phone Number\"\n name=\"phone_number\"\n errorMsg=\"Please enter phone number\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"phone_number\"\n id=\"phone_number\" />\n </pw-input-container>\n </div>\n <div class=\"col-12 text-end\">\n <div class=\"mb-3\">\n <button class=\"btn btn-raised btn-primary\" [buttonBusy]=\"profileBusyButton\">\n {{ 'Button.Save' | transloco }}\n </button>\n </div>\n </div>\n </div>\n </form>\n </div>\n </div>\n</section>\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ 'User.Profile.ProfilePicture' | transloco }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n aspectRatio=\"auto\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\n","import { Component, Injector, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { ProductService } from '@posiwise/common-services';\nimport { Product, PRODUCT_CATEGORY, Subscription, User } from '@posiwise/common-utilities';\n\nimport cloneDeep from 'lodash/cloneDeep';\nimport sortBy from 'lodash/sortBy';\n\n@Component({\n selector: 'pw-add-subscription',\n templateUrl: './add-subscription.component.html',\n styleUrls: ['./add-subscription.component.scss']\n})\nexport class AddSubscriptionComponent extends AppBaseComponent implements OnInit, OnDestroy {\n private readonly singleProducts = [];\n\n private readonly enterpriseProducts = [];\n\n form: UntypedFormGroup;\n\n busy: boolean;\n isLoaded: boolean;\n selectedProduct: boolean;\n isPurchaseAttempted: boolean;\n userLoggedIn: boolean;\n\n availableProducts: Product[] = [];\n products: Product[];\n\n user: User;\n\n unitError: string;\n\n category = PRODUCT_CATEGORY;\n\n units = 1;\n\n subscribedPermissionKeys = [];\n\n currentSubscription: Subscription;\n\n subscriptionId: number;\n\n constructor(\n private readonly productService: ProductService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.subscriptionId = Number(this.route.snapshot.queryParamMap.get('subscription_id'));\n this.getProducts();\n }\n\n private getProducts() {\n // Gets All the products\n this.productService\n .getProductList({}, this.subscriptionId, { only_relevant: true })\n .subscribe((response: Subscription) => {\n this.products = response.products || [];\n if (this.products?.length) {\n this.products = this.products.filter(x => x.active);\n }\n\n this.isLoaded = true;\n this.userStore().subscribe(user => {\n this.user = user;\n if (this.user) {\n const subs: Subscription[] = cloneDeep(this.user.subscriptions);\n subs.forEach(subscription => {\n subscription.products.forEach(product => {\n const prod = this.products.find(x => x.id === product.id);\n if (prod) {\n prod['is_subscribed'] = true;\n prod['purchased_units'] = product?.purchased_units;\n }\n });\n });\n\n this.subscribedPermissionKeys = Array.from(\n new Set(\n this.user.subscriptions\n .flatMap(x => x.products)\n .map(product => product.permission_key)\n )\n );\n\n // show category only if we have products\n const prodPermissionKeys = this.products.map(p => p.permission_key);\n this.subscribedPermissionKeys = this.subscribedPermissionKeys.filter(x =>\n prodPermissionKeys.includes(x)\n );\n\n // Filtering the product with the existing permission_key\n this.availableProducts = sortBy(\n this.getSingleCategoryProducts(),\n 'is_subscribed'\n );\n }\n });\n });\n }\n\n private getSingleCategoryProducts(category = this.subscribedPermissionKeys[0]) {\n return this.products.filter(x => category === x.permission_key);\n }\n\n onChangeCategory(category) {\n this.availableProducts = this.getSingleCategoryProducts(category);\n this.availableProducts = sortBy(this.availableProducts, 'is_subscribed');\n }\n\n onSelection(product) {\n this.router.navigate([\n `account/subscriptions/upgrade/${this.subscriptionId}/${product.id}`\n ]);\n }\n\n trackByProduct(_index: number, item: Product) {\n return item.id;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div *ngIf=\"isLoaded && !selectedProduct\"\n class=\"mt-4\">\n <a aria-label=\"Navigate to Target\"\n [routerLink]=\"['/account/subscriptions']\"\n class=\"previous float-start\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i>\n </a>\n\n <div class=\"d-flex flex-wrap justify-content-center\">\n <div class=\"toggle\"\n *ngFor=\"let item of subscribedPermissionKeys; let i = index\">\n <input type=\"radio\"\n name=\"sizeBy\"\n value=\"option{{ i + 1 }}\"\n id=\"option{{ i + 1 }}\"\n (change)=\"onChangeCategory(item)\"\n [checked]=\"i === 0\" />\n <label for=\"option{{ i + 1 }}\">{{ item }}</label>\n </div>\n </div>\n\n <ul class=\"row animated fadeIn d-flex\">\n <li *ngFor=\"let product of availableProducts; trackBy: trackByProduct\"\n class=\"col-sm-12 col-md-6 col-xl-4 my-3 mt-sm-2\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <h4 class=\"text-bold-500 primary mb-3\">{{ product.name }}</h4>\n <ng-template [ngIf]=\"product.price_per_unit\"\n [ngIfElse]=\"freeProductRef\">\n <h5 *ngIf=\"product?.purchased_units\"\n class=\"my-3 branding-color-1\">\n Currently {{ product.currency | currencySymbol\n }}{{\n (\n (product.purchased_units * product.price_per_unit) /\n 100\n ) | number:'1.2-2'\n }} / {{ product.billing_frequency }}\n </h5>\n <h5 class=\"my-3\">\n Min\n {{product.min_units > 1 ? (product.min_units + ' Seats'): (product.min_units + ' Seat')}}\n - {{ product.currency | currencySymbol\n }}{{\n ((product.min_units * product.price_per_unit) / 100) | number:'1.2-2'\n }} / {{ product.billing_frequency }}\n </h5>\n <h5 class=\"d-inline-block text-bold-600 mb-2\">\n {{ product.currency | currencySymbol\n }}{{ (product.price_per_unit / 100) | number:'1.2-2' }} / {{\n product.billing_frequency\n }} / seat\n </h5>\n </ng-template>\n <ng-template #freeProductRef>\n <div class=\"d-inline-block text-bold-600 mb-2\">Free</div>\n </ng-template>\n <p class=\"mb-2\"\n [innerHTML]=\"product?.description\"></p>\n </div>\n <div class=\"card-footer px-3\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"onSelection(product)\"\n *ngIf=\"\n !product.is_subscribed &&\n !product.trial_subscription &&\n product.stripe_plan_id\n \"\n class=\"card-btn btn btn-raised me-1 btn-primary btn-sm\">\n {{ 'User.Subscriptions.Subscribe' | transloco }}\n </a>\n\n <div class=\"mt-3\"\n *ngIf=\"\n !product.is_subscribed &&\n product.trial_subscription &&\n product.stripe_plan_id\n \">\n <a aria-label=\"Navigate to Target\"\n (click)=\"onSelection(product)\"\n class=\"card-btn btn btn-raised me-1 btn-primary btn-sm\">\n {{ 'Button.Upgrade' | transloco }}\n </a>\n <span class=\"badge bg-secondary position-absolute trial-badge\">{{ 'User.Subscriptions.Trial' | transloco }}\n </span>\n </div>\n\n <span *ngIf=\"\n product.is_subscribed &&\n !product.trial_subscription &&\n !product.is_deleted\n \"\n class=\"card-btn badge bg-default text-white\">\n {{ 'User.Subscriptions.Subscribed' | transloco }}\n </span>\n\n <span *ngIf=\"\n product.is_subscribed &&\n product.trial_subscription &&\n product.price_per_unit === 0 &&\n !product.is_deleted &&\n !product.stripe_plan_id\n \"\n class=\"card-btn badge bg-default text-white\">\n Free\n </span>\n\n <span *ngIf=\"product.is_deleted\"\n class=\"card-btn badge bg-default text-white\">\n {{ 'User.Subscriptions.UnsubscribedButActive' | transloco }}\n </span>\n </div>\n </div>\n </div>\n </li>\n </ul>\n <div class=\"row\">\n <div class=\"col-12\">\n <pw-no-data [withImage]=\"true\" message=\"No products available under this category.\"\n *ngIf=\"availableProducts && availableProducts.length === 0\">\n </pw-no-data>\n </div>\n </div>\n</div>\n","/**\n * @summary Shows the saved credit card details of the user\n * @author anikets43\n *\n * Created at : 2020-02-08 16:56:18\n * Last modified : 2020-02-08 17:06:29\n */\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'pw-saved-card-details',\n templateUrl: './saved-card-details.component.html',\n styleUrls: ['./saved-card-details.component.scss']\n})\nexport class SavedCardDetailsComponent {\n /**\n * Credit Card details like brand, exp_month, exp_year, card_number\n */\n @Input() data: {\n brand?: string;\n exp_month?: string;\n exp_year?: string;\n card_number?: string;\n };\n\n /**\n * boolean: change payment option\n */\n @Input() isChangePayment: boolean;\n\n @Input() showNewCard: boolean;\n\n /**\n * Emitter: on payment change request\n */\n @Output() changeEvent: EventEmitter<boolean> = new EventEmitter();\n\n OnPaymentChange(value) {\n this.changeEvent.emit(value);\n }\n}\n","<div class=\"row\">\n <div class=\"col-12\"\n *ngIf=\"!showNewCard\">\n <h4 class=\"title\">Saved Card</h4>\n <div class=\"summary-row d-flex mb-2\">\n <div class=\"summary-left\">Type:</div>\n <div class=\"summary-right\">{{ data?.brand }}</div>\n </div>\n <div class=\"summary-row d-flex mb-2\">\n <div class=\"summary-left\">Expiry:</div>\n <div class=\"summary-right\">{{ data.exp_month }} / {{ data.exp_year }}</div>\n </div>\n <div class=\"summary-row d-flex mb-2\">\n <div class=\"summary-left\">Card Number:</div>\n <div class=\"summary-right\">{{ data?.card_number }}</div>\n </div>\n </div>\n\n <div class=\"col-12 mt-3\"\n *ngIf=\"!showNewCard\">\n <button type=\"button\"\n class=\"btn btn-outline-primary btn-sm\"\n aria-label=\"Change Payment Option\"\n (click)=\"OnPaymentChange(true)\">\n Change Payment Option\n </button>\n </div>\n</div>\n","import { Component, Injector, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { SubscriptionService } from '@posiwise/common-services';\nimport { Subscription } from '@posiwise/common-utilities';\nimport { PasswordValidationComponent } from '@posiwise/shared-components';\n\nimport { forkJoin, from, Observable } from 'rxjs';\nimport { distinct } from 'rxjs/operators';\n\nimport { CredentialData } from '../../../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-subscription-credential',\n templateUrl: './subscription-credential.component.html',\n styleUrls: ['./subscription-credential.component.scss']\n})\nexport class SubscriptionCredentialComponent extends AppBaseComponent implements OnInit, OnDestroy {\n private credentialToEdit;\n\n @ViewChild('passwordValidationModalForRevealCredential', { static: false })\n passwordValidationModalForRevealCredential: PasswordValidationComponent;\n\n @ViewChild('passwordValidationModalForEditCredential', { static: false })\n passwordValidationModalForEditCredential: PasswordValidationComponent;\n\n @ViewChild('passwordValidationModalForAddCredential', { static: false })\n passwordValidationModalForAddCredential: PasswordValidationComponent;\n\n form: UntypedFormGroup;\n\n data = [];\n\n subscriptionId: number;\n totalRecords: number;\n\n allSubscriptionCredentials: CredentialData[];\n availableCredentials: CredentialData[] = [];\n credentialsSelect: CredentialData[];\n updatedCredential: CredentialData;\n uniqueCredential = [];\n\n isEdit = false;\n submitted = false;\n buttonBusy = false;\n isLoaded = false;\n\n credentials = [];\n\n showForm = false;\n\n credentialSaved: string;\n credentialName: string;\n\n credentialToReveal;\n\n constructor(\n private readonly fb: UntypedFormBuilder,\n private readonly subscriptionService: SubscriptionService,\n injector: Injector\n ) {\n super(injector);\n this.form = this.fb.group({\n credentials: this.fb.array([])\n });\n }\n\n ngOnInit() {\n this.route.params.subscribe(params => {\n this.subscriptionId = params['subscriptionId'];\n if (this.subscriptionId) {\n this.getAllCredentials();\n }\n });\n }\n\n get credentialsGroup() {\n return this.form.get('credentials') as UntypedFormArray;\n }\n\n /** Function to get all credentials */\n private getAllCredentials() {\n this.allSubscriptionCredentials = [];\n this.subscriptionService\n .getAllSubscriptionCredentials(this.subscriptionId)\n .subscribe(response => {\n this.allSubscriptionCredentials = response.subscription_credentials;\n this.totalRecords = response.object_count;\n this.getAllAvailableCredentials();\n })\n .add(() => {\n this.isLoaded = true;\n });\n }\n\n /** Function to get available Credentials */\n private getAllAvailableCredentials() {\n this.credentials = [];\n this.uniqueCredential = [];\n this.subscriptionService.getAllCredentials().subscribe(response => {\n this.availableCredentials = response.credentials;\n from(this.availableCredentials)\n .pipe(distinct(c => c.name))\n .subscribe(res => {\n this.uniqueCredential.push(res);\n });\n this.uniqueCredential.forEach(credential => {\n const subscriptionCredentialGroup = { credential_name: '', credentials: [] };\n this.allSubscriptionCredentials.forEach(subscriptionCredential => {\n if (credential.name === subscriptionCredential.name) {\n subscriptionCredentialGroup['credentials'].push(subscriptionCredential);\n }\n });\n if (subscriptionCredentialGroup['credentials'].length > 0) {\n subscriptionCredentialGroup['credential_name'] = credential.name;\n this.credentials.push(subscriptionCredentialGroup);\n }\n });\n });\n }\n\n /** Function to get credential on select */\n selectedOption(event) {\n this.credentialsGroup.clear();\n const credentialName = this.isEdit ? event : event.value;\n this.credentialsSelect = this.availableCredentials.filter(x => x.name === credentialName);\n this.credentialsSelect.forEach(adminCredential => {\n const subscriptionCredential = this.allSubscriptionCredentials.find(\n credential => credential?.credential_id === adminCredential?.id\n );\n adminCredential.value = subscriptionCredential?.value;\n adminCredential.subscription_credential_id = subscriptionCredential?.id;\n adminCredential.credential_id = subscriptionCredential?.credential_id;\n this.credentialsGroup.push(\n this.fb.group({\n subscription_id: [0, [Validators.required]],\n credential_id: [adminCredential?.id],\n field: [adminCredential?.field],\n description: [adminCredential?.description],\n value: [\n adminCredential?.value,\n adminCredential?.is_required ? [Validators.required] : []\n ],\n id: [subscriptionCredential?.id]\n })\n );\n });\n }\n\n /** Function to post credentials */\n saveCredentials() {\n this.submitted = true;\n this.buttonBusy = true;\n const subscription$: Observable<Subscription>[] = [];\n const isValid = this.form.value.credentials.every(\n (_x, i) => this.credentialsGroup.controls[i].valid === true\n );\n if (isValid) {\n this.form.value.credentials.forEach(credential => {\n if (credential?.value) {\n const data = {\n subscription_id: this.subscriptionId,\n credential_id: credential.credential_id,\n value: credential.value\n };\n const sub$ = credential?.id\n ? this.subscriptionService.editSubscriptionCredential(credential.id, data)\n : this.subscriptionService.postSubscriptionCredential(data);\n\n subscription$.push(sub$);\n }\n });\n\n forkJoin(subscription$)\n .subscribe(response => {\n if (response?.length) {\n this.toast.success(\n this.translation.translate(\n 'User.Subscriptions.SubscriptionCredentials.UpdateMessage'\n )\n );\n } else {\n this.toast.error(`Something went wrong while saving credentials`);\n }\n })\n .add(() => {\n this.submitted = false;\n this.buttonBusy = false;\n });\n } else {\n this.buttonBusy = false;\n }\n }\n\n revealCredentials(credential) {\n this.credentialToReveal = credential.credential_name;\n this.passwordValidationModalForRevealCredential.open();\n }\n\n hideCredentials() {\n this.credentialName = '';\n }\n\n showCredentials() {\n this.credentialName = this.credentialToReveal;\n }\n\n /** Function to get form controls */\n get f() {\n return this.form.controls;\n }\n\n onCancel() {\n this.getAllCredentials();\n this.submitted = false;\n this.form.reset();\n this.showForm = false;\n this.isEdit = false;\n this.credentialsSelect = [];\n this.data = [];\n this.credentialSaved = '';\n }\n\n // password popup for add credential\n openCredentialsForAdd() {\n this.passwordValidationModalForAddCredential.open();\n }\n\n // password popup for edit credential\n openCredentialsForEdit(credential) {\n this.credentialToEdit = credential;\n this.passwordValidationModalForEditCredential.open();\n }\n\n editCredentials() {\n this.showForm = true;\n this.isEdit = true;\n this.selectedOption(this.credentialToEdit);\n }\n\n showEditForm() {\n this.data = [];\n this.isEdit = false;\n this.showForm = true;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"row\"\n *ngIf=\"showForm\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">\n <span>{{ data.length ? 'Edit' : 'Create new' }} Credential</span>\n </h3>\n </div>\n</div>\n<ng-container *ngIf=\"showForm\">\n <div class=\"container-fluid pw-tab\">\n <div class=\"p-2 mt-3\">\n <form>\n <div class=\"row mb-3\">\n <div class=\"col-12 col-md-4\"\n *ngIf=\"!isEdit && showForm\">\n <div class=\"mb-3\">\n <label for=\"credential\">Credential <span class=\"text-danger required-icon\">*</span> </label>\n <p-dropdown\n [options]=\"uniqueCredential\"\n [placeholder]=\"'Select credential'\"\n optionLabel=\"name\"\n optionValue=\"name\"\n (onChange)=\"selectedOption($event)\">\n </p-dropdown>\n </div>\n </div>\n\n <div class=\"col-12 col-md-4\"\n *ngIf=\"credentialsSelect?.length\">\n <div class=\"card pb-2 pt-2 overflow-visible\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <form [formGroup]=\"form\"\n novalidate\n (ngSubmit)=\"saveCredentials()\">\n <div formArrayName=\"credentials\">\n <div *ngFor=\"\n let credential of credentialsGroup.controls;\n let i = index\n \">\n <div [formGroupName]=\"i\">\n <div class=\"mb-3\">\n <pw-input-container label=\"{{\n credential.get('field').value\n }}\"\n [class.info-circle]=\"\n credential.get('description').value\n \"\n name=\"value\"\n errorMsg=\"Please enter value\">\n <span *ngIf=\"\n credential.get('description')\n .value\n \"\n class=\"tooltiptext gradient-custom-branding\">{{\n credential.get('description')\n .value\n }}</span>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"value\"\n [ngClass]=\"{\n 'is-invalid':\n submitted &&\n credential.get('value')\n .invalid\n }\" />\n </pw-input-container>\n </div>\n </div>\n </div>\n </div>\n <div class=\"text-end mt-3\">\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCancel()\"\n (keydown.enter)=\"onCancel()\" >\n {{ 'Button.Back' | transloco }}\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!showForm\">\n <div class=\"row\">\n <div class=\"col-12 d-flex\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h2 class=\"mt-3\">Credentials</h2>\n </div>\n <div class=\"col-12 col-md-12 text-end\">\n <button class=\"btn btn-sm btn-outline-primary\"\n (click)=\"openCredentialsForAdd()\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{ 'Add Credential' }}\n </button>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"row my-4\">\n <div class=\"col-12 col-md-6 col-xl-4 mt-3 credential-cards\"\n *ngFor=\"let credential of credentials\">\n <div class=\"card\">\n <h2 class=\"credential-field mt-3\">{{ credential.credential_name }}</h2>\n <div class=\"card-content\"\n *ngFor=\"let subscriptionCredential of credential.credentials\">\n <div class=\"card-header\">\n <div>\n <strong class=\"d-block\">{{ subscriptionCredential.field }}:</strong>\n <input class=\"credential-value\"\n [type]=\"\n credentialName === credential.credential_name\n ? 'text'\n : 'password'\n \"\n readonly\n #input\n [value]=\"subscriptionCredential?.value\" />\n </div>\n </div>\n <div class=\"card-footer\">\n <div class=\"float-end px-2\">\n <button class=\"btn btn-outline-primary me-2\"\n *ngIf=\"credentialName !== credential.credential_name\"\n (click)=\"revealCredentials(credential)\">\n {{\n 'User.Subscriptions.SubscriptionCredentials.RevealCredential'\n | transloco\n }}\n </button>\n <button class=\"btn btn-outline-primary me-2\"\n *ngIf=\"credentialName === credential.credential_name\"\n (click)=\"hideCredentials()\">\n {{\n 'User.Subscriptions.SubscriptionCredentials.HideCredential'\n | transloco\n }}\n </button>\n <a class=\"me-2 my-1\"\n aria-label=\"Edit Credential\"\n (click)=\"openCredentialsForEdit(credential.credential_name)\"><i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i></a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngIf=\"allSubscriptionCredentials?.length === 0 && isLoaded\"\n class=\"clearboth\">\n <pw-no-data [withImage]=\"true\" [message]=\"'User.Subscriptions.SubscriptionCredentials.NoDataMessage' | transloco\">\n </pw-no-data>\n </div>\n</ng-container>\n<!-- password validation modal for reveal Credential -->\n<pw-password-validation #passwordValidationModalForRevealCredential\n (successEvent)=\"showCredentials()\">\n</pw-password-validation>\n<!-- password validation modal for Edit Credential -->\n<pw-password-validation #passwordValidationModalForEditCredential\n (successEvent)=\"editCredentials()\">\n</pw-password-validation>\n<!-- password validation modal for Add Credential -->\n<pw-password-validation #passwordValidationModalForAddCredential\n (successEvent)=\"showEditForm()\">\n</pw-password-validation>\n","import { Component, Injector, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport {\n ProductService,\n ScriptLoaderService,\n SubscriptionService\n} from '@posiwise/common-services';\nimport { HelperService } from '@posiwise/helper-service';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { StatusCodes } from 'http-status-codes';\nimport { forkJoin } from 'rxjs';\n\nimport { CardDetails, StripeCardResponse } from '../../../shared/interface/user-module.interface';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\ndeclare let Stripe: {\n setPublishableKey(key: string): void;\n card: {\n createToken(\n card: CardDetails,\n callback: (status: number, response: StripeCardResponse) => void\n ): void;\n };\n};\n\n@Component({\n selector: 'pw-update-payment-details',\n templateUrl: './update-payment-details.component.html',\n styleUrls: ['./update-payment-details.component.scss']\n})\nexport class UpdatePaymentDetailsComponent extends AppBaseComponent implements OnInit {\n form: UntypedFormGroup;\n\n years = [];\n months = [];\n\n busy: boolean;\n isChangePayment: boolean;\n\n cardDetails: CardDetails[];\n\n loading = true;\n\n errorMessage: string;\n stripePublishKey: string;\n errorMsg: string;\n\n subscriptionId: number;\n productId: number;\n\n constructor(\n private readonly fb: UntypedFormBuilder,\n private readonly scriptLoader: ScriptLoaderService,\n private readonly productService: ProductService,\n private readonly subscriptionService: SubscriptionService,\n injector: Injector\n ) {\n super(injector);\n\n this.route.params.subscribe(response => {\n this.subscriptionId = Number(response['subscriptionId']);\n this.productId = Number(response['productId']);\n this.getCardDetails();\n });\n\n this.form = this.fb.group({\n card_number: ['', Validators.required],\n cvc: ['', Validators.required],\n exp_month: ['', Validators.required],\n exp_year: ['', Validators.required]\n });\n }\n\n ngOnInit() {\n this.scriptLoader.loadScript('head', 'https://js.stripe.com/v2/', true);\n this.years = HelperService.getYears();\n this.months = HelperService.getMonths();\n }\n\n private getCardDetails() {\n forkJoin({\n cardDetails: this.subscriptionService.getCardDetails(this.subscriptionId),\n product: this.productService.getProductById(this.productId)\n })\n .subscribe(response => {\n this.stripePublishKey = response.product.stripe_publishable_key;\n if (response.cardDetails.status === StatusCodes.OK) {\n this.cardDetails = response.cardDetails.data || null;\n }\n })\n .add(() => {\n this.loading = false;\n });\n }\n\n onUpdatePaymentDetailsCancel() {\n this.router.navigate(['/account/subscriptions']);\n }\n\n @ValidateForm('form')\n onSave() {\n this.busy = true;\n this.errorMsg = '';\n const cardDetails = {\n number: this.form.value.card_number,\n cvc: this.form.value.cvc,\n exp_month: this.form.value.exp_month,\n exp_year: this.form.value.exp_year\n };\n Stripe.setPublishableKey(this.stripePublishKey);\n\n Stripe.card.createToken(cardDetails, (status, res) => {\n if (status !== 200) {\n this.toast.error(res?.error?.message);\n this.busy = false;\n } else {\n this.subscriptionService\n .updateCardDetails(this.form.value, this.subscriptionId)\n .subscribe({\n next: response => {\n if (response.error) {\n const err = response.error.errors[0].message;\n this.toast.error(err);\n } else if (response.status === StatusCodes.CREATED) {\n this.toast.success(response.message);\n }\n this.cancel();\n }\n })\n .add(() => {\n this.busy = false;\n });\n }\n });\n }\n\n cancel() {\n this.router.navigate(['/account/subscriptions']);\n }\n\n onChange(value) {\n this.isChangePayment = value;\n }\n}\n","<div class=\"container-fluid\">\n <div class=\"card-block\">\n <div class=\"row\">\n <div class=\"col-lg-12 ps-0\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"back()\"\n class=\"previous float-start\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h4 class=\"form-section my-3\">\n <i class=\"ft-edit\" aria-hidden=\"true\"></i>\n Update Card Details\n </h4>\n </div>\n <div class=\"col-12 col-lg-6 mt-3 payment-left p-3 card\">\n <div class=\"card-body\">\n <div class=\"alert alert-danger\"\n *ngIf=\"errorMsg\">{{ errorMsg }}</div>\n <ng-template [ngIf]=\"!isChangePayment && cardDetails\">\n <pw-saved-card-details [data]=\"cardDetails\"\n (changeEvent)=\"onChange($event)\">\n </pw-saved-card-details>\n </ng-template>\n\n <ng-template [ngIf]=\"loading\">\n <div class=\"text-center\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n </ng-template>\n\n <ng-container *ngIf=\"(!cardDetails && !loading) || isChangePayment\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <h4 class=\"title\">New card?</h4>\n <div class=\"row\">\n <div class=\"col-md-9\">\n <div class=\"mb-3\">\n <label for=\"catdNumber\">Card Number</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"card_number\"\n placeholder=\"Card Number\"\n name=\"card_number\" />\n <div class=\"danger\"\n *ngIf=\"\n form.get('card_number').touched &&\n form.get('card_number').errors?.required\n \">\n <span> Please enter card number. </span>\n </div>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"mb-3\">\n <label for=\"cvc\">CVC</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"cvc\"\n placeholder=\"CVC\"\n name=\"cvc\" />\n <div class=\"danger\"\n *ngIf=\"\n form.get('cvc').touched &&\n form.get('cvc').errors?.required\n \">\n <span> Please enter cvc number. </span>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"mb-3\">\n <label class=\"sr-only\" for=\"Month\">Exp. Month</label>\n <p-dropdown\n [options]=\"months\"\n [appendTo]=\"'body'\"\n formControlName=\"exp_month\"\n [placeholder]=\"'Exp. Month'\"\n optionValue=\"value\"\n optionLabel=\"value\">\n </p-dropdown>\n <div class=\"danger\"\n *ngIf=\"\n form.get('exp_month').touched &&\n form.get('exp_month').errors?.required\n \">\n <span> Please enter expiry month. </span>\n </div>\n </div>\n </div>\n\n <div class=\"col-md-6\">\n <div class=\"mb-3\">\n <label class=\"sr-only\" for=\"Year\">Exp. Year</label>\n <p-dropdown\n [options]=\"years\"\n formControlName=\"exp_year\"\n [placeholder]=\"'Exp. Year'\"\n optionValue=\"value\"\n [appendTo]=\"'body'\"\n optionLabel=\"value\">\n </p-dropdown>\n <div class=\"danger\"\n *ngIf=\"\n form.get('exp_year')?.touched &&\n form.get('exp_year')?.errors?.['required']\n \">\n <span> Please enter expiry year. </span>\n </div>\n </div>\n </div>\n\n <div class=\"col-12 text-center mt-4\">\n <img src=\"/assets/img/icons/powered_by_stripe_v2.png\"\n class=\"payment-provider\"\n alt=\"\" />\n </div>\n\n <div class=\"col-12 mt-4 text-end\">\n <button type=\"button\"\n (click)=\"cancel()\"\n class=\"btn btn-outline-default me-2\">\n Cancel\n </button>\n <button type=\"submit\"\n class=\"btn btn-primary\"\n [buttonBusy]=\"busy\">\n Submit\n </button>\n </div>\n </div>\n </form>\n </ng-container>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { Component, Injector, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { AppState, GetUser } from '@posiwise/app-store';\nimport {\n FormHelperService,\n ProductService,\n ScriptLoaderService,\n SubscriptionService\n} from '@posiwise/common-services';\nimport { Product, Subscription, User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { PasswordValidationComponent } from '@posiwise/shared-components';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { StatusCodes } from 'http-status-codes';\nimport swal from 'sweetalert2';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Store } from '@ngrx/store';\n\nimport { CardDetails } from '../../../shared/interface/user-module.interface';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\ndeclare let Stripe;\n\n@Component({\n selector: 'pw-upgrade-subscription',\n templateUrl: './upgrade-subscription.component.html',\n styleUrls: ['./upgrade-subscription.component.scss']\n})\nexport class UpgradeSubscriptionComponent extends AppBaseComponent implements OnInit, OnDestroy {\n @ViewChild('passwordValidationModal', { static: true })\n passwordValidationModal: PasswordValidationComponent;\n\n form: UntypedFormGroup;\n\n product: Product;\n subscription: Subscription;\n user: User;\n cardDetails: CardDetails;\n\n units: number;\n subscriptionId: number;\n productId: number;\n\n unitError: string;\n password: string;\n stripePublishKey: string;\n\n busy: boolean;\n isPurchaseAttempted: boolean;\n\n months = [];\n years = [];\n\n showNewCard: boolean;\n passwordModalVisible: boolean;\n\n errorMsg;\n\n get totalAmount() {\n if (this.product) {\n const units = Number(this.form.get('units').value);\n // eslint-disable-next-line no-restricted-globals\n if (!Number.isNaN(units)) {\n return (units * this.product.price_per_unit) / 100;\n }\n }\n\n return 0;\n }\n\n constructor(\n injector: Injector,\n private readonly productService: ProductService,\n private readonly fb: UntypedFormBuilder,\n private readonly modalService: NgbModal,\n private readonly subscriptionService: SubscriptionService,\n private readonly store: Store<AppState>,\n private readonly scriptLoader: ScriptLoaderService\n ) {\n super(injector);\n this.form = this.fb.group({\n card_number: ['', Validators.required],\n units: [],\n cvc: ['', Validators.required],\n exp_month: ['', Validators.required],\n exp_year: ['', Validators.required]\n });\n }\n\n ngOnInit(): void {\n this.scriptLoader.loadScript('head', 'https://js.stripe.com/v2/', true);\n this.years = HelperService.getYears();\n this.months = HelperService.getMonths();\n\n this.userStore().subscribe(user => {\n this.user = user;\n });\n\n this.route.params.subscribe(response => {\n this.subscriptionId = +response['subscriptionId'];\n this.productId = +response['productId'];\n this.getSubscriptionDetails();\n this.getCardDetails(this.subscriptionId);\n });\n }\n\n getSubscriptionDetails() {\n this.subscriptionService\n .getById(this.subscriptionId)\n .subscribe(response => {\n this.subscription = response;\n const product = this.subscription.products.find(x => x.id === this.productId);\n this.form.patchValue({\n units: product?.purchased_units\n });\n\n this.units = this.form.get('units').value;\n })\n .add(() => {\n this.getProductDetails();\n });\n }\n\n getProductDetails() {\n this.productService.getProductById(this.productId).subscribe(response => {\n this.product = response;\n this.stripePublishKey = response?.stripe_publishable_key;\n if (response?.stripe_publishable_key) {\n Stripe.setPublishableKey(response.stripe_publishable_key);\n }\n const prodUnits =\n this.units > this.product.min_units ? this.units : this.product.min_units || 1;\n\n this.form.patchValue({\n units: prodUnits\n });\n\n this.units = this.form.get('units').value;\n });\n }\n\n onMaxReached(event) {\n if (event) {\n this.unitError = `Maximum is ${this.units}`;\n }\n }\n\n onMinReached(event) {\n if (event) {\n this.unitError = `Minimum is ${this.subscription.min_units || this.product.min_units}`;\n }\n }\n\n onUnitChange(event) {\n this.units = event;\n this.form.patchValue({\n units: event\n });\n this.unitError = '';\n }\n\n onValidatePassword(isSuccess: boolean) {\n if (isSuccess) {\n this.onPurchaseSubmit();\n this.password = null;\n this.modalService.dismissAll();\n }\n }\n\n private postCreateToken(cardToken) {\n const data = {\n stripe_token: cardToken,\n product_id: this.product.id,\n units: this.form.get('units').value || 1,\n subscription_id: this.subscriptionId\n };\n this.userService\n .addNewSubscriptionUsingStripe(data)\n .subscribe({\n next: () => {\n this.toast.success(\n this.translation.translate('User.Subscriptions.SubscriptionPurchased')\n );\n this.router.navigate(['/account/subscriptions']);\n this.modalService.dismissAll();\n },\n error: () => {\n this.busy = false;\n }\n })\n .add(() => {\n this.busy = false;\n });\n }\n\n attemptPurchase() {\n if (this.user.has_password) {\n this.passwordValidationModal.open();\n } else {\n this.noPasswordModal();\n }\n }\n\n private onPurchaseSubmit() {\n this.busy = true;\n this.passwordModalVisible = true;\n if (this.subscription.stripe_customer_id) {\n if (this.showNewCard) {\n this.updateCardDetails();\n } else {\n this.enrollUserToSubscription();\n }\n } else if (this.form.valid) {\n const cardDetails = {\n number: this.form.value.card_number,\n cvc: this.form.value.cvc,\n exp_month: this.form.value.exp_month,\n exp_year: this.form.value.exp_year\n };\n // Get publishable key from product get id\n Stripe.card.createToken(\n cardDetails,\n (status, response) => {\n if (status === StatusCodes.OK) {\n const cardToken = response.id;\n this.postCreateToken(cardToken);\n } else {\n this.toast.error(response?.error?.message, '', { disableTimeOut: true });\n this.busy = false;\n this.isPurchaseAttempted = false;\n }\n },\n () => {\n this.busy = false;\n this.isPurchaseAttempted = false;\n this.modalService.dismissAll();\n }\n );\n }\n }\n\n private enrollUserToSubscription() {\n const data = {\n product_id: this.product.id,\n units: this.form.get('units').value,\n subscription_id: this.subscriptionId\n };\n\n this.subscriptionService.postSubscription(data).subscribe({\n next: response => {\n this.store.dispatch(new GetUser());\n if (response.id) {\n this.router.navigate(['/account/subscriptions']);\n this.toast.success(\n this.translation.translate('User.Subscriptions.SubscriptionPurchased')\n );\n this.isPurchaseAttempted = false;\n this.modalService.dismissAll();\n this.back();\n }\n },\n error: () => {\n this.busy = false;\n this.isPurchaseAttempted = false;\n },\n complete: () => {\n this.busy = !this.busy;\n }\n });\n }\n\n private noPasswordModal() {\n swal.fire({\n title: 'Set Password',\n html: `<div>Please set a password before changing the subscription in the account section.</div>\n <br />\n <strong><a href=\"/account/details\">Click here to reset</a></strong>`,\n confirmButtonText: 'OK'\n });\n }\n\n private getCardDetails(subscriptionId: number) {\n this.subscriptionService.getCardDetails(subscriptionId).subscribe(data => {\n this.cardDetails = data.data || null;\n this.form.patchValue({\n units: this.units,\n card_number: this.cardDetails?.card_number,\n cvc: this.cardDetails?.cvc,\n exp_month: this.cardDetails?.exp_month || '',\n exp_year: this.cardDetails?.exp_year || ''\n });\n });\n }\n\n onDiscardToggle() {\n this.form.markAllAsTouched();\n FormHelperService.markFormAsPristine(this.form);\n }\n\n @ValidateForm('form')\n updateCardDetails() {\n const cardDetails = {\n number: this.form.value.card_number,\n cvc: this.form.value.cvc,\n exp_month: this.form.value.exp_month,\n exp_year: this.form.value.exp_year\n };\n Stripe.setPublishableKey(this.stripePublishKey);\n\n Stripe.card.createToken(cardDetails, (status, res) => {\n if (status !== 200) {\n this.toast.error(res.error.message);\n } else {\n this.subscriptionService\n .updateCardDetails(this.form.value, this.subscriptionId)\n .subscribe({\n next: response => {\n if (response.error) {\n const err = response.error.errors[0].message;\n this.toast.error(err);\n } else if (response.status === StatusCodes.CREATED) {\n this.enrollUserToSubscription();\n this.toast.success(response.message);\n }\n },\n error: error => {\n this.errorMsg = HelperService.getErrorMessage(error);\n this.toast.error(this.errorMsg);\n }\n });\n }\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<h4 class=\"form-section m-3\">\n <i class=\"ft-check-circle\" aria-hidden=\"true\"></i> {{ 'Button.Payment' | transloco }}\n</h4>\n<div class=\"card-block\">\n <!-- Show Payment Page when there is user.has_stripe_account===false -->\n <ng-container>\n <form class=\"form\"\n (ngSubmit)=\"attemptPurchase()\"\n [formGroup]=\"form\">\n <div class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"form-body p-3 payment-left card pb-0\">\n <div class=\"card-body\">\n <div class=\"row\"\n *ngIf=\"product?.max_units > 1\">\n <div class=\"col-12\">\n <div class=\"mb-3\">\n <h4 class=\"title\">\n {{ 'User.Subscriptions.LicensesRequired' | transloco }}\n </h4>\n <div class=\"row btns-row\">\n <div class=\"col-md-4 col-8\">\n <pw-number-picker name=\"number-picker\"\n [(value)]=\"units\"\n [min]=\"subscription.min_units || product.min_units\"\n [max]=\"product.max_units\"\n step=\"1\"\n postfix=\"Units\"\n placeholder=\"Total Licenses\"\n [inputReadOnly]=\"false\"\n size=\"small\"\n pickStartAfter=\"500\"\n pickTimer=\"100\"\n [arrowKeys]=\"true\"\n (minReached)=\"onMinReached($event)\"\n (maxReached)=\"onMaxReached($event)\"\n (valueChange)=\"onUnitChange($event)\">\n </pw-number-picker>\n </div>\n </div>\n <div class=\"text-center\">\n <small class=\"form-text text-muted danger\">\n {{ unitError }}\n </small>\n </div>\n </div>\n <p>\n If you proceed, your credit card will be charged\n <strong>{{ product.currency }}\n {{ totalAmount | number:'1.2-2' }}</strong>\n </p>\n </div>\n </div>\n <!-- Shows Saved Card: Shows when user has card details and not trying to update the card details -->\n <ng-template [ngIf]=\"cardDetails\">\n <pw-saved-card-details [data]=\"cardDetails\"\n (changeEvent)=\"showNewCard = $event\"\n [showNewCard]=\"showNewCard\">\n </pw-saved-card-details>\n </ng-template>\n <!-- Add New Payment Starts, opens up when user doesn't have stripe account or tries to change the\n card details -->\n <ng-template [ngIf]=\"(user && !cardDetails) || (cardDetails && showNewCard)\">\n <h4 class=\"title\">\n {{ 'User.Subscriptions.NewCard' | transloco }}?\n </h4>\n <div class=\"row\">\n <div class=\"col-md-9\">\n <div class=\"mb-3\">\n <label for=\"cardNumber\">{{\n 'User.Subscriptions.CardNumber' | transloco\n }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"card_number\"\n placeholder=\"Card Number\"\n name=\"card_number\" />\n <div class=\"danger\"\n *ngIf=\"\n form.get('card_number').touched &&\n form.get('card_number').errors?.required\n \">\n <span> Please enter card number. </span>\n </div>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"mb-3\">\n <label for=\"cvc\">{{\n 'User.Subscriptions.CVC' | transloco\n }}</label>\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"cvc\"\n placeholder=\"CVC\"\n name=\"cvc\" />\n <div class=\"danger\"\n *ngIf=\"\n form.get('cvc').touched &&\n form.get('cvc').errors?.required\n \">\n <span> Please enter cvc. </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <div class=\"mb-3\">\n <label class=\"sr-only\" for=\"Month\">Exp. Month</label>\n <p-dropdown\n [options]=\"months\"\n formControlName=\"exp_month\"\n [placeholder]=\"'Exp. Month'\"\n optionValue=\"value\"\n [appendTo]=\"'body'\"\n optionLabel=\"value\">\n </p-dropdown>\n <div class=\"danger\"\n *ngIf=\"\n form.get('exp_month').touched &&\n form.get('exp_month').errors?.required\n \">\n <span> Please enter expiry month. </span>\n </div>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"mb-3\">\n <label class=\"sr-only\" for=\"Year\">Exp. Year</label>\n <p-dropdown\n [options]=\"years\"\n formControlName=\"exp_year\"\n [placeholder]=\"'Exp. Year'\"\n [appendTo]=\"'body'\"\n optionValue=\"value\"\n optionLabel=\"value\">\n </p-dropdown>\n <div class=\"danger\"\n *ngIf=\"\n form.get('exp_year').touched &&\n form.get('exp_year').errors?.required\n \">\n <span> Please enter expiry year. </span>\n </div>\n </div>\n </div>\n <div class=\"col-12 mt-2\"\n *ngIf=\"cardDetails\">\n <a aria-label=\"Navigate to Target\"\n (click)=\"showNewCard = false; onDiscardToggle()\">Disregard and pay with current registered card</a>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n </div>\n <!-- Purchase Summary -->\n <div class=\"col-md-6\"\n *ngIf=\"product\">\n <div class=\"purchase-summary card p-3 payment-right\">\n <div class=\"card-body\">\n <h4 class=\"title\">{{ 'Label.PurchaseSummary' | transloco }}</h4>\n <div class=\"summary-row d-flex mb-2\">\n <div class=\"summary-left\">{{ 'Label.Plan' | transloco }}:</div>\n <div class=\"summary-right\">{{ product.name }}</div>\n </div>\n <div class=\"summary-row d-flex mb-2\">\n <div class=\"summary-left\">{{ 'Label.Price' | transloco }}:</div>\n <div class=\"summary-right\">\n {{ product.currency }}\n {{ (product.price_per_unit / 100) | number:'1.2-2' }}\n </div>\n </div>\n <div class=\"summary-row d-flex mb-2\">\n <div class=\"summary-left\">{{ 'Label.Seats' | transloco }}:</div>\n <div class=\"summary-right\">{{ form.get('units').value }}</div>\n </div>\n <div class=\"summary-row d-flex mb-2\">\n <div class=\"summary-left\">{{ 'Label.Total' | transloco }}:</div>\n <div class=\"summary-right\">\n {{ product.currency }} {{ totalAmount | number:'1.2-2' }}\n </div>\n </div>\n <div class=\"summary-row d-flex mb-2\">\n <div class=\"summary-left\">\n {{ 'Label.Recurrency' | transloco }}:\n </div>\n <div class=\"summary-right\">{{ product.billing_frequency }}</div>\n </div>\n </div>\n <div class=\"text-center\">\n <hr />\n <p>\n By subscribing you acknowledge and accept our terms of service and\n privacy policy\n </p>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 text-center mt-3\">\n <img src=\"/assets/img/icons/powered_by_stripe_v2.png\"\n class=\"payment-provider\"\n alt=\"\" />\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"form-actions text-end\">\n <button type=\"button\"\n class=\"btn btn-raised btn-outline-default me-1\"\n [disabled]=\"isPurchaseAttempted\"\n routerLink=\"/account/subscriptions\">\n <i class=\"ft-x\" aria-hidden=\"true\"></i>{{ 'Button.Back' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-raised btn-primary\"\n [disabled]=\"isPurchaseAttempted\"\n [buttonBusy]=\"busy\">\n <i class=\"ft-check\" aria-hidden=\"true\"></i>\n {{ 'Button.Purchase' | transloco }}\n </button>\n </div>\n </div>\n </div>\n </form>\n </ng-container>\n</div>\n\n<pw-password-validation #passwordValidationModal\n (successEvent)=\"onValidatePassword($event)\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p>\n If you proceed, your credit card will be charged\n <strong *ngIf=\"totalAmount\">{{ product.currency }} {{ totalAmount | number:'1.2-2' }}</strong>\n </p>\n </div>\n </div>\n</pw-password-validation>\n","import { Component, Injector, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { AppState, GetUser } from '@posiwise/app-store';\nimport { GeoService, SubscriptionService } from '@posiwise/common-services';\nimport { Country, Product, Subscription, User } from '@posiwise/common-utilities';\nimport { PasswordValidationComponent } from '@posiwise/shared-components';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { StatusCodes } from 'http-status-codes';\nimport { map, Observable } from 'rxjs';\nimport swal from 'sweetalert2';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Store } from '@ngrx/store';\n\n@Component({\n templateUrl: './user-subscription-details.component.html',\n styleUrls: ['./user-subscription-details.component.scss']\n})\nexport class UserSubscriptionDetailsComponent\n extends AppBaseComponent\n implements OnInit, OnDestroy\n{\n @ViewChild('modal', { static: true }) modal: PasswordValidationComponent;\n\n allowUpdate: boolean;\n hasUnitChanged: boolean;\n\n busyButton = false;\n\n form: UntypedFormGroup;\n\n unitError: string;\n\n subscription: Subscription;\n\n units = 1;\n\n countries$: Observable<Country[]>;\n\n squaredLogo: string;\n fullLogo: string;\n slug: string;\n\n userId: number;\n subscriptionId: number;\n\n user: User;\n\n showApiToken = false;\n showApiClientId = false;\n refreshingTokens = false;\n\n totalAmount() {\n const allProductsPrice = this.subscription.products.map(x => x.price_per_unit * this.units);\n\n return allProductsPrice.reduce((a: number, b: number) => a + b, 0) / 100;\n }\n\n constructor(\n private readonly fb: UntypedFormBuilder,\n private readonly geoService: GeoService,\n private readonly modalService: NgbModal,\n private readonly subscriptionService: SubscriptionService,\n private readonly store: Store<AppState>,\n injector: Injector\n ) {\n super(injector);\n this.form = this.getForm();\n this.route.params.subscribe(params => {\n this.subscriptionId = +params['subscriptionId'];\n this.fetchData();\n });\n }\n\n ngOnInit() {\n this.geoService.getCountries().subscribe(() => {\n this.countries$ = this.geoService\n .getCountries()\n .pipe(\n map((countries: []) => [{ name: 'Select Country', code: null }, ...countries])\n );\n });\n this.userStore().subscribe(user => {\n if (user) {\n this.slug = user.slug;\n this.user = user;\n this.userId = user.id;\n }\n });\n }\n\n private fetchData() {\n this.subscriptionService.getById(this.subscriptionId).subscribe(response => {\n this.subscription = response;\n this.fullLogo = this.subscription?.full_logo.url;\n this.squaredLogo = this.subscription?.squared_logo?.url;\n this.form.patchValue(this.subscription);\n this.units = this.subscription?.products[0]?.purchased_units;\n this.form.patchValue({\n units: this.units\n });\n });\n }\n\n private getForm() {\n return this.fb.group({\n organisation: ['', [Validators.required]],\n contact_name: ['', [Validators.required]],\n contact_email: ['', [Validators.required, Validators.email]],\n contact_tel: [''],\n tax_id: [''],\n address: ['', [Validators.required]],\n country_code: ['', [Validators.required]],\n facebook_handle: [''],\n twitter_handle: [''],\n linkedin_handle: [''],\n reddit_handle: [''],\n company_url: [''],\n enforce_2fa: [false]\n });\n }\n\n /** *\n * Update seats for all the products of subscription\n */\n updateUnits() {\n if (this.subscription.products[0].trial_subscription) {\n return;\n }\n this.modal.open();\n }\n\n openModal(content) {\n this.modalService.open(content, { centered: true, windowClass: 'modal-holder' });\n }\n\n onImageSelection(event) {\n const blob = this.dataURLtoBlob(event);\n const filename = `${`${this.slug.toLocaleLowerCase()}_${Date.parse(\n new Date().toString()\n )}`}.png`;\n const file: File = new File([blob], filename);\n this.subscriptionService.addFullLogo(this.subscriptionId, file).subscribe(res => {\n this.modalService.dismissAll();\n this.fullLogo = res?.full_logo?.url;\n });\n }\n\n uploadSquaredLogo(event) {\n const blob = this.dataURLtoBlob(event);\n const filename = `${`${this.slug.toLocaleLowerCase()}_${Date.parse(\n new Date().toString()\n )}`}.png`;\n const file: File = new File([blob], filename);\n this.subscriptionService.addSquaredLogo(this.subscriptionId, file).subscribe(res => {\n this.modalService.dismissAll();\n this.squaredLogo = res?.squared_logo?.url;\n });\n }\n\n onClose() {\n this.modalService.dismissAll();\n }\n\n dataURLtoBlob(dataUrl) {\n const arr = dataUrl.split(',');\n const mime = /^[A-Z]*[a-z]*:(.*?);[A-Z]*/.exec(arr[0])?.[1];\n const bStr = atob(arr[1]);\n let n = bStr.length;\n const u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bStr.charCodeAt(n);\n }\n\n return new Blob([u8arr], { type: mime });\n }\n\n @ValidateForm('form')\n onSaveDetails() {\n this.busyButton = true;\n this.subscriptionService\n .updateSubscription(Number(this.subscriptionId), this.form.value)\n .subscribe(() => {\n this.toast.success('Subscription details updated.');\n this.store.dispatch(new GetUser());\n this.back();\n })\n .add(() => {\n this.busyButton = false;\n });\n }\n\n onPasswordValidation(_event) {\n this.subscriptionService\n .updateSubscriptionUnit(this.subscription.id, this.units)\n .subscribe(response => {\n if (response.status === StatusCodes.OK) {\n this.toast.success('Unit quantity updated.');\n } else {\n this.toast.error('Something went wrong!');\n }\n });\n }\n\n onMaxReached(event) {\n if (event) {\n this.unitError = `Maximum is ${this.units}`;\n }\n }\n\n onMinReached(event) {\n if (event) {\n this.unitError = `Minimum is ${this.units}`;\n }\n }\n\n onUnitChange(event) {\n this.allowUpdate = true;\n this.hasUnitChanged = true;\n this.units = event;\n this.unitError = '';\n }\n\n /** Function to execute on location select */\n handleAddressChange(event) {\n this.form.get('address').setValue(event.formatted_address);\n }\n\n toggleApiTokenVisibility() {\n this.showApiToken = !this.showApiToken;\n }\n\n toggleApiClientIdVisibility() {\n this.showApiClientId = !this.showApiClientId;\n }\n\n refreshApiTokens() {\n swal.fire({\n title: 'Are you sure?',\n text: 'This will expire the current tokens.',\n icon: 'warning',\n showCancelButton: true,\n confirmButtonColor: '#d33',\n cancelButtonColor: '#3085d6',\n confirmButtonText: 'Yes, refresh tokens!'\n }).then(result => {\n if (result.isConfirmed) {\n this.performTokenRefresh();\n }\n });\n }\n\n private performTokenRefresh() {\n this.refreshingTokens = true;\n this.subscriptionService\n .refreshApiTokens(this.subscriptionId)\n .subscribe({\n next: response => {\n if (response && response.api_access_token) {\n this.subscription.api_access_token = response.api_access_token;\n }\n if (response && response.api_client_id) {\n this.subscription.api_client_id = response.api_client_id;\n }\n\n this.showApiToken = false;\n this.showApiClientId = false;\n this.fetchData();\n }\n })\n .add(() => {\n this.refreshingTokens = false;\n });\n }\n\n trackByProduct(_index: number, item: Product) {\n return item.id;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.allowUpdate = false;\n }\n}\n","<!-- edit Subscription details page -->\n<div class=\"row\">\n <div class=\"col-12\">\n <h3 class=\"my-3\">{{ subscription?.organisation || subscription?.contact_name }}</h3>\n </div>\n</div>\n\n<div class=\"row\"\n *ngIf=\"subscription\">\n <div class=\"col-md-6\">\n <div class=\"text-center mt-5\">\n <div class=\"image-container\">\n <h4 class=\"mb-2\">Full Logo\n <span class=\"tooltip-wrap ms-1\"\n [pTooltip]=\"'User.Subscriptions.Tooltip.FullLogo'|transloco\"\n [appendTo]=\"'body'\"\n [tooltipPosition]=\"'top'\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </h4>\n <img [src]=\"fullLogo\"\n alt=\"full logo\"\n width=\"100%\"\n class=\"image full-logo\"\n height=\"100%\"\n role=\"presentation\"\n onerror=\"this.onerror=null;this.src='assets/img/icons/dummy-logo.jpg';\" />\n <div class=\"overlay mt-2\"\n (keydown.enter)=\"openModal(content)\"\n (click)=\"openModal(content)\">\n <div class=\"overlay-text\">\n <a aria-label=\"Navigate to Target\">{{ 'User.Profile.Change' | transloco }}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"text-center mt-5\">\n <div class=\"image-container\">\n <h4 class=\"mb-2\">Squared Logo\n <span class=\"tooltip-wrap ms-1\"\n [pTooltip]=\"'User.Subscriptions.Tooltip.SquaredLogo'|transloco\"\n [appendTo]=\"'body'\"\n [tooltipPosition]=\"'top'\">\n <i class=\"fas fa-info-circle\"></i>\n </span>\n </h4>\n <img [src]=\"squaredLogo\"\n alt=\"Squared Presentation\"\n width=\"150\"\n class=\"squared_logo\"\n [height]=\"'150'\"\n role=\"presentation\"\n onerror=\"this.onerror=null;this.src='assets/img/icons/dummy-icon.jpg';\" />\n <div class=\"overlay mt-2\"\n (keydown.enter)=\"openModal(squaredLogoContent)\"\n (click)=\"openModal(squaredLogoContent)\">\n <div class=\"overlay-text\">\n <a aria-label=\"Navigate to Target\">{{ 'User.Profile.Change' | transloco }}</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"row\">\n <div class=\"col-12\">\n <small *ngIf=\"subscription?.trial_subscription && subscription?.calculated_price\"\n class=\"text-danger\">Upgrade to be able to update your purchased seats</small>\n </div>\n</div>\n<div class=\"row btns-row align-items-center\">\n <div class=\"col-md-3 col-8\"\n *ngIf=\"subscription\">\n <pw-number-picker [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.Seats'|transloco\"\n name=\"number-picker\"\n [(value)]=\"units\"\n [min]=\"subscription?.min_units||subscription?.products[0].min_units\"\n [max]=\"subscription?.products[0].max_units\"\n step=\"1\"\n postfix=\"seats\"\n placeholder=\"Total Licences\"\n [inputReadOnly]=\"subscription?.products[0].trial_subscription\"\n [showUpButton]=\"!subscription?.products[0].trial_subscription\"\n [showDownButton]=\"!subscription?.products[0].trial_subscription\"\n size=\"small\"\n pickStartAfter=\"500\"\n pickTimer=\"100\"\n [arrowKeys]=\"true\"\n (minReached)=\"onMinReached($event)\"\n (maxReached)=\"onMaxReached($event)\"\n (valueChange)=\"onUnitChange($event)\">\n </pw-number-picker>\n </div>\n\n <div class=\"col-md-3 col-4 p-1\"\n *ngIf=\"subscription\">\n\n <ng-template [ngIf]=\"!subscription?.products[0].trial_subscription && allowUpdate\"\n [ngIfElse]=\"nonPaidRef\">\n <button class=\"btn btn-primary\"\n (click)=\"updateUnits()\">\n {{ 'User.Subscriptions.UpdateUnits' | transloco }}\n </button>\n </ng-template>\n <ng-template #nonPaidRef>\n <div>\n <small class=\"danger\"\n *ngIf=\"subscription?.products[0].trial_subscription\">Update seats is available only to paid subscriptions</small>\n </div>\n </ng-template>\n </div>\n\n <div class=\"col-12 col-md-6\"\n *ngIf=\"hasUnitChanged\">\n <table class=\"table table-borderless table-sm\"\n aria-describedby=\"Product details\">\n <thead>\n <tr>\n <th scope=\"true\">Product</th>\n <th scope=\"true\">Price per seat <span>({{subscription?.products[0]?.currency|currencySymbol}})</span></th>\n <th scope=\"true\">Seats</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let product of subscription.products; trackBy: trackByProduct\">\n <td>{{ product.name }}</td>\n <td>{{ product.price_per_unit / 100 }}</td>\n <td>{{ units }}</td>\n </tr>\n </tbody>\n </table>\n <p>\n If you proceed, the new cost for your subscription will be\n <strong>{{ totalAmount()| currency: subscription?.products[0]?.currency:'symbol-narrow'}}</strong>\n </p>\n </div>\n</div>\n<form [formGroup]=\"form\"\n (ngSubmit)=\"onSaveDetails()\"\n class=\"row mt-4\"\n *ngIf=\"subscription\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.ContactName' | transloco\"\n class=\"col-md-6\"\n label=\"Contact Name\"\n name=\"contact_name\"\n errorMsg=\"Please enter Contact Name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"contact_name\" />\n </pw-input-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.ContactEmail' | transloco\"\n class=\"col-md-6\"\n label=\"Contact Email\"\n name=\"contact_email\"\n errorMsg=\"Please enter Contact Email\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"contact_email\" />\n </pw-input-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.Organization' | transloco\"\n class=\"col-md-6\"\n label=\"Organisation\"\n name=\"organisation\"\n errorMsg=\"Please enter organisation\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"organisation\" />\n </pw-input-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.Phone' | transloco\"\n class=\"col-md-6\"\n label=\"Contact Tel\"\n name=\"contact_tel\"\n errorMsg=\"Please enter Contact Telephone Number\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"contact_tel\" />\n </pw-input-container>\n <ng-container *ngIf=\"countries$ | async as countries\">\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.Country' | transloco\"\n class=\"col-md-6\"\n label=\"Country\"\n name=\"country_code\"\n [isLeftTooltip]=\"true\"\n errorMsg=\"Please select a country\">\n <p-dropdown\n id=\"country\"\n [options]=\"countries\"\n optionLabel=\"name\"\n optionValue=\"code\"\n formControlName=\"country_code\"\n placeholder=\"Select Country\">\n </p-dropdown>\n </pw-input-container>\n </ng-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.Address' | transloco\"\n class=\"col-md-6\"\n label=\"Address\"\n name=\"address\"\n errorMsg=\"Please enter address\">\n <input ngx-gp-autocomplete\n class=\"form-control\"\n #places=\"ngx-places\"\n formControlName=\"address\"\n (onAddressChange)=\"handleAddressChange($event)\" />\n </pw-input-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.VatNumber' | transloco\"\n class=\"col-md-6\"\n label=\"GST/VAT Number\"\n name=\"tax_id\"\n errorMsg=\"Please enter GST/VAT Number\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"tax_id\" />\n </pw-input-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.CompanyUrl' | transloco\"\n class=\"col-md-6\"\n label=\"Company URL\"\n name=\"company_url\"\n errorMsg=\"Please enter company url\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"company_url\" />\n </pw-input-container>\n\n <ng-container *rbacAllow=\"'SubscriptionSuperAdmin'\">\n <div class=\"col-12\">\n <h3>Social Media</h3>\n <p>\n Any of the social media handles that you set here will appear in the footer of emails going out to your child subscriptions.\n </p>\n </div>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.FacebookHandle' | transloco\"\n class=\"col-md-6\"\n label=\"Facebook handle\"\n name=\"facebook_handle\"\n errorMsg=\"Please enter facebook id\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"facebook_handle\" />\n </pw-input-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.TwitterHandle' | transloco\"\n class=\"col-md-6\"\n label=\"Twitter handle\"\n name=\"twitter_handle\"\n errorMsg=\"Please enter twitter id\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"twitter_handle\" />\n </pw-input-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.LinkedinHandle' | transloco\"\n class=\"col-md-6\"\n label=\"Linkedin handle\"\n name=\"linkedin_handle\"\n errorMsg=\"Please enter linkedin id\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"linkedin_handle\" />\n </pw-input-container>\n <pw-input-container [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.RedditHandle' | transloco\"\n class=\"col-md-6\"\n label=\"Reddit handle\"\n name=\"reddit_handle\"\n errorMsg=\"Please enter reddit id\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"reddit_handle\" />\n </pw-input-container>\n </ng-container>\n\n <ng-container *ngIf=\"subscription?.api_hits_max > 0\">\n <div class=\"col-12\">\n <h3>{{ 'User.Subscriptions.APICredentials.Title' | transloco }}</h3>\n <p>\n Manage your {{appConfig?.company?.name}} API credentials. These tokens are used to authenticate API requests.\n </p>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label class=\"form-label\">{{ 'User.Subscriptions.APICredentials.AccessToken' | transloco }}</label>\n <div class=\"input-group\">\n <input type=\"text\"\n class=\"form-control\"\n [value]=\"showApiToken ? subscription?.api_access_token || ('User.Subscriptions.APICredentials.NoTokenAvailable' | transloco) : '*************************'\"\n readonly />\n <button type=\"button\"\n class=\"btn btn-outline-secondary\"\n (click)=\"toggleApiTokenVisibility()\">\n {{ showApiToken ? ('User.Subscriptions.APICredentials.Hide' | transloco) : ('User.Subscriptions.APICredentials.View' | transloco) }}\n </button>\n </div>\n </div>\n </div>\n <div class=\"col-md-6\">\n <div class=\"form-group\">\n <label class=\"form-label\">{{ 'User.Subscriptions.APICredentials.ClientId' | transloco }}</label>\n <div class=\"input-group\">\n <input type=\"text\"\n class=\"form-control\"\n [value]=\"showApiClientId ? subscription?.api_client_id || ('User.Subscriptions.APICredentials.NoClientIdAvailable' | transloco) : '*************************'\"\n readonly />\n <button type=\"button\"\n class=\"btn btn-outline-secondary\"\n (click)=\"toggleApiClientIdVisibility()\">\n {{ showApiClientId ? ('User.Subscriptions.APICredentials.Hide' | transloco) : ('User.Subscriptions.APICredentials.View' | transloco) }}\n </button>\n </div>\n </div>\n </div>\n <div class=\"col-12 mt-3\">\n <div class=\"d-flex align-items-center gap-3\">\n <button type=\"button\"\n class=\"btn btn-warning\"\n (click)=\"refreshApiTokens()\"\n [disabled]=\"refreshingTokens\">\n <i class=\"fas fa-sync-alt me-2\" [class.fa-spin]=\"refreshingTokens\"></i>\n {{ refreshingTokens ? ('User.Subscriptions.APICredentials.Refreshing' | transloco) : ('User.Subscriptions.APICredentials.RefreshTokens' | transloco) }}\n </button>\n\n <div class=\"d-flex align-items-center gap-2\">\n <ng-container *ngIf=\"subscription?.api_hits !== null\">\n <span class=\"text-muted\">{{ 'User.Subscriptions.APICredentials.ApiHits' | transloco }}:</span>\n <span class=\"fw-bold\">{{ subscription.api_hits | number }}</span>\n </ng-container>\n\n <ng-container *ngIf=\"subscription?.api_hits_max !== null\">\n <span class=\"text-muted\">{{ 'User.Subscriptions.APICredentials.ApiHitsMax' | transloco }}:</span>\n <span class=\"fw-bold\">{{ subscription.api_hits_max | number }}</span>\n </ng-container>\n\n <!-- Show utilization percentage when both values exist -->\n <ng-container *ngIf=\"subscription?.api_hits !== null || subscription?.api_hits_max !== null\">\n <span class=\"text-muted ms-2\">(</span>\n <span class=\"fw-bold\" [ngClass]=\"{\n 'text-success': (subscription.api_hits / subscription.api_hits_max) <= 0.8,\n 'text-warning': (subscription.api_hits / subscription.api_hits_max) > 0.8 && (subscription.api_hits / subscription.api_hits_max) <= 0.9,\n 'text-danger': (subscription.api_hits / subscription.api_hits_max) > 0.9\n }\">\n {{ (subscription.api_hits / subscription.api_hits_max * 100) | number:'1.0-0' }}% consumed\n </span>\n <span class=\"text-muted\">)</span>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n\n <div class=\"col-12 mt-5\">\n <h3>Security</h3>\n <p>\n While we'll add more security options in the future, please start by enforcing 2FA for all your subscription members.\n </p>\n </div>\n <div class=\"col-12 col-sm-3\">\n <pw-input-container label=\"Enforce 2FA\"\n [showTooltip]=\"true\"\n [tooltipText]=\"'User.Subscriptions.Tooltip.Enforce2fa' | transloco\"\n name=\"enforce_2fa\">\n <ui-switch formControlName=\"enforce_2fa\"\n name=\"enforce_2fa\"> </ui-switch>\n </pw-input-container>\n </div>\n <div class=\"mb-3 col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n routerLink=\"/account/subscriptions\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button name=\"submit\"\n type=\"submit\"\n [buttonBusy]=\"busyButton\"\n class=\"btn btn-primary\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n</form>\n\n<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h3 class=\"modal-title mb-0 p-0\">{{ 'User.Subscriptions.FullLogo' | transloco }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n (imageSelectionEvent)=\"onImageSelection($event)\"\n aspectRatio=\"fullLogo\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n<ng-template #squaredLogoContent\n let-modal>\n <div class=\"modal-header\">\n <h3 class=\"modal-title mb-0 p-0\">{{ 'User.Subscriptions.SquaredLogo' | transloco }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n (imageSelectionEvent)=\"uploadSquaredLogo($event)\"\n aspectRatio=\"auto\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n</ng-template>\n<pw-password-validation #modal\n (successEvent)=\"onPasswordValidation($event)\"> </pw-password-validation>\n","/*\n * @Author: anikets43\n * @description: shows all the subscribed user products\n * Account => Subscription\n */\n\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { HttpParams } from '@angular/common/http';\nimport { Component, Injector, OnDestroy, OnInit, ViewChild } from '@angular/core';\n\nimport { AdminService } from '@posiwise/admin-module-utils';\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { AppState, GetUser } from '@posiwise/app-store';\nimport { PermissionService, SubscriptionService } from '@posiwise/common-services';\nimport { Product, Subscription, User } from '@posiwise/common-utilities';\nimport { PasswordValidationComponent } from '@posiwise/shared-components';\n\nimport sortBy from 'lodash/sortBy';\nimport { MenuItem } from 'primeng/api';\nimport swal from 'sweetalert2';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { Store } from '@ngrx/store';\n\nimport { CurrentItem } from '../../../shared/interface/user-module.interface';\nimport { AddSubscriptionComponent } from '../add-subscription/add-subscription.component';\n\n@Component({\n selector: 'pw-user-subscriptions-list',\n templateUrl: './user-subscriptions-list.component.html',\n styleUrls: ['./user-subscriptions-list.component.scss']\n})\nexport class UserSubscriptionListComponent extends AppBaseComponent implements OnInit, OnDestroy {\n @ViewChild('menuItems', { static: false })\n menu: MenuItem[];\n\n @ViewChild(AddSubscriptionComponent, { static: false })\n changeSubscriptionRef: AddSubscriptionComponent;\n\n @ViewChild('passwordValidationModalForAccountDelete', { static: false })\n passwordValidationModalForAccountDelete: PasswordValidationComponent;\n\n @ViewChild('passwordValidationModalForKey', { static: false })\n passwordValidationModalForKey: PasswordValidationComponent;\n\n @ViewChild('passwordValidationForUnsubscribe', { static: false })\n passwordValidationForUnsubscribe: PasswordValidationComponent;\n\n showApiKey = true;\n\n password: string;\n productName: string;\n\n subscribedSubscriptions = [];\n\n activeItem: MenuItem;\n\n isAddNew: boolean;\n\n user: User;\n\n isUpdatePayment: false;\n\n selectedSubscription: { id: number; productId: number };\n\n editing: boolean;\n\n isLoaded = false;\n\n currentItem: CurrentItem;\n\n showTos = false;\n\n objectKeys = Object.keys;\n\n items: MenuItem[] = [\n { id: 'profile', label: 'Profile', icon: 'fa fa-fw fa-user-cog' },\n { id: 'subscription', label: 'Subscription', icon: 'fa fa-fw fa-book' },\n { id: 'invoice', label: 'Invoice', icon: 'fa fa-file-invoice-dollar' }\n ];\n\n productId: number;\n\n constructor(\n private readonly subscriptionService: SubscriptionService,\n private readonly adminService: AdminService,\n private readonly modalService: NgbModal,\n private readonly store: Store<AppState>,\n private readonly clipboard: Clipboard,\n injector: Injector\n ) {\n super(injector);\n this.getSubscribedProduct = this.getSubscribedProduct.bind(this);\n }\n\n ngOnInit() {\n this.route.queryParams.subscribe(params => {\n this.isAddNew = params['isNew'];\n this.getSubscribedProduct();\n this.selectedSubscription = null;\n });\n\n [this.activeItem] = this.items;\n }\n\n onClipboardCopy(accessCode: string) {\n this.clipboard.copy(accessCode);\n this.toast.success('Access Key copied to the clipboard');\n }\n\n attemptUnsubscribe(item, productId: number) {\n this.selectedSubscription = item;\n this.selectedSubscription.productId = productId;\n if (this.user.has_password) {\n this.passwordValidationForUnsubscribe.open();\n } else {\n this.noPasswordModal();\n }\n }\n\n private getSubscribedProduct() {\n this.userStore().subscribe(user => {\n this.user = user;\n if (user) {\n this.userService.getUserSubscriptions(user.id).subscribe(response => {\n this.subscribedSubscriptions = sortBy(response.subscriptions, 'deleted');\n response?.expired_subscriptions.forEach(subscription => {\n this.subscribedSubscriptions.push(subscription);\n });\n this.subscribedSubscriptions.forEach(subscription => {\n subscription.products.forEach((product: Product) => {\n product.masked = product.api_access_token\n ? '*************************'\n : null;\n });\n });\n this.isLoaded = true;\n });\n }\n });\n }\n\n updateApiKey(item) {\n this.subscriptionService.updateSubscriptionAPIKey(item.id).subscribe(response => {\n item.api_access_token = response;\n this.toast.success(this.translation.translate('User.Subscriptions.UpdatedKey'));\n this.getSubscribedProduct();\n });\n }\n\n showKey(item) {\n this.currentItem = item;\n this.passwordValidationModalForKey.open();\n this.showApiKey = false;\n }\n\n displayApiKey() {\n this.showApiKey = true;\n this.currentItem.masked = this.currentItem?.api_access_token;\n }\n\n activateMenu() {\n this.activeItem = this.menu['activeItem'];\n if (this.activeItem.id === 'subscription') {\n this.getSubscribedProduct();\n }\n }\n\n onUnsubscribe(item) {\n const httpParams = new HttpParams().set('product_id', item.productId);\n this.subscriptionService\n .deleteSubscription(item.id, { params: httpParams })\n .subscribe(() => {\n this.store.dispatch(new GetUser());\n this.toast.success(\n this.translation.translate('User.Subscriptions.UnsubscribedProduct')\n );\n this.modalService.dismissAll();\n this.getSubscribedProduct();\n this.selectedSubscription = null;\n });\n }\n\n onValidatePassword(isSuccess: boolean) {\n if (isSuccess) {\n this.onUnsubscribe(this.selectedSubscription);\n }\n }\n\n discardEdit() {\n this.editing = false;\n this.selectedSubscription = null;\n }\n\n onSaveDetails() {\n this.toast.success(this.translation.translate('User.Subscriptions.UpdatedMessage'));\n this.editing = false;\n }\n\n onUpdatePaymentDetailsCancel() {\n this.router.navigate(['.'], { relativeTo: this.route, queryParams: {} });\n }\n\n attemptUpgrade(subscription: Subscription, product: Product) {\n if (this.user.has_password) {\n this.router.navigate([\n `account/subscriptions/upgrade/${subscription.id}/${product.id}`\n ]);\n } else {\n this.noPasswordModal();\n }\n }\n\n private noPasswordModal() {\n swal.fire({\n title: 'Set Password',\n text: `Please set a password before changing the subscription in the account section.`,\n confirmButtonText: 'OK'\n });\n }\n\n showModalForAccountDeletion() {\n swal.fire({\n title: 'Delete',\n html: `Are you sure you want to delete?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n this.passwordValidationModalForAccountDelete.open();\n }\n });\n }\n\n deleteUser(_event) {\n const subscriptionId = PermissionService.selectedSubscription.id;\n this.adminService.deleteUser(this.user.id, subscriptionId).subscribe(() => {\n this.router.navigate(['logout']);\n });\n }\n\n showPrivacyAndTos(product: Product) {\n this.productId = product.id;\n this.productName = product.name;\n this.showTos = true;\n }\n\n onCancel() {\n this.showTos = false;\n }\n\n trackBySubscription(_index: number, item: { id: number }) {\n return item.id;\n }\n\n trackByProduct(_index: number, item: { id: number }) {\n return item.id;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<ng-container *ngIf=\"!showTos\">\n <!-- Subscriptions Tab Content -->\n <div class=\"row\"\n *ngIf=\"!editing && !isAddNew\">\n <div class=\"col-12\">\n <h2>Your Subscriptions</h2>\n <p class=\"float-start\">You'll find in this section the summary of your subscriptions.</p>\n <div class=\"text-end\">\n <!-- Delete Account -->\n <button type=\"button\"\n class=\"btn btn-sm btn-outline-danger px-3 mt-2 me-2 me-sm-2\"\n (click)=\"showModalForAccountDeletion()\"\n [pTooltip]=\"'User.Account.Tooltip.DeleteAccount' | transloco\"\n tooltipPosition=\"bottom\">\n {{ 'User.Account.DeleteAccount' | transloco }}\n </button>\n </div>\n </div>\n </div>\n <!-- Subscribed Product Cards -->\n\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n\n <div class=\"row\"\n *ngIf=\"\n !editing && !isAddNew && !isUpdatePayment && isLoaded && subscribedSubscriptions.length\n \">\n <div class=\"col-12 col-md-6 my-4\"\n *ngFor=\"let subscription of subscribedSubscriptions; trackBy: trackBySubscription\">\n <div class=\"subscription-details mb-4\">\n <div class=\"float-start\">\n <div>\n <strong>Organisation:</strong>\n {{\n subscription.organisation\n ? subscription.organisation\n : subscription.contact_name\n }}\n </div>\n <div>\n <strong>{{ 'User.Subscriptions.TotalPriceExclTax' | transloco }}:</strong>\n <ng-template [ngIf]=\"subscription.calculated_price\"\n [ngIfElse]=\"freeProductRef\">\n {{\n subscription.calculated_price / 100\n | currency: subscription.products[0]?.currency:'symbol-narrow'\n }}\n {{ subscription.products[0].trial_subscription ? '(After Trial)' : '' }}\n </ng-template>\n <ng-template #freeProductRef> Free </ng-template>\n </div>\n <div>\n <strong>{{ 'User.Subscriptions.TotalPurchasedSeats' | transloco }}:</strong>\n {{ subscription.purchased_units }}\n </div>\n <div>\n <div>\n <strong>{{ 'User.Subscriptions.SeatsInUse' | transloco }}:</strong>\n {{ subscription.units_in_use || 1 }}\n </div>\n </div>\n </div>\n\n <!-- Products list -->\n <div *ngFor=\"\n let product of subscription.products;\n let first = first;\n trackBy: trackByProduct\n \">\n <ng-container *ngIf=\"first\">\n <!-- Edit -->\n <div *ngIf=\"\n !product.deleted &&\n (subscription.is_subscription_owner ||\n subscription.is_subscription_admin) &&\n !product.dependency_products?.length\n \"\n class=\"float-end m-2 m-sm-2\">\n <a class=\"btn btn-outline-primary btn-sm mx-1\"\n aria-label=\"Navigate to Target\"\n [routerLink]=\"['../subscriptions', subscription.id]\">\n {{ 'Button.Edit' | transloco }}\n </a>\n <button [routerLink]=\"['../subscriptions', subscription.id, 'credential']\"\n *ngIf=\"\n !product.expired &&\n !product.deleted &&\n !product.trial_subscription\n \"\n class=\"btn btn-dark btn-sm float-end mx-1\">\n {{ 'User.Subscriptions.Credentials' | transloco }}\n </button>\n <!-- Update Card Details -->\n <a class=\"btn btn-sm btn-outline-primary mx-1 me-sm-2\"\n *ngIf=\"!isUpdatePayment && subscription.stripe_customer_id\"\n [routerLink]=\"[\n '../subscriptions',\n subscription.id,\n 'product',\n product.id,\n 'update-payment'\n ]\">\n <i class=\"fa fa-edit\" aria-hidden=\"true\"></i>\n {{ 'User.Subscriptions.UpdateCardDetails' | transloco }}</a>\n </div>\n <!-- Add New Subscription -->\n <div class=\"float-end m-2 m-sm-2\"\n *ngIf=\"\n !product.deleted &&\n (subscription.is_subscription_owner ||\n subscription.is_subscription_admin) &&\n !product.dependency_products?.length\n \">\n <button class=\"btn btn-sm btn-primary\"\n [routerLink]=\"'/account/subscriptions/add-new'\"\n [queryParams]=\"{ subscription_id: subscription.id }\"\n [pTooltip]=\"\n 'User.Subscriptions.Tooltip.ManageAllProducts' | transloco\n \"\n tooltipPosition=\"bottom\">\n <i class=\"fa fa-plus-circle\"></i>\n {{ 'User.Subscriptions.SeeAllProducts' | transloco }}\n </button>\n </div>\n </ng-container>\n <div class=\"card subscription-products-cards\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <div>\n <h4 class=\"mb-3 text-bold-500 primary\">{{ product?.name }}</h4>\n <!-- Frequency -->\n <div>\n <div>\n <strong class=\"d-inline-block w-50\">{{\n 'User.Subscriptions.Frequency' | transloco\n }}:</strong>\n {{ product?.billing_frequency | uppercase }}\n </div>\n </div>\n <!-- Expiration -->\n <div [ngClass]=\"{ 'text-danger': product.expired }\">\n <strong class=\"d-inline-block w-50\">{{\n product.expired ? 'Expired' : 'Expiry Date'\n }}:</strong>\n {{ product.expires_at | dateFormat }}\n </div>\n <!-- Estimated Price -->\n <div [ngClass]=\"{ 'text-danger': product.expired }\">\n <strong class=\"d-inline-block w-50\">{{\n 'User.Subscriptions.PriceExclTax' | transloco\n }}:</strong>\n {{ product.currency }}\n {{ (product.calculated_price / 100) | number:'1.2-2' }}\n </div>\n <!-- API Key -->\n <ng-template [ngIf]=\"\n (product.stripe_plan_id && product.max_hits > 0) ||\n product.max_hits_trial > 0\n \">\n <div class=\"d-inline\">\n <strong class=\"d-inline-block w-50\">{{\n 'User.Subscriptions.ApiKey' | transloco\n }}:</strong>\n <code class=\"d-inline me-2\">{{ product.masked }}</code>\n </div>\n <div class=\"float-end\">\n <!-- Show Access Key -->\n <button class=\"btn\"\n ngbTooltip=\"Show Access Key\"\n (click)=\"showKey(product)\">\n <i class=\"fas fa-eye\" aria-hidden=\"true\"></i>\n </button>\n <!-- Copy To Clipboard -->\n <button class=\"btn\"\n ngbTooltip=\"Copy Key\">\n <i\n class=\"fal fa-copy\"\n aria-hidden=\"true\"\n (click)=\"\n onClipboardCopy(product.api_access_token)\n \"\n (keydown.enter)=\"onClipboardCopy(product.api_access_token)\"\n ></i>\n </button>\n <!-- Update API Key -->\n <button class=\"btn\"\n ngbTooltip=\"Change Key\"\n *ngIf=\"!product.expired && !product.deleted\"\n (click)=\"updateApiKey(product)\">\n <i class=\"fal fa-sync-alt\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </ng-template>\n <div class=\"clearfix\"></div>\n </div>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-start\">\n <div *ngIf=\"product.deleted && !product.expired\">\n <i class=\"fa fa-info-circle me-2\" aria-hidden=\"true\"></i>{{ 'User.Subscriptions.OutdatedMessage' | transloco }}\n </div>\n <div>\n <span *ngIf=\"product.deleted\"\n class=\"badge bg-danger me-2\">Deleted</span>\n <span class=\"badge bg-warning me-2\"\n *ngIf=\"\n product.trial_subscription &&\n product.calculated_price\n \">\n Trial</span>\n <span class=\"badge bg-grey me-2\"\n *ngIf=\"product?.pause_collection && objectKeys(product?.pause_collection)?.length\"\n [pTooltip]=\"'User.Subscriptions.Tooltip.PausedCollection'|transloco\"\n tooltipPosition=\"top\">\n Paused collection\n </span>\n <span class=\"badge bg-success me-2\"\n *ngIf=\"!product.calculated_price\">\n Free\n </span>\n </div>\n </div>\n <ng-template [ngIf]=\"\n subscription.is_subscription_owner ||\n subscription.is_subscription_admin\n \">\n <!-- Unsubscribe -->\n <button class=\"btn btn-outline-danger btn-sm float-end me-2\"\n *ngIf=\"\n subscription?.stripe_customer_id&&\n !product?.deleted &&\n !product?.trial_subscription\n \"\n (click)=\"attemptUnsubscribe(subscription, product.id)\">\n {{ 'User.Subscriptions.Unsubscribe' | transloco }}\n </button>\n <button class=\"badge bg-dark me-2 float-end\"\n *ngIf=\"product?.product_privacy_service_id\"\n (click)=\"showPrivacyAndTos(product)\">\n {{\n 'User.Subscriptions.PrivacyAndTermsOfService'\n | transloco\n }}\n </button>\n\n <ng-template [ngIf]=\"product.stripe_plan_id && product.active\">\n <!-- Upgrade -->\n <button class=\"btn btn-primary btn-sm me-2 float-end\"\n *ngIf=\"product.trial_subscription && !product.deleted\"\n (click)=\"attemptUpgrade(subscription, product)\">\n {{ 'Button.Upgrade' | transloco }}\n </button>\n <!-- Subscribe -->\n <button class=\"btn btn-primary btn-sm float-start\"\n *ngIf=\"subscription.expired && product.stripe_plan_id\"\n [routerLink]=\"'/account/subscriptions/add-new'\">\n {{ 'User.Subscriptions.Subscribe' | transloco }}\n </button>\n </ng-template>\n </ng-template>\n <div *ngIf=\"!product?.deleted && !subscription.is_subscription_owner\">\n <i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i> Invited to\n use this product\n <span *ngIf=\"subscription.is_subscription_admin\"\n class=\"fw-bold\">as an admin</span>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"subscription.products.length === 0\">\n <div class=\"card\">\n <div class=\"card-content\">\n <div class=\"card-header\">\n <p class=\"text-center\">\n No product available for this subscription\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12\"\n *ngIf=\"!editing && !isAddNew && !isUpdatePayment\">\n <pw-no-data [withImage]=\"true\" message=\"You don't have any subscription.\"\n *ngIf=\"subscribedSubscriptions.length === 0\">\n </pw-no-data>\n </div>\n </div>\n </div>\n </div>\n\n <!--\n Add New Subscription\n -->\n <!-- <ng-template [ngIf]=\"isAddNew && !isUpdatePayment\">\n <pw-subscription-details></pw-subscription-details>\n </ng-template> -->\n <!--\n Validate Password For Account Delete\n -->\n <pw-password-validation #passwordValidationModalForAccountDelete\n (successEvent)=\"deleteUser($event)\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p>{{ 'User.Account.Message.ActionCanNotUndone' | transloco }}</p>\n <p>{{ 'User.Account.Message.ConfirmPassword' | transloco }}</p>\n </div>\n </div>\n </pw-password-validation>\n <!--\n Validate Password For Display Key\n -->\n <pw-password-validation #passwordValidationModalForKey\n (successEvent)=\"displayApiKey()\">\n </pw-password-validation>\n <!--\n Validate Password For Unsubscribe\n -->\n <pw-password-validation #passwordValidationForUnsubscribe\n (successEvent)=\"onValidatePassword($event)\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p>{{ 'User.Account.Message.ActionCanNotUndone' | transloco }}</p>\n <p>{{ 'User.Account.Message.ConfirmPassword' | transloco }}</p>\n </div>\n </div>\n </pw-password-validation>\n</ng-container>\n\n<ng-container *ngIf=\"showTos\">\n <pw-privacy-and-tos [productId]=\"productId\"></pw-privacy-and-tos>\n</ng-container>\n\n<router-outlet></router-outlet>\n","import { Component, Injector, OnDestroy } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { Paging, POLL_TIMEOUT } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { LazyLoadEvent } from 'primeng/api';\nimport { interval, Subscription } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\n\n@Component({\n selector: 'pw-user-invoice',\n templateUrl: './user-invoice.component.html',\n styleUrls: ['./user-invoice.component.scss']\n})\nexport class UserInvoiceComponent extends AppBaseComponent implements OnDestroy {\n invoices = [];\n buttonBusy = false;\n userId: number;\n totalRecordsUnFiltered = 0;\n\n searchText = '';\n subscription: Subscription;\n intervalTimer = interval(POLL_TIMEOUT * 60 * 1000);\n isLoaded = false;\n page = 0;\n totalRecords = 0;\n\n invoiceFrequency = ['week', 'month', 'year'];\n\n constructor(injector: Injector) {\n super(injector);\n }\n\n onLazyLoad(event: LazyLoadEvent) {\n const pageDetails = HelperService.onTableLazyLoad(event);\n this.page = pageDetails.page;\n this.fetchInvoices({\n page: this.page,\n page_size: this.PAGE_SIZE,\n order_by: pageDetails.sortField,\n order_direction: pageDetails.sortOrder,\n search: this.searchText\n });\n }\n\n private fetchInvoices(paging: Paging) {\n this.isLoaded = false;\n this.userStore().subscribe(user => {\n if (user) {\n this.userId = user.id;\n this.userService.getUserInvoices(paging, user.id).subscribe(response => {\n this.isLoaded = true;\n this.invoices = response.invoices;\n this.totalRecords = response.object_count;\n this.totalRecordsUnFiltered = response.unfiltered_count;\n this.pollForInvoices();\n });\n }\n });\n }\n\n private pollForInvoices() {\n this.subscription = this.intervalTimer\n .pipe(mergeMap(() => this.userService.getUserInvoices({}, this.userId)))\n .subscribe(data => {\n this.invoices = data.invoices;\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","<div class=\"row\" [class.custom-disable-wrapper]=\"buttonBusy\">\n <div class=\"col-12 d-flex flex-wrap justify-content-between align-items-center\">\n <h2 class=\"card-title p-0 float-start\">Your Invoices</h2>\n </div>\n</div>\n\n<div class=\"w-100 text-center mt-3\" *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"></p-progressSpinner>\n</div>\n<div class=\"row primeng-datatable-container mt-0\" [class.custom-disable-wrapper]=\"buttonBusy\" [class.hideTable]=\"totalRecordsUnFiltered === 0\">\n <div class=\"col-12 px-0\">\n <p-table #tt\n [value]=\"invoices\"\n [paginator]=\"totalRecords !== 0\"\n [rows]=\"PAGE_SIZE\"\n [lazy]=\"true\"\n [totalRecords]=\"totalRecords\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n >\n <ng-template pTemplate=\"caption\">\n <div class=\"search-filter justify-content-end\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input [(ngModel)]=\"searchText\"\n (input)=\"tt.filterGlobal($event.target.value, 'contains')\"\n type=\"text\"\n pInputText\n size=\"50\"\n placeholder=\"Search Invoices...\"\n data-cy=\"incident-search\"\n class=\"wd-90\">\n </div>\n </div>\n </ng-template>\n\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"col\" pSortableColumn=\"date\">Invoice Date <p-sortIcon field=\"date\"></p-sortIcon></th>\n <th scope=\"col\" pSortableColumn=\"frequency\">Frequency <p-sortIcon field=\"frequency\"></p-sortIcon></th>\n <th scope=\"col\" pSortableColumn=\"seatsPurchased\">Seats Purchased <p-sortIcon field=\"seatsPurchased\"></p-sortIcon></th>\n <th scope=\"col\" pSortableColumn=\"subtotal\">Subtotal <p-sortIcon field=\"subtotal\"></p-sortIcon></th>\n <th scope=\"col\" pSortableColumn=\"total\">Total (incl. tax) <p-sortIcon field=\"total\"></p-sortIcon></th>\n <th scope=\"col\">Action</th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-invoice>\n <tr>\n <td>{{ invoice.date | date:'dd-MMM-YYYY' }}</td>\n <td>\n <span class=\"badge\"\n [appDynamicBadge]=\"{\n itemsArray: invoiceFrequency,\n item: invoice.product.billing_frequency\n }\"\n color=\"blue-grey\">{{ invoice.product.billing_frequency }}</span>\n </td>\n <td>{{ invoice?.subscription_product?.purchased_units }}</td>\n <td>{{ (invoice.subtotal_in_cents / 100) | currency:invoice?.product?.currency }}</td>\n <td class=\"td-total\">{{ (invoice.total_in_cents / 100) | currency:invoice?.product?.currency }}</td>\n <td>\n <a *ngIf=\"invoice?.file?.url; else noFileUrl\" class=\"btn btn-sm btn-primary\" [attr.href]=\"invoice.file.url\" target=\"_blank\" title=\"Download\">\n <i class=\"fa fa-download\"> Download</i>\n </a>\n <ng-template #noFileUrl>\n <a class=\"btn btn-sm btn-primary\" [attr.href]=\"invoice?.stripe_invoice_pdf\" target=\"_blank\" title=\"Download\">\n <i class=\"fa fa-download\"> Download</i>\n </a>\n </ng-template>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"totalRecords === 0 && totalRecordsUnFiltered !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage' | transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n\n <span *ngIf=\"totalRecords !== 0\" class=\"total-records-count\">Total: {{ totalRecords }}</span>\n\n </div>\n</div>\n<pw-no-data [withImage]=\"true\" message=\"You don't have any invoice yet.\" *ngIf=\"totalRecordsUnFiltered === 0 && isLoaded\">\n</pw-no-data>\n\n","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { AppState, getUser } from '@posiwise/app-store';\nimport { CommonService, ProfileService } from '@posiwise/common-services';\nimport { User } from '@posiwise/common-utilities';\n\nimport { Store } from '@ngrx/store';\n\n@Component({\n selector: 'pw-communication-tab',\n templateUrl: './communication-tab.component.html',\n styleUrl: './communication-tab.component.scss'\n})\nexport class CommunicationTabComponent extends AppBaseComponent implements OnInit {\n subscriptions = [];\n userSubscription = [];\n\n isLoaded = false;\n\n user: User;\n\n constructor(\n private readonly commonService: CommonService,\n private readonly profileService: ProfileService,\n private readonly store: Store<AppState>,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getAllSubscription();\n }\n\n private getAllSubscription() {\n this.commonService.getAllNewsletter().subscribe(response => {\n this.store.select(getUser).subscribe(user => {\n if (user?.currentUser) {\n this.user = user.currentUser;\n this.profileService\n .getUserObject('user_newsletters', this.user.slug)\n .subscribe(newsletter => {\n this.isLoaded = true;\n this.userSubscription = newsletter;\n this.subscriptions = response.newsletters;\n if (this.userSubscription.length > 0 && this.subscriptions.length > 0) {\n this.subscriptions.forEach(element => {\n const item = this.userSubscription?.find(\n x => x.newsletter_id === element.id\n );\n element.enabled = item ? item.send_newsletters : false;\n });\n } else {\n this.subscriptions.forEach(element => {\n element.enabled = false;\n });\n }\n });\n }\n });\n });\n }\n\n onValueChange(item, value) {\n const data = {\n send_newsletter: value\n };\n\n if (item.id === 9999) {\n const marketingSubs = {\n id: this.user.id,\n send_marketing_emails: value\n };\n this.profileService.updateUserProfile(marketingSubs).subscribe(() => {\n this.updateUser();\n this.toast.success(this.translation.translate('User.Settings.UpdatedMessage'));\n });\n } else {\n this.commonService.toggleNewsletter(item.id, data).subscribe(() => {\n this.updateUser();\n this.toast.success(\n this.translation.translate('User.Settings.Communications.UpdatedMessage')\n );\n });\n }\n }\n\n updateUser() {\n // this.userService.getUserInfo().subscribe(resp => {\n // this.localStorage.setItem('user', JSON.stringify(resp)).subscribe();\n // });\n }\n}\n","<div class=\"row\">\n <div class=\"col-12\">\n <h2>Communication preferences</h2>\n\n <p>\n Although sometimes we do need to communicate with you - for example if you contact\n Support, or if we need to send you a receipt or invoice - we make a clear distinction\n between transactional and non-transactional communications.\n </p>\n\n <p>\n You will always receive the transactional communications but you can decide to opt out\n from all the not transactional ones. To do so, you’ll just need to turn the switch off\n in the list of available communication provided below.\n </p>\n </div>\n\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n</div>\n\n<div class=\"row mt-4 pt-1\"\n *ngIf=\"isLoaded\">\n <div class=\"col-md-6 col-sm-6\">\n <ng-container *ngFor=\"let item of subscriptions; let idx = index\">\n <div class=\"mb-3\"\n *ngIf=\"item.visible || item.enabled\">\n <div class=\"row\">\n <div class=\"col-md-10 col-sm-6\">\n <label for=\"name\">{{ item.name }}</label>\n </div>\n <div class=\"col-md-2 col-sm-6\">\n <ui-switch [checked]=\"item.enabled\"\n checkedLabel=\"on\"\n uncheckedLabel=\"off\"\n (valueChange)=\"onValueChange(item, $event)\">\n </ui-switch>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n\n\n<pw-no-data [withImage]=\"true\" message=\"You don't have any communication preferences yet.\" *ngIf=\"subscriptions.length === 0 && isLoaded\">\n</pw-no-data>\n","import { Component, Injector, OnDestroy, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { CommonService } from '@posiwise/common-services';\n\n@Component({\n selector: 'pw-others-tab',\n templateUrl: './others-tab.component.html'\n})\nexport class OthersTabComponent extends AppBaseComponent implements OnInit, OnDestroy {\n subscriptionConfigs = [];\n globalConfigs = [];\n\n userId: number;\n\n isLoaded = false;\n\n constructor(\n private readonly commonService: CommonService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit(): void {\n this.getGlobalConfigs();\n this.userStore().subscribe(res => {\n if (res) {\n this.userId = res.id;\n }\n });\n }\n\n private getGlobalSubscriptionConfig() {\n this.commonService\n .getAllGlobalSubscriptionConfigs()\n .subscribe(response => {\n this.subscriptionConfigs = response.global_subscription_configs;\n this.globalConfigs.forEach(globalConfig => {\n const config = this.subscriptionConfigs?.find(\n subscriptionConfig =>\n subscriptionConfig.global_config_id === globalConfig?.id\n );\n globalConfig.value = config?.value;\n globalConfig.global_subscription_config_id = config?.id;\n });\n })\n .add(() => {\n this.isLoaded = true;\n });\n }\n\n private getGlobalConfigs() {\n this.commonService.getAllGlobalConfigs().subscribe(response => {\n this.globalConfigs = response.global_configs;\n this.getGlobalSubscriptionConfig();\n });\n }\n\n onValueChange(item, value) {\n const data = {\n user_id: this.userId,\n value,\n global_config_id: item?.id\n };\n const sub$ = item?.global_subscription_config_id\n ? this.commonService.editGlobalSubscriptionConfig(\n item?.global_subscription_config_id,\n data\n )\n : this.commonService.postGlobalSubscriptionConfig(data);\n sub$.subscribe(() => {\n this.toast.success(this.translation.translate('User.OtherSettings.UpdatedMessage'));\n }).add(() => {\n this.getGlobalConfigs();\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<div class=\"row\">\n <div class=\"col-12\">\n <h2>Other</h2>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n<div class=\"row mt-4 pt-1\"\n *ngIf=\"isLoaded && globalConfigs?.length\">\n <div class=\"col-md-6 col-sm-6\">\n <ng-container *ngFor=\"let item of globalConfigs; let idx = index\">\n <div class=\"mb-3\">\n <div class=\"row\">\n <div class=\"col-md-10 col-sm-6\">\n <label for=\"name\"> {{ item?.name }} </label>\n </div>\n <div class=\"col-md-2 col-sm-6\">\n <ui-switch [checked]=\"item.value === 'true'\"\n checkedLabel=\"on\"\n uncheckedLabel=\"off\"\n (valueChange)=\"onValueChange(item, $event)\">\n </ui-switch>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div *ngIf=\"isLoaded && !globalConfigs?.length\">\n <pw-no-data [withImage]=\"true\" [message]=\"'User.OtherSettings.NoDataMessage' | transloco\"> </pw-no-data>\n</div>\n","import { Component, ElementRef, Injector, OnInit, ViewChild } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\n\nimport { StatusCodes } from 'http-status-codes';\n\n@Component({\n selector: 'pw-security-tab',\n templateUrl: './security-tab.component.html',\n styleUrls: ['./security-tab.component.scss']\n})\nexport class SecurityTabComponent extends AppBaseComponent implements OnInit {\n @ViewChild('password', { static: false }) passwordRef: ElementRef;\n @ViewChild('verificationCode', { static: false }) verificationCode: ElementRef;\n\n @ViewChild('ssoPassword', { static: false }) ssoPasswordRef: ElementRef;\n\n showSSOSection = false;\n ssoPasswordVerified = false;\n isSSOPasswordInvalid = true;\n\n user;\n\n isCurrentPasswordValid = true;\n passwordVerified = false;\n show2FA = false;\n\n created2faDetails: object;\n\n constructor(injector: Injector) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUser();\n }\n\n private getUser() {\n this.userService.getUserInfo().subscribe(res => {\n this.user = res;\n });\n }\n\n validatePassword() {\n const password = this.passwordRef.nativeElement.value;\n if (password) {\n this.userService.checkPassword({ password }).subscribe({\n next: data => {\n if (data?.status === StatusCodes.OK) {\n if (this.user?.enable_two_factor_authenticator === false) {\n this.passwordVerified = true;\n this.create2FA();\n } else {\n this.disable2FA();\n }\n }\n },\n error: err => {\n if (err) {\n this.toast.error(err.error.message);\n this.passwordRef.nativeElement.value = '';\n }\n }\n });\n }\n }\n\n checkValidity() {\n const password = this.passwordRef.nativeElement.value;\n if (password.length > 5) {\n this.isCurrentPasswordValid = false;\n } else {\n this.isCurrentPasswordValid = true;\n }\n }\n\n private create2FA() {\n this.userService.createTwoFactorAuthenticator().subscribe(res => {\n this.created2faDetails = res;\n });\n }\n\n verify2FA() {\n this.userService\n .verifyTwoFactorAuthenticator(this.verificationCode.nativeElement.value)\n .subscribe(() => {\n this.enable2FA();\n });\n }\n\n private enable2FA() {\n this.userService\n .enableTwoFactorAuthenticator(this.verificationCode.nativeElement.value)\n .subscribe(_ => {\n this.getUser();\n this.reset();\n });\n }\n\n private disable2FA() {\n this.userService.disableTwoFactorAuthenticator().subscribe(_ => {\n this.getUser();\n this.reset();\n });\n }\n\n reset() {\n this.show2FA = false;\n this.isCurrentPasswordValid = true;\n this.passwordVerified = false;\n this.created2faDetails = {};\n }\n\n checkSSOPasswordValidity() {\n const password = this.ssoPasswordRef.nativeElement.value;\n this.isSSOPasswordInvalid = password.length <= 5;\n }\n\n validateSSOPassword() {\n const password = this.ssoPasswordRef.nativeElement.value;\n if (password) {\n this.userService.checkPassword({ password }).subscribe({\n next: data => {\n if (data?.status === StatusCodes.OK) {\n this.ssoPasswordVerified = true;\n }\n },\n error: err => {\n this.toast.error(err.error.message);\n this.ssoPasswordRef.nativeElement.value = '';\n }\n });\n }\n }\n\n triggerSSO() {\n this.userService.sendSSOActivationEmail().subscribe(() => {\n this.toast.success(\n this.user?.cognito_sso_activated\n ? 'Activation email resent successfully.'\n : 'SSO activation email sent successfully.'\n );\n this.getUser();\n this.resetSSO();\n });\n }\n\n resetSSO() {\n this.showSSOSection = false;\n this.ssoPasswordVerified = false;\n this.isSSOPasswordInvalid = true;\n if (this.ssoPasswordRef?.nativeElement) {\n this.ssoPasswordRef.nativeElement.value = '';\n }\n }\n}\n","<div class=\"row\">\n <div class=\"col-12\">\n <h2>Security settings</h2>\n </div>\n</div>\n<p-accordion>\n <p-accordionTab header=\"Two Factor Authentication (2FA)\">\n <div class=\"row mt-2\">\n <div class=\"col-12\">\n <div class=\"d-flex\">\n <p class=\"small text-muted\"> Add an extra layer of security to your user account by asking to verify their\n identity when they enter a username and password </p>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n <!-- Disable 2FA -->\n <button class=\"btn btn-danger\" *ngIf=\"user?.enable_two_factor_authenticator\" (click)=\"show2FA = true\"> Disable\n </button>\n <!-- Enable 2FA -->\n <button class=\"btn btn-primary\" *ngIf=\"!user?.enable_two_factor_authenticator\"\n [disabled]=\"created2faDetails?.code\" (click)=\"show2FA = true\"> Enable </button>\n </div>\n </div>\n <div class=\"row\" *ngIf=\"show2FA\">\n <div class=\"col-12 col-md-6 col-lg-4 mt-2\">\n <div class=\"mb-3\">\n <input type=\"password\" class=\"form-control\" #password *ngIf=\"!passwordVerified\" placeholder=\"Current Password\"\n (keyup)=\"checkValidity()\" />\n </div>\n </div>\n <div *ngIf=\"created2faDetails?.code\" class=\"col-12\">\n <p class=\"small\"> Scan the QR code below or use secret manually with the Google authenticator app on your mobile\n device, after that fill in the field below with the code generated in the app </p>\n <img [src]=\"created2faDetails?.qr_uri\" alt=\"loading QR code...\" class=\"qr-code img-thumbnail img-responsive\" />\n <strong> Secret Key: {{ created2faDetails?.code }}</strong>\n <p class=\"small\">Auth Type: Time Based OTP</p>\n </div>\n </div>\n <div class=\"row\" *ngIf=\"show2FA\">\n <div class=\"col-4\">\n <div class=\"mb-3 mt-2\">\n <input type=\"text\" #verificationCode class=\"form-control\" *ngIf=\"passwordVerified\"\n placeholder=\"Provide passcode from authenticator app\" />\n </div>\n </div>\n <div class=\"col-12\" *ngIf=\"show2FA\">\n <div class=\"d-flex mt-2\">\n <button class=\"btn btn-raised btn-outline-default me-2\" (click)=\"reset()\"> Cancel </button>\n <button class=\"btn btn-raised btn-primary\" *ngIf=\"!passwordVerified\" (click)=\"validatePassword()\"\n [disabled]=\"isCurrentPasswordValid\"> Validate </button>\n <button class=\"btn btn-raised btn-primary\" *ngIf=\"passwordVerified\" (click)=\"verify2FA()\"> Confirm </button>\n </div>\n </div>\n </div>\n </p-accordionTab>\n</p-accordion>\n<p-accordion>\n <p-accordionTab header=\"Single Sign On (SSO) - AWS Cognito\">\n <div class=\"row mt-2\">\n <div class=\"col-12\">\n <p class=\"small text-muted\"> {{ user?.cognito_sso_activated ? 'You have already activated AWS Cognito SSO, if you click on ‘Resend activation email‘ you‘ll receive an email with instructions to reset your SSO\n password.' : 'Once you click ‘Enable’, you’ll receive an email with instructions to activate your AWS Cognito\n SSO. This will enable you to access all our systems using a single password.' }} </p>\n </div>\n </div>\n <!-- Enable or Resend Button -->\n <div class=\"row\" *ngIf=\"!showSSOSection\">\n <div class=\"col-12\">\n <button class=\"btn btn-primary\" (click)=\"showSSOSection = true\"> {{ user?.cognito_sso_activated ? 'Resend\n activation email' : 'Enable' }} </button>\n </div>\n </div>\n <!-- Password Validation -->\n <div class=\"row\" *ngIf=\"showSSOSection\">\n <div class=\"col-12 col-md-6 col-lg-4 mt-2\" *ngIf=\"!ssoPasswordVerified\">\n <div class=\"mb-3\">\n <input type=\"password\" class=\"form-control\" #ssoPassword placeholder=\"Current Password\"\n (keyup)=\"checkSSOPasswordValidity()\" />\n </div>\n </div>\n <div class=\"col-12\">\n <div class=\"d-flex mt-2\">\n <button class=\"btn btn-raised btn-outline-default me-2\" (click)=\"resetSSO()\"> Cancel </button>\n <button class=\"btn btn-raised btn-primary\" *ngIf=\"!ssoPasswordVerified\" (click)=\"validateSSOPassword()\"\n [disabled]=\"isSSOPasswordInvalid\"> Validate </button>\n <button class=\"btn btn-primary\" *ngIf=\"ssoPasswordVerified\" (click)=\"triggerSSO()\"> Confirm </button>\n </div>\n </div>\n </div>\n </p-accordionTab>\n</p-accordion>\n","import { Component, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { PermissionService } from '@posiwise/common-services';\n\nimport { MenuItem } from 'primeng/api';\n\n@Component({\n selector: 'pw-settings',\n templateUrl: './settings-tabs.component.html'\n})\nexport class SettingsComponent {\n @ViewChild('menuItems', { static: true }) menu: MenuItem[];\n\n items: MenuItem[];\n activeItem: MenuItem;\n\n constructor(\n private readonly router: Router,\n private readonly permissionService: PermissionService\n ) {\n this.items = [\n {\n id: 'communications',\n label: 'Communications',\n icon: 'fa fa-fw fa-cogs',\n routerLink: ['/settings/communication']\n },\n {\n id: 'security',\n label: 'Security',\n icon: 'fa fa-fw fa-lock',\n routerLink: ['/settings/security']\n },\n {\n id: 'other',\n label: 'Other',\n icon: 'fa fa-fw fa-list',\n routerLink: ['/settings/other']\n }\n ];\n this.activeItem =\n this.items[\n this.items.findIndex(\n record => record.routerLink[0] === this.router.url.split('?')[0]\n )\n ];\n }\n\n activateMenu() {\n this.activeItem = this.menu['activeItem'];\n }\n}\n","<pw-tabs [items]=\"items\"></pw-tabs>\n","import { Component, Injector, OnInit } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { CommonService, PermissionService } from '@posiwise/common-services';\n\n@Component({\n selector: 'pw-support',\n templateUrl: './support.component.html',\n styleUrls: ['./support.component.scss']\n})\nexport class SupportComponent extends AppBaseComponent implements OnInit {\n supports = [];\n\n subscriptionId: number;\n\n isLoading: boolean;\n\n isLoaded = false;\n\n constructor(\n injector: Injector,\n private readonly commonService: CommonService\n ) {\n super(injector);\n }\n\n ngOnInit(): void {\n this.subscriptionId = PermissionService.selectedSubscription?.id;\n this.getAllSupport();\n }\n\n private getAllSupport() {\n this.isLoading = true;\n this.commonService\n .getAllCustomerSupport(this.subscriptionId)\n .subscribe(response => {\n this.supports = response;\n })\n .add(() => {\n this.isLoading = false;\n this.isLoaded = true;\n });\n }\n}\n","<div class=\"row m-3\">\n <div class=\"col-12 mb-3\">\n <div\n\t\tclass=\"col-12 d-flex flex-wrap justify-content-between align-items-center mt-4\">\n\t\t<h2 class=\"card-title p-0 float-start\">Support Center</h2>\n\t\t<a routerLink=\"/support-details/add\"\n\t\t\taria-label=\"Navigate to Target\"\n\t\t\tclass=\"btn btn-sm btn-outline-primary float-end\"\n tabindex=\"0\"\n (keydown)=\"$event.key === 'Enter' && $event.target.click()\"\n\t\t\taria-expanded=\"false\">\n\t\t\t<i class=\"fa fa-plus-circle\"\n\t\t\t\taria-hidden=\"true\"></i>\n Create new support request\n\t\t</a>\n\t</div>\n </div>\n <div class=\"col-12 my-3\">\n <h3>Previous support requests</h3>\n <p>Please note that responses to your support requests are sent directly to your email. You can simply reply to those\n emails for further assistance.</p>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"isLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"col-12 mb-3\">\n <p-accordion>\n <p-accordionTab *ngFor=\"let item of supports\"\n header=\"{{ item?.created_at | dateFormat }} ({{ item?.user_name }}) {{ item?.title }}\">\n <p>{{ item?.description }}</p>\n <a [href]=\"item?.attachment?.version_200x200?.url\"\n target=\"_blank\">\n <img alt=\"version_200x200\"\n *ngIf=\"item?.attachment?.version_200x200?.url\"\n [src]=\"item?.attachment?.version_200x200?.url\"\n class=\"img-fluid\" /></a>\n </p-accordionTab>\n </p-accordion>\n </div>\n <div class=\"col-12\"\n *ngIf=\"!supports?.length && isLoaded\">\n <pw-no-data [withImage]=\"true\" message=\"No support requests found\"> </pw-no-data>\n </div>\n</div>\n","import { AfterViewInit, Component, ElementRef, Injector, OnInit, Renderer2 } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\n\nimport { AppAdmin } from '@posiwise/admin-module-utils';\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { AuthService, CommonService, PermissionService } from '@posiwise/common-services';\nimport { HelperService } from '@posiwise/helper-service';\nimport { ValidateForm } from '@posiwise/utils';\n\n@Component({\n selector: 'pw-support-details',\n templateUrl: './support-details.component.html',\n styleUrls: ['./support-details.component.scss']\n})\nexport class SupportDetailsComponent extends AppBaseComponent implements AfterViewInit, OnInit {\n form: UntypedFormGroup;\n\n uploadedFiles = [];\n\n invalidFile = false;\n isSubmitClicked = false;\n\n siteKey: string;\n\n recaptcha = null;\n\n isLoading: boolean;\n filesUploaded: boolean;\n subscriptionId;\n\n constructor(\n injector: Injector,\n private readonly commonService: CommonService,\n private readonly authService: AuthService,\n private readonly renderer: Renderer2,\n private readonly el: ElementRef\n ) {\n super(injector);\n this.form = AppAdmin.customerSupportForm();\n this.form.get('product_id').setValue(PermissionService.selectedProduct.id);\n this.siteKey = this.appConfig.integrations.captcha_key_V2;\n }\n\n ngOnInit(): void {\n this.subscriptionId = PermissionService.selectedSubscription?.id;\n }\n\n ngAfterViewInit() {\n this.attachCloseButtonListener();\n }\n\n @ValidateForm('form')\n onSave() {\n this.isSubmitClicked = true;\n }\n\n handleSuccess(token: string) {\n if (token) {\n this.authService.validateReCaptcha(token).subscribe((isSuccess: boolean) => {\n if (isSuccess) {\n this.isLoading = true;\n const data = {\n ...this.form.value\n };\n if (this.uploadedFiles.length > 0) {\n data.attachment = this.uploadedFiles[0];\n }\n if (!data.attachment) {\n delete data.attachment;\n }\n this.commonService\n .postCustomerSupport({ ...data, subscription_id: this.subscriptionId })\n .subscribe(() => {\n this.back();\n })\n .add(() => {\n this.isLoading = false;\n this.isSubmitClicked = false;\n });\n }\n });\n }\n }\n\n onSelect(event = null) {\n this.invalidFile = false;\n for (const file of event.files) {\n if (!HelperService.validateFile(file, this.toast)) {\n this.invalidFile = true;\n } else {\n this.uploadedFiles.push(file);\n }\n }\n this.filesUploaded = true;\n\n if (this.invalidFile) {\n setTimeout(() => this.attachCloseButtonListener(), 0);\n }\n }\n\n onRemove(event) {\n this.uploadedFiles = this.uploadedFiles.filter(x => event.file.name !== x.name);\n if (this.uploadedFiles.length === 0) {\n this.filesUploaded = false;\n }\n this.invalidFile = false;\n }\n\n attachCloseButtonListener() {\n const closeButton = this.el.nativeElement.querySelector('.p-message-close');\n\n if (closeButton) {\n this.renderer.listen(closeButton, 'click', () => {\n this.handleCloseButtonClick();\n });\n }\n }\n\n handleCloseButtonClick() {\n this.invalidFile = false;\n this.filesUploaded = false;\n }\n\n onUploadError(event) {\n HelperService.onUploadError(event, this.toast);\n }\n}\n","<div class=\"container-fluid pw-tab overflow-hidden\">\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"me-auto col-xs-6 mt-4\">\n <a aria-label=\"Navigate to Target\" (click)=\"back()\" class=\"previous\"><i\n class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"mt-3\">{{ 'Label.NewSupport' | transloco }}</h3>\n </div>\n <div class=\"p-2 m-1 mt-3\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"col-12\">\n <pw-input-container label=\"title\"\n name=\"title\"\n errorMsg=\"Title is required\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"title\" />\n </pw-input-container>\n </div>\n <div class=\"col-12 col-sm-12\">\n <pw-input-container label=\"Description\"\n errorMsg=\"description is required\"\n name=\"description\">\n <textarea rows=\"3\"\n type=\"text\"\n class=\"form-control\"\n formControlName=\"description\"\n id=\"description\"></textarea>\n </pw-input-container>\n </div>\n <div class=\"col-12 col-md-6\">\n <h4 class=\"mt-4\">You can add a picture here</h4>\n <div class=\"mb-3 file-upload-support-details\">\n <label for=\"file\">Upload Picture</label>\n <p-fileUpload #forms\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"image/*\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\"\n [ngIf]=\"uploadedFiles?.length\">\n <div class=\"drag-drop-text\" *ngIf=\"!filesUploaded && (!uploadedFiles || uploadedFiles.length === 0)\">\n <p>You can drag and drop your file here</p>\n </div>\n </ng-template>\n </p-fileUpload>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"isLoading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"col-12 text-end mt-3\">\n <ng-container *ngIf=\"isSubmitClicked\">\n <div class=\"support-details-captcha\">\n <ngx-recaptcha2 [ngModelOptions]=\"{ standalone: true }\"\n [siteKey]=\"siteKey\"\n size=\"normal\"\n [(ngModel)]=\"recaptcha\"\n (success)=\"handleSuccess($event)\">\n </ngx-recaptcha2>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!isSubmitClicked\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"back()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-primary\" [disabled]=\"invalidFile\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </ng-container>\n </div>\n </div>\n </form>\n </div>\n </div>\n </div>\n</div>\n","import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild } from '@angular/core';\n\nimport { ProfileService } from '@posiwise/common-services';\nimport { Subscription } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { FileUpload } from 'primeng/fileupload';\nimport { forkJoin, Observable } from 'rxjs';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { ModalContext } from '../../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-edit-portfolios',\n templateUrl: './edit-portfolios.component.html',\n styleUrls: ['./edit-portfolios.component.scss']\n})\nexport class EditPortfoliosComponent {\n @ViewChild('content', { static: true }) content: TemplateRef<ModalContext>;\n @ViewChild('form', { static: false }) uploader: FileUpload;\n\n @Output() successEvent: EventEmitter<boolean> = new EventEmitter();\n\n @Input() id: number;\n @Input() slug: string;\n\n uploadedFiles = [];\n project = [];\n projectPictures = [];\n\n busy: boolean;\n filesUploaded: boolean;\n\n constructor(\n private readonly modalService: NgbModal,\n private readonly profileService: ProfileService\n ) {}\n\n openModal(id: number) {\n this.id = 0;\n this.id = id;\n this.modalService.open(this.content, {\n centered: true,\n size: 'lg',\n windowClass: 'modal-holder'\n });\n }\n\n onSelect(event = null) {\n // eslint-disable-next-line no-restricted-syntax\n for (const file of event.files) {\n if (HelperService.validateFile(file)) {\n this.uploadedFiles.push(file);\n }\n }\n this.filesUploaded = true;\n }\n\n getProjectPictures() {\n this.profileService.getProjectPictures(this.slug).subscribe(response => {\n if (response.length > 0) {\n this.projectPictures = response.flatMap(x => x.project_pictures);\n }\n });\n }\n\n /**\n * Uploads multiple images for the project\n * @param form\n */\n onSave(form) {\n if (this.uploadedFiles.length > 0) {\n this.busy = true;\n const subscriptions$: Observable<Subscription>[] = [];\n this.uploadedFiles.forEach(file => {\n subscriptions$.push(\n this.profileService.addProjectPictures({\n project_id: Number(this.id),\n image: file\n })\n );\n });\n\n forkJoin(subscriptions$)\n .subscribe({\n next: () => {\n form.clear();\n this.successEvent.emit();\n this.modalService.dismissAll();\n },\n error: () => {\n form.clear();\n this.modalService.dismissAll();\n }\n })\n .add(() => {\n this.busy = false;\n });\n }\n }\n\n deleteProjectPicture(id: number) {\n this.profileService.deletePicture(id).subscribe(_ => {\n this.getProjectPictures();\n });\n }\n\n trackByImage(_index: number, item: { id: number }) {\n return item?.id;\n }\n\n onRemove(event) {\n this.uploadedFiles = this.uploadedFiles.filter(x => event.file.name !== x.name);\n this.filesUploaded = false;\n }\n\n onUploadError(event) {\n HelperService.onUploadError(event);\n }\n}\n","<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">Add/Edit Portfolio Item</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n Add a cover image or a downloadable file for your portfolio item\n <p-fileUpload #form\n name=\"myfile[]\"\n [customUpload]=\"true\"\n [showUploadButton]=\"false\"\n accept=\"\"\n [disabled]=\"uploadedFiles && uploadedFiles.length > 0\"\n (onSelect)=\"onSelect($event)\"\n (onRemove)=\"onRemove($event)\"\n (onError)=\"onUploadError($event)\">\n <ng-template pTemplate=\"content\"\n [ngIf]=\"uploadedFiles?.length\">\n <div class=\"drag-drop-text\" *ngIf=\"!filesUploaded && (!uploadedFiles || uploadedFiles.length === 0)\">\n <p>You can drag and drop your file here</p>\n </div>\n </ng-template>\n </p-fileUpload>\n <div class=\"ui-fileupload-content ui-widget-content ui-corner-bottom\">\n <div class=\"ui-fileupload-files\">\n <div class=\"\">\n <h5>Uploaded Pictures</h5>\n <div *ngFor=\"let image of projectPictures; trackBy: trackByImage\"\n class=\"ui-fileupload-row d-inline-block\">\n <div>\n <img [src]=\"image?.picture?.version_50x50?.url\"\n alt=\"\"\n width=\"50\" />\n </div>\n <div class=\"pt-1 ps-1\">\n <button icon=\"pi pi-times\"\n type=\"button\"\n (click)=\"deleteProjectPicture(image.id)\"\n class=\"ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only\">\n <span class=\"ui-button-icon-left ui-clickable pi pi-times\"></span>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"modal.close()\">\n Cancel\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n [buttonBusy]=\"busy\"\n (click)=\"onSave(form)\">\n Save\n </button>\n </div>\n</ng-template>\n","import {\n Component,\n EventEmitter,\n Injector,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { ProfileService, ValidationService } from '@posiwise/common-services';\nimport { Project } from '@posiwise/common-utilities';\nimport { appendQueryParam, clearQueryParams, ValidateForm } from '@posiwise/utils';\n\nimport moment from 'moment';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { ModalContext } from '../../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-edit-project-modal',\n templateUrl: './edit-project-modal.component.html',\n styleUrls: ['./edit-project-modal.component.scss']\n})\nexport class EditProjectModalComponent extends AppBaseComponent implements OnInit, OnDestroy {\n @ViewChild('content', { static: true }) content: TemplateRef<ModalContext>;\n\n @Output() cancelEvent: EventEmitter<void> = new EventEmitter();\n @Output() saveEvent: EventEmitter<boolean> = new EventEmitter();\n\n form: UntypedFormGroup;\n\n weeks: number[] = [];\n startYears: number[];\n endYears: number[];\n\n title = 'Add Project';\n\n submitted = false;\n buttonBusy = false;\n\n private currentProject: Project;\n\n userId: number;\n\n constructor(\n public modalService: NgbModal,\n private readonly fb: UntypedFormBuilder,\n private readonly profileService: ProfileService,\n injector: Injector\n ) {\n super(injector);\n this.getForm();\n }\n\n get f() {\n return this.form.controls;\n }\n\n ngOnInit() {\n clearQueryParams(this.router, this.route);\n this.userStore().subscribe(user => {\n this.userId = user.id;\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n getStartYear() {\n const d = new Date(`01 July 1980`);\n const range = [];\n for (let i = new Date().getFullYear(); i >= d.getFullYear(); i--) {\n range.push(i);\n }\n this.startYears = range;\n }\n\n getEndYears(start_year) {\n const range = [];\n for (let i = new Date().getFullYear(); i >= start_year; i--) {\n range.push(i);\n }\n this.endYears = range;\n }\n\n private getWeeks() {\n const endYear = moment([this.form.value['end_year']]);\n const startYear = moment([this.form.value['start_year']]);\n if (endYear) {\n const weeks = endYear.diff(startYear, 'weeks');\n this.weeks = Array.from(Array(weeks).keys());\n }\n }\n\n onOpen(item = null) {\n this.currentProject = item;\n appendQueryParam(this.router, this.route, {\n modal: 'editProjects'\n });\n\n if (item) {\n this.form.patchValue(item);\n this.title = `Edit Project - ${item.title}`;\n this.getStartYear();\n this.getEndYears(item.end_year);\n this.getWeeks();\n } else {\n this.form.reset();\n this.title = 'Add Project';\n }\n\n this.modalService.open(this.content, {\n centered: true,\n size: 'lg',\n windowClass: 'modal-holder'\n });\n }\n\n @ValidateForm('form')\n onSaveDetail() {\n this.submitted = true;\n this.buttonBusy = true;\n const { value } = this.form;\n value.user_id = this.userId;\n\n const subscription$ = this.currentProject?.id\n ? this.profileService.updateProjects(this.currentProject.id, value)\n : this.profileService.addProjects(value);\n subscription$\n .subscribe(() => {\n this.modalService.dismissAll();\n this.toast.success(\n this.translation.translate('User.Profile.Projects.ProjectUpdated')\n );\n this.saveEvent.emit(true);\n })\n .add(() => {\n this.submitted = false;\n this.buttonBusy = false;\n });\n }\n\n private getForm() {\n this.form = this.fb.group({\n start_year: [\n null,\n [\n Validators.required,\n Validators.pattern(ValidationService.CustomValidatorPatterns.Year)\n ]\n ],\n end_year: [\n null,\n [\n Validators.required,\n Validators.pattern(ValidationService.CustomValidatorPatterns.Year)\n ]\n ],\n client_name: [null, Validators.required],\n title: [null, Validators.required],\n description: [null, Validators.required],\n length: ['', [Validators.required, Validators.max(5000)]],\n advertisable: [false],\n syndicated: [false]\n });\n }\n}\n","<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">{{ title }}</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <form [formGroup]=\"form\">\n <div class=\"row p-2\">\n <!-- Title -->\n <pw-input-container class=\"col-12\"\n label=\"Title\"\n name=\"title\"\n errorMsg=\"This field is required.\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"title\"\n [ngClass]=\"{ 'is-invalid': submitted && f.title.errors }\" />\n </pw-input-container>\n <!-- Client Name -->\n <pw-input-container class=\"col-12\"\n label=\"Client Name\"\n name=\"client_name\"\n errorMsg=\"This field is required.\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"client_name\"\n [ngClass]=\"{ 'is-invalid': submitted && f.client_name.errors }\" />\n </pw-input-container>\n <!-- Project Start Year -->\n <pw-input-container class=\"col-4\"\n label=\"Start\"\n name=\"start_year\"\n errorMsg=\"YYYY format date is required\">\n <p-dropdown\n (onShow)=\"getStartYear()\"\n formControlName=\"start_year\"\n [options]=\"startYears\"\n [placeholder]=\"'Select Start Year'\"\n (onChange)=\"getEndYears($event.value)\"\n [ngClass]=\"{ 'is-invalid': submitted && f.start_year.errors }\">\n </p-dropdown>\n </pw-input-container>\n <!-- Project End Year -->\n <pw-input-container class=\"col-4\"\n label=\"End\"\n name=\"end_year\"\n errorMsg=\"YYYY format date is required\">\n <p-dropdown\n formControlName=\"end_year\"\n [options]=\"endYears\"\n [placeholder]=\"'Select End Year'\"\n (onChange)=\"getEndYears($event.value)\"\n [ngClass]=\"{ 'is-invalid': submitted && f.end_year.errors }\">\n </p-dropdown>\n </pw-input-container>\n <!-- Total Weeks Worked -->\n <pw-input-container class=\"col-4\"\n label=\"Weeks worked\"\n name=\"length\"\n errorMsg=\"This field is required. (0-5000)\">\n <input type=\"number\"\n formControlName=\"length\"\n class=\"form-control\"\n placeholder=\"weeks\"\n [ngClass]=\"{ 'is-invalid': submitted && f.length.errors }\" />\n </pw-input-container>\n <!-- Description -->\n <pw-input-container class=\"col-12\"\n label=\"Description\"\n name=\"description\"\n errorMsg=\"This field is required.\">\n <textarea type=\"text\"\n class=\"form-control\"\n formControlName=\"description\"\n required\n [ngClass]=\"{ 'is-invalid': submitted && f.description.errors }\"></textarea>\n </pw-input-container>\n </div>\n </form>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"modal.close()\">\n Cancel\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n (click)=\"onSaveDetail()\">Save</button>\n </div>\n</ng-template>\n","import {\n Component,\n EventEmitter,\n Injector,\n OnInit,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { QualificationService } from '@posiwise/common-services';\nimport { appendQueryParam, clearQueryParams, ValidateForm } from '@posiwise/utils';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { ModalContext } from '../../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-edit-qualifications-modal',\n templateUrl: './edit-qualifications-modal.component.html',\n styleUrls: ['./edit-qualifications-modal.component.scss']\n})\nexport class EditQualificationsModalComponent extends AppBaseComponent implements OnInit {\n @Output()\n saveEvent: EventEmitter<void> = new EventEmitter();\n\n @ViewChild('content', { static: true }) content: TemplateRef<ModalContext>;\n\n title = 'Add Education';\n\n form: UntypedFormGroup;\n\n userId: number;\n\n now: Date = new Date(); // Used for datepicker\n\n minToDate = this.now;\n\n qualifications = [\n { value: 0, label: 'No formal education' },\n { value: 1, label: 'Primary education' },\n { value: 2, label: 'Secondary educ, action or high school' },\n { value: 3, label: 'GED' },\n { value: 4, label: 'Vocational qualification' },\n { value: 5, label: \"Bachelor's degree\" },\n { value: 7, label: \"Master's degree\" },\n { value: 9, label: 'Doctorate or higher' }\n ];\n buttonBusy = false;\n\n constructor(\n public modalService: NgbModal,\n private readonly fb: UntypedFormBuilder,\n private readonly qualificationService: QualificationService,\n injector: Injector\n ) {\n super(injector);\n\n this.form = this.fb.group({\n id: [null],\n school: [null, Validators.required],\n course: [null, Validators.required],\n degree: [null],\n started_on: [null, Validators.required],\n ended_on: [null, Validators.required],\n description: [null],\n points: [null]\n });\n }\n\n ngOnInit() {\n clearQueryParams(this.router, this.route);\n this.userStore().subscribe(response => {\n this.userId = response.id;\n });\n }\n\n onOpen(value = null) {\n appendQueryParam(this.router, this.route, {\n modal: 'editQualifications'\n });\n\n if (value) {\n this.form.patchValue(value);\n this.title = 'Edit Education';\n } else {\n this.form.reset();\n this.title = 'Add Education';\n }\n\n this.modalService.open(this.content, {\n centered: true,\n size: 'lg',\n windowClass: 'modal-holder'\n });\n }\n\n onDateChange(): void {\n const fromDate = this.form.controls['started_on'].value;\n if (fromDate) {\n this.minToDate = new Date(fromDate);\n this.minToDate.setDate(this.minToDate.getDate() + 1);\n }\n }\n\n @ValidateForm('form')\n onSaveDetail() {\n this.buttonBusy = true;\n const data = { ...this.form.value };\n data.user_id = this.userId;\n data.degree = this.qualifications.find(x => x.value === data.points)?.label;\n\n const sub$ = data?.id\n ? this.qualificationService.updateQualifications(data.id, data)\n : this.qualificationService.addQualifications(data);\n\n sub$.subscribe(() => {\n const msg = data.id\n ? this.translation.translate('User.Profile.Qualifications.UpdatedMessage')\n : this.translation.translate('User.Profile.Qualifications.AddedMessage');\n this.toast.success(msg);\n this.saveEvent.emit();\n clearQueryParams(this.router, this.route);\n this.modalService.dismissAll();\n }).add(() => {\n this.buttonBusy = false;\n });\n }\n}\n","<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">{{ title }}</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <form [formGroup]=\"form\">\n <div class=\"row p-2\">\n <pw-input-container class=\"col-12\"\n label=\"School\"\n name=\"school\"\n errorMsg=\"This field is required.\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"school\" />\n </pw-input-container>\n\n <pw-input-container class=\"col-6\"\n label=\"Dates Attended\"\n name=\"started_on\"\n errorMsg=\"This field is required.\">\n <div class=\"ui-fluid\">\n <p-calendar formControlName=\"started_on\"\n [monthNavigator]=\"true\"\n [yearNavigator]=\"true\"\n yearRange=\"1950:2020\"\n (onSelect)=\"onDateChange()\"\n [showIcon]=\"true\"\n dateFormat=\"yy-mm-dd\">\n </p-calendar>\n </div>\n </pw-input-container>\n\n <pw-input-container class=\"col-6\"\n label=\"Dates Completed\"\n name=\"ended_on\"\n errorMsg=\"This field is required.\">\n <div class=\"ui-fluid\">\n <p-calendar formControlName=\"ended_on\"\n [monthNavigator]=\"true\"\n [yearNavigator]=\"true\"\n [showIcon]=\"true\"\n (onSelect)=\"onDateChange()\"\n [minDate]=\"minToDate\"\n dateFormat=\"yy-mm-dd\"\n yearRange=\"1950:2025\"></p-calendar>\n </div>\n </pw-input-container>\n\n <pw-input-container class=\"col-12\"\n label=\"Degree\"\n name=\"points\"\n errorMsg=\"This field is required.\">\n <p-dropdown [options]=\"qualifications\"\n placeholder=\"Select\"\n formControlName=\"points\"></p-dropdown>\n </pw-input-container>\n\n <pw-input-container class=\"col-12\"\n label=\"Course\"\n name=\"course\"\n errorMsg=\"This field is required.\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"course\" />\n </pw-input-container>\n\n <pw-input-container class=\"col-12\"\n label=\"Description\"\n name=\"description\">\n <textarea type=\"text\"\n class=\"form-control\"\n formControlName=\"description\"></textarea>\n </pw-input-container>\n </div>\n </form>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"modal.close()\">\n Cancel\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n (click)=\"onSaveDetail()\">Save</button>\n </div>\n</ng-template>\n\n<i\n class=\"fa fa-lg pi pi-plus-circle float-end mt-2 pt-1 pt-md-0 profile-icons\"\n data-cy=\"add-qualification\"\n (keydown.enter)=\"onOpen()\"\n aria-label=\"Add Qualification\"\n (click)=\"onOpen()\"\n aria-hidden=\"true\"\n></i>\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\n\nimport { ProfileService } from '@posiwise/common-services';\nimport { Project, User } from '@posiwise/common-utilities';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { ModalContext } from '../../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-edit-recommendation-modal',\n templateUrl: './edit-recommendation-modal.component.html'\n})\nexport class EditRecommendationModalComponent {\n @ViewChild('content', { static: true }) content: TemplateRef<ModalContext>;\n\n @Input() user: User;\n\n form: UntypedFormGroup;\n\n title = 'Endorse';\n\n buttonBusy = false;\n\n project = new Project();\n\n constructor(\n public modalService: NgbModal,\n private readonly fb: UntypedFormBuilder,\n private readonly profileService: ProfileService\n ) {\n this.form = this.fb.group({\n project_id: [null],\n user_id: [null],\n description: [null, Validators.required],\n quality: [null],\n time: [null],\n communication: [null]\n });\n }\n\n onOpen(value = null) {\n if (value) {\n this.project = value;\n }\n this.modalService.open(this.content, {\n centered: true,\n size: 'lg',\n windowClass: 'modal-holder'\n });\n }\n\n @ValidateForm('form')\n onSaveDetail() {\n this.buttonBusy = true;\n const data = {\n user_id: this.user.id,\n project_id: this.project.id,\n description: this.form.get('description').value,\n quality: this.form.get('quality').value,\n time: this.form.get('time').value,\n communication: this.form.get('communication').value\n } as object;\n\n this.profileService\n .postProjectRecommendation(data)\n .subscribe(_ => {\n this.modalService.dismissAll();\n })\n .add(() => {\n this.buttonBusy = false;\n });\n }\n}\n","<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">{{ title }}</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <form [formGroup]=\"form\">\n <div class=\"row p-2\">\n <pw-input-container class=\"col-12 col-md-4\"\n label=\"Quality\"\n name=\"quality\"\n errorMsg=\"This field is required.\">\n <p-rating formControlName=\"quality\"\n [cancel]=\"false\"></p-rating>\n </pw-input-container>\n\n <pw-input-container class=\"col-12 col-md-4\"\n label=\"Communication\"\n name=\"communication\"\n errorMsg=\"This field is required.\">\n <p-rating formControlName=\"communication\"\n [cancel]=\"false\"></p-rating>\n </pw-input-container>\n\n <pw-input-container class=\"col-12 col-md-4\"\n label=\"Time\"\n name=\"time\"\n errorMsg=\"This field is required.\">\n <p-rating formControlName=\"time\"\n [cancel]=\"false\"></p-rating>\n </pw-input-container>\n\n <pw-input-container class=\"col-12\"\n label=\"Description\"\n name=\"description\"\n errorMsg=\"This field is required.\">\n <textarea type=\"text\"\n class=\"form-control\"\n formControlName=\"description\"></textarea>\n </pw-input-container>\n </div>\n </form>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"modal.close()\">\n Cancel\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n (click)=\"onSaveDetail()\">Save</button>\n </div>\n</ng-template>\n\n<!-- <i class=\"fal fa-plus-circle fa-2x btn-link float-end btn-add\" (click)=\"onOpen()\" aria-hidden=\"true\"></i> -->\n","import {\n Component,\n EventEmitter,\n Injector,\n Input,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { TagService } from '@posiwise/common-services';\nimport { TAG_ENTITY, TAG_TYPE } from '@posiwise/common-utilities';\nimport { appendQueryParam, clearQueryParams } from '@posiwise/utils';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { ModalContext } from '../../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-edit-skills-modal',\n templateUrl: './edit-skills-modal.component.html'\n})\nexport class EditSkillsModalComponent extends AppBaseComponent {\n @ViewChild('content', { static: true }) content: TemplateRef<ModalContext>;\n\n @Input()\n userId: number;\n\n @Input()\n slug: string;\n\n @Input()\n entityType = TAG_TYPE.SKILLS;\n\n @Input()\n entityEntity = TAG_ENTITY.USER;\n\n @Output()\n saveEvent: EventEmitter<boolean> = new EventEmitter();\n\n allSkills = [];\n\n searchSkills = [];\n\n selectedSkills = [];\n\n constructor(\n private readonly modalService: NgbModal,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n open() {\n this.getSkills();\n this.modalService.open(this.content, { centered: true, windowClass: 'modal-holder' });\n appendQueryParam(this.router, this.route, {\n modal: 'editskills'\n });\n }\n\n /**\n * Populate all the skills for the dropdown\n */\n private getSkills() {\n this.tagService.getTagsByType('skills', {}).subscribe(response => {\n this.allSkills = response.tags;\n this.getEntitySkills();\n });\n }\n\n /**\n * Skills Search\n * @param event: keyword to search\n */\n search(event) {\n let data = [];\n if (event.query) {\n data = this.allSkills.filter(x =>\n x.name.toLowerCase().includes(event.query.toLowerCase())\n );\n } else {\n this.allSkills.forEach(item => {\n data.push(item);\n });\n }\n this.searchSkills = data;\n }\n\n close(modal) {\n modal.close();\n this.selectedSkills = [];\n }\n\n private getEntitySkills() {\n this.tagService\n .getTagsByEntity(this.slug, this.entityEntity, this.entityType)\n .subscribe(response => {\n this.selectedSkills = this.allSkills.filter(item => {\n return response.tags.find(x => x.id === item.id);\n });\n });\n }\n\n saveUserSkills() {\n const skills = [];\n this.selectedSkills.forEach(element => {\n skills.push({\n tag_id: element.id,\n rank: element.id,\n years: 0,\n preferred: true\n });\n });\n\n const postData = {\n entity_tags: skills,\n user_id: Number(this.userId),\n slug: this.slug,\n tag_entity: this.entityEntity\n };\n\n this.tagService.addTags(postData).subscribe(() => {\n this.saveEvent.emit(true);\n this.toast.success(this.translation.translate('User.Profile.Skills.UpdatedMessage'));\n clearQueryParams(this.router, this.route);\n this.modalService.dismissAll();\n });\n }\n}\n","<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">My Skills</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <div class=\"ui-fluid skills-modal skills-dropdown\">\n <p-autoComplete [(ngModel)]=\"selectedSkills\"\n [suggestions]=\"searchSkills\"\n dataKey=\"id\"\n field=\"name\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n [minLength]=\"1\"\n [maxlength]=\"10\"\n placeholder=\"Skills\"\n [dropdown]=\"true\"\n [multiple]=\"true\"></p-autoComplete>\n\n <small class=\"p-2\">Select up to 10 skills.</small>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"close(modal)\">Cancel</button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"saveUserSkills()\">Save</button>\n </div>\n</ng-template>\n","import {\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Injector,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { AbstractControl, UntypedFormBuilder, UntypedFormGroup, ValidatorFn } from '@angular/forms';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { ProfileService } from '@posiwise/common-services';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { ModalContext, ValidationError } from '../../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-edit-social-links',\n templateUrl: './edit-social-links.component.html'\n})\nexport class EditSocialLinksComponent extends AppBaseComponent implements OnInit {\n @ViewChild('content', { static: true }) content: TemplateRef<ModalContext>;\n\n @Input() links: Record<string, string> = {};\n @Input() userId: number;\n\n @Output() saveEvent: EventEmitter<void> = new EventEmitter();\n\n form: UntypedFormGroup;\n\n buttonBusy = false;\n\n constructor(\n injector: Injector,\n private readonly modalService: NgbModal,\n private readonly fb: UntypedFormBuilder,\n private readonly profileService: ProfileService,\n private readonly cdr: ChangeDetectorRef\n ) {\n super(injector);\n this.form = this.fb.group({\n user_id: 0,\n youtube: ['', this.urlValidator('youtube')],\n skype: ['', this.urlValidator('skype')],\n linkedin: ['', this.urlValidator('linkedin')],\n twitter: ['', this.urlValidator('twitter')],\n instagram: ['', this.urlValidator('instagram')],\n facebook: ['', this.urlValidator('facebook')],\n stackoverflow: ['', this.urlValidator('stackoverflow')],\n github: ['', this.urlValidator('github')],\n bitbucket: ['', this.urlValidator('bitbucket')],\n gitlab: ['', this.urlValidator('gitlab')]\n });\n }\n\n private urlValidator(social: string): ValidatorFn {\n return (control: AbstractControl): ValidationError | null => {\n const url = `https://www.${social}`;\n const url2 = `https://${social}`;\n if (control.value) {\n const valid = control.value.includes(url) || control.value.includes(url2);\n\n return valid ? null : { urlMalformed: { value: control.value } };\n }\n\n return null;\n };\n }\n\n ngOnInit() {\n this.form.patchValue(this.links);\n }\n\n onOpen(links) {\n this.links = links;\n this.form.patchValue(this.links);\n this.modalService.open(this.content, {\n centered: true,\n size: 'lg',\n windowClass: 'modal-holder'\n });\n }\n\n @ValidateForm('form')\n onSaveDetail() {\n this.buttonBusy = true;\n this.form.patchValue({\n user_id: this.userId\n });\n this.profileService\n .postLinks(this.form.value)\n .subscribe(_ => {\n this.toast.success(\n this.translation.translate('User.Profile.SocialLinks.AddedMessage')\n );\n this.modalService.dismissAll();\n this.saveEvent.emit();\n })\n .add(() => {\n this.buttonBusy = false;\n });\n }\n}\n","<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">Tell us your external portfolio</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <form [formGroup]=\"form\"\n class=\"p-sm-3\"\n (ngSubmit)=\"onSaveDetail()\">\n <div>\n <p>\n Please tell us where we can find more information about you or about your\n work/projects. This will impact your ranking on the site.\n </p>\n </div>\n\n <div class=\"row mt-0\">\n <div class=\"col-sm-6 col-12\">\n <div class=\"mb-3\">\n <label for=\"file\"><img src=\"/assets/img/icons/social/linkedin.svg\"\n width=\"20\"\n alt=\"\" />\n LinkedIn</label>\n <input type=\"url\"\n formControlName=\"linkedin\"\n class=\"form-control\"\n placeholder=\"https://linkedin.com/in/nickname\" />\n </div>\n </div>\n\n <div class=\"col-sm-6 col-12\">\n <div class=\"mb-3\">\n <label for=\"file\"><img src=\"/assets/img/icons/social/twitter.svg\"\n width=\"20\"\n alt=\"\" />\n Twitter</label>\n <input type=\"url\"\n formControlName=\"twitter\"\n class=\"form-control\"\n placeholder=\"https://twitter.com/nickname\" />\n </div>\n </div>\n\n <div class=\"col-sm-6 col-12\">\n <div class=\"mb-3\">\n <label for=\"file\"><img src=\"/assets/img/icons/social/facebook.svg\"\n width=\"20\"\n alt=\"\" />\n Facebook</label>\n <input type=\"url\"\n formControlName=\"facebook\"\n class=\"form-control\"\n placeholder=\"https://www.facebook.com/nickname\" />\n </div>\n </div>\n\n <div class=\"col-sm-6 col-12\">\n <div class=\"mb-3\">\n <label for=\"file\"><img src=\"/assets/img/icons/social/youtube.svg\"\n width=\"20\"\n alt=\"\" />\n YouTube</label>\n <input type=\"url\"\n formControlName=\"youtube\"\n class=\"form-control\"\n placeholder=\"https://www.youtube.com/nickname\" />\n </div>\n </div>\n\n <div class=\"col-sm-6 col-12\">\n <div class=\"mb-3\">\n <label for=\"file\">\n <img src=\"/assets/img/icons/social/skype.svg\"\n width=\"20\"\n alt=\"\" /> Skype\n </label>\n <input type=\"url\"\n formControlName=\"skype\"\n class=\"form-control\"\n placeholder=\"https://www.skype.com/nickname\" />\n </div>\n </div>\n\n <div class=\"col-sm-6 col-12\">\n <div class=\"mb-3\">\n <label for=\"file\"><img src=\"/assets/img/icons/social/github.svg\"\n width=\"20\"\n alt=\"\" />\n Github</label>\n <input type=\"url\"\n formControlName=\"github\"\n class=\"form-control\"\n placeholder=\"https://github.com/nickname\" />\n </div>\n </div>\n\n <div class=\"col-sm-6 col-12\">\n <div class=\"mb-3\">\n <label for=\"file\"><img src=\"/assets/img/icons/social/stackoverflow.svg\"\n width=\"20\"\n alt=\"\" />\n StackOverflow</label>\n <input type=\"url\"\n formControlName=\"stackoverflow\"\n class=\"form-control\"\n placeholder=\"http://stackoverflow.com/users/nickname\" />\n </div>\n </div>\n </div>\n </form>\n </div>\n <div class=\"modal-footer\">\n <button type=\"button\"\n class=\"btn btn-outline-default\"\n (click)=\"modal.close()\">\n Cancel\n </button>\n <button type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n (click)=\"onSaveDetail()\">Save</button>\n </div>\n</ng-template>\n","import {\n Component,\n EventEmitter,\n Injector,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { NgxGpAutocompleteDirective } from '@angular-magic/ngx-gp-autocomplete';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { GeoService, ProfileService } from '@posiwise/common-services';\nimport { Country } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\nimport { ValidateForm } from '@posiwise/utils';\n\nimport { map, Observable } from 'rxjs';\n\nimport { NgbDateStruct, NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { EditUser, ModalContext, UserProfile } from '../../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-edit-user-profile-modal',\n templateUrl: './edit-user-profile-modal.component.html',\n styleUrl: './edit-user-profile-modal.component.scss'\n})\nexport class EditUserProfileModalComponent extends AppBaseComponent implements OnInit {\n @ViewChild('content', { static: true }) content: TemplateRef<ModalContext>;\n\n @Input() slug: string;\n @Input() user: EditUser;\n\n @Output() saveEvent: EventEmitter<UserProfile> = new EventEmitter<UserProfile>();\n\n @ViewChild('ngxPlaces') placesRef: NgxGpAutocompleteDirective;\n\n form: UntypedFormGroup;\n\n countries$: Observable<Country[]>;\n\n states: Country[] = [];\n buttonBusy = false;\n\n constructor(\n public modalService: NgbModal,\n private readonly fb: UntypedFormBuilder,\n private readonly profileService: ProfileService,\n private readonly geoService: GeoService,\n injector: Injector\n ) {\n super(injector);\n this.form = this.fb.group({\n first_name: [null, Validators.required],\n last_name: [null, Validators.required],\n headline: [null, Validators.required],\n description: [null, Validators.required],\n gender: ['M'],\n phone_number: [null],\n dob: [null, Validators.required],\n website_url: [null],\n country: [null, Validators.required],\n postcode: [null],\n location: [null],\n state: [null, Validators.required],\n province: [null, Validators.required]\n });\n }\n\n ngOnInit() {\n this.geoService.getCountries().subscribe(() => {\n this.countries$ = this.geoService\n .getCountries()\n .pipe(\n map((countries: []) => [{ name: 'Select Country', code: null }, ...countries])\n );\n });\n this.getValues();\n }\n\n getValues() {\n let dobObject: NgbDateStruct;\n\n const userProfile = this.user?.profile;\n if (userProfile) {\n if (userProfile?.country) {\n this.getRegion(userProfile.country);\n }\n if (userProfile?.dob) {\n dobObject = {\n year: Number(userProfile.dob.substring(0, 4)),\n month: Number(userProfile.dob.substring(5, 7)),\n day: Number(userProfile.dob.substring(8, 10))\n };\n\n this.form.patchValue({});\n }\n\n this.form.patchValue(userProfile);\n this.form.patchValue({\n first_name: this.user.first_name,\n last_name: this.user.last_name,\n dob: dobObject || {}\n });\n }\n }\n\n handleAddressChange(_event) {\n this.form.patchValue({\n latitude: _event.geometry.location.lat(),\n longitude: _event.geometry.location.lng(),\n location: _event.formatted_address\n });\n }\n\n onOpen() {\n this.form.reset();\n this.getValues();\n this.modalService.open(this.content, {\n centered: true,\n size: 'lg',\n windowClass: 'modal-holder'\n });\n }\n\n getRegion(countryId) {\n if (countryId) {\n this.geoService.getRegions(countryId).subscribe(response => {\n this.states = [{ code: 0, name: 'Select State' }, ...response];\n });\n }\n }\n\n onSaveDetail() {\n this.form.patchValue({ province: this.form.value.state });\n this.save();\n }\n\n @ValidateForm('form')\n save() {\n this.buttonBusy = true;\n const data = { ...this.form.value };\n data.dob = HelperService.dateFormat(this.form.get('dob').value);\n\n this.profileService\n .updateUserProfile(data)\n .subscribe(response => {\n if (response.id) {\n this.toast.success(this.translation.translate('User.Profile.ProfileUpdated'));\n this.modalService.dismissAll();\n this.saveEvent.emit(response);\n }\n })\n .add(() => {\n this.buttonBusy = false;\n });\n }\n}\n","<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h4 class=\"modal-title\"\n id=\"modal-basic-title\">Edit Intro</h4>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"modal-body\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSaveDetail()\">\n <div class=\"row\">\n <pw-input-container class=\"col-6\"\n label=\"First Name\"\n name=\"first_name\"\n errorMsg=\"Please enter first Name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"first_name\"\n id=\"first_name\" />\n </pw-input-container>\n\n <pw-input-container class=\"col-6\"\n label=\"Last Name\"\n name=\"last_name\"\n errorMsg=\"Please enter last Name\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"last_name\"\n id=\"last_name\" />\n </pw-input-container>\n\n <pw-input-container class=\"col-12\"\n label=\"Headline\"\n name=\"headline\"\n errorMsg=\"Please enter headline\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"headline\"\n id=\"headline\" />\n </pw-input-container>\n\n <pw-input-container class=\"col-12\"\n label=\"About me\"\n name=\"description\"\n errorMsg=\"Please enter description\">\n <textarea class=\"form-control\"\n formControlName=\"description\"\n id=\"description\"></textarea>\n </pw-input-container>\n\n <pw-input-container class=\"col-6\"\n label=\"Gender\"\n name=\"gender\"\n errorMsg=\"Please enter Gender\">\n <p-selectButton [options]=\"[\n { label: 'Male', value: 'M' },\n { label: 'Female', value: 'F' }\n ]\"\n formControlName=\"gender\"></p-selectButton>\n </pw-input-container>\n\n <pw-input-container class=\"col-6\"\n label=\"Date of Birth\"\n name=\"dob\"\n errorMsg=\"Please enter date of birth\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"yyyy-mm-dd\"\n formControlName=\"dob\"\n ngbDatepicker\n #d=\"ngbDatepicker\"\n [minDate]=\"{ year: 1950, month: 1, day: 1 }\"\n [maxDate]=\"{ year: 2018, month: 12, day: 31 }\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"d.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </pw-input-container>\n\n <pw-input-container class=\"col-6\"\n label=\"Phone\"\n name=\"phone_number\"\n errorMsg=\"Please enter phone\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"phone_number\" />\n </pw-input-container>\n\n <pw-input-container class=\"col-6\"\n label=\"Postcode\"\n name=\"postcode\"\n errorMsg=\"Please enter postcode\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"postcode\" />\n </pw-input-container>\n\n <ng-container *ngIf=\"countries$ | async as countries\">\n <pw-input-container class=\"col-12 col-sm-6\"\n label=\"Country\"\n name=\"country\"\n errorMsg=\"Please select a country\">\n\n <p-dropdown\n id=\"country\"\n [options]=\"countries\"\n optionLabel=\"name\"\n optionValue=\"code\"\n formControlName=\"country\"\n (onChange)=\"getRegion($event.value)\"\n placeholder=\"{{ 'User.Profile.SelectCountry' | transloco }}\">\n </p-dropdown>\n\n </pw-input-container>\n </ng-container>\n\n <pw-input-container class=\"col-12 col-sm-6\"\n label=\"State\"\n name=\"state\"\n errorMsg=\"Please select a state\">\n <p-dropdown\n id=\"state\"\n [options]=\"states\"\n optionLabel=\"name\"\n optionValue=\"code\"\n formControlName=\"state\"\n [placeholder]=\"'User.Profile.SelectState' | transloco\">\n </p-dropdown>\n </pw-input-container>\n\n <!-- Location -->\n <pw-input-container label=\"Location\"\n class=\"col-12 col-md-6\"\n name=\"location\">\n <input ngx-gp-autocomplete\n class=\"form-control\"\n #places=\"ngx-places\"\n formControlName=\"location\"\n (onAddressChange)=\"handleAddressChange($event)\" />\n </pw-input-container>\n\n <pw-input-container class=\"col-12 col-sm-6\"\n label=\"Website\"\n name=\"website_url\"\n errorMsg=\"Please enter Website\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"website_url\" />\n </pw-input-container>\n </div>\n <div class=\"modal-footer\">\n <input type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"modal.close()\"\n value=\"Cancel\" />\n <input type=\"submit\"\n [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary\"\n value=\"Save Changes\" />\n </div>\n </form>\n </div>\n</ng-template>\n","import {\n Component,\n EventEmitter,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { ProfileService, QualificationService, TagService } from '@posiwise/common-services';\nimport { TAG_ENTITY, TAG_TYPE, User } from '@posiwise/common-utilities';\n\nimport { forkJoin, Subscription } from 'rxjs';\nimport swal from 'sweetalert2';\n\nimport {\n AboutUserProfile,\n Qualification,\n Skill\n} from '../../shared/interface/user-module.interface';\nimport { EditQualificationsModalComponent } from '../edit-qualifications-modal/edit-qualifications-modal.component';\nimport { EditSkillsModalComponent } from '../edit-skills-modal/edit-skills-modal.component';\nimport { EditSocialLinksComponent } from '../edit-social-links/edit-social-links.component';\nimport { EditUserProfileModalComponent } from '../edit-user-profile-modal/edit-user-profile-modal.component';\n\n@Component({\n selector: 'pw-user-about',\n templateUrl: './user-about.component.html',\n styleUrls: ['./user-about.component.scss']\n})\nexport class UserAboutComponent extends AppBaseComponent implements OnInit, OnDestroy {\n @Input() user: User;\n @Input() isEdit = false;\n\n @Output()\n saveEvent: EventEmitter<boolean> = new EventEmitter();\n\n @ViewChild(EditUserProfileModalComponent, { static: false })\n modal: EditUserProfileModalComponent;\n\n @ViewChild(EditQualificationsModalComponent, { static: false })\n qualificationModal: EditQualificationsModalComponent;\n\n @ViewChild(EditSkillsModalComponent, { static: false })\n skillsModal: EditSkillsModalComponent;\n\n @ViewChild(EditSocialLinksComponent, { static: false })\n socialModal: EditSocialLinksComponent;\n\n private readonly navigationSubscription: Subscription;\n\n allSkills = [];\n\n searchSkills = [];\n\n selectedSkills: Skill[];\n\n objectKeys = Object.keys;\n\n user_profile: AboutUserProfile;\n\n qualifications: Qualification[] = [];\n\n userLinks: Record<string, string> = {};\n\n noUserLinks: boolean;\n\n loading = false;\n\n constructor(\n private readonly profileService: ProfileService,\n private readonly qualificationService: QualificationService,\n private readonly tagService: TagService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getUserDetails();\n this.getSkills();\n }\n\n getUserDetails() {\n this.loading = true;\n forkJoin({\n user_profile: this.profileService.getUserObject('user_profile', this.user.slug),\n qualifications: this.profileService.getUserObject('qualifications', this.user.slug),\n user_links: this.profileService.getUserObject('user_link', this.user.slug),\n user_skills: this.tagService.getGroupedSkills(\n this.user.slug,\n TAG_ENTITY.USER,\n TAG_TYPE.SKILLS\n )\n }).subscribe({\n next: response => {\n this.user_profile = response.user_profile;\n this.user['profile'] = response.user_profile;\n this.qualifications = response.qualifications;\n this.userLinks = response.user_links || [];\n this.noUserLinks = Object.values(this.userLinks).some(x => !!x);\n this.selectedSkills = response.user_skills;\n this.loading = false;\n },\n error: err => {\n this.loading = false;\n this.toast.showToast(err);\n },\n complete: () => {\n this.loading = false;\n }\n });\n }\n\n /**\n * Populate all the skills for the dropdown\n */\n private getSkills() {\n this.tagService.getTagsByType('skills', {}).subscribe(response => {\n this.allSkills = response.skills;\n });\n }\n\n onProfileOpen() {\n this.modal.onOpen();\n }\n\n openSkills() {\n this.skillsModal.open();\n }\n\n onProfileSaved(_event) {\n this.getUserDetails();\n this.saveEvent.emit();\n }\n\n onOpenSocial() {\n if (this.socialModal) {\n this.socialModal.onOpen(this.userLinks); // Pass userLinks to the modal\n }\n }\n\n editQualification(item) {\n this.qualificationModal.onOpen(item);\n }\n\n deleteQualification(item) {\n swal.fire({\n title: 'Delete',\n html: `Are you sure you want to delete <strong>${item.degree}</strong>?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n this.qualificationService.deleteQualifications(item.id).subscribe(() => {\n this.toast.success(\n this.translation.translate(\n 'User.Profile.Qualifications.QualificationDelete'\n )\n );\n this.getUserDetails();\n });\n }\n });\n }\n\n onSaveUserLinks() {\n this.getUserDetails();\n }\n\n trackByQualification(_index: number, item: { id: number }) {\n return item.id;\n }\n\n override ngOnDestroy() {\n // avoid memory leaks here by cleaning up after ourselves. If we\n // don't then we will continue to run our initialiseInvites()\n // method on every navigationEnd event.\n if (this.navigationSubscription) {\n this.navigationSubscription.unsubscribe();\n }\n }\n}\n","<div class=\"row\">\n <div class=\"col-sm-12 mt-2\">\n <div data-cy=\"personal-info\">\n <h2 class=\"\">Personal Information</h2>\n <ng-container *ngIf=\"user && isEdit\">\n <i\n class=\"profile-icons fa fa-lg fa-user-edit float-end mt-3 pt-1 pt-md-0\"\n (click)=\"onProfileOpen()\"\n (keydown.enter)=\"onProfileOpen()\"\n aria-label=\"Open Profile\"\n aria-hidden=\"true\"\n ></i>\n <pw-edit-user-profile-modal [user]=\"user\"\n (saveEvent)=\"onProfileSaved($event)\"\n [slug]=\"user?.slug\">\n </pw-edit-user-profile-modal>\n </ng-container>\n </div>\n <div>\n <div class=\"my-3\">\n <span class=\"profile-label\">About Me:</span>\n <span class=\"display-block overflow-hidden\">{{ user_profile?.description || 'No description has been added yet.' }}\n </span>\n </div>\n <hr />\n <div class=\"row mt-0 my-0\">\n <div class=\"col-6 col-sm-6 col-lg-4\">\n <ul class=\"no-list-style personal-info\">\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"icon-present font-small-3\" aria-hidden=\"true\"></i>\n Birthday:</span>\n <span class=\"display-block overflow-hidden pt-2\">{{\n user_profile?.dob | dateFormat\n }}</span>\n </li>\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-globe font-small-3\" aria-hidden=\"true\"></i> Lives\n in:</span>\n <span class=\"display-block overflow-hidden pt-2\">{{\n user_profile?.country\n }}</span>\n </li>\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-monitor font-small-3\" aria-hidden=\"true\"></i>\n Website:</span>\n <a class=\"display-block overflow-hidden pt-2\">{{\n user_profile?.website_url\n }}</a>\n </li>\n </ul>\n </div>\n <div class=\"col-6 col-sm-6 col-lg-4\">\n <ul class=\"no-list-style personal-info\">\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-user font-small-3\" aria-hidden=\"true\"></i>\n Gender:</span>\n <span class=\"display-block overflow-hidden pt-2\">\n {{\n user_profile?.gender === 'M'\n ? 'Male'\n : user_profile?.gender === 'F'\n ? 'Female'\n : ''\n }}\n </span>\n </li>\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-mail font-small-3\" aria-hidden=\"true\"></i>\n Email:</span>\n <a class=\"display-block overflow-hidden pt-2\">{{ user?.email }}</a>\n </li>\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-smartphone font-small-3\" aria-hidden=\"true\"></i> Phone\n Number:</span>\n <span class=\"display-block overflow-hidden pt-2\">{{\n user_profile?.phone_number\n }}</span>\n </li>\n </ul>\n </div>\n <div class=\"col-6 col-md-6 col-lg-4\">\n <ul class=\"no-list-style personal-info\">\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-book font-small-3\" aria-hidden=\"true\"></i>\n Joined:</span>\n <span class=\"display-block overflow-hidden pt-2\">{{\n user?.joined_at | dateFormat\n }}</span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n <hr />\n <div data-cy=\"skills-info\"\n class=\"mt-4\">\n <h2 class=\"\">Skills</h2>\n <div class=\"float-end\"\n *ngIf=\"isEdit\">\n <i\n class=\"profile-icons fa fa-lg fa-edit float-end mt-3 pt-1 pt-md-0\"\n (click)=\"openSkills()\"\n (keydown.enter)=\"openSkills()\"\n aria-label=\"Open Skills\"\n aria-hidden=\"true\"\n ></i>\n <pw-edit-skills-modal [userId]=\"user?.id\"\n [slug]=\"user?.slug\"\n (saveEvent)=\"getUserDetails()\">\n </pw-edit-skills-modal>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"mb-4\"\n *ngIf=\"selectedSkills?.length === 0\">\n {{\n isEdit\n ? \"You haven't selected any skills yet. Please add some.\"\n : 'No skills added.'\n }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"ui-fluid\">\n <span class=\"\"\n *ngFor=\"let skill of selectedSkills\">\n <span class=\"my-2 me-3\">{{ skill.category_name }}</span>\n <span *ngFor=\"let item of skill.tags\"\n class=\"badge bg-success me-2 mb-2\">{{ item.name }}\n </span>\n <br />\n </span>\n </div>\n <hr />\n <div data-cy=\"educational-info\">\n <div class=\"\">\n <h2 class=\"\">Educational Information</h2>\n <div class=\"float-end\"\n *ngIf=\"isEdit\">\n <pw-edit-qualifications-modal (saveEvent)=\"getUserDetails()\">\n </pw-edit-qualifications-modal>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-lg-6 col-12 mb-4\"\n [ngClass]=\"{ editable: isEdit }\"\n *ngFor=\"let item of qualifications; trackBy: trackByQualification\">\n <div class=\"mb-2\">\n <div class=\"float-start\">\n <h4>{{ item?.school }}</h4>\n <ul class=\"no-list-style\">\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-clock font-small-3\" aria-hidden=\"true\"></i>\n Period:</span>\n <span class=\"display-block overflow-hidden pt-2\">\n {{ item?.started_on }} - {{ item?.ended_on }}\n </span>\n </li>\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-feather font-small-3\" aria-hidden=\"true\"></i>\n Degree:</span>\n <span class=\"display-block overflow-hidden pt-2\">\n {{ item?.degree }}\n </span>\n </li>\n <li class=\"mb-4\">\n <span class=\"profile-label\"><i class=\"ft-octagon font-small-3\" aria-hidden=\"true\"></i>\n Course:</span>\n <span class=\"display-block overflow-hidden pt-2\">\n {{ item?.course }}\n </span>\n </li>\n </ul>\n </div>\n <div class=\"float-end action\"\n *ngIf=\"isEdit\">\n <span class=\"fa-stack\">\n <i\n class=\"fa fa-lg fa-edit fa-stack-1x me-3 profile-icons\"\n title=\"Edit\"\n (keydown.enter)=\"editQualification(item)\"\n aria-label=\"Edit Qualification\"\n (click)=\"editQualification(item)\"\n aria-hidden=\"true\"\n ></i>\n </span>\n <span class=\"fa-stack\">\n <i\n class=\"fa fa-lg fa-trash fa-stack-1x delete-icon\"\n data-cy=\"delete-qualification\"\n title=\"Delete\"\n aria-label=\"Delete Qualification\"\n (keydown.enter)=\"deleteQualification(item)\"\n (click)=\"deleteQualification(item)\"\n aria-hidden=\"true\"\n ></i>\n </span>\n </div>\n </div>\n </div>\n <div class=\"col-lg-6 col-12 mb-4\"\n *ngIf=\"qualifications && qualifications.length === 0\">\n {{\n isEdit\n ? ' No qualification yet. Please add some.'\n : 'No qualifications added.'\n }}\n </div>\n </div>\n </div>\n <hr />\n <!-- External Portfolio -->\n <div data-cy=\"portfolio-info\"\n class=\"mt-4\">\n <div class=\"\">\n <h2 class=\"\">External Portfolio</h2>\n <i\n class=\"fa fa-lg fa-edit profile-icons float-end mt-3 pt-1 pt-md-0\"\n *ngIf=\"isEdit\"\n (click)=\"onOpenSocial()\"\n aria-label=\"Edit external portfolio\"\n (keydown)=\"($event.key === 'Enter' ? onOpenSocial() : null)\"\n title=\"Edit External Portfolio\"\n ></i>\n </div>\n <div class=\"row\">\n <div class=\"col-md-6 col-12 mb-4\">\n <div *ngIf=\"userLinks\">\n <ng-container *ngFor=\"let link of objectKeys(userLinks)\">\n <a target=\"_blank\"\n rel=\"noopener noreferrer\"\n [href]=\"userLinks[link]\"\n *ngIf=\"userLinks[link]\">\n <img src=\"assets/img/icons/social/{{ link }}.svg\"\n class=\"me-2\"\n width=\"40\"\n alt=\"\" />\n </a>\n </ng-container>\n </div>\n <div class=\"row\">\n <ng-container *ngIf=\"user\">\n <pw-edit-social-links [userId]=\"user.id\"\n [links]=\"userLinks\"\n (saveEvent)=\"onSaveUserLinks()\">\n </pw-edit-social-links>\n </ng-container>\n <div class=\"col-12 mb-4\"\n *ngIf=\"!noUserLinks\">\n {{\n isEdit\n ? 'No external portfolio yet. Please add some.'\n : 'No portfolio added.'\n }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<div class=\"w-100 text-center mt-3\"\n *ngIf=\"loading\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\n\nimport { ProfileService } from '@posiwise/common-services';\nimport { User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'pw-portfolios',\n templateUrl: './user-portfolios.component.html',\n styleUrls: ['./user-portfolios.component.scss']\n})\nexport class PortfoliosComponent implements OnInit {\n @Input() user: User;\n @Input() isEdit = false;\n\n projectPictures = [];\n\n selectedPicURL: string;\n\n isLoaded = false;\n\n constructor(\n private readonly service: ProfileService,\n private readonly modalService: NgbModal\n ) {}\n\n ngOnInit() {\n this.getProjectPictures();\n }\n\n private getProjectPictures() {\n this.service.getProjectPictures(this.user.slug).subscribe(response => {\n if (response.length > 0) {\n this.projectPictures = response.flatMap(x => x.project_pictures);\n }\n this.isLoaded = true;\n });\n }\n\n deletePicture(id) {\n HelperService.raiseDeletePopup().then(resp => {\n if (resp.value) {\n this.service.deletePicture(id).subscribe(_ => {\n this.getProjectPictures();\n });\n }\n });\n }\n\n trackByImage(_index: number, item: { id: number }) {\n return item.id;\n }\n\n showFullImage(picture, content, evt) {\n if ($(evt.target).attr('id') !== 'delete-icon') {\n this.selectedPicURL = picture.picture.url;\n this.modalService.open(content, {\n centered: true,\n size: 'lg',\n windowClass: 'img-popup'\n });\n }\n }\n}\n","<div class=\"row\">\n <div class=\"col-sm-12 mt-2\">\n <h2>User's Portfolio</h2>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <pw-no-data [withImage]=\"true\" message=\"No portfolio listed yet - please consider adding some.\"\n *ngIf=\"projectPictures.length === 0 && isLoaded\"></pw-no-data>\n <div class=\"card-body\">\n <div class=\"card-block\"\n *ngIf=\"projectPictures.length\">\n <div class=\"grid-hover\">\n <div class=\"row\">\n <div class=\"col-md-4 col-12 mb-2\"\n *ngFor=\"let picture of projectPictures; trackBy: trackByImage\">\n <figure class=\"effect-marley\"\n (keydown.enter)=\"showFullImage(picture, content, $event)\"\n (click)=\"showFullImage(picture, content, $event)\">\n <img [src]=\"picture.picture.url\"\n alt=\"project pic\" />\n <figcaption>\n <h2>\n <span class=\"portfolio-header-text\">{{ picture.project_title }}</span>\n </h2>\n <i\n class=\"fal fa-2x fa-times white\"\n id=\"delete-icon\"\n (click)=\"deletePicture(picture.id)\"\n (keydown.enter)=\"deletePicture(picture.id)\"\n *ngIf=\"isEdit\"\n aria-hidden=\"true\"\n ></i>\n <p class=\"thumb-description\">\n {{ picture?.project_description }}\n </p>\n </figcaption>\n </figure>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-template #content\n let-modal>\n <div class=\"modal-img-popup\">\n <img alt=\"Selected Url\"\n [src]=\"selectedPicURL\"\n class=\"img-fluid\" />\n <button type=\"button\"\n class=\"close close-img\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss('Cross click')\">\n <span class=\"btn\">×</span>\n </button>\n </div>\n</ng-template>\n","import { Component, Injector, Input, OnInit, ViewChild } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { ProfileService } from '@posiwise/common-services';\nimport { Project, User } from '@posiwise/common-utilities';\n\nimport swal from 'sweetalert2';\n\nimport { EditPortfoliosComponent } from '../edit-portfolios/edit-portfolios.component';\nimport { EditProjectModalComponent } from '../edit-project-modal/edit-project-modal.component';\nimport { EditRecommendationModalComponent } from '../edit-recommendation-modal/edit-recommendation-modal.component';\nimport { EditSkillsModalComponent } from '../edit-skills-modal/edit-skills-modal.component';\n\n@Component({\n selector: 'pw-user-projects',\n templateUrl: './user-projects.component.html',\n styleUrls: ['./user-projects.component.scss']\n})\nexport class UserProjectsComponent extends AppBaseComponent implements OnInit {\n @Input() user: User;\n @Input() isEdit = false;\n\n @ViewChild(EditProjectModalComponent, { static: true })\n projectModal: EditProjectModalComponent;\n\n @ViewChild(EditSkillsModalComponent, { static: false })\n skillModal: EditSkillsModalComponent;\n\n @ViewChild(EditRecommendationModalComponent, { static: true })\n recommendationModal: EditRecommendationModalComponent;\n\n @ViewChild(EditPortfoliosComponent, { static: false })\n portfolios: EditPortfoliosComponent;\n\n projects: Project[] = [];\n\n submitted: boolean;\n\n isLoaded = false;\n\n constructor(\n private readonly service: ProfileService,\n injector: Injector\n ) {\n super(injector);\n }\n\n ngOnInit() {\n this.getProjects();\n }\n\n onEditProject(item) {\n this.projectModal.onOpen(item);\n }\n\n editRecommendation(item) {\n this.recommendationModal.onOpen(item);\n }\n\n openSkills(project) {\n this.skillModal.slug = project.slug;\n this.skillModal.open();\n }\n\n getProjects() {\n this.service.getProjects(this.user?.slug).subscribe(response => {\n this.projects = response.projects;\n this.isLoaded = true;\n });\n }\n\n onSkillsSave() {\n this.getProjects();\n }\n\n onSaveProject(_event) {\n this.getProjects();\n }\n\n openPortfolios(id: number) {\n this.portfolios.openModal(id);\n this.portfolios.getProjectPictures();\n }\n\n onDeleteProject(project) {\n swal.fire({\n title: 'Delete',\n text: `Are you sure you want to delete ${project.title}?`,\n showCancelButton: true,\n reverseButtons: true,\n icon: 'warning'\n }).then(rep => {\n if (rep.value) {\n this.service.deleteProject(project.id).subscribe(() => {\n this.projects = this.projects.filter((x: Project) => x.id !== project.id);\n });\n }\n });\n }\n\n trackByProject(_index: number, item: Project) {\n return item.id;\n }\n\n deletePicture(project) {\n this.service.deletePicture(project.project_pictures[0].id).subscribe(_ => {\n this.getProjects();\n });\n }\n}\n","<div class=\"row\">\n <div class=\"col-sm-12 mt-2\">\n <h2>User's Projects</h2>\n <div class=\"row\"\n *ngIf=\"isEdit\">\n <div class=\"col-12\">\n <div class=\"content-header\">\n <button class=\"btn btn-primary float-end\"\n (click)=\"onEditProject(null)\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i> {{'Create Project' | transloco}}\n </button>\n </div>\n </div>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div id=\"timeline\"\n class=\"timeline-center timeline-wrapper\"\n *ngIf=\"projects?.length\">\n <ul class=\"timeline\">\n <li class=\"timeline-line\"></li>\n </ul>\n <ul class=\"timeline\">\n <li class=\"timeline-line\"></li>\n <li class=\"timeline-item\"\n [ngClass]=\"{ 'mt-5': odd }\"\n *ngFor=\"\n let project of projects;\n let i = index;\n let odd = odd;\n let even = even;\n trackBy: trackByProject\n \">\n <div class=\"timeline-badge\">\n <span class=\"bg-red bg-lighten-1\"\n data-bs-toggle=\"tooltip\"\n data-placement=\"right\"\n title=\"Portfolio project work\">\n <span class=\"timeline-year\"> {{ project.start_year }} </span>\n </span>\n </div>\n <div class=\"timeline-card card shadow rounded border-grey border-lighten-2 pb-0\">\n <div class=\"card-header\">\n <h4 class=\"mb-0 card-title\">\n <a>{{ project.title }}</a>\n </h4>\n <div class=\"card-subtitle text-muted mt-0\">\n <span class=\"font-small-3\">\n {{ project.start_year }} - {{ project.end_year }}</span>\n </div>\n </div>\n <div class=\"card-body project-card\">\n <ng-container *ngIf=\"project.project_pictures?.length\">\n <i\n class=\"fal fa-times\"\n (click)=\"deletePicture(project)\"\n (keydown.enter)=\"deletePicture(project)\"\n aria-hidden=\"true\"\n ></i>\n <img class=\"img-fluid project-picture\"\n [src]=\"project.project_pictures[0].picture.url\"\n alt=\"Project Cover\" />\n </ng-container>\n <div class=\"card-body\">\n <div class=\"\">\n <p class=\"card-text\">{{ project.description }}</p>\n <div class=\"list-inline mb-1\">\n <!-- Skills -->\n <div *ngIf=\"project.tags?.length\">\n <div class=\"my-2\">\n <i class=\"fa fa-user-tag\" aria-hidden=\"true\"></i>\n Skills\n </div>\n <ng-container *ngFor=\"let tag of project.tags\">\n <span class=\"badge bg-success me-2\">{{\n tag.name\n }}</span>\n </ng-container>\n </div>\n <div class=\"mt-2\"\n *ngIf=\"project.project_recommendations?.length\">\n <div class=\"my-2\">\n <i\n class=\"fa fa-clipboard-check me-2\"\n aria-hidden=\"true\"\n ></i>\n Recommendations\n </div>\n <section class=\"mb-2\"\n *ngFor=\"\n let recommendation of project.project_recommendations\n \">\n <div class=\"me-2\">\n Client: {{ recommendation?.client_name }}\n </div>\n <div class=\"me-2\">\n Message: {{ recommendation?.description }}\n </div>\n <div class=\"row recommendation\">\n <div class=\"col-4\">\n <span>Communication</span>\n <p-rating [(ngModel)]=\"\n recommendation.communication\n \"\n [cancel]=\"false\"\n [readonly]=\"true\">\n </p-rating>\n </div>\n <div class=\"col-4\">\n <span>Quality</span>\n <p-rating [(ngModel)]=\"recommendation.quality\"\n [cancel]=\"false\"\n [readonly]=\"true\">\n </p-rating>\n </div>\n <div class=\"col-4\">\n <span>Time</span>\n <p-rating [(ngModel)]=\"recommendation.time\"\n [cancel]=\"false\"\n [readonly]=\"true\">\n </p-rating>\n </div>\n </div>\n </section>\n </div>\n <div class=\"text-end mt-3 d-flex justify-content-end project-actions\"\n *ngIf=\"isEdit\">\n <!-- Project Edit -->\n <span class=\"btn btn-link pb-0 actions\"\n (keydown.enter)=\"onEditProject(project)\"\n (click)=\"onEditProject(project)\">\n Edit\n </span>\n <button class=\"btn btn-link pb-0 actions\"\n (click)=\"openSkills(project)\">\n Skills\n </button>\n <pw-edit-skills-modal [userId]=\"user?.id\"\n entityEntity=\"Project\"\n entityType=\"skills\"\n (saveEvent)=\"onSkillsSave()\"\n [slug]=\"project?.slug\">\n </pw-edit-skills-modal>\n <!-- Portfolios -->\n <button class=\"btn btn-link pb-0 actions\"\n (click)=\"openPortfolios(project.id)\">\n Photos\n </button>\n <pw-edit-portfolios [slug]=\"user?.slug\"\n [id]=\"project.id\"\n (successEvent)=\"getProjects()\">\n </pw-edit-portfolios>\n <span class=\"btn btn-link pb-0 delete-project actions\"\n (keydown.enter)=\"onDeleteProject(project)\"\n (click)=\"onDeleteProject(project)\">\n Delete\n </span>\n </div>\n <!-- Recommendation -->\n <span class=\"pe-1 mt-3\"\n (click)=\"editRecommendation(project)\"\n (keydown.enter)=\"editRecommendation(project)\"\n *ngIf=\"!isEdit\">\n <a class=\"primary\"><span class=\"fa fa-commenting-o\"></span> Endorse\n </a></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </li>\n </ul>\n </div>\n <pw-no-data [withImage]=\"true\" [message]=\"\n isEdit\n ? ('User.Profile.Projects.NoProjects' | transloco)\n : ('User.Profile.Projects.NoUserProjects' | transloco)\n \"\n *ngIf=\"projects?.length === 0 && isLoaded\">\n </pw-no-data>\n </div>\n</div>\n<pw-edit-project-modal (saveEvent)=\"onSaveProject($event)\"></pw-edit-project-modal>\n<pw-edit-recommendation-modal [user]=\"user\"></pw-edit-recommendation-modal>\n","import { Component, Injector, OnDestroy, OnInit, ViewChild } from '@angular/core';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { ProfileService } from '@posiwise/common-services';\nimport { User } from '@posiwise/common-utilities';\nimport { HelperService } from '@posiwise/helper-service';\n\nimport { StatusCodes } from 'http-status-codes';\nimport { MenuItem } from 'primeng/api';\nimport { forkJoin } from 'rxjs';\n\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { UserProfile, UserRelationship } from '../shared/interface/user-module.interface';\n\n@Component({\n selector: 'pw-user-profile-page',\n templateUrl: './user-profile-page.component.html',\n styleUrls: ['./user-profile-page.component.scss']\n})\nexport class UserProfilePageComponent extends AppBaseComponent implements OnInit, OnDestroy {\n @ViewChild('menuItems', { static: true })\n menu: MenuItem[];\n\n private loggedInUserDetails: User;\n\n user: User;\n slug: string;\n\n objectKeys = Object.keys;\n\n image = 'assets/img/icons/male.png';\n\n isFollowing: boolean;\n\n isLoaded = false;\n\n userProfile: UserProfile;\n\n items: MenuItem[];\n activeItem: MenuItem;\n\n activateMenu() {\n this.activeItem = this.menu['activeItem'];\n }\n\n constructor(\n injector: Injector,\n private readonly profileService: ProfileService,\n private readonly modalService: NgbModal\n ) {\n super(injector);\n this.route.params.subscribe(data => {\n this.slug = data['user-slug'];\n });\n\n this.items = [\n { id: 'about', label: 'About', icon: 'fa fa-fw fa-user' },\n {\n id: 'projects',\n label: 'Projects',\n icon: 'fa fa-fw fa-briefcase',\n state: {\n permission: this.permissionService.evaluatePermissions('Pages.Product.CRM')\n }\n },\n {\n id: 'portfolio',\n label: 'Portfolio',\n icon: 'fa fa-fw fa-image',\n state: {\n permission: this.permissionService.evaluatePermissions('Pages.Product.CRM')\n }\n }\n ];\n [this.activeItem] = this.items;\n }\n\n get allowEdit() {\n return (\n this.loggedInUserDetails?.slug === this.slug || this.permissionService.isSuperAdmin()\n );\n }\n\n ngOnInit() {\n this.getUserBySlug();\n // Horizontal Timeline js for user timeline\n HelperService.ensureJQueryLoaded()\n .then(() => HelperService.loadScript('/assets/js/vertical-timeline.js'))\n .catch(error => console.error('Failed to load vertical timeline script', error));\n }\n\n handleImageError(event: Event, fallbackPath): void {\n HelperService.handleImageFallbackPath(event, fallbackPath);\n }\n\n private dataURLtoBlob(dataUrl: string) {\n const arr = dataUrl?.split(',');\n // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec\n const mime = /^[A-Z]*[a-z]*:(.*?);[A-Z]*/.exec(arr[0])?.[1];\n const bStr = atob(arr[1]);\n let n = bStr.length;\n const u8arr = new Uint8Array(n);\n // eslint-disable-next-line no-plusplus\n while (n--) {\n u8arr[n] = bStr.charCodeAt(n);\n }\n\n return new Blob([u8arr], { type: mime });\n }\n\n openModal(content) {\n if (this.allowEdit) {\n this.modalService.open(content, { centered: true, windowClass: 'modal-holder' });\n }\n }\n\n onImageSelection(event) {\n const blob = this.dataURLtoBlob(event);\n const filename = `${`${this.slug.toLocaleLowerCase()}_${Date.parse(\n new Date().toString()\n )}`}.png`;\n const file: File = new File([blob], filename);\n this.userService.addAvatar(file).subscribe(res => {\n this.modalService.dismissAll();\n this.image = res?.user_avatar[2]?.url;\n });\n }\n\n getUserBySlug() {\n forkJoin({\n user: this.profileService.getUserObject('user', this.slug),\n user_profile: this.profileService.getUserObject('user_profile', this.slug),\n avatar: this.profileService.getUserObject('avatar', this.slug)\n }).subscribe({\n next: response => {\n this.user = response.user;\n this.userProfile = response.user_profile;\n if (response.avatar && response.avatar.length > 0) {\n this.image = response?.avatar[2]?.url;\n }\n this.getCurrentUserDetails();\n this.isLoaded = true;\n },\n error: error => {\n if (error.status === StatusCodes.NOT_FOUND) {\n this.router.navigate(['NotFound']);\n }\n }\n });\n }\n\n onClose() {\n this.modalService.dismissAll();\n }\n\n private getCurrentUserDetails() {\n this.userStore().subscribe((currentUser: User) => {\n if (currentUser) {\n this.loggedInUserDetails = currentUser;\n\n this.userService\n .getCurrentUserObject('user_relationships')\n .subscribe((response: UserRelationship[]) => {\n this.isFollowing =\n response.length > 0\n ? response.some(\n x =>\n x.followed_id === this.user.id &&\n currentUser.id === x.follower_id\n )\n : false;\n });\n }\n });\n }\n\n sendMessageSlug() {\n this.router.navigate(['/message'], { fragment: this.slug });\n }\n\n followUser() {\n this.userService.followUser(this.user.id).subscribe(response => {\n const name = this.user.first_name || this.user.slug;\n if (response.id) {\n this.isFollowing = true;\n this.toast.success(`You're now following ${name}`);\n } else {\n this.isFollowing = false;\n this.toast.success(`You've unfollowed ${name}`);\n }\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<!-- User Profile Starts -->\n<!-- Basic User Details Starts -->\n<section id=\"user-profile\"\n *ngIf=\"user\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"dashboard\">\n <div class=\"media row py-3 align-items-center\">\n <div class=\"col-3 col-sm-2\">\n <div class=\"align-self-center halfway-fab text-center\">\n <!-- User Avatar -->\n <a class=\"profile-image\">\n <img [src]=\"image\"\n width=\"100\"\n height=\"100\"\n class=\"rounded-circle img-border width-100\"\n alt=\"User Male\"\n (error)=\"handleImageError($event, 'assets/img/icons/male.png')\"\n (keydown.enter)=\"openModal(content)\"\n (click)=\"openModal(content)\" />\n <div class=\"ms-4 ps-3 ms-sm-0 ps-sm-0 overlay\"\n (keydown.enter)=\"openModal(content)\"\n (click)=\"openModal(content)\"\n *ngIf=\"allowEdit\">\n <div class=\"overlay-text\">\n <!-- Change Profile Pic -->\n <a aria-label=\"Navigate to Target\">\n {{ 'User.Profile.Change' | transloco }}\n </a>\n </div>\n </div>\n </a>\n </div>\n </div>\n <div class=\"col-9 col-sm-5\">\n <div class=\"align-self-start halfway-fab ps-3 pt-2\">\n <div>\n <strong class=\"font-medium-2 text-uppercase\"\n *ngIf=\"user?.last_name\">\n {{\n user?.first_name\n ? user?.first_name + ' ' + user?.last_name\n : 'Update Profile'\n }}\n </strong>\n <strong class=\"font-medium-2 text-uppercase\"\n *ngIf=\"!user?.last_name\">\n {{ user?.first_name ? user?.first_name : 'Update Profile' }}\n </strong>\n <p class=\"font-small-4\">{{ userProfile?.headline }}</p>\n </div>\n </div>\n </div>\n <div class=\"col-12 col-sm-5\">\n <div class=\"profile-cover-buttons\"\n *ngIf=\"!allowEdit\">\n <div class=\"d-flex halfway-fab align-self-end\">\n <div class=\"text-end d-none d-sm-none d-md-none d-lg-block\">\n <button type=\"button\"\n (click)=\"followUser()\"\n class=\"btn btn-outline-primary btn-raised me-2\">\n <i class=\"fa fa-plus\" aria-hidden=\"true\"></i>\n {{ isFollowing ? 'Following' : 'Follow' }}\n </button>\n <button type=\"button\"\n class=\"btn btn-primary btn-raised me-3\"\n (click)=\"sendMessageSlug()\">\n <i class=\"fa fa-mail-bulk\" aria-hidden=\"true\"></i> Message\n </button>\n </div>\n <div class=\"text-end d-block d-sm-block d-md-block d-lg-none\">\n <button type=\"button\"\n class=\"btn btn-primary btn-raised me-2\">\n <i class=\"fa fa-plus\" aria-hidden=\"true\"></i>\n </button>\n <button type=\"button\"\n class=\"btn btn-primary btn-raised me-3\">\n <i class=\"fa fa-mail-bulk\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</section>\n<!-- Basic User Details Ends -->\n<section>\n <div class=\"container-fluid pw-tab overflow-hidden\">\n <p-tabMenu #menuItems\n [model]=\"items\"\n [activeItem]=\"activeItem\"\n (keydown.enter)=\"activateMenu()\"\n (click)=\"activateMenu()\">\n </p-tabMenu>\n <div class=\"dashboard\">\n <div class=\"dashboard-body\">\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <ng-template [ngIf]=\"user && activeItem.id === 'about'\">\n <pw-user-about [user]=\"user\"\n [isEdit]=\"allowEdit\"\n (saveEvent)=\"getUserBySlug()\">\n </pw-user-about>\n </ng-template>\n <ng-template [ngIf]=\"activeItem.id === 'projects'\">\n <pw-user-projects [user]=\"user\"\n [isEdit]=\"allowEdit\"></pw-user-projects>\n </ng-template>\n <ng-template [ngIf]=\"activeItem.id === 'portfolio'\">\n <pw-portfolios [user]=\"user\"\n [isEdit]=\"allowEdit\"></pw-portfolios>\n </ng-template>\n </div>\n </div>\n </div>\n</section>\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ 'User.Profile.ProfilePicture' | transloco }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n aspectRatio=\"auto\"\n [userAvatar]=\"image\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgxGpAutocompleteModule } from '@angular-magic/ngx-gp-autocomplete';\n\nimport { AppConfigService } from '@posiwise/app-config-service';\nimport { CoreTranslocoModule } from '@posiwise/core-transloco';\nimport { DirectivesModule } from '@posiwise/directives';\nimport { PipesModule } from '@posiwise/pipes';\nimport { SharedComponentsModule } from '@posiwise/shared-components';\n\nimport { NgxCaptchaModule } from 'ngx-captcha';\nimport { UiSwitchModule } from 'ngx-ui-switch';\nimport { AccordionModule } from 'primeng/accordion';\nimport { CalendarModule } from 'primeng/calendar';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { FileUploadModule } from 'primeng/fileupload';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\nimport { RatingModule } from 'primeng/rating';\nimport { SelectButtonModule } from 'primeng/selectbutton';\n\nimport { Loader } from '@googlemaps/js-api-loader';\nimport { NgbDatepickerModule, NgbModalModule } from '@ng-bootstrap/ng-bootstrap';\n\nimport { AccountComponent } from './account/account.component';\nimport { AccountDetailsComponent } from './account/account-details/account-details.component';\nimport { AddSubscriptionComponent } from './account/subscriptions/add-subscription/add-subscription.component';\nimport { SavedCardDetailsComponent } from './account/subscriptions/saved-card-details/saved-card-details.component';\nimport { SubscriptionCredentialComponent } from './account/subscriptions/subscription-credential/subscription-credential.component';\nimport { UpdatePaymentDetailsComponent } from './account/subscriptions/update-payment-details/update-payment-details.component';\nimport { UpgradeSubscriptionComponent } from './account/subscriptions/upgrade-subscription/upgrade-subscription.component';\nimport { UserSubscriptionDetailsComponent } from './account/subscriptions/user-subscription-details/user-subscription-details.component';\nimport { UserSubscriptionListComponent } from './account/subscriptions/user-subscriptions-list/user-subscriptions-list.component';\nimport { UserInvoiceComponent } from './account/user-invoice/user-invoice.component';\nimport { CommunicationTabComponent } from './settings-tabs/communication-tab/communication-tab.component';\nimport { OthersTabComponent } from './settings-tabs/others-tab/others-tab.component';\nimport { SecurityTabComponent } from './settings-tabs/security-tab/security-tab.component';\nimport { SettingsComponent } from './settings-tabs/settings-tabs.component';\nimport { SupportComponent } from './support/support.component';\nimport { SupportDetailsComponent } from './support/support-details/support-details.component';\nimport { EditPortfoliosComponent } from './user-profile/edit-portfolios/edit-portfolios.component';\nimport { EditProjectModalComponent } from './user-profile/edit-project-modal/edit-project-modal.component';\nimport { EditQualificationsModalComponent } from './user-profile/edit-qualifications-modal/edit-qualifications-modal.component';\nimport { EditRecommendationModalComponent } from './user-profile/edit-recommendation-modal/edit-recommendation-modal.component';\nimport { EditSkillsModalComponent } from './user-profile/edit-skills-modal/edit-skills-modal.component';\nimport { EditSocialLinksComponent } from './user-profile/edit-social-links/edit-social-links.component';\nimport { EditUserProfileModalComponent } from './user-profile/edit-user-profile-modal/edit-user-profile-modal.component';\nimport { UserAboutComponent } from './user-profile/user-about/user-about.component';\nimport { PortfoliosComponent } from './user-profile/user-portfolios/user-portfolios.component';\nimport { UserProfilePageComponent } from './user-profile/user-profile-page.component';\nimport { UserProjectsComponent } from './user-profile/user-projects/user-projects.component';\n\nconst primeNgModules = [\n CalendarModule,\n MultiSelectModule,\n ProgressSpinnerModule,\n AccordionModule,\n FileUploadModule,\n DropdownModule,\n RatingModule,\n SelectButtonModule\n];\n\nconst ngbModule = [NgbModalModule, NgbDatepickerModule];\n\n@NgModule({\n declarations: [\n AccountComponent,\n AccountDetailsComponent,\n AddSubscriptionComponent,\n SavedCardDetailsComponent,\n SubscriptionCredentialComponent,\n UpdatePaymentDetailsComponent,\n UpgradeSubscriptionComponent,\n UserSubscriptionDetailsComponent,\n UserSubscriptionListComponent,\n UserInvoiceComponent,\n CommunicationTabComponent,\n OthersTabComponent,\n SecurityTabComponent,\n SettingsComponent,\n SupportComponent,\n EditPortfoliosComponent,\n EditProjectModalComponent,\n EditQualificationsModalComponent,\n EditRecommendationModalComponent,\n EditSkillsModalComponent,\n EditSocialLinksComponent,\n EditUserProfileModalComponent,\n UserAboutComponent,\n PortfoliosComponent,\n UserProfilePageComponent,\n UserProjectsComponent,\n SupportDetailsComponent\n ],\n imports: [\n InputTextModule,\n DirectivesModule,\n CommonModule,\n ReactiveFormsModule,\n CoreTranslocoModule,\n NgxGpAutocompleteModule,\n SharedComponentsModule,\n PipesModule,\n UiSwitchModule,\n NgxCaptchaModule,\n FormsModule,\n ...primeNgModules,\n ...ngbModule\n ],\n exports: [\n AccountComponent,\n AccountDetailsComponent,\n AddSubscriptionComponent,\n SavedCardDetailsComponent,\n SubscriptionCredentialComponent,\n UpdatePaymentDetailsComponent,\n UpgradeSubscriptionComponent,\n UserSubscriptionDetailsComponent,\n UserSubscriptionListComponent,\n UserInvoiceComponent,\n CommunicationTabComponent,\n OthersTabComponent,\n SecurityTabComponent,\n SettingsComponent,\n SupportComponent,\n EditPortfoliosComponent,\n EditProjectModalComponent,\n EditQualificationsModalComponent,\n EditRecommendationModalComponent,\n EditSkillsModalComponent,\n EditSocialLinksComponent,\n EditUserProfileModalComponent,\n UserAboutComponent,\n PortfoliosComponent,\n UserProfilePageComponent,\n UserProjectsComponent,\n SupportDetailsComponent\n ],\n providers: [\n {\n provide: Loader,\n useFactory: (appConfigService: AppConfigService) => {\n return new Loader({\n apiKey: appConfigService.getGoogleApiKey(),\n libraries: ['places']\n });\n },\n deps: [AppConfigService]\n }\n ]\n})\nexport class UserModuleModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3","i5","i6","i7","i8","i9","i10","i4","i7.SavedCardDetailsComponent","i10.SavedCardDetailsComponent","i11","i13","i14","i12","i5.EditQualificationsModalComponent","i6.EditSkillsModalComponent","i7.EditSocialLinksComponent","i8.EditUserProfileModalComponent","i8.EditPortfoliosComponent","i9.EditProjectModalComponent","i10.EditRecommendationModalComponent","i11.EditSkillsModalComponent","i8.UserAboutComponent","i9.PortfoliosComponent","i10.UserProjectsComponent"],"mappings":"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"}
|